c0c509b6bf
* feat: port astro-actions poc * feat: basic blog example * feat: basic validationError class * feat: standard error types and safe() wrapper * refactor: move enhanceProps to astro:actions * fix: throw internal server errors * chore: refine enhance: true error message * fix: remove FormData fallback from route * refactor: clarify what enhance: true allows * feat: progressively enhanced comments * chore: changeset * refactor: enhance -> acceptFormData * wip: migrate actions to core * feat: working actions demo from astro core! * chore: changeset * chore: delete old changeset * fix: Function type lint * refactor: expose defineAction from `astro:actions` * fix: add null check to experimental * fix: export `types/actions.d.ts` * feat: more robust form data parsing * feat: support formData from rpc call * feat: remove acceptFormData flag requirement * feat: add actions.d.ts type reference on startup * refactor: actionNameProps -> getNameProps * fix: actions type import * chore: expose zod from `astro:actions` * fix: zod export path * feat: add explicit `accept` property * Use zod package instead of relative path outside of src * feat: clean up error throwing and handling flow * fix: make `accept` optional * docs: beef up actions experimental docs * fix: defineAction type narrowing on `accept` * fix: bad `getNameProps()` arg type * refactor: move to single `error` object + `isInputError()` util * fix: move res.json() parse to avoid double parse * feat: support async zod schemas * feat: serialize and expose zod properties on input error * feat: test input error in comment example * fix: remove ZodError import * fix: add actions-module to files export * fix: use workspace for test pkg versions * refactor: default export -> server export * fix: type inference for json vs. form * refactor: accept form -> defineFormAction * refactor: better callSafely signature * feat: block action calls from the server with RFC link * feat: move getActionResult to global * refactor: getNameProps -> getActionProps * refactor: body.toString() * edit: capitAl Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * edit: highlight `actions` Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * edit: add actions file name Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * edit: not you can. You DO Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * edit: declare with feeling Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * edit: clarify what the `handler` does * edit: schema -> input * edit: add FormData mdn reference * edit: add defineFormAction() explainer * refactor: inline getDotAstroTypeRefs * edit: yeah yeah maybe * fix: existsSync test mock * refactor: use callSafely in middleware * test: upgradeFormData() * chore: stray console log * refactor: extract helper functions * fix: include status in error response * fix: return `undefined` when there's no action result * fix: content-type * test: e2e like button action * test: comment e2e * fix: existsSync mock for other sync test * test: action dev server raw fetch * test: build preview * chore: fix lock * fix: add dotAstroDir to existsSync * chore: slim down e2e fixture * chore: remove unneeded disabled test * refactor: better api context error * fix: return `false` for envDts * refactor: defineFormAction -> defineAction with accept * fix: check FormData on getActionProps * edit: uppercase Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> * fix: add switch default for 500 Co-authored-by: Emanuele Stoppa <my.burning@gmail.com> * fix: add `toLowerCase()` on content-type check Co-authored-by: Emanuele Stoppa <my.burning@gmail.com> * chore: use VIRTUAL_MODULE_ID for plugin * fix: remove incorrect ts-ignore * chore: remove unneeded POST method check * refactor: route callSafely * refactor: error switch case to map * chore: add link to trpc error code table * fix: add readable error on failed json.stringify * refactor: add param -> callerParam with comment * feat: always return safe from getActionResult() * refactor: move actions module to templates/ * refactor: remove unneeded existsSync on dotAstro * fix: hasContentType util for toLowerCase() * chore: comment on 415 code * refactor: upgradeFormData -> formDataToObj * fix: avoid leaking stack in production * refactor: defineProperty with write false * fix: revert package.json back to spaces * edit: use config docs for changeset * refactor: stringifiedActionsPath -> stringifiedActionsImport * fix: avoid double-handling for route * fix: support zero arg actions * refactor: move actionHandler to helper fn * fix: restore mdast deps * docs: add `output` to config --------- Co-authored-by: Sarah Rainsberger <sarah@rainsberger.ca> Co-authored-by: Emanuele Stoppa <my.burning@gmail.com> Co-authored-by: bholmesdev <bholmesdev@gmail.com> |
||
---|---|---|
.changeset | ||
.devcontainer | ||
.github | ||
.gitpod | ||
.vscode | ||
benchmark | ||
examples | ||
packages | ||
scripts | ||
.editorconfig | ||
.git-blame-ignore-revs | ||
.gitignore | ||
.gitpod.yml | ||
.npmrc | ||
.nvmrc | ||
.prettierignore | ||
biome.json | ||
CONTRIBUTING.md | ||
eslint.config.js | ||
LICENSE | ||
package.json | ||
pnpm-lock.yaml | ||
pnpm-workspace.yaml | ||
prettier.config.js | ||
README.md | ||
SECURITY.md | ||
SECURITY_CONTACTS | ||
STYLE_GUIDE.md | ||
tsconfig.base.json | ||
tsconfig.eslint.json | ||
tsconfig.json | ||
turbo.json |
Astro is a website build tool for the modern web —
powerful developer experience meets lightweight output.
Install
The recommended way to install the latest version of Astro is by running the command below:
npm create astro@latest
You can also install Astro manually by running this command instead:
npm install --save-dev astro
Looking for help? Start with our Getting Started guide.
Looking for quick examples? Open a starter project right in your browser.
Documentation
Visit our official documentation.
Support
Having trouble? Get help in the official Astro Discord.
Contributing
New contributors welcome! Check out our Contributors Guide for help getting started.
Join us on Discord to meet other maintainers. We'll help you get your first contribution in no time!
Directory
Several official projects are maintained outside of this repo:
Project | Repository |
---|---|
@astrojs/compiler | withastro/compiler |
Astro Language Tools | withastro/language-tools |
Links
Sponsors
Astro is free, open source software made possible by these wonderful sponsors.