@workflow/nitro 4.0.1-beta.9 → 5.0.0-beta.0
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.
- package/dist/builders.d.ts +0 -1
- package/dist/builders.d.ts.map +1 -1
- package/dist/builders.js +21 -16
- package/dist/builders.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +165 -8
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/vite.d.ts.map +1 -1
- package/dist/vite.js +59 -4
- package/dist/vite.js.map +1 -1
- package/package.json +13 -12
- package/dist/rollup.d.ts +0 -5
- package/dist/rollup.d.ts.map +0 -1
- package/dist/rollup.js +0 -78
- package/dist/rollup.js.map +0 -1
package/dist/builders.d.ts
CHANGED
package/dist/builders.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
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,12 +1,13 @@
|
|
|
1
1
|
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { BaseBuilder, createBaseBuilderConfig, VercelBuildOutputAPIBuilder, } from '@workflow/builders';
|
|
3
|
-
import { join
|
|
3
|
+
import { join } from 'pathe';
|
|
4
4
|
export class VercelBuilder extends VercelBuildOutputAPIBuilder {
|
|
5
5
|
constructor(nitro) {
|
|
6
6
|
super({
|
|
7
7
|
...createBaseBuilderConfig({
|
|
8
8
|
workingDir: nitro.options.rootDir,
|
|
9
|
-
dirs:
|
|
9
|
+
dirs: ['.'], // Different apps that use nitro have different directories
|
|
10
|
+
runtime: nitro.options.workflow?.runtime,
|
|
10
11
|
}),
|
|
11
12
|
buildTarget: 'vercel-build-output-api',
|
|
12
13
|
});
|
|
@@ -28,7 +29,7 @@ export class LocalBuilder extends BaseBuilder {
|
|
|
28
29
|
...createBaseBuilderConfig({
|
|
29
30
|
workingDir: nitro.options.rootDir,
|
|
30
31
|
watch: nitro.options.dev,
|
|
31
|
-
dirs:
|
|
32
|
+
dirs: ['.'], // Different apps that use nitro have different directories
|
|
32
33
|
}),
|
|
33
34
|
buildTarget: 'next', // Placeholder, not actually used
|
|
34
35
|
});
|
|
@@ -37,32 +38,36 @@ export class LocalBuilder extends BaseBuilder {
|
|
|
37
38
|
async build() {
|
|
38
39
|
const inputFiles = await this.getInputFiles();
|
|
39
40
|
await mkdir(this.#outDir, { recursive: true });
|
|
40
|
-
await this.createWorkflowsBundle({
|
|
41
|
+
const { manifest: workflowsManifest } = await this.createWorkflowsBundle({
|
|
41
42
|
outfile: join(this.#outDir, 'workflows.mjs'),
|
|
42
43
|
bundleFinalOutput: false,
|
|
43
44
|
format: 'esm',
|
|
44
45
|
inputFiles,
|
|
45
46
|
});
|
|
46
|
-
await this.createStepsBundle({
|
|
47
|
+
const { manifest: stepsManifest } = await this.createStepsBundle({
|
|
47
48
|
outfile: join(this.#outDir, 'steps.mjs'),
|
|
48
49
|
externalizeNonSteps: true,
|
|
49
50
|
format: 'esm',
|
|
50
51
|
inputFiles,
|
|
51
52
|
});
|
|
53
|
+
const webhookRouteFile = join(this.#outDir, 'webhook.mjs');
|
|
52
54
|
await this.createWebhookBundle({
|
|
53
|
-
outfile:
|
|
55
|
+
outfile: webhookRouteFile,
|
|
54
56
|
bundle: false,
|
|
55
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
|
+
});
|
|
56
71
|
}
|
|
57
72
|
}
|
|
58
|
-
export function getWorkflowDirs(nitro) {
|
|
59
|
-
return unique([
|
|
60
|
-
...(nitro.options.workflow?.dirs ?? []),
|
|
61
|
-
join(nitro.options.rootDir, 'workflows'),
|
|
62
|
-
...nitro.options.scanDirs.map((dir) => join(dir, 'workflows')),
|
|
63
|
-
].map((dir) => resolve(nitro.options.rootDir, dir))).sort();
|
|
64
|
-
}
|
|
65
|
-
function unique(array) {
|
|
66
|
-
return Array.from(new Set(array));
|
|
67
|
-
}
|
|
68
73
|
//# sourceMappingURL=builders.js.map
|
package/dist/builders.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EACL,WAAW,EACX,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../src/builders.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
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,18 +1,43 @@
|
|
|
1
|
+
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { workflowTransformPlugin } from '@workflow/rollup';
|
|
1
3
|
import { join } from 'pathe';
|
|
2
4
|
import { LocalBuilder, VercelBuilder } from './builders.js';
|
|
3
|
-
import { workflowRollupPlugin } from './rollup.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
|
-
//
|
|
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.
|
|
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
|
|
21
|
+
// NOTE: Temporary workaround for debug unenv mock
|
|
13
22
|
if (!nitro.options.workflow?._vite) {
|
|
14
23
|
nitro.options.alias['debug'] ??= 'debug';
|
|
15
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
|
+
}
|
|
16
41
|
// Generate functions for vercel build
|
|
17
42
|
if (isVercelDeploy) {
|
|
18
43
|
nitro.hooks.hook('compiled', async () => {
|
|
@@ -21,12 +46,46 @@ export default {
|
|
|
21
46
|
}
|
|
22
47
|
// Generate local bundles for dev and local prod
|
|
23
48
|
if (!isVercelDeploy) {
|
|
49
|
+
const builder = new LocalBuilder(nitro);
|
|
50
|
+
let isInitialBuild = true;
|
|
24
51
|
nitro.hooks.hook('build:before', async () => {
|
|
25
|
-
await
|
|
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
|
+
}
|
|
26
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
|
+
}
|
|
27
71
|
addVirtualHandler(nitro, '/.well-known/workflow/v1/webhook/:token', 'workflow/webhook.mjs');
|
|
28
72
|
addVirtualHandler(nitro, '/.well-known/workflow/v1/step', 'workflow/steps.mjs');
|
|
29
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
|
+
}
|
|
30
89
|
}
|
|
31
90
|
},
|
|
32
91
|
};
|
|
@@ -35,20 +94,118 @@ function addVirtualHandler(nitro, route, buildPath) {
|
|
|
35
94
|
route,
|
|
36
95
|
handler: `#${buildPath}`,
|
|
37
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));
|
|
38
102
|
if (!nitro.routing) {
|
|
39
103
|
// Nitro v2 (legacy)
|
|
40
104
|
nitro.options.virtual[`#${buildPath}`] = /* js */ `
|
|
105
|
+
import ${handlerImportPath};
|
|
41
106
|
import { fromWebHandler } from "h3";
|
|
42
|
-
import { POST } from
|
|
107
|
+
import { POST } from ${handlerImportPath};
|
|
43
108
|
export default fromWebHandler(POST);
|
|
44
109
|
`;
|
|
45
110
|
}
|
|
46
111
|
else {
|
|
47
112
|
// Nitro v3+ (native web handlers)
|
|
48
113
|
nitro.options.virtual[`#${buildPath}`] = /* js */ `
|
|
49
|
-
import
|
|
50
|
-
|
|
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
|
+
};
|
|
51
124
|
`;
|
|
52
125
|
}
|
|
53
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
|
+
}
|
|
54
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":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -7,6 +7,17 @@ export interface ModuleOptions {
|
|
|
7
7
|
* By default, `workflows/` directory will be scanned from root and all layer source dirs.
|
|
8
8
|
*/
|
|
9
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;
|
|
10
21
|
}
|
|
11
22
|
declare module 'nitro/types' {
|
|
12
23
|
interface NitroOptions {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
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.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"
|
|
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
CHANGED
|
@@ -1,23 +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';
|
|
1
6
|
import nitroModule from './index.js';
|
|
2
|
-
import { workflowRollupPlugin } from './rollup.js';
|
|
3
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
|
+
};
|
|
4
24
|
return [
|
|
5
|
-
|
|
25
|
+
lazyTransformPlugin,
|
|
6
26
|
{
|
|
7
27
|
name: 'workflow:nitro',
|
|
8
|
-
// Requires https://github.com/nitrojs/nitro/discussions/3680
|
|
9
|
-
// @ts-expect-error
|
|
10
28
|
nitro: {
|
|
11
29
|
setup: (nitro) => {
|
|
30
|
+
// Capture the workflow build directory for exclusion
|
|
31
|
+
workflowBuildDir = join(nitro.options.buildDir, 'workflow');
|
|
12
32
|
nitro.options.workflow = {
|
|
13
33
|
...nitro.options.workflow,
|
|
14
34
|
...options,
|
|
15
35
|
_vite: true,
|
|
16
36
|
};
|
|
37
|
+
if (nitro.options.dev) {
|
|
38
|
+
builder = new LocalBuilder(nitro);
|
|
39
|
+
}
|
|
17
40
|
return nitroModule.setup(nitro);
|
|
18
41
|
},
|
|
19
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
|
+
},
|
|
20
71
|
},
|
|
72
|
+
workflowHotUpdatePlugin({
|
|
73
|
+
builder: () => builder,
|
|
74
|
+
enqueue,
|
|
75
|
+
}),
|
|
21
76
|
];
|
|
22
77
|
}
|
|
23
78
|
//# sourceMappingURL=vite.js.map
|
package/dist/vite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vite.js","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"
|
|
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
|
-
"description": "Nitro integration for Workflow
|
|
3
|
+
"version": "5.0.0-beta.0",
|
|
4
|
+
"description": "Nitro integration for Workflow SDK",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"files": [
|
|
@@ -18,22 +18,23 @@
|
|
|
18
18
|
},
|
|
19
19
|
"exports": {
|
|
20
20
|
".": "./dist/index.js",
|
|
21
|
-
"./rollup": "./dist/rollup.js",
|
|
22
21
|
"./vite": "./dist/vite.js"
|
|
23
22
|
},
|
|
24
23
|
"dependencies": {
|
|
25
|
-
"@swc/core": "1.
|
|
26
|
-
"exsolve": "
|
|
27
|
-
"pathe": "
|
|
28
|
-
"@workflow/
|
|
29
|
-
"@workflow/
|
|
30
|
-
"@workflow/
|
|
24
|
+
"@swc/core": "1.15.3",
|
|
25
|
+
"exsolve": "1.0.8",
|
|
26
|
+
"pathe": "2.0.3",
|
|
27
|
+
"@workflow/builders": "5.0.0-beta.0",
|
|
28
|
+
"@workflow/core": "5.0.0-beta.0",
|
|
29
|
+
"@workflow/rollup": "5.0.0-beta.0",
|
|
30
|
+
"@workflow/swc-plugin": "5.0.0-beta.0",
|
|
31
|
+
"@workflow/vite": "5.0.0-beta.0"
|
|
31
32
|
},
|
|
32
33
|
"devDependencies": {
|
|
33
34
|
"@types/node": "22.19.0",
|
|
34
|
-
"nitro": "
|
|
35
|
-
"vite": "
|
|
36
|
-
"@workflow/tsconfig": "
|
|
35
|
+
"nitro": "3.0.1-alpha.1",
|
|
36
|
+
"vite": "7.1.12",
|
|
37
|
+
"@workflow/tsconfig": "5.0.0-beta.0"
|
|
37
38
|
},
|
|
38
39
|
"scripts": {
|
|
39
40
|
"build": "tsc",
|
package/dist/rollup.d.ts
DELETED
|
@@ -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.d.ts.map
|
package/dist/rollup.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rollup.d.ts","sourceRoot":"","sources":["../src/rollup.ts"],"names":[],"mappings":"AAGA,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,CAiFnD"}
|
package/dist/rollup.js
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { relative } from 'node:path';
|
|
2
|
-
import { transform } from '@swc/core';
|
|
3
|
-
import { resolveModulePath } from 'exsolve';
|
|
4
|
-
// https://github.com/vercel/workflow/blob/feat/nitro/packages/next/src/loader.ts
|
|
5
|
-
export function workflowRollupPlugin() {
|
|
6
|
-
return {
|
|
7
|
-
name: 'workflow:transform',
|
|
8
|
-
// This transform applies the "use workflow"/"use step"
|
|
9
|
-
// client transformation
|
|
10
|
-
async transform(code, id) {
|
|
11
|
-
// only apply the transform if file needs it
|
|
12
|
-
if (!code.match(/(use step|use workflow)/)) {
|
|
13
|
-
return null;
|
|
14
|
-
}
|
|
15
|
-
const isTypeScript = id.endsWith('.ts') || id.endsWith('.tsx');
|
|
16
|
-
const isTsx = id.endsWith('.tsx');
|
|
17
|
-
const swcPlugin = resolveModulePath('@workflow/swc-plugin', {
|
|
18
|
-
from: [import.meta.url],
|
|
19
|
-
});
|
|
20
|
-
// Calculate relative filename for SWC plugin
|
|
21
|
-
// The SWC plugin uses filename to generate workflowId, so it must be relative
|
|
22
|
-
const workingDir = process.cwd();
|
|
23
|
-
const normalizedWorkingDir = workingDir
|
|
24
|
-
.replace(/\\/g, '/')
|
|
25
|
-
.replace(/\/$/, '');
|
|
26
|
-
const normalizedFilepath = id.replace(/\\/g, '/');
|
|
27
|
-
// Windows fix: Use case-insensitive comparison to work around drive letter casing issues
|
|
28
|
-
const lowerWd = normalizedWorkingDir.toLowerCase();
|
|
29
|
-
const lowerPath = normalizedFilepath.toLowerCase();
|
|
30
|
-
let relativeFilename;
|
|
31
|
-
if (lowerPath.startsWith(lowerWd + '/')) {
|
|
32
|
-
// File is under working directory - manually calculate relative path
|
|
33
|
-
relativeFilename = normalizedFilepath.substring(normalizedWorkingDir.length + 1);
|
|
34
|
-
}
|
|
35
|
-
else if (lowerPath === lowerWd) {
|
|
36
|
-
// File IS the working directory (shouldn't happen)
|
|
37
|
-
relativeFilename = '.';
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
// Use relative() for files outside working directory
|
|
41
|
-
relativeFilename = relative(workingDir, id).replace(/\\/g, '/');
|
|
42
|
-
if (relativeFilename.startsWith('../')) {
|
|
43
|
-
relativeFilename = relativeFilename
|
|
44
|
-
.split('/')
|
|
45
|
-
.filter((part) => part !== '..')
|
|
46
|
-
.join('/');
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
// Final safety check - ensure we never pass an absolute path to SWC
|
|
50
|
-
if (relativeFilename.includes(':') || relativeFilename.startsWith('/')) {
|
|
51
|
-
// This should rarely happen, but use filename split as last resort
|
|
52
|
-
relativeFilename = normalizedFilepath.split('/').pop() || 'unknown.ts';
|
|
53
|
-
}
|
|
54
|
-
// Transform with SWC
|
|
55
|
-
const result = await transform(code, {
|
|
56
|
-
filename: relativeFilename,
|
|
57
|
-
jsc: {
|
|
58
|
-
parser: {
|
|
59
|
-
syntax: isTypeScript ? 'typescript' : 'ecmascript',
|
|
60
|
-
tsx: isTsx,
|
|
61
|
-
},
|
|
62
|
-
target: 'es2022',
|
|
63
|
-
experimental: {
|
|
64
|
-
plugins: [[swcPlugin, { mode: 'client' }]],
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
minify: false,
|
|
68
|
-
sourceMaps: true,
|
|
69
|
-
inlineSourcesContent: true,
|
|
70
|
-
});
|
|
71
|
-
return {
|
|
72
|
-
code: result.code,
|
|
73
|
-
map: result.map ? JSON.parse(result.map) : null,
|
|
74
|
-
};
|
|
75
|
-
},
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=rollup.js.map
|
package/dist/rollup.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rollup.js","sourceRoot":"","sources":["../src/rollup.ts"],"names":[],"mappings":"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"}
|