@workflow/nitro 4.0.1-beta.7 → 4.0.1-beta.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,4 @@
1
- import { BaseBuilder } from '@workflow/cli/dist/lib/builders/base-builder';
2
- import { VercelBuildOutputAPIBuilder } from '@workflow/cli/dist/lib/builders/vercel-build-output-api';
1
+ import { BaseBuilder, VercelBuildOutputAPIBuilder } from '@workflow/builders';
3
2
  import type { Nitro } from 'nitro/types';
4
3
  export declare class VercelBuilder extends VercelBuildOutputAPIBuilder {
5
4
  constructor(nitro: Nitro);
@@ -10,5 +9,4 @@ export declare class LocalBuilder extends BaseBuilder {
10
9
  constructor(nitro: Nitro);
11
10
  build(): Promise<void>;
12
11
  }
13
- export declare function getWorkflowDirs(nitro: Nitro): string[];
14
12
  //# sourceMappingURL=builders.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,yDAAyD,CAAC;AACtG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAUzC,qBAAa,aAAc,SAAQ,2BAA2B;gBAChD,KAAK,EAAE,KAAK;IAOT,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAWtC;AAED,qBAAa,YAAa,SAAQ,WAAW;;gBAE/B,KAAK,EAAE,KAAK;IAWT,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAuBtC;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,YAQ3C"}
1
+ {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EAEX,2BAA2B,EAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGzC,qBAAa,aAAc,SAAQ,2BAA2B;gBAChD,KAAK,EAAE,KAAK;IAUT,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAWtC;AAED,qBAAa,YAAa,SAAQ,WAAW;;gBAE/B,KAAK,EAAE,KAAK;IAaT,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAwCtC"}
package/dist/builders.js CHANGED
@@ -1,19 +1,15 @@
1
1
  import { mkdir, readFile, writeFile } from 'node:fs/promises';
2
- import { BaseBuilder } from '@workflow/cli/dist/lib/builders/base-builder';
3
- import { VercelBuildOutputAPIBuilder } from '@workflow/cli/dist/lib/builders/vercel-build-output-api';
4
- import { join, resolve } from 'pathe';
5
- const CommonBuildOptions = {
6
- buildTarget: 'next', // unused in base
7
- stepsBundlePath: '', // unused in base
8
- workflowsBundlePath: '', // unused in base
9
- webhookBundlePath: '', // unused in base
10
- };
2
+ import { BaseBuilder, createBaseBuilderConfig, VercelBuildOutputAPIBuilder, } from '@workflow/builders';
3
+ import { join } from 'pathe';
11
4
  export class VercelBuilder extends VercelBuildOutputAPIBuilder {
12
5
  constructor(nitro) {
13
6
  super({
14
- ...CommonBuildOptions,
15
- dirs: getWorkflowDirs(nitro),
16
- workingDir: nitro.options.rootDir,
7
+ ...createBaseBuilderConfig({
8
+ workingDir: nitro.options.rootDir,
9
+ dirs: ['.'], // Different apps that use nitro have different directories
10
+ runtime: nitro.options.workflow?.runtime,
11
+ }),
12
+ buildTarget: 'vercel-build-output-api',
17
13
  });
18
14
  }
19
15
  async build() {
@@ -30,42 +26,48 @@ export class LocalBuilder extends BaseBuilder {
30
26
  constructor(nitro) {
31
27
  const outDir = join(nitro.options.buildDir, 'workflow');
32
28
  super({
33
- ...CommonBuildOptions,
34
- dirs: getWorkflowDirs(nitro),
35
- workingDir: nitro.options.rootDir,
36
- watch: nitro.options.dev,
29
+ ...createBaseBuilderConfig({
30
+ workingDir: nitro.options.rootDir,
31
+ watch: nitro.options.dev,
32
+ dirs: ['.'], // Different apps that use nitro have different directories
33
+ }),
34
+ buildTarget: 'next', // Placeholder, not actually used
37
35
  });
38
36
  this.#outDir = outDir;
39
37
  }
40
38
  async build() {
41
39
  const inputFiles = await this.getInputFiles();
42
40
  await mkdir(this.#outDir, { recursive: true });
43
- await this.createWorkflowsBundle({
41
+ const { manifest: workflowsManifest } = await this.createWorkflowsBundle({
44
42
  outfile: join(this.#outDir, 'workflows.mjs'),
45
43
  bundleFinalOutput: false,
46
44
  format: 'esm',
47
45
  inputFiles,
48
46
  });
49
- await this.createStepsBundle({
47
+ const { manifest: stepsManifest } = await this.createStepsBundle({
50
48
  outfile: join(this.#outDir, 'steps.mjs'),
51
49
  externalizeNonSteps: true,
52
50
  format: 'esm',
53
51
  inputFiles,
54
52
  });
53
+ const webhookRouteFile = join(this.#outDir, 'webhook.mjs');
55
54
  await this.createWebhookBundle({
56
- outfile: join(this.#outDir, 'webhook.mjs'),
55
+ outfile: webhookRouteFile,
57
56
  bundle: false,
58
57
  });
58
+ // Merge manifests from both bundles
59
+ const manifest = {
60
+ steps: { ...stepsManifest.steps, ...workflowsManifest.steps },
61
+ workflows: { ...stepsManifest.workflows, ...workflowsManifest.workflows },
62
+ classes: { ...stepsManifest.classes, ...workflowsManifest.classes },
63
+ };
64
+ // Generate manifest
65
+ const workflowBundlePath = join(this.#outDir, 'workflows.mjs');
66
+ await this.createManifest({
67
+ workflowBundlePath,
68
+ manifestDir: this.#outDir,
69
+ manifest,
70
+ });
59
71
  }
60
72
  }
61
- export function getWorkflowDirs(nitro) {
62
- return unique([
63
- ...(nitro.options.workflow?.dirs ?? []),
64
- join(nitro.options.rootDir, 'workflows'),
65
- ...nitro.options.scanDirs.map((dir) => join(dir, 'workflows')),
66
- ].map((dir) => resolve(nitro.options.rootDir, dir))).sort();
67
- }
68
- function unique(array) {
69
- return Array.from(new Set(array));
70
- }
71
73
  //# sourceMappingURL=builders.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"builders.js","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builders.js","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAA6B,MAAM,aAAa,CAAC;AAIpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,YAAY,EAAE,aAAa,EAAE,CAAC;;;6BAIT,KAAK;;AAF1B,wBA8CwB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAA6B,MAAM,aAAa,CAAC;AAGpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,YAAY,EAAE,aAAa,EAAE,CAAC;;;6BAIT,KAAK;;AAF1B,wBAwHwB"}
package/dist/index.js CHANGED
@@ -1,16 +1,43 @@
1
+ import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { workflowTransformPlugin } from '@workflow/rollup';
1
3
  import { join } from 'pathe';
2
- import { LocalBuilder, VercelBuilder } from './builders';
3
- import { workflowRollupPlugin } from './rollup-plugin';
4
+ import { LocalBuilder, VercelBuilder } from './builders.js';
4
5
  export default {
5
6
  name: 'workflow/nitro',
6
7
  async setup(nitro) {
7
8
  const isVercelDeploy = !nitro.options.dev && nitro.options.preset === 'vercel';
8
- // Add transform plugin
9
+ // Pre-built workflow bundles directory - must be excluded from re-transformation
10
+ const workflowBuildDir = join(nitro.options.buildDir, 'workflow');
11
+ // Add transform plugin at the BEGINNING to run before other transforms
12
+ // (especially before class property transforms that rename classes like _ClassName)
9
13
  nitro.hooks.hook('rollup:before', (_nitro, config) => {
10
- config.plugins.push(workflowRollupPlugin());
14
+ config.plugins.unshift(workflowTransformPlugin({
15
+ // Exclude pre-built workflow bundles from re-transformation
16
+ // These are already processed and re-processing causes issues like
17
+ // undefined class references when Nitro's bundler renames variables
18
+ exclude: [workflowBuildDir],
19
+ }));
11
20
  });
12
- // Temporary workaround for debug unenv mock
13
- nitro.options.alias['debug'] ??= 'debug';
21
+ // NOTE: Temporary workaround for debug unenv mock
22
+ if (!nitro.options.workflow?._vite) {
23
+ nitro.options.alias['debug'] ??= 'debug';
24
+ }
25
+ // NOTE: Externalize .nitro/workflow to prevent dev reloads
26
+ if (nitro.options.dev) {
27
+ nitro.options.externals ||= {};
28
+ nitro.options.externals.external ||= [];
29
+ const outDir = join(nitro.options.buildDir, 'workflow');
30
+ nitro.options.externals.external.push((id) => id.startsWith(outDir));
31
+ }
32
+ // Add tsConfig plugin
33
+ if (nitro.options.workflow?.typescriptPlugin) {
34
+ nitro.options.typescript.tsConfig ||= {};
35
+ nitro.options.typescript.tsConfig.compilerOptions ||= {};
36
+ nitro.options.typescript.tsConfig.compilerOptions.plugins ||= [];
37
+ nitro.options.typescript.tsConfig.compilerOptions.plugins.push({
38
+ name: 'workflow',
39
+ });
40
+ }
14
41
  // Generate functions for vercel build
15
42
  if (isVercelDeploy) {
16
43
  nitro.hooks.hook('compiled', async () => {
@@ -19,12 +46,46 @@ export default {
19
46
  }
20
47
  // Generate local bundles for dev and local prod
21
48
  if (!isVercelDeploy) {
49
+ const builder = new LocalBuilder(nitro);
50
+ let isInitialBuild = true;
22
51
  nitro.hooks.hook('build:before', async () => {
23
- await new LocalBuilder(nitro).build();
52
+ await builder.build();
53
+ // For prod: write the manifest handler file with inlined content
54
+ // now that the builder has generated the manifest. Rollup will
55
+ // bundle this file into the compiled output.
56
+ if (!nitro.options.dev &&
57
+ process.env.WORKFLOW_PUBLIC_MANIFEST === '1') {
58
+ writeManifestHandler(nitro);
59
+ }
24
60
  });
61
+ // Allows for HMR - but skip the first dev:reload since build:before already ran
62
+ if (nitro.options.dev) {
63
+ nitro.hooks.hook('dev:reload', async () => {
64
+ if (isInitialBuild) {
65
+ isInitialBuild = false;
66
+ return;
67
+ }
68
+ await builder.build();
69
+ });
70
+ }
25
71
  addVirtualHandler(nitro, '/.well-known/workflow/v1/webhook/:token', 'workflow/webhook.mjs');
26
72
  addVirtualHandler(nitro, '/.well-known/workflow/v1/step', 'workflow/steps.mjs');
27
73
  addVirtualHandler(nitro, '/.well-known/workflow/v1/flow', 'workflow/workflows.mjs');
74
+ // Expose manifest as a public HTTP route when WORKFLOW_PUBLIC_MANIFEST=1
75
+ if (process.env.WORKFLOW_PUBLIC_MANIFEST === '1') {
76
+ // Write a placeholder manifest-data.mjs so rollup can resolve the
77
+ // import. It will be overwritten with the real manifest in build:before.
78
+ // Write a placeholder handler file so rollup can resolve the path
79
+ // during prod compilation. It will be overwritten with the real
80
+ // manifest content by writeManifestHandler() in build:before.
81
+ if (!nitro.options.dev) {
82
+ const dir = join(nitro.options.buildDir, 'workflow');
83
+ mkdirSync(dir, { recursive: true });
84
+ const handlerPath = join(dir, 'manifest-handler.mjs');
85
+ writeFileSync(handlerPath, 'export default async () => new Response("Manifest not found", { status: 404 });\n');
86
+ }
87
+ addManifestHandler(nitro);
88
+ }
28
89
  }
29
90
  },
30
91
  };
@@ -33,20 +94,118 @@ function addVirtualHandler(nitro, route, buildPath) {
33
94
  route,
34
95
  handler: `#${buildPath}`,
35
96
  });
97
+ // Keep a bare import alongside `POST`: in Nuxt + Nitro production builds
98
+ // using `@workflow/nuxt`, importing only `POST` could drop the generated
99
+ // step bundle's top-level registrations, so the handler loaded but steps
100
+ // were missing at runtime.
101
+ const handlerImportPath = JSON.stringify(join(nitro.options.buildDir, buildPath));
36
102
  if (!nitro.routing) {
37
103
  // Nitro v2 (legacy)
38
104
  nitro.options.virtual[`#${buildPath}`] = /* js */ `
105
+ import ${handlerImportPath};
39
106
  import { fromWebHandler } from "h3";
40
- import { POST } from "${join(nitro.options.buildDir, buildPath)}";
107
+ import { POST } from ${handlerImportPath};
41
108
  export default fromWebHandler(POST);
42
109
  `;
43
110
  }
44
111
  else {
45
112
  // Nitro v3+ (native web handlers)
46
113
  nitro.options.virtual[`#${buildPath}`] = /* js */ `
47
- import { POST } from "${join(nitro.options.buildDir, buildPath)}";
48
- export default ({ req }) => POST(req);
114
+ import ${handlerImportPath};
115
+ import { POST } from ${handlerImportPath};
116
+ export default async ({ req }) => {
117
+ try {
118
+ return await POST(req);
119
+ } catch (error) {
120
+ console.error('Handler error:', error);
121
+ return new Response('Internal Server Error', { status: 500 });
122
+ }
123
+ };
49
124
  `;
50
125
  }
51
126
  }
127
+ const MANIFEST_VIRTUAL_ID = '#workflow/manifest-handler';
128
+ function addManifestHandler(nitro) {
129
+ const route = '/.well-known/workflow/v1/manifest.json';
130
+ const manifestPath = join(nitro.options.buildDir, 'workflow/manifest.json');
131
+ const handlerPath = join(nitro.options.buildDir, 'workflow/manifest-handler.mjs');
132
+ if (nitro.options.dev) {
133
+ // Dev mode: use a virtual handler that reads the manifest from disk at
134
+ // request time. The absolute path is valid because we're on the build machine.
135
+ nitro.options.handlers.push({ route, handler: MANIFEST_VIRTUAL_ID });
136
+ nitro.options.virtual[MANIFEST_VIRTUAL_ID] = !nitro.routing
137
+ ? /* js */ `
138
+ import { fromWebHandler } from "h3";
139
+ import { readFileSync } from "node:fs";
140
+ function GET() {
141
+ try {
142
+ const manifest = readFileSync(${JSON.stringify(manifestPath)}, "utf-8");
143
+ return new Response(manifest, {
144
+ headers: { "content-type": "application/json" },
145
+ });
146
+ } catch {
147
+ return new Response("Manifest not found", { status: 404 });
148
+ }
149
+ }
150
+ export default fromWebHandler(GET);
151
+ `
152
+ : /* js */ `
153
+ import { readFileSync } from "node:fs";
154
+ export default async () => {
155
+ try {
156
+ const manifest = readFileSync(${JSON.stringify(manifestPath)}, "utf-8");
157
+ return new Response(manifest, {
158
+ headers: { "content-type": "application/json" },
159
+ });
160
+ } catch {
161
+ return new Response("Manifest not found", { status: 404 });
162
+ }
163
+ };
164
+ `;
165
+ }
166
+ else {
167
+ // Prod mode: register a physical handler file that will be written by
168
+ // writeManifestHandler() after the builder generates the manifest.
169
+ // This file is bundled by rollup into the compiled output.
170
+ nitro.options.handlers.push({ route, handler: handlerPath });
171
+ }
172
+ }
173
+ /**
174
+ * Writes a physical manifest handler file with the manifest content inlined.
175
+ * Must be called after the builder generates the manifest (during build:before)
176
+ * and before Nitro compiles the bundle with rollup.
177
+ */
178
+ function writeManifestHandler(nitro) {
179
+ const manifestPath = join(nitro.options.buildDir, 'workflow/manifest.json');
180
+ const handlerPath = join(nitro.options.buildDir, 'workflow/manifest-handler.mjs');
181
+ const dir = join(nitro.options.buildDir, 'workflow');
182
+ mkdirSync(dir, { recursive: true });
183
+ try {
184
+ const manifestContent = readFileSync(manifestPath, 'utf-8');
185
+ JSON.parse(manifestContent); // validate
186
+ const handlerCode = !nitro.routing
187
+ ? `import { fromWebHandler } from "h3";
188
+ const manifest = ${JSON.stringify(manifestContent)};
189
+ export default fromWebHandler(() => new Response(manifest, {
190
+ headers: { "content-type": "application/json" },
191
+ }));
192
+ `
193
+ : `const manifest = ${JSON.stringify(manifestContent)};
194
+ export default async () => new Response(manifest, {
195
+ headers: { "content-type": "application/json" },
196
+ });
197
+ `;
198
+ writeFileSync(handlerPath, handlerCode);
199
+ }
200
+ catch {
201
+ // Write a 404 fallback handler
202
+ const fallback = !nitro.routing
203
+ ? `import { fromWebHandler } from "h3";
204
+ export default fromWebHandler(() => new Response("Manifest not found", { status: 404 }));
205
+ `
206
+ : `export default async () => new Response("Manifest not found", { status: 404 });
207
+ `;
208
+ writeFileSync(handlerPath, fallback);
209
+ }
210
+ }
52
211
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAKvD,eAAe;IACb,IAAI,EAAE,gBAAgB;IACtB,KAAK,CAAC,KAAK,CAAC,KAAY;QACtB,MAAM,cAAc,GAClB,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC;QAE1D,uBAAuB;QACvB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,MAAa,EAAE,MAAoB,EAAE,EAAE;YACvE,MAAM,CAAC,OAA0B,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,4CAA4C;QAC5C,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;QAEzC,sCAAsC;QACtC,IAAI,cAAc,EAAE,CAAC;YACnB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;gBACtC,MAAM,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YACzC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,gDAAgD;QAChD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;gBAC1C,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YACxC,CAAC,CAAC,CAAC;YAEH,iBAAiB,CACf,KAAK,EACL,yCAAyC,EACzC,sBAAsB,CACvB,CAAC;YAEF,iBAAiB,CACf,KAAK,EACL,+BAA+B,EAC/B,oBAAoB,CACrB,CAAC;YAEF,iBAAiB,CACf,KAAK,EACL,+BAA+B,EAC/B,wBAAwB,CACzB,CAAC;QACJ,CAAC;IACH,CAAC;CACoB,CAAC;AAExB,SAAS,iBAAiB,CAAC,KAAY,EAAE,KAAa,EAAE,SAAiB;IACvE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC1B,KAAK;QACL,OAAO,EAAE,IAAI,SAAS,EAAE;KACzB,CAAC,CAAC;IAEH,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,oBAAoB;QACpB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,SAAS,EAAE,CAAC,GAAG,QAAQ,CAAC;;4BAE1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC;;GAEhE,CAAC;IACF,CAAC;SAAM,CAAC;QACN,kCAAkC;QAClC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,SAAS,EAAE,CAAC,GAAG,QAAQ,CAAC;4BAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC;;GAEhE,CAAC;IACF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,10 +1,23 @@
1
1
  export interface ModuleOptions {
2
+ /** @internal */
3
+ _vite?: boolean;
2
4
  /**
3
5
  * Directories to scan for workflows and steps.
4
6
  *
5
7
  * By default, `workflows/` directory will be scanned from root and all layer source dirs.
6
8
  */
7
9
  dirs?: string[];
10
+ /**
11
+ * Enable workflow TypeScript plugin in generated tsconfig.json
12
+ * @default false
13
+ */
14
+ typescriptPlugin?: boolean;
15
+ /**
16
+ * Node.js runtime version for Vercel Functions.
17
+ * @example "nodejs22.x"
18
+ * @example "nodejs24.x"
19
+ */
20
+ runtime?: string;
8
21
  }
9
22
  declare module 'nitro/types' {
10
23
  interface NitroOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAU,YAAY;QACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;KAC1B;CACF;AAGD,OAAO,QAAQ,WAAW,CAAC;IACzB,UAAU,YAAY;QACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;KAC1B;CACF"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,gBAAgB;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAU,YAAY;QACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;KAC1B;CACF;AAGD,OAAO,QAAQ,WAAW,CAAC;IACzB,UAAU,YAAY;QACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;KAC1B;CACF"}
package/dist/vite.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import type { Plugin } from 'vite';
2
+ import type { ModuleOptions } from './index.js';
3
+ export declare function workflow(options?: ModuleOptions): Plugin[];
4
+ //# sourceMappingURL=vite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,EAAE,CA4E1D"}
package/dist/vite.js ADDED
@@ -0,0 +1,78 @@
1
+ import { createBuildQueue } from '@workflow/builders';
2
+ import { workflowTransformPlugin } from '@workflow/rollup';
3
+ import { workflowHotUpdatePlugin } from '@workflow/vite';
4
+ import { join } from 'pathe';
5
+ import { LocalBuilder } from './builders.js';
6
+ import nitroModule from './index.js';
7
+ export function workflow(options) {
8
+ let builder;
9
+ let workflowBuildDir;
10
+ const enqueue = createBuildQueue();
11
+ // Create a lazy transform plugin that excludes the workflow build directory
12
+ // The exclusion path is set during nitro setup, so we need to defer plugin creation
13
+ const lazyTransformPlugin = {
14
+ name: 'workflow:transform',
15
+ transform(code, id) {
16
+ // Delegate to the actual transform plugin with exclusion
17
+ // workflowBuildDir is set during nitro setup before transforms run
18
+ const plugin = workflowTransformPlugin({
19
+ exclude: workflowBuildDir ? [workflowBuildDir] : [],
20
+ });
21
+ return plugin.transform?.call(this, code, id);
22
+ },
23
+ };
24
+ return [
25
+ lazyTransformPlugin,
26
+ {
27
+ name: 'workflow:nitro',
28
+ nitro: {
29
+ setup: (nitro) => {
30
+ // Capture the workflow build directory for exclusion
31
+ workflowBuildDir = join(nitro.options.buildDir, 'workflow');
32
+ nitro.options.workflow = {
33
+ ...nitro.options.workflow,
34
+ ...options,
35
+ _vite: true,
36
+ };
37
+ if (nitro.options.dev) {
38
+ builder = new LocalBuilder(nitro);
39
+ }
40
+ return nitroModule.setup(nitro);
41
+ },
42
+ },
43
+ // NOTE: This is a workaround because Nitro passes the 404 requests to the dev server to handle.
44
+ // For workflow routes, we override to send an empty body to prevent Hono/Vite's SPA fallback.
45
+ configureServer(server) {
46
+ // Add middleware to intercept 404s on workflow routes before Vite's SPA fallback
47
+ return () => {
48
+ server.middlewares.use((req, res, next) => {
49
+ // Only handle workflow webhook routes
50
+ if (!req.url?.startsWith('/.well-known/workflow/v1/')) {
51
+ return next();
52
+ }
53
+ // Wrap writeHead to ensure we send empty body for 404s
54
+ const originalWriteHead = res.writeHead;
55
+ res.writeHead = function (...args) {
56
+ const statusCode = typeof args[0] === 'number' ? args[0] : 200;
57
+ // NOTE: Workaround because Nitro passes 404 requests to the vite to handle.
58
+ // Causes `webhook route with invalid token` test to fail.
59
+ // For 404s on workflow routes, ensure we're sending the right headers
60
+ if (statusCode === 404) {
61
+ // Set content-length to 0 to prevent Vite from overriding
62
+ res.setHeader('Content-Length', '0');
63
+ }
64
+ // @ts-expect-error - Complex overload signature
65
+ return originalWriteHead.apply(this, args);
66
+ };
67
+ next();
68
+ });
69
+ };
70
+ },
71
+ },
72
+ workflowHotUpdatePlugin({
73
+ builder: () => builder,
74
+ enqueue,
75
+ }),
76
+ ];
77
+ }
78
+ //# sourceMappingURL=vite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@workflow/nitro",
3
- "version": "4.0.1-beta.7",
4
- "description": "Nitro integration for Workflow DevKit",
3
+ "version": "4.0.1-beta.71",
4
+ "description": "Nitro integration for Workflow SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "files": [
@@ -18,19 +18,22 @@
18
18
  },
19
19
  "exports": {
20
20
  ".": "./dist/index.js",
21
- "./rollup-plugin": "./dist/rollup-plugin.js"
21
+ "./vite": "./dist/vite.js"
22
22
  },
23
23
  "dependencies": {
24
- "@swc/core": "1.11.24",
25
- "exsolve": "^1.0.7",
26
- "pathe": "^2.0.3",
27
- "@workflow/cli": "4.0.1-beta.7",
28
- "@workflow/swc-plugin": "4.0.1-beta.2",
29
- "@workflow/core": "4.0.1-beta.6"
24
+ "@swc/core": "1.15.3",
25
+ "exsolve": "1.0.8",
26
+ "pathe": "2.0.3",
27
+ "@workflow/builders": "4.0.1-beta.67",
28
+ "@workflow/core": "4.2.0-beta.76",
29
+ "@workflow/rollup": "4.0.0-beta.33",
30
+ "@workflow/swc-plugin": "4.1.0-beta.21",
31
+ "@workflow/vite": "4.0.0-beta.26"
30
32
  },
31
33
  "devDependencies": {
32
34
  "@types/node": "22.19.0",
33
- "nitro": "latest",
35
+ "nitro": "3.0.1-alpha.1",
36
+ "vite": "7.1.12",
34
37
  "@workflow/tsconfig": "4.0.1-beta.0"
35
38
  },
36
39
  "scripts": {
@@ -1,5 +0,0 @@
1
- import type { RollupConfig } from 'nitro/types';
2
- type RollupPlugin = Exclude<RollupConfig['plugins'], undefined | void | null | false | Promise<unknown> | Array<unknown>>;
3
- export declare function workflowRollupPlugin(): RollupPlugin;
4
- export {};
5
- //# sourceMappingURL=rollup-plugin.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rollup-plugin.d.ts","sourceRoot":"","sources":["../src/rollup-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,KAAK,YAAY,GAAG,OAAO,CACzB,YAAY,CAAC,SAAS,CAAC,EACvB,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CACpE,CAAC;AAIF,wBAAgB,oBAAoB,IAAI,YAAY,CA0CnD"}
@@ -1,43 +0,0 @@
1
- import { transform } from '@swc/core';
2
- import { resolveModulePath } from 'exsolve';
3
- // https://github.com/vercel/workflow/blob/feat/nitro/packages/next/src/loader.ts
4
- export function workflowRollupPlugin() {
5
- return {
6
- name: 'workflow-rollup-plugin',
7
- // This transform applies the "use workflow"/"use step"
8
- // client transformation
9
- async transform(code, id) {
10
- // only apply the transform if file needs it
11
- if (!code.match(/(use step|use workflow)/)) {
12
- return null;
13
- }
14
- const isTypeScript = id.endsWith('.ts') || id.endsWith('.tsx');
15
- const isTsx = id.endsWith('.tsx');
16
- const swcPlugin = resolveModulePath('@workflow/swc-plugin', {
17
- from: [import.meta.url],
18
- });
19
- // Transform with SWC
20
- const result = await transform(code, {
21
- filename: id,
22
- jsc: {
23
- parser: {
24
- syntax: isTypeScript ? 'typescript' : 'ecmascript',
25
- tsx: isTsx,
26
- },
27
- target: 'es2022',
28
- experimental: {
29
- plugins: [[swcPlugin, { mode: 'client' }]],
30
- },
31
- },
32
- minify: false,
33
- sourceMaps: true,
34
- inlineSourcesContent: true,
35
- });
36
- return {
37
- code: result.code,
38
- map: result.map ? JSON.parse(result.map) : null,
39
- };
40
- },
41
- };
42
- }
43
- //# sourceMappingURL=rollup-plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"rollup-plugin.js","sourceRoot":"","sources":["../src/rollup-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAQ5C,iFAAiF;AAEjF,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,IAAI,EAAE,wBAAwB;QAC9B,uDAAuD;QACvD,wBAAwB;QACxB,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,EAAU;YACtC,4CAA4C;YAC5C,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,YAAY,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAElC,MAAM,SAAS,GAAG,iBAAiB,CAAC,sBAAsB,EAAE;gBAC1D,IAAI,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aACxB,CAAC,CAAC;YAEH,qBAAqB;YACrB,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE;gBACnC,QAAQ,EAAE,EAAE;gBACZ,GAAG,EAAE;oBACH,MAAM,EAAE;wBACN,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY;wBAClD,GAAG,EAAE,KAAK;qBACX;oBACD,MAAM,EAAE,QAAQ;oBAChB,YAAY,EAAE;wBACZ,OAAO,EAAE,CAAC,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;qBAC3C;iBACF;gBACD,MAAM,EAAE,KAAK;gBACb,UAAU,EAAE,IAAI;gBAChB,oBAAoB,EAAE,IAAI;aAC3B,CAAC,CAAC;YAEH,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;aAChD,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}