mirror of
https://github.com/vercel/workflow.git
synced 2026-09-14 19:59:43 +08:00
stable
16 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
bc2cf32eb2 |
[stable] Fix Next deferred step registration under Turbopack (#2298)
* fix(next): preserve lazy step registration on stable Signed-off-by: Pranay Prakash <pranay.gp@gmail.com> * refactor(next): reuse deferred step directory constant Signed-off-by: Pranay Prakash <pranay.gp@gmail.com> * test: gate deferred dev checks explicitly --------- Signed-off-by: Pranay Prakash <pranay.gp@gmail.com> Co-authored-by: JJ Kasper <jj@jjsweb.site> |
||
|
|
bb910f2571 |
[backport] [workbench] Add TanStack Start workbench (#1875, #1907) (#1914)
* [workbench] Add TanStack Start workbench and tests (#1875) (cherry picked from commit |
||
|
|
b0464b6af2 | Always run canary Next.js tests (#1042) | ||
|
|
86f62f2779 |
Refactor e2e tests to no longer use "trigger" endpoint (#958)
## Summary
Refactors the E2E tests to call `start()` from `workflow/api` directly instead of going through the `/api/trigger` HTTP endpoint in each workbench app. This removes a layer of indirection — the tests now use the same API that users would use to start workflows programmatically.
### Before
```ts
const run = await triggerWorkflow('addTenWorkflow', [123]);
const returnValue = await getWorkflowReturnValue(run.runId);
```
- `triggerWorkflow()` sent an HTTP POST to `/api/trigger` on the workbench app
- The workbench app looked up the workflow function, called `start()`, and returned the run ID
- `getWorkflowReturnValue()` polled `GET /api/trigger?runId=...` until the workflow completed
### After
```ts
const run = await start(await e2e('addTenWorkflow'), [123]);
const returnValue = await run.returnValue;
```
- `e2e()` / `getWorkflowMetadata()` fetches the manifest from `/.well-known/workflow/v1/manifest.json` to look up the correct `workflowId`
- `start()` is called directly from the test process via the configured World
- `run.returnValue` polls for completion via the World (no HTTP polling endpoint needed)
### Changes
**`packages/core/e2e/e2e.test.ts`**
- Removed `triggerWorkflow()` and `getWorkflowReturnValue()` helpers
- Added `fetchManifest()` to fetch and cache the workflow manifest from the deployment
- Added `getWorkflowMetadata(file, fn)` to look up `{ workflowId }` from the manifest
- Added `e2e(fn)` shorthand for the common case of `workflows/99_e2e.ts`
- All tests call `start()` and `run.returnValue` directly
- Error tests use `.catch()` to inspect `WorkflowRunFailedError`
- Output stream tests use `run.getReadable()` directly (skipped on local world where cross-process streaming isn't supported)
- `beforeAll` configures the local World with the correct data directory and base URL
- Pages Router tests use `startWorkflowViaHttp()` to specifically validate the HTTP trigger path
**Workbench apps (hono, express, fastify, nest)**
- Removed `/api/trigger` route handlers
- Kept `/api/hook`, `/api/test-direct-step-call`, `/api/test-health-check` endpoints
- Re-added `_workflows.js` side-effect import for hono/express/fastify to maintain Nitro's HMR dependency graph
**Deleted trigger-only route files** from: nextjs-turbopack, nextjs-webpack, vite, sveltekit, astro, nuxt, nitro-v2, nitro-v3, example
**`.github/workflows/tests.yml`**
- Added `WORKFLOW_PUBLIC_MANIFEST: '1'` to all E2E test jobs
### Dependencies
Stacked on #963 which adds `WORKFLOW_PUBLIC_MANIFEST` support to all framework builders.
|
||
|
|
50f50f44d7 | NestJS framework support (#840) | ||
|
|
49e2df4691 | fix: fastify and astro test matrix (#538) | ||
|
|
23e1fc59ca |
Feat: fastify support with nitro (#386)
* init Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * not using my prototype fastify plugin Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * renamed workbench dir Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * lockfile update Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * removed Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * symlinked workflows dir Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * added readme Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * symlinked client page Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * scope nitro route to allow renderer fallback Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * allow empty json bodies Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * comments Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * improve error handling and cleanup in /api/trigger Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * consistent server replies Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * expect json res Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * fix json res for e2e test 3,4,5,11 Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * fix fastify streaming responses Stream web streams the same way express or hono do. Read the web reader and write each json chunk to reply.raw. Avoids fastifys async iterator quirks that reordered frames and sent undefined data in the output stream tests Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * fix stream responses for e2e tests Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * clearer comments Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * fix streaming res content type. passes all core e2e tests Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * updated dev deps fastify bench Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * fastify logo (light/dark mode) Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * update url Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * fastify docs Signed-off-by: Sree Narayanan <sreeaadhi07@gmail.com> * Apply suggestions from code review Co-authored-by: Adrian <me@adriandlam.com> * Update docs/content/docs/getting-started/fastify.mdx Co-authored-by: Adrian <me@adriandlam.com> * Update docs/content/docs/getting-started/fastify.mdx Co-authored-by: Adrian <me@adriandlam.com> * Update docs/content/docs/getting-started/fastify.mdx Co-authored-by: Adrian <me@adriandlam.com> * Update docs/content/docs/getting-started/fastify.mdx Co-authored-by: Adrian <me@adriandlam.com> * Update docs/content/docs/getting-started/fastify.mdx Co-authored-by: Adrian <me@adriandlam.com> * Update docs/content/docs/getting-started/fastify.mdx Co-authored-by: Adrian <me@adriandlam.com> * Update docs/content/docs/getting-started/fastify.mdx Co-authored-by: Adrian <me@adriandlam.com> * Sree Narayanan <sreeaadhi07@gmail.com> DCO Remediation Commit for Sree Narayanan <sreeaadhi07@gmail.com> I, Sree Narayanan <sreeaadhi07@gmail.com>, hereby add my Signed-off-by to this commit: |
||
|
|
1ac5592452 | feat: add astro support (#347) | ||
|
|
00066be07b |
feat: add express support (#138)
* refactor: migrate to latest nitro v3 Signed-off-by: Pooya Parsa <pooya@pi0.io> * update workaround * fix(nitro): nitro builder using deprecated srcDir * fix: testing matrix dirs * fix(hono): externalize nitro workflow output dir * chore: format * fix(nitro): externalize .nitro/workflow folder * docs(hono): update getting started * update docs and workbench * improve plugin patch * docs: preserve code style * update `getWorkflowDirs` * test: fix hono dev config * fix: wrong api file path in hono dev config * fix(nitro): check all dirs for builder * chore: add comments * add express workbench testing app * docs: add express wip page * add workflows symlink for express workbench * add hook and trigger routes for express workbench * update server entrypoint to use hook and trigger router * remove h3 and add express types * docs: add express getting started guide * test: wire up express workbench * Update workbench/express/routes/hook.routes.ts Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com> * Update workbench/express/routes/trigger.routes.ts Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com> * build: missing deps in workbench express * build: remove express as dev dep * lockfile * build: remove test command from express workbench * fix: url query parsing * chore: add README * remove app hook and trigger routers * . * fix: json body not getting parsed in workbench express * fix: writing streams in workbench * fix: wrong stream piping express workbench * update * fix: json parsing body workbench express * update * fix: add js file extension for relative import on workflow express workbench * test * refactor: route naming conventions for nitro * refactore: convert to catch all api on express * Update workbench/express/package.json Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com> * refactor: api file convention * testing presets * refactor: use simple `index.ts` * update * switch entry format to node * add generate workflow script to express * fix: express nitro config * docs(express): update express getting started * test: add express * fix(express): workbench api routes * fix(express): add workflowsDir to testing matrix * format * update gitignore * fix * . * trigger ci * update workflows dir * fix: streaming in express * fix: not json parsing body express * fix: missing dev test in express * fix: test matrix for express * docs(express): update getting started and add rollup dep * . * docs: add express card to home page and getting started * Update docs/content/docs/getting-started/express.mdx Co-authored-by: Pooya Parsa <pooya@pi0.io> * docs: fix express * remove h1 on express --------- Signed-off-by: Pooya Parsa <pooya@pi0.io> Co-authored-by: Pooya Parsa <pooya@pi0.io> Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com> |
||
|
|
ee25bd9d55 |
refactor: upgrade to latest nitro v3 (#293)
* refactor: migrate to latest nitro v3 Signed-off-by: Pooya Parsa <pooya@pi0.io> * update workaround * fix(nitro): nitro builder using deprecated srcDir * fix: add back nitro config * fix: testing matrix dirs * fix(hono): externalize nitro workflow output dir * chore: format * fix(nitro): externalize .nitro/workflow folder * docs(hono): update getting started * changeset * update docs and workbench * improve plugin patch * docs: preserve code style * update `getWorkflowDirs` * update vite workbench * test: fix hono dev config * fix: wrong api file path in hono dev config * fix(nitro): check all dirs for builder * chore: add comments --------- Signed-off-by: Pooya Parsa <pooya@pi0.io> Co-authored-by: Adrian Lam <me@adriandlam.com> |
||
|
|
945a946812 |
Normalize Workbenches (#283)
* Normalize Workbenches Normalize trigger scripts across workbenches fix: include hono in local build test test: include src dir for test test: add workflow dir config in test to fix sveltekit dev tests add temp 7_full in example wokrflow format fix(sveltekit): detecting workflow folders and customizable dir Remove 7_full and 1_simple error replace API symlink in webpack workbench Fix sveltekit and vite tests Fix sveltekit symlinks Test fixes Fix sveltekit workflows path Dont symlink routes in vite Include e2e tests for hono and vite fix error tests post normalization wip - attempted fixes * Add claude demo command * fix: normalize workbench tests (#292) * Proper stacktrace propogation in world Proper stacktrace propogation in world * Standardize the error type in the world spec * Normalize Workbenches Normalize trigger scripts across workbenches fix: include hono in local build test test: include src dir for test test: add workflow dir config in test to fix sveltekit dev tests add temp 7_full in example wokrflow format fix(sveltekit): detecting workflow folders and customizable dir Remove 7_full and 1_simple error replace API symlink in webpack workbench Fix sveltekit and vite tests Fix sveltekit symlinks Test fixes Fix sveltekit workflows path Dont symlink routes in vite Include e2e tests for hono and vite * fix error tests post normalization * fix(sveltekit): reading file on hmr delete * changeset * fix(vite): add resolve symlink script * fix(vite): missing building on hmr * test local builder in vite * test: increase timeout on hookWorkflow * test: ignore vite based apps in crossFileWorkflow * test: fix nitro based apps status codes * fix: intercept default vite spa handler on 404 workflow routes * fix: vite hook route returning 422 * test: use 422 for hookWorkflow expected * test: fix hono returning 404 * chore: add comment to middleware to clarify * make api route for duplicate case * revert * revert: nitro builder * add back nitro unhandled rejection logic * test: add hono * changeset * fix: unused method * fix: remove duplicate import * remove * chore: add comments to clarify * test remove vite symlink script --------- Co-authored-by: Pranay Prakash <pranay.gp@gmail.com> * refactor: add top level resolve symlinks script * fix: cleanup builder directories (#319) * fix: add sveltekit server routes to builder * fix: remove root workflow dir check * fix missing root level workflow route * Fix: The constructor now hardcodes `dirs: ['src/routes', 'src/lib']` which silently ignores any user\-provided `dirs` option passed to the plugin\, breaking the documented API and removing support for custom workflow directories\. * Fix: The test expectations don\'t match the new implementation of `getWorkflowDirs()`\. The mock provides `scanDirs` which the new code no longer uses\, and the new implementation adds scanning of `routesDir` and `apiDir` instead\. * fix(nitro): use src dir --------- Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com> Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com> * refactor(nitro): use suppressUndefinedRejections * revert: sveltekit builder --------- Co-authored-by: Adrian <me@adriandlam.com> Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com> Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com> |
||
|
|
fb8153bec4 |
feat: add Nuxt module and documentation (#187)
* feat: add Nuxt module and documentation * fix: add the prepare in the build command * Apply suggestion from @vercel[bot] Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com> * chore: simplify usage without /nuxt * wip * Update nuxt.mdx Co-Authored-By: Daniel Roe <daniel@roe.dev> * add clean command and ignore prepare * use @workflow/nitro * Changeset Added a Nuxt module and updated documentation accordingly. * feat: enable typescript plugin in tsconfig * chore: revert accordion value * chore: use symlink * fix: json parsing in trigger route for nitro-v2 * ci: add e2e tests for nuxt * ci: add nuxt to test matrix * chore: make sure to add /nuxt to avoid conflicts when importing entry-points * chore: move typescriptPlugin option to Nitro * chore: body is already parsed * fix: use readRawBody * fix: use rawBody in hook.post too * chore: add missing import (but not required) * chore: update pm * Create resolve-symlinks.sh * chore: add also node-rs/xxhash * Update create-test-matrix.mjs * update matrix * Update create-test-matrix.mjs * remove symlink to nitro-v2 --------- Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com> Co-authored-by: Daniel Roe <daniel@roe.dev> Co-authored-by: Pranay Prakash <pranay.gp@gmail.com> Co-authored-by: Adrian Lam <me@adriandlam.com> |
||
|
|
adf0cfeb91 |
feat: add getPort for detecting pid port (#233)
* feat: add getPort method for detecting pid port * lockfile * update tests and fix getPort usage * changeset * docs: update sveltekit getting started * fix: use pid-port * fix: not using config port env * fix: remove unused getPort from world core * remove unused stuff * fix: world local config returning port 3000 as fallback * changeset * fix: rebase conflicts * fix: util test missing http import * changeset * fix: wrong import for getPort in core runtime * fix: getPort in @workflow/utils being imported into workflow runtime * test: simplify sveltekit test * fix missing import in test * fix: async await stuff with getPort * refactor: move getPort to @workflow/utils/get-port * test: simplfiy getPort tests * test: fix sveltekit ports |
||
|
|
98c36f1eb0 |
feat: add hmr and fix dev tests (#199)
* add hmr and dev tests for nitro and sveltekit * changeset * revert: e2e testing code * add streams.ts to workbench apps * fix: test confnigs * fix: hmr failing on new files for sveltekit plugin * lockfile * switch testing to use 3_stream.ts * fix: sveltekit hmr test file import * fix: nextjs testing file * remove stuff * changeset * refactor(tests): expose config through matrix config * fix: add symlink for nextjs turbopack * add resolve symlinks script * fix: nextjs-webpack resolve symlinks script |
||
|
|
05714f7924 |
feat: add sveltekit support (#131)
* add workbench sveltekit * add sveltekit package * fix: use js for generated server routes in svelte * add test routes for sveltekit workbench * updates from debugging * feat: add sveltekit build target * update user sign up workflow workbench sveltekit * fix: base builder missing GET route handler for sveltekit * feat: add vercel builder and check for vercel env * refactor: workflowPlugin for sveltekit * ci: add tests to workbench sveltekit * fix: no start command and vercel builder outputs * fix: base builder conditions * . * add auto adapter sveltekit * fix: disable checking origin for cross site ci stuff * allow all trusted origins in svelte config * fix: add catch for error thrown when waiting for ops * fix: sveltekit workbench adapter * test * test * refactor: move vercel builder on config resolved * update package json * add demo workflow trigger * test letting sveltekit handle route generation * fix: exclude git ignore for local builder outputs * update config * add debug logs * update debug * update turbo.json * fix env check * another output * use top-level await * ensure vercel functions are patched * change hook * update * fix spread * debug * update * chore: remove vercel builder * chore: update comments in sveltekit workflow package * chore: remove console comment * refactor: workflow svelte plugin * refactor: simplify local builder config * chore: remove unused deps * chore: add comment for workbench svelte app * chore: add sveltekit export to workflow * export sveltekit from workflow * lockfile * chore: remove unused deps svelte workbench * update styling * add sveltekit getting started docs * update sveltekit docs getting started * changeset * Apply suggestion from @vercel[bot] Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com> * use proper env var * Update packages/sveltekit/src/index.ts Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com> * Update docs/content/docs/getting-started/sveltekit.mdx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Document CSRF protection bypass in SvelteKit workbench config (#157) * Initial plan * docs: add CSRF security warning to svelte.config.js Co-authored-by: adriandlam <93681064+adriandlam@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: adriandlam <93681064+adriandlam@users.noreply.github.com> * refactor: deduplicate SvelteKit request conversion logic (#156) * Initial plan * refactor: extract duplicated SvelteKit request conversion to helper Co-authored-by: adriandlam <93681064+adriandlam@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: adriandlam <93681064+adriandlam@users.noreply.github.com> * docs: fix getting staretd sveltekit missing folder * chore: cleanup sveltekit builder after rebase * lockfile * fix: sveltekit building logic in base builder * refactor: move sveltekit builder logic to its own package * fix: console log base builder * changeset * test * feat: create hmr plugin * fix: add initial build on load * fix: check all files for workflows and steps * add comments for plugin todo * remove catching error * fix: missing context for nodejs envs causing waitUntil to fail * fix: setting global request conext in vercel environments --------- Co-authored-by: JJ Kasper <jj@jjsweb.site> Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> |
||
|
|
4ca9a3edbd |
Introducing Workflow DevKit
build durable, resilient, and observable workflows. Co-authored-by: Nathan Rajlich <n@n8.io> Co-authored-by: Pranay Prakash <pranay.gp@gmail.com> Co-authored-by: Adrian <me@adriandlam.com> Co-authored-by: JJ Kasper <jj@jjsweb.site> Co-authored-by: Vercel Release Bot <88769842+vercel-release-bot@users.noreply.github.com> Co-authored-by: Peter Wielander <mittgfu@gmail.com> Co-authored-by: Hayden Bleasel <hello@haydenbleasel.com> Co-authored-by: Gal Schlezinger <gal@spitfire.co.il> Co-authored-by: Manuel Muñoz Solera <mamuso@mamuso.net> Co-authored-by: Garrett <garrett.tolbert@vercel.com> Co-authored-by: Lars Grammel <lars.grammel@gmail.com> Co-authored-by: Pooya Parsa <pyapar@gmail.com> Co-authored-by: Tom Dale <tom@tomdale.net> Co-authored-by: Vishal Yathish <135551666+visyat@users.noreply.github.com> Co-authored-by: josh <144584931+dancer@users.noreply.github.com> |