@workflow/next 4.0.1-beta.34 → 4.0.1-beta.35

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 +1 @@
1
- {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAUA,wBAAsB,cAAc,iBA+cnC"}
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAgBA,wBAAsB,cAAc,iBAyXnC"}
package/dist/builder.js CHANGED
@@ -6,8 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.getNextBuilder = getNextBuilder;
7
7
  const node_fs_1 = require("node:fs");
8
8
  const promises_1 = require("node:fs/promises");
9
+ const node_os_1 = __importDefault(require("node:os"));
9
10
  const node_path_1 = require("node:path");
10
- const watchpack_1 = __importDefault(require("watchpack"));
11
+ const socket_server_1 = require("./socket-server");
11
12
  let CachedNextBuilder;
12
13
  // Create the NextBuilder class dynamically by extending the ESM BaseBuilder
13
14
  // This is exported as getNextBuilder() to allow CommonJS modules to import
@@ -16,226 +17,81 @@ async function getNextBuilder() {
16
17
  if (CachedNextBuilder) {
17
18
  return CachedNextBuilder;
18
19
  }
19
- const { BaseBuilder: BaseBuilderClass, STEP_QUEUE_TRIGGER, WORKFLOW_QUEUE_TRIGGER,
20
- // biome-ignore lint/security/noGlobalEval: Need to use eval here to avoid TypeScript from transpiling the import statement into `require()`
21
- } = (await eval('import("@workflow/builders")'));
20
+ const { BaseBuilder: BaseBuilderClass, STEP_QUEUE_TRIGGER, WORKFLOW_QUEUE_TRIGGER, } = await import('@workflow/builders');
22
21
  class NextBuilder extends BaseBuilderClass {
23
- async build() {
22
+ socketIO;
23
+ isDevServer;
24
+ nextConfig;
25
+ getDistDir() {
26
+ return this.nextConfig?.distDir || '.next';
27
+ }
28
+ async writeWorkflowsCache(workflowFiles, stepFiles) {
29
+ const cwd = this.config.workingDir;
30
+ const distDir = this.getDistDir();
31
+ const cacheDir = (0, node_path_1.join)(cwd, distDir, 'cache');
32
+ const cacheFile = (0, node_path_1.join)(cacheDir, 'workflows.json');
33
+ try {
34
+ await (0, promises_1.mkdir)(cacheDir, { recursive: true });
35
+ const cacheData = {
36
+ workflowFiles: Array.from(workflowFiles),
37
+ stepFiles: Array.from(stepFiles),
38
+ timestamp: Date.now(),
39
+ };
40
+ await (0, promises_1.writeFile)(cacheFile, JSON.stringify(cacheData, null, 2));
41
+ }
42
+ catch (error) {
43
+ console.error('Failed to write workflows cache:', error);
44
+ }
45
+ }
46
+ async readWorkflowsCache() {
47
+ const cwd = this.config.workingDir;
48
+ const distDir = this.getDistDir();
49
+ const cacheFile = (0, node_path_1.join)(cwd, distDir, 'cache', 'workflows.json');
50
+ try {
51
+ const cacheContent = await (0, promises_1.readFile)(cacheFile, 'utf-8');
52
+ const cacheData = JSON.parse(cacheContent);
53
+ return {
54
+ workflowFiles: cacheData.workflowFiles || [],
55
+ stepFiles: cacheData.stepFiles || [],
56
+ };
57
+ }
58
+ catch {
59
+ // Cache file doesn't exist or is invalid, return null
60
+ return null;
61
+ }
62
+ }
63
+ async init(nextConfig, phase) {
64
+ this.nextConfig = nextConfig;
65
+ this.isDevServer = phase === 'phase-development-server';
66
+ const outputDir = await this.findAppDirectory();
67
+ // Write stub files
68
+ await this.writeStubFiles(outputDir);
69
+ // Create socket server for file path communication
70
+ await this.createSocketServer(outputDir);
71
+ }
72
+ async build(inputFiles) {
24
73
  const outputDir = await this.findAppDirectory();
25
74
  const workflowGeneratedDir = (0, node_path_1.join)(outputDir, '.well-known/workflow/v1');
26
75
  // Ensure output directories exist
27
76
  await (0, promises_1.mkdir)(workflowGeneratedDir, { recursive: true });
28
77
  // ignore the generated assets
29
78
  await (0, promises_1.writeFile)((0, node_path_1.join)(workflowGeneratedDir, '.gitignore'), '*');
30
- const inputFiles = await this.getInputFiles();
79
+ // Use provided inputFiles or discover them
80
+ const files = inputFiles || (await this.getInputFiles());
31
81
  const tsConfig = await this.getTsConfigOptions();
32
82
  const options = {
33
- inputFiles,
83
+ inputFiles: files,
34
84
  workflowGeneratedDir,
35
85
  tsBaseUrl: tsConfig.baseUrl,
36
86
  tsPaths: tsConfig.paths,
37
87
  };
38
- const stepsBuildContext = await this.buildStepsFunction(options);
39
- const workflowsBundle = await this.buildWorkflowsFunction(options);
88
+ await this.buildStepsFunction(options);
89
+ await this.buildWorkflowsFunction(options);
40
90
  await this.buildWebhookRoute({ workflowGeneratedDir });
41
91
  await this.writeFunctionsConfig(outputDir);
42
- if (this.config.watch) {
43
- if (!stepsBuildContext) {
44
- throw new Error('Invariant: expected steps build context in watch mode');
45
- }
46
- if (!workflowsBundle) {
47
- throw new Error('Invariant: expected workflows bundle in watch mode');
48
- }
49
- let stepsCtx = stepsBuildContext;
50
- let workflowsCtx = workflowsBundle;
51
- const normalizePath = (pathname) => pathname.replace(/\\/g, '/');
52
- const knownFiles = new Set();
53
- let previousTimeInfo = new Map();
54
- const watchableExtensions = new Set([
55
- '.js',
56
- '.jsx',
57
- '.ts',
58
- '.tsx',
59
- '.mts',
60
- '.cts',
61
- '.cjs',
62
- '.mjs',
63
- ]);
64
- const ignoredPathFragments = [
65
- '/.git/',
66
- '/node_modules/',
67
- '/.next/',
68
- '/.turbo/',
69
- '/.vercel/',
70
- '/dist/',
71
- '/build/',
72
- '/out/',
73
- '/.cache/',
74
- '/.yarn/',
75
- '/.pnpm-store/',
76
- '/.parcel-cache/',
77
- '/.well-known/workflow/',
78
- ];
79
- const normalizedGeneratedDir = workflowGeneratedDir.replace(/\\/g, '/');
80
- ignoredPathFragments.push(normalizedGeneratedDir);
81
- // There is a node.js bug on MacOS which causes closing file watchers to be really slow.
82
- // This limits the number of watchers to mitigate the issue.
83
- // https://github.com/nodejs/node/issues/29949
84
- process.env.WATCHPACK_WATCHER_LIMIT =
85
- process.platform === 'darwin' ? '20' : undefined;
86
- const watcher = new watchpack_1.default({
87
- // Watchpack default is 200ms which adds 200ms of dead time on bootup.
88
- aggregateTimeout: 5,
89
- ignored: (pathname) => {
90
- const normalizedPath = pathname.replace(/\\/g, '/');
91
- const extension = (0, node_path_1.extname)(normalizedPath);
92
- if (extension && !watchableExtensions.has(extension)) {
93
- return true;
94
- }
95
- if (normalizedPath.startsWith(normalizedGeneratedDir)) {
96
- return true;
97
- }
98
- for (const fragment of ignoredPathFragments) {
99
- if (normalizedPath.includes(fragment)) {
100
- return true;
101
- }
102
- }
103
- return false;
104
- },
105
- });
106
- const readTimeInfoEntries = () => {
107
- const rawEntries = watcher.getTimeInfoEntries();
108
- const normalizedEntries = new Map();
109
- for (const [path, info] of rawEntries) {
110
- normalizedEntries.set(normalizePath(path), info);
111
- }
112
- return normalizedEntries;
113
- };
114
- let rebuildQueue = Promise.resolve();
115
- const enqueue = (task) => {
116
- rebuildQueue = rebuildQueue.then(task).catch((error) => {
117
- console.error('Failed to process file change', error);
118
- });
119
- return rebuildQueue;
120
- };
121
- const fullRebuild = async () => {
122
- const newInputFiles = await this.getInputFiles();
123
- options.inputFiles = newInputFiles;
124
- await stepsCtx.dispose();
125
- const newStepsCtx = await this.buildStepsFunction(options);
126
- if (!newStepsCtx) {
127
- throw new Error('Invariant: expected steps build context after rebuild');
128
- }
129
- stepsCtx = newStepsCtx;
130
- await workflowsCtx.interimBundleCtx.dispose();
131
- const newWorkflowsCtx = await this.buildWorkflowsFunction(options);
132
- if (!newWorkflowsCtx) {
133
- throw new Error('Invariant: expected workflows bundle context after rebuild');
134
- }
135
- workflowsCtx = newWorkflowsCtx;
136
- };
137
- const logBuildMessages = (result, label) => {
138
- const logByType = (messages, method) => {
139
- if (!messages || messages.length === 0) {
140
- return;
141
- }
142
- const descriptor = method === 'error' ? 'errors' : 'warnings';
143
- console[method](`${descriptor} while rebuilding ${label}`);
144
- for (const message of messages) {
145
- console[method](message);
146
- }
147
- };
148
- logByType(result.errors, 'error');
149
- logByType(result.warnings, 'warn');
150
- };
151
- const rebuildExistingFiles = async () => {
152
- const rebuiltStepStart = Date.now();
153
- const stepsResult = await stepsCtx.rebuild();
154
- logBuildMessages(stepsResult, 'steps bundle');
155
- console.log('Rebuilt steps bundle', `${Date.now() - rebuiltStepStart}ms`);
156
- const rebuiltWorkflowStart = Date.now();
157
- const workflowResult = await workflowsCtx.interimBundleCtx.rebuild();
158
- logBuildMessages(workflowResult, 'workflows bundle');
159
- if (!workflowResult.outputFiles ||
160
- workflowResult.outputFiles.length === 0) {
161
- console.error('No output generated while rebuilding workflows bundle');
162
- return;
163
- }
164
- await workflowsCtx.bundleFinal(workflowResult.outputFiles[0].text);
165
- console.log('Rebuilt workflow bundle', `${Date.now() - rebuiltWorkflowStart}ms`);
166
- };
167
- const isWatchableFile = (path) => watchableExtensions.has((0, node_path_1.extname)(path));
168
- const getComparableTimestamp = (entry) => entry.timestamp ?? entry.safeTime;
169
- const findRemovedFiles = (currentEntries, previousEntries) => {
170
- const removed = [];
171
- for (const path of previousEntries.keys()) {
172
- if (!currentEntries.has(path) && isWatchableFile(path)) {
173
- removed.push(path);
174
- }
175
- }
176
- return removed;
177
- };
178
- const findAddedAndModifiedFiles = (currentEntries, previousEntries) => {
179
- const added = [];
180
- const modified = [];
181
- for (const [path, info] of currentEntries) {
182
- if (!isWatchableFile(path)) {
183
- continue;
184
- }
185
- const previous = previousEntries.get(path);
186
- if (!previous) {
187
- added.push(path);
188
- continue;
189
- }
190
- if (getComparableTimestamp(info) !== getComparableTimestamp(previous)) {
191
- modified.push(path);
192
- }
193
- }
194
- return { added, modified };
195
- };
196
- const determineFileChanges = (currentEntries, previousEntries) => {
197
- const removedFiles = findRemovedFiles(currentEntries, previousEntries);
198
- const { added, modified } = findAddedAndModifiedFiles(currentEntries, previousEntries);
199
- return {
200
- addedFiles: added,
201
- modifiedFiles: modified,
202
- removedFiles,
203
- };
204
- };
205
- let isInitial = true;
206
- watcher.on('aggregated', () => {
207
- const currentEntries = readTimeInfoEntries();
208
- const { addedFiles, modifiedFiles, removedFiles } = determineFileChanges(currentEntries, previousTimeInfo);
209
- previousTimeInfo = currentEntries;
210
- if (isInitial) {
211
- isInitial = false;
212
- return;
213
- }
214
- if (addedFiles.length === 0 &&
215
- modifiedFiles.length === 0 &&
216
- removedFiles.length === 0) {
217
- return;
218
- }
219
- for (const removal of removedFiles) {
220
- knownFiles.delete(removal);
221
- }
222
- for (const added of addedFiles) {
223
- knownFiles.add(added);
224
- }
225
- enqueue(async () => {
226
- if (addedFiles.length > 0 || removedFiles.length > 0) {
227
- await fullRebuild();
228
- return;
229
- }
230
- if (modifiedFiles.length > 0) {
231
- await rebuildExistingFiles();
232
- }
233
- });
234
- });
235
- watcher.watch({
236
- directories: [this.config.workingDir],
237
- startTime: 0,
238
- });
92
+ // Signal build complete to connected clients
93
+ if (this.socketIO) {
94
+ this.socketIO.emit('build-complete');
239
95
  }
240
96
  }
241
97
  async getInputFiles() {
@@ -248,7 +104,7 @@ async function getNextBuilder() {
248
104
  }
249
105
  async writeFunctionsConfig(outputDir) {
250
106
  // we don't run this in development mode as it's not needed
251
- if (process.env.NODE_ENV === 'development') {
107
+ if (this.isDevServer) {
252
108
  return;
253
109
  }
254
110
  const generatedConfig = {
@@ -326,6 +182,114 @@ async function getNextBuilder() {
326
182
  }
327
183
  }
328
184
  }
185
+ async createSocketServer(_usersAppDir) {
186
+ if (process.env.WORKFLOW_SOCKET_PORT) {
187
+ return;
188
+ }
189
+ const workflowFiles = new Set();
190
+ const stepFiles = new Set();
191
+ let debounceTimer = null;
192
+ let buildTriggered = false;
193
+ const BUILD_DEBOUNCE_MS = this.isDevServer ? 500 : 2_000;
194
+ // Attempt to load cached workflows/steps from previous build
195
+ const cache = await this.readWorkflowsCache();
196
+ if (cache) {
197
+ for (const file of cache.workflowFiles) {
198
+ workflowFiles.add(file);
199
+ }
200
+ for (const file of cache.stepFiles) {
201
+ stepFiles.add(file);
202
+ }
203
+ }
204
+ // Debounced build trigger
205
+ const triggerBuild = () => {
206
+ if (debounceTimer) {
207
+ clearTimeout(debounceTimer);
208
+ }
209
+ debounceTimer = setTimeout(async () => {
210
+ if (buildTriggered && !this.isDevServer) {
211
+ // can't run another build after one has already been done
212
+ // in production mode as it won't have any affect since after
213
+ // the first is done we resolve the loaders for the stub entries
214
+ // and they can't be refreshed/rebuilt after that in production
215
+ return;
216
+ }
217
+ // Combine workflow and step files into single array
218
+ const allFiles = new Set([...workflowFiles, ...stepFiles]);
219
+ const inputFiles = Array.from(allFiles);
220
+ try {
221
+ buildTriggered = true;
222
+ await this.build(inputFiles);
223
+ // Write cache after successful build
224
+ await this.writeWorkflowsCache(workflowFiles, stepFiles);
225
+ }
226
+ catch (error) {
227
+ if (!this.isDevServer) {
228
+ throw error;
229
+ }
230
+ console.error('Workflows build failed:', error);
231
+ }
232
+ }, BUILD_DEBOUNCE_MS);
233
+ };
234
+ // Configure and create socket server
235
+ const config = {
236
+ isDevServer: this.isDevServer || false,
237
+ onFileDiscovered: (filePath, hasWorkflow, hasStep) => {
238
+ const knownFile = workflowFiles.has(filePath) || stepFiles.has(filePath);
239
+ if (hasWorkflow) {
240
+ workflowFiles.add(filePath);
241
+ }
242
+ else {
243
+ workflowFiles.delete(filePath);
244
+ }
245
+ if (hasStep) {
246
+ stepFiles.add(filePath);
247
+ }
248
+ else {
249
+ stepFiles.delete(filePath);
250
+ }
251
+ // Trigger debounced build if the file was previously seen
252
+ // or has workflows/steps currently
253
+ if (
254
+ // in non-dev we always update debounce on activity
255
+ !this.isDevServer ||
256
+ hasWorkflow ||
257
+ hasStep ||
258
+ knownFile) {
259
+ triggerBuild();
260
+ }
261
+ },
262
+ onTriggerBuild: triggerBuild,
263
+ };
264
+ this.socketIO = await (0, socket_server_1.createSocketServer)(config);
265
+ }
266
+ async writeStubFiles(usersAppDir) {
267
+ // NOTE: there is a limitation with turbopack that we can only
268
+ // have number of virtual entries with pending promise less than
269
+ // CPU count as that's the number of workers it uses so currently
270
+ // we're fine with > 3 vCPU but <= 3 vCPUs and we won't be able to
271
+ // discover workflows/steps
272
+ const parallelismCount = node_os_1.default.availableParallelism();
273
+ if (process.env.TURBOPACK && parallelismCount < 4) {
274
+ console.warn(`Available parallelism of ${parallelismCount} is less than needed 4. This can cause workflows/steps to fail to discover properly in turbopack`);
275
+ }
276
+ const routeStubContent = "export * from './inner'";
277
+ // this needs to change on each build so can refresh workflows
278
+ const innerStubContent = `WORKFLOW_INNER_STUB_FILE_${Date.now()}`;
279
+ const workflowDir = (0, node_path_1.join)(usersAppDir, '.well-known/workflow/v1');
280
+ // Ensure directories exist
281
+ await (0, promises_1.mkdir)((0, node_path_1.join)(workflowDir, 'flow'), { recursive: true });
282
+ await (0, promises_1.mkdir)((0, node_path_1.join)(workflowDir, 'step'), { recursive: true });
283
+ await (0, promises_1.mkdir)((0, node_path_1.join)(workflowDir, 'webhook/[token]'), { recursive: true });
284
+ // Write route.ts stub files (re-export from inner)
285
+ await (0, promises_1.writeFile)((0, node_path_1.join)(workflowDir, 'flow/route.js'), routeStubContent);
286
+ await (0, promises_1.writeFile)((0, node_path_1.join)(workflowDir, 'step/route.js'), routeStubContent);
287
+ await (0, promises_1.writeFile)((0, node_path_1.join)(workflowDir, 'webhook/[token]/route.js'), routeStubContent);
288
+ // Write inner.js stub files (actual stub marker)
289
+ await (0, promises_1.writeFile)((0, node_path_1.join)(workflowDir, 'flow/inner.js'), innerStubContent);
290
+ await (0, promises_1.writeFile)((0, node_path_1.join)(workflowDir, 'step/inner.js'), innerStubContent);
291
+ await (0, promises_1.writeFile)((0, node_path_1.join)(workflowDir, 'webhook/[token]/inner.js'), innerStubContent);
292
+ }
329
293
  }
330
294
  CachedNextBuilder = NextBuilder;
331
295
  return NextBuilder;
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.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,UAAU,EAAE,MAAM,MAAM,CAAC;AAIvC,wBAAgB,YAAY,CAC1B,cAAc,EACV,UAAU,GACV,CAAC,CACC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE;IAAE,aAAa,EAAE,UAAU,CAAA;CAAE,KAC/B,OAAO,CAAC,UAAU,CAAC,CAAC,EAC7B,EACE,SAAS,GACV,GAAE;IACD,SAAS,CAAC,EAAE;QACV,KAAK,CAAC,EAAE;YACN,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC;KACH,CAAC;CACE,IAkBJ,OAAO,MAAM,EACb,KAAK;IAAE,aAAa,EAAE,UAAU,CAAA;CAAE,yBAoGrC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAGvC,wBAAgB,YAAY,CAC1B,cAAc,EACV,UAAU,GACV,CAAC,CACC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE;IAAE,aAAa,EAAE,UAAU,CAAA;CAAE,KAC/B,OAAO,CAAC,UAAU,CAAC,CAAC,EAC7B,EACE,SAAS,GACV,GAAE;IACD,SAAS,CAAC,EAAE;QACV,KAAK,CAAC,EAAE;YACN,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC;KACH,CAAC;CACE,IAkBJ,OAAO,MAAM,EACb,KAAK;IAAE,aAAa,EAAE,UAAU,CAAA;CAAE,yBA0FrC"}
package/dist/index.js CHANGED
@@ -1,10 +1,6 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.withWorkflow = withWorkflow;
7
- const semver_1 = __importDefault(require("semver"));
8
4
  const builder_js_1 = require("./builder.js");
9
5
  function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
10
6
  if (!process.env.VERCEL_DEPLOYMENT_ID) {
@@ -41,8 +37,6 @@ function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
41
37
  nextConfig.turbopack.rules = {};
42
38
  }
43
39
  const existingRules = nextConfig.turbopack.rules;
44
- const nextVersion = require('next/package.json').version;
45
- const supportsTurboCondition = semver_1.default.gte(nextVersion, 'v16.0.0');
46
40
  for (const key of [
47
41
  '*.tsx',
48
42
  '*.ts',
@@ -54,22 +48,15 @@ function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
54
48
  '*.cts',
55
49
  ]) {
56
50
  nextConfig.turbopack.rules[key] = {
57
- ...(supportsTurboCondition
58
- ? {
59
- condition: {
60
- ...existingRules[key]?.condition,
61
- any: [
62
- ...(existingRules[key]?.condition.any || []),
63
- {
64
- content: /(use workflow|use step)/,
65
- },
66
- ],
67
- },
68
- }
69
- : {}),
70
51
  loaders: [...(existingRules[key]?.loaders || []), loaderPath],
71
52
  };
72
53
  }
54
+ if (process.env.TURBOPACK) {
55
+ if (!nextConfig.experimental) {
56
+ nextConfig.experimental = {};
57
+ }
58
+ nextConfig.experimental.turbopackScopeHoisting = false;
59
+ }
73
60
  // configure the loader for webpack
74
61
  const existingWebpackModify = nextConfig.webpack;
75
62
  nextConfig.webpack = (...args) => {
@@ -94,10 +81,8 @@ function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
94
81
  // as Next.js uses child processes for different builds
95
82
  if (!process.env.WORKFLOW_NEXT_PRIVATE_BUILT &&
96
83
  phase !== 'phase-production-server') {
97
- const shouldWatch = process.env.NODE_ENV === 'development';
98
84
  const NextBuilder = await (0, builder_js_1.getNextBuilder)();
99
85
  const workflowBuilder = new NextBuilder({
100
- watch: shouldWatch,
101
86
  // discover workflows from pages/app entries
102
87
  dirs: ['pages', 'app', 'src/pages', 'src/app'],
103
88
  workingDir: process.cwd(),
@@ -107,7 +92,7 @@ function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
107
92
  webhookBundlePath: '', // node used in base
108
93
  externalPackages: [...(nextConfig.serverExternalPackages || [])],
109
94
  });
110
- await workflowBuilder.build();
95
+ await workflowBuilder.init(nextConfig, phase);
111
96
  process.env.WORKFLOW_NEXT_PRIVATE_BUILT = '1';
112
97
  }
113
98
  return nextConfig;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAGA,oCA6HC;AA/HD,6CAA8C;AAE9C,SAAgB,YAAY,CAC1B,cAK6B,EAC7B,EACE,SAAS,MAQP,EAAE;IAEN,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,OAAO,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,qBAAqB,CAAC;QAC9D,CAAC;QACD,MAAM,SAAS,GAAG,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC;QACzC,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,QAAQ,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,GAAkC;QAElC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,UAAsB,CAAC;QAE3B,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;YACzC,UAAU,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,UAAU,GAAG,cAAc,CAAC;QAC9B,CAAC;QACD,gDAAgD;QAChD,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QAE3C,kDAAkD;QAClD,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YAC1B,UAAU,CAAC,SAAS,GAAG,EAAE,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YAChC,UAAU,CAAC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC;QAClC,CAAC;QACD,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,KAAY,CAAC;QAExD,KAAK,MAAM,GAAG,IAAI;YAChB,OAAO;YACP,MAAM;YACN,OAAO;YACP,MAAM;YACN,OAAO;YACP,OAAO;YACP,OAAO;YACP,OAAO;SACR,EAAE,CAAC;YACF,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;gBAChC,OAAO,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC;aAC9D,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;gBAC7B,UAAU,CAAC,YAAY,GAAG,EAAE,CAAC;YAC/B,CAAC;YACD,UAAU,CAAC,YAAY,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACzD,CAAC;QAED,mCAAmC;QACnC,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,CAAC;QACjD,UAAU,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE;YAC/B,MAAM,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;gBAC1B,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC;YAC5B,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,aAAa,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;YAClC,CAAC;YACD,gDAAgD;YAChD,8CAA8C;YAC9C,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC9B,IAAI,EAAE,kCAAkC;gBACxC,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC;YAEH,OAAO,qBAAqB;gBAC1B,CAAC,CAAC,qBAAqB,CAAC,GAAG,IAAI,CAAC;gBAChC,CAAC,CAAC,aAAa,CAAC;QACpB,CAAC,CAAC;QACF,yDAAyD;QACzD,uDAAuD;QACvD,IACE,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B;YACxC,KAAK,KAAK,yBAAyB,EACnC,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,IAAA,2BAAc,GAAE,CAAC;YAC3C,MAAM,eAAe,GAAG,IAAI,WAAW,CAAC;gBACtC,4CAA4C;gBAC5C,IAAI,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC;gBAC9C,UAAU,EAAE,OAAO,CAAC,GAAG,EAAE;gBACzB,WAAW,EAAE,MAAM;gBACnB,mBAAmB,EAAE,EAAE,EAAE,mBAAmB;gBAC5C,eAAe,EAAE,EAAE,EAAE,mBAAmB;gBACxC,iBAAiB,EAAE,EAAE,EAAE,oBAAoB;gBAC3C,gBAAgB,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;aACjE,CAAC,CAAC;YAEH,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,GAAG,CAAC;QAChD,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAKA,wBAA8B,cAAc,CAC1C,IAAI,EAAE;IACJ,YAAY,EAAE,MAAM,CAAC;CACtB,EACD,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,SAAS,EAAE,GAAG,GACb,OAAO,CAAC,MAAM,CAAC,CAwFjB"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AA2LA,wBAA8B,cAAc,CAC1C,IAAI,EAAE;IACJ,YAAY,EAAE,MAAM,CAAC;CACtB,EACD,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,SAAS,EAAE,GAAG,GACb,OAAO,CAAC,MAAM,CAAC,CAwHjB"}
package/dist/loader.js CHANGED
@@ -1,15 +1,158 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = workflowLoader;
4
+ const promises_1 = require("node:fs/promises");
5
+ const node_net_1 = require("node:net");
4
6
  const node_path_1 = require("node:path");
5
7
  const core_1 = require("@swc/core");
8
+ const builders_1 = require("@workflow/builders");
9
+ const socket_server_1 = require("./socket-server");
10
+ // Stub content written by builder to inner.js files
11
+ const STUB_CONTENT = 'WORKFLOW_INNER_STUB_FILE';
12
+ // Cache for socket connection to avoid reconnecting on every file
13
+ let socketClientPromise = null;
14
+ async function getSocketClient() {
15
+ if (!socketClientPromise) {
16
+ socketClientPromise = (async () => {
17
+ const socketPort = process.env.WORKFLOW_SOCKET_PORT;
18
+ if (!socketPort) {
19
+ throw new Error(`Invariant: no socket port provided for workflow loader`);
20
+ }
21
+ const port = Number.parseInt(socketPort, 10);
22
+ if (Number.isNaN(port)) {
23
+ throw new Error(`Invariant: invalid socket port provided: ${socketPort}`);
24
+ }
25
+ const socket = (0, node_net_1.connect)({ port, host: '127.0.0.1' });
26
+ // Wait for connection
27
+ await new Promise((resolve, reject) => {
28
+ const timeout = setTimeout(() => {
29
+ socket.destroy();
30
+ reject(new Error('Socket connection timeout'));
31
+ }, 1000);
32
+ socket.on('connect', () => {
33
+ socket.setNoDelay(true);
34
+ clearTimeout(timeout);
35
+ resolve();
36
+ });
37
+ socket.on('error', (err) => {
38
+ clearTimeout(timeout);
39
+ reject(err);
40
+ });
41
+ });
42
+ return socket;
43
+ })();
44
+ }
45
+ return socketClientPromise;
46
+ }
47
+ async function notifySocketServer(filename, hasWorkflow, hasStep) {
48
+ const socket = await getSocketClient();
49
+ if (!socket) {
50
+ throw new Error(`Invariant: missing workflow socket connection`);
51
+ }
52
+ const authToken = process.env.WORKFLOW_SOCKET_AUTH;
53
+ if (!authToken) {
54
+ throw new Error(`Invariant: no socket auth token provided for workflow loader`);
55
+ }
56
+ // Send authenticated message with workflow and step information
57
+ const message = {
58
+ type: 'file-discovered',
59
+ filePath: filename,
60
+ hasWorkflow,
61
+ hasStep,
62
+ };
63
+ socket.write((0, socket_server_1.serializeMessage)(message, authToken));
64
+ }
65
+ async function waitForBuildComplete() {
66
+ const socket = await getSocketClient();
67
+ return new Promise((resolve, reject) => {
68
+ if (!socket) {
69
+ reject(new Error('Socket not available'));
70
+ return;
71
+ }
72
+ let buffer = '';
73
+ let timeout = null;
74
+ let settled = false;
75
+ const cleanup = () => {
76
+ if (timeout) {
77
+ clearTimeout(timeout);
78
+ timeout = null;
79
+ }
80
+ socket.off('data', onData);
81
+ socket.off('error', onError);
82
+ socket.off('end', onEnd);
83
+ socket.off('close', onClose);
84
+ };
85
+ const settle = (callback) => {
86
+ if (!settled) {
87
+ settled = true;
88
+ cleanup();
89
+ callback();
90
+ }
91
+ };
92
+ const onData = (data) => {
93
+ buffer += data.toString();
94
+ const authToken = process.env.WORKFLOW_SOCKET_AUTH;
95
+ if (!authToken) {
96
+ settle(() => reject(new Error('No socket auth token available')));
97
+ return;
98
+ }
99
+ let newlineIndex = buffer.indexOf('\n');
100
+ while (newlineIndex !== -1) {
101
+ const line = buffer.slice(0, newlineIndex);
102
+ buffer = buffer.slice(newlineIndex + 1);
103
+ newlineIndex = buffer.indexOf('\n');
104
+ const message = (0, socket_server_1.parseMessage)(line, authToken);
105
+ if (message && message.type === 'build-complete') {
106
+ settle(() => resolve());
107
+ }
108
+ }
109
+ };
110
+ const onError = (err) => {
111
+ settle(() => reject(new Error(`Socket error: ${err.message}`)));
112
+ };
113
+ const onEnd = () => {
114
+ settle(() => reject(new Error('Socket ended unexpectedly before build-complete message received')));
115
+ };
116
+ const onClose = () => {
117
+ settle(() => reject(new Error('Socket closed unexpectedly before build-complete message received')));
118
+ };
119
+ // Set timeout to prevent indefinite hanging
120
+ timeout = setTimeout(() => {
121
+ settle(() => reject(new Error('Timeout waiting for build-complete message (60 seconds elapsed)')));
122
+ }, 60000); // 60 second timeout
123
+ socket.on('data', onData);
124
+ socket.on('error', onError);
125
+ socket.on('end', onEnd);
126
+ socket.on('close', onClose);
127
+ });
128
+ }
6
129
  // This loader applies the "use workflow"/"use step"
7
130
  // client transformation
8
131
  async function workflowLoader(source, sourceMap) {
9
132
  const filename = this.resourcePath;
10
133
  const normalizedSource = source.toString();
134
+ // Normalize path separators for cross-platform compatibility
135
+ const normalizedFilename = filename.replace(/\\/g, '/');
136
+ // Check if this is a .well-known workflow inner.js file with stub content
137
+ const isWellKnownInnerFile = normalizedFilename.includes('.well-known/workflow/v1/') &&
138
+ (normalizedFilename.includes('/flow/inner.js') ||
139
+ normalizedFilename.includes('/step/inner.js') ||
140
+ normalizedFilename.includes('/webhook/[token]/inner.js'));
141
+ if (isWellKnownInnerFile &&
142
+ normalizedSource.trim().startsWith(STUB_CONTENT)) {
143
+ // Wait for build to complete
144
+ await waitForBuildComplete();
145
+ // Read the actual generated file content
146
+ const actualContent = await (0, promises_1.readFile)(filename.replace(/inner\.js$/, 'route.js'), 'utf-8');
147
+ return actualContent;
148
+ }
149
+ // Check for workflow and step directives
150
+ const hasWorkflow = builders_1.useWorkflowPattern.test(normalizedSource);
151
+ const hasStep = builders_1.useStepPattern.test(normalizedSource);
152
+ // Send message to socket server if workflow or step detected
153
+ await notifySocketServer(filename, hasWorkflow, hasStep);
11
154
  // only apply the transform if file needs it
12
- if (!normalizedSource.match(/(use step|use workflow)/)) {
155
+ if (!hasWorkflow && !hasStep) {
13
156
  return normalizedSource;
14
157
  }
15
158
  const isTypeScript = filename.endsWith('.ts') ||
@@ -27,7 +170,7 @@ async function workflowLoader(source, sourceMap) {
27
170
  const lowerWd = normalizedWorkingDir.toLowerCase();
28
171
  const lowerPath = normalizedFilepath.toLowerCase();
29
172
  let relativeFilename;
30
- if (lowerPath.startsWith(lowerWd + '/')) {
173
+ if (lowerPath.startsWith(`${lowerWd}/`)) {
31
174
  // File is under working directory - manually calculate relative path
32
175
  relativeFilename = normalizedFilepath.substring(normalizedWorkingDir.length + 1);
33
176
  }
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Message types that can be sent between loader and builder
3
+ */
4
+ export type SocketMessage = {
5
+ type: 'file-discovered';
6
+ filePath: string;
7
+ hasWorkflow: boolean;
8
+ hasStep: boolean;
9
+ } | {
10
+ type: 'trigger-build';
11
+ } | {
12
+ type: 'build-complete';
13
+ };
14
+ /**
15
+ * Configuration for the socket server
16
+ */
17
+ export interface SocketServerConfig {
18
+ isDevServer: boolean;
19
+ onFileDiscovered: (filePath: string, hasWorkflow: boolean, hasStep: boolean) => void;
20
+ onTriggerBuild: () => void;
21
+ }
22
+ /**
23
+ * Interface for the socket IO instance returned by createSocketServer
24
+ */
25
+ export interface SocketIO {
26
+ emit(event: 'build-complete'): void;
27
+ getAuthToken(): string;
28
+ }
29
+ /**
30
+ * Serialize a message with authentication preamble
31
+ */
32
+ export declare function serializeMessage(message: SocketMessage, authToken: string): string;
33
+ /**
34
+ * Parse and authenticate a message from the socket
35
+ * Returns the parsed message if valid, null otherwise
36
+ */
37
+ export declare function parseMessage(line: string, authToken: string): SocketMessage | null;
38
+ /**
39
+ * Create a TCP socket server for loader<->builder communication.
40
+ * Returns a SocketIO interface for broadcasting messages and the auth token.
41
+ *
42
+ * SECURITY: Server listens on 127.0.0.1 (localhost only) and uses
43
+ * message authentication to prevent processing of unauthorized messages.
44
+ */
45
+ export declare function createSocketServer(config: SocketServerConfig): Promise<SocketIO>;
46
+ //# sourceMappingURL=socket-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-server.d.ts","sourceRoot":"","sources":["../src/socket-server.ts"],"names":[],"mappings":"AAiBA;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB;IACE,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB,GACD;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE/B;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,CAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,OAAO,EACpB,OAAO,EAAE,OAAO,KACb,IAAI,CAAC;IACV,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,YAAY,IAAI,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,GAChB,MAAM,CAER;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,aAAa,GAAG,IAAI,CAoCtB;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,QAAQ,CAAC,CA2EnB"}
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serializeMessage = serializeMessage;
4
+ exports.parseMessage = parseMessage;
5
+ exports.createSocketServer = createSocketServer;
6
+ const node_crypto_1 = require("node:crypto");
7
+ const node_net_1 = require("node:net");
8
+ /**
9
+ * Magic preamble that must prefix all messages to authenticate them as workflow messages.
10
+ * This prevents accidental processing of messages from port scanners or other local processes.
11
+ */
12
+ const MESSAGE_PREAMBLE = 'WF:';
13
+ /**
14
+ * Generate a random authentication token for this server session.
15
+ * Clients must include this token in all messages.
16
+ */
17
+ function generateAuthToken() {
18
+ return (0, node_crypto_1.randomBytes)(16).toString('hex');
19
+ }
20
+ /**
21
+ * Serialize a message with authentication preamble
22
+ */
23
+ function serializeMessage(message, authToken) {
24
+ return `${MESSAGE_PREAMBLE}${authToken}:${JSON.stringify(message)}\n`;
25
+ }
26
+ /**
27
+ * Parse and authenticate a message from the socket
28
+ * Returns the parsed message if valid, null otherwise
29
+ */
30
+ function parseMessage(line, authToken) {
31
+ const trimmed = line.trim();
32
+ if (!trimmed) {
33
+ return null;
34
+ }
35
+ // Check for preamble
36
+ if (!trimmed.startsWith(MESSAGE_PREAMBLE)) {
37
+ console.warn('Received message without valid preamble, ignoring');
38
+ return null;
39
+ }
40
+ // Extract auth token and payload
41
+ const withoutPreamble = trimmed.slice(MESSAGE_PREAMBLE.length);
42
+ const colonIndex = withoutPreamble.indexOf(':');
43
+ if (colonIndex === -1) {
44
+ console.warn('Received message without auth token separator, ignoring');
45
+ return null;
46
+ }
47
+ const messageToken = withoutPreamble.slice(0, colonIndex);
48
+ const payload = withoutPreamble.slice(colonIndex + 1);
49
+ // Verify auth token
50
+ if (messageToken !== authToken) {
51
+ console.warn('Received message with invalid auth token, ignoring');
52
+ return null;
53
+ }
54
+ // Parse JSON payload
55
+ try {
56
+ return JSON.parse(payload);
57
+ }
58
+ catch (error) {
59
+ console.error('Failed to parse socket message JSON:', error);
60
+ return null;
61
+ }
62
+ }
63
+ /**
64
+ * Create a TCP socket server for loader<->builder communication.
65
+ * Returns a SocketIO interface for broadcasting messages and the auth token.
66
+ *
67
+ * SECURITY: Server listens on 127.0.0.1 (localhost only) and uses
68
+ * message authentication to prevent processing of unauthorized messages.
69
+ */
70
+ async function createSocketServer(config) {
71
+ const authToken = generateAuthToken();
72
+ const clients = new Set();
73
+ let buildTriggered = false;
74
+ const server = (0, node_net_1.createServer)((socket) => {
75
+ socket.setNoDelay(true);
76
+ clients.add(socket);
77
+ // Send build-complete if build already finished (production mode)
78
+ if (buildTriggered && !config.isDevServer) {
79
+ socket.write(serializeMessage({ type: 'build-complete' }, authToken));
80
+ }
81
+ let buffer = '';
82
+ socket.on('data', (data) => {
83
+ buffer += data.toString();
84
+ // Process complete messages (newline-delimited)
85
+ let newlineIndex = buffer.indexOf('\n');
86
+ while (newlineIndex !== -1) {
87
+ const line = buffer.slice(0, newlineIndex);
88
+ buffer = buffer.slice(newlineIndex + 1);
89
+ newlineIndex = buffer.indexOf('\n');
90
+ const message = parseMessage(line, authToken);
91
+ if (!message) {
92
+ continue;
93
+ }
94
+ if (message.type === 'file-discovered') {
95
+ config.onFileDiscovered(message.filePath, message.hasWorkflow, message.hasStep);
96
+ }
97
+ else if (message.type === 'trigger-build') {
98
+ config.onTriggerBuild();
99
+ }
100
+ }
101
+ });
102
+ socket.on('end', () => {
103
+ clients.delete(socket);
104
+ });
105
+ socket.on('error', (err) => {
106
+ console.error('Socket error:', err);
107
+ clients.delete(socket);
108
+ });
109
+ });
110
+ // Listen on random available port (localhost only)
111
+ await new Promise((resolve) => {
112
+ server.listen(0, '127.0.0.1', () => {
113
+ const address = server.address();
114
+ if (address && typeof address === 'object') {
115
+ process.env.WORKFLOW_SOCKET_PORT = String(address.port);
116
+ process.env.WORKFLOW_SOCKET_AUTH = authToken;
117
+ }
118
+ resolve();
119
+ });
120
+ });
121
+ return {
122
+ emit: (_event) => {
123
+ buildTriggered = true;
124
+ const message = serializeMessage({ type: 'build-complete' }, authToken);
125
+ for (const client of clients) {
126
+ client.write(message);
127
+ }
128
+ },
129
+ getAuthToken: () => authToken,
130
+ };
131
+ }
132
+ //# sourceMappingURL=socket-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-server.js","sourceRoot":"","sources":["../src/socket-server.ts"],"names":[],"mappings":";;AAsDA,4CAKC;AAMD,oCAuCC;AASD,gDA6EC;AA9LD,6CAA0C;AAC1C,uCAAkE;AAElE;;;GAGG;AACH,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B;;;GAGG;AACH,SAAS,iBAAiB;IACxB,OAAO,IAAA,yBAAW,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAoCD;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,OAAsB,EACtB,SAAiB;IAEjB,OAAO,GAAG,gBAAgB,GAAG,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,SAAgB,YAAY,CAC1B,IAAY,EACZ,SAAiB;IAEjB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,iCAAiC;IACjC,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAEtD,oBAAoB;IACpB,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qBAAqB;IACrB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAkB,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,kBAAkB,CACtC,MAA0B;IAE1B,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,MAAM,MAAM,GAAW,IAAA,uBAAY,EAAC,CAAC,MAAc,EAAE,EAAE;QACrD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpB,kEAAkE;QAClE,IAAI,cAAc,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACjC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAE1B,gDAAgD;YAChD,IAAI,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACxC,OAAO,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;gBAC3C,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;gBACxC,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAEpC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;gBAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,SAAS;gBACX,CAAC;gBAED,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBACvC,MAAM,CAAC,gBAAgB,CACrB,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,WAAW,EACnB,OAAO,CAAC,OAAO,CAChB,CAAC;gBACJ,CAAC;qBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBAC5C,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC1B,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACpB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YAChC,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;YACpC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,mDAAmD;IACnD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;YACjC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACxD,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,SAAS,CAAC;YAC/C,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,CAAC,MAAwB,EAAE,EAAE;YACjC,cAAc,GAAG,IAAI,CAAC;YACtB,MAAM,OAAO,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,SAAS,CAAC,CAAC;YACxE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;QACD,YAAY,EAAE,GAAG,EAAE,CAAC,SAAS;KAC9B,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workflow/next",
3
- "version": "4.0.1-beta.34",
3
+ "version": "4.0.1-beta.35",
4
4
  "description": "Next.js integration for Workflow DevKit",
5
5
  "type": "commonjs",
6
6
  "main": "dist/index.js",
@@ -18,21 +18,16 @@
18
18
  },
19
19
  "exports": {
20
20
  ".": "./dist/index.js",
21
- "./loader": "./dist/loader.js",
22
- "./runtime": "./dist/runtime.js"
21
+ "./loader": "./dist/loader.js"
23
22
  },
24
23
  "dependencies": {
25
24
  "@swc/core": "1.15.3",
26
- "semver": "7.7.3",
27
- "watchpack": "2.4.4",
28
- "@workflow/builders": "4.0.1-beta.29",
29
- "@workflow/core": "4.0.1-beta.30",
25
+ "@workflow/builders": "4.0.1-beta.30",
26
+ "@workflow/core": "4.0.1-beta.31",
30
27
  "@workflow/swc-plugin": "4.0.1-beta.12"
31
28
  },
32
29
  "devDependencies": {
33
30
  "@types/node": "22.19.0",
34
- "@types/semver": "7.7.1",
35
- "@types/watchpack": "2.4.4",
36
31
  "next": "16.0.10",
37
32
  "@workflow/tsconfig": "4.0.1-beta.0"
38
33
  },
package/dist/runtime.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from '@workflow/core/dist/runtime';
2
- //# sourceMappingURL=runtime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAGA,cAAc,6BAA6B,CAAC"}
package/dist/runtime.js DELETED
@@ -1,21 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- // re-export runtime as stub for resolving to not
18
- // require @workflow/core be a dependency as well as
19
- // @workflow/next
20
- __exportStar(require("@workflow/core/dist/runtime"), exports);
21
- //# sourceMappingURL=runtime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAAiD;AACjD,oDAAoD;AACpD,iBAAiB;AACjB,8DAA4C"}