@workflow/next 4.0.1-beta.5 → 4.0.1-beta.50

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":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,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,QAAQ,CAAC,EAAE;YACT,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,yBA6FrC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAMvC,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,yBAyHrC"}
package/dist/index.js CHANGED
@@ -4,15 +4,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.withWorkflow = withWorkflow;
7
- const next_build_1 = require("@workflow/cli/dist/lib/builders/next-build");
7
+ const path_1 = __importDefault(require("path"));
8
8
  const semver_1 = __importDefault(require("semver"));
9
+ const builder_js_1 = require("./builder.js");
10
+ const swc_cache_js_1 = require("./swc-cache.js");
9
11
  function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
10
12
  if (!process.env.VERCEL_DEPLOYMENT_ID) {
11
13
  if (!process.env.WORKFLOW_TARGET_WORLD) {
12
- process.env.WORKFLOW_TARGET_WORLD = 'embedded';
13
- process.env.WORKFLOW_EMBEDDED_DATA_DIR = '.next/workflow-data';
14
+ process.env.WORKFLOW_TARGET_WORLD = 'local';
15
+ process.env.WORKFLOW_LOCAL_DATA_DIR = '.next/workflow-data';
14
16
  }
15
- const maybePort = workflows?.embedded?.port;
17
+ const maybePort = workflows?.local?.port;
16
18
  if (maybePort) {
17
19
  process.env.PORT = maybePort.toString();
18
20
  }
@@ -43,16 +45,30 @@ function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
43
45
  const existingRules = nextConfig.turbopack.rules;
44
46
  const nextVersion = require('next/package.json').version;
45
47
  const supportsTurboCondition = semver_1.default.gte(nextVersion, 'v16.0.0');
46
- for (const key of ['*.tsx', '*.ts', '*.jsx', '*.js']) {
48
+ for (const key of [
49
+ '*.tsx',
50
+ '*.ts',
51
+ '*.jsx',
52
+ '*.js',
53
+ '*.mjs',
54
+ '*.mts',
55
+ '*.cjs',
56
+ '*.cts',
57
+ ]) {
47
58
  nextConfig.turbopack.rules[key] = {
48
59
  ...(supportsTurboCondition
49
60
  ? {
50
61
  condition: {
51
- ...existingRules[key]?.condition,
52
- any: [
53
- ...(existingRules[key]?.condition.any || []),
62
+ // Use 'all' to combine: must match content AND must NOT be in generated path
63
+ // Merge with any existing 'all' conditions from user config
64
+ all: [
65
+ ...(existingRules[key]?.condition?.all || []),
66
+ // Exclude generated workflow route files from transformation
67
+ { not: { path: /[/\\]\.well-known[/\\]workflow[/\\]/ } },
68
+ // Match files with workflow directives or custom serialization patterns
69
+ // Uses backreferences (\2, \3) to ensure matching quote types
54
70
  {
55
- content: /(use workflow|use step)/,
71
+ content: /(use workflow|use step|from\s+(['"])@workflow\/serde\2|Symbol\.for\s*\(\s*(['"])workflow-(?:serialize|deserialize)\3\s*\))/,
56
72
  },
57
73
  ],
58
74
  },
@@ -85,8 +101,12 @@ function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
85
101
  // as Next.js uses child processes for different builds
86
102
  if (!process.env.WORKFLOW_NEXT_PRIVATE_BUILT &&
87
103
  phase !== 'phase-production-server') {
104
+ // Check swc-plugin build hash and invalidate cache if changed
105
+ const distDir = path_1.default.resolve(process.cwd(), nextConfig.distDir || '.next');
106
+ (0, swc_cache_js_1.maybeInvalidateCacheOnSwcChange)(distDir);
88
107
  const shouldWatch = process.env.NODE_ENV === 'development';
89
- const workflowBuilder = new next_build_1.NextBuilder({
108
+ const NextBuilder = await (0, builder_js_1.getNextBuilder)();
109
+ const workflowBuilder = new NextBuilder({
90
110
  watch: shouldWatch,
91
111
  // discover workflows from pages/app entries
92
112
  dirs: ['pages', 'app', 'src/pages', 'src/app'],
@@ -96,7 +116,12 @@ function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
96
116
  stepsBundlePath: '', // not used in base
97
117
  webhookBundlePath: '', // node used in base
98
118
  externalPackages: [
99
- ...require('next/dist/lib/server-external-packages.json'),
119
+ // server-only and client-only are pseudo-packages handled by Next.js
120
+ // during its build process. We mark them as external to prevent esbuild
121
+ // from failing when bundling code that imports them.
122
+ // See: https://nextjs.org/docs/app/getting-started/server-and-client-components
123
+ 'server-only',
124
+ 'client-only',
100
125
  ...(nextConfig.serverExternalPackages || []),
101
126
  ],
102
127
  });
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":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAIA,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,CAkCjB"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AA4EA,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,CAoHjB"}
package/dist/loader.js CHANGED
@@ -1,32 +1,149 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = workflowLoader;
4
+ const node_path_1 = require("node:path");
4
5
  const core_1 = require("@swc/core");
6
+ // Cache decorator options per working directory to avoid reading tsconfig for every file
7
+ const decoratorOptionsCache = new Map();
8
+ // Cache for shared utilities from @workflow/builders (ESM module loaded dynamically in CommonJS context)
9
+ let cachedBuildersModule = null;
10
+ async function getBuildersModule() {
11
+ if (cachedBuildersModule) {
12
+ return cachedBuildersModule;
13
+ }
14
+ // Dynamic import to handle ESM module from CommonJS context
15
+ // biome-ignore lint/security/noGlobalEval: Need to use eval here to avoid TypeScript from transpiling the import statement into `require()`
16
+ cachedBuildersModule = (await eval('import("@workflow/builders")'));
17
+ return cachedBuildersModule;
18
+ }
19
+ async function getDecoratorOptions(workingDir) {
20
+ const cached = decoratorOptionsCache.get(workingDir);
21
+ if (cached) {
22
+ return cached;
23
+ }
24
+ const promise = (async () => {
25
+ const { getDecoratorOptionsForDirectory } = await getBuildersModule();
26
+ return getDecoratorOptionsForDirectory(workingDir);
27
+ })();
28
+ decoratorOptionsCache.set(workingDir, promise);
29
+ return promise;
30
+ }
31
+ async function detectPatterns(source) {
32
+ const { detectWorkflowPatterns } = await getBuildersModule();
33
+ return detectWorkflowPatterns(source);
34
+ }
35
+ async function checkGeneratedFile(filePath) {
36
+ const { isGeneratedWorkflowFile } = await getBuildersModule();
37
+ return isGeneratedWorkflowFile(filePath);
38
+ }
39
+ async function checkSdkFile(filePath) {
40
+ const { isWorkflowSdkFile } = await getBuildersModule();
41
+ return isWorkflowSdkFile(filePath);
42
+ }
43
+ async function checkShouldTransform(filePath, patterns) {
44
+ const { shouldTransformFile } = await getBuildersModule();
45
+ return shouldTransformFile(filePath, patterns);
46
+ }
47
+ async function getModuleSpecifier(filePath, projectRoot) {
48
+ const { resolveModuleSpecifier } = await getBuildersModule();
49
+ return resolveModuleSpecifier(filePath, projectRoot).moduleSpecifier;
50
+ }
5
51
  // This loader applies the "use workflow"/"use step"
6
52
  // client transformation
7
53
  async function workflowLoader(source, sourceMap) {
8
54
  const filename = this.resourcePath;
9
55
  const normalizedSource = source.toString();
10
- // only apply the transform if file needs it
11
- if (!normalizedSource.match(/(use step|use workflow)/)) {
56
+ // Skip generated workflow route files to avoid re-processing them
57
+ if (await checkGeneratedFile(filename)) {
12
58
  return normalizedSource;
13
59
  }
14
- const isTypeScript = filename.endsWith('.ts') || filename.endsWith('.tsx');
15
- const isTsx = filename.endsWith('.tsx');
60
+ // Detect workflow patterns in the source code
61
+ const patterns = await detectPatterns(normalizedSource);
62
+ // For @workflow SDK packages, only transform files with actual directives,
63
+ // not files that just match serde patterns (which are internal SDK implementation files)
64
+ const isSdkFile = await checkSdkFile(filename);
65
+ if (isSdkFile && !patterns.hasDirective) {
66
+ return normalizedSource;
67
+ }
68
+ // Check if file needs transformation based on patterns and path
69
+ if (!(await checkShouldTransform(filename, patterns))) {
70
+ return normalizedSource;
71
+ }
72
+ const isTypeScript = filename.endsWith('.ts') ||
73
+ filename.endsWith('.tsx') ||
74
+ filename.endsWith('.mts') ||
75
+ filename.endsWith('.cts');
76
+ // Calculate relative filename for SWC plugin
77
+ // The SWC plugin uses filename to generate workflowId, so it must be relative
78
+ const workingDir = process.cwd();
79
+ const normalizedWorkingDir = workingDir
80
+ .replace(/\\/g, '/')
81
+ .replace(/\/$/, '');
82
+ const normalizedFilepath = filename.replace(/\\/g, '/');
83
+ // Windows fix: Use case-insensitive comparison to work around drive letter casing issues
84
+ const lowerWd = normalizedWorkingDir.toLowerCase();
85
+ const lowerPath = normalizedFilepath.toLowerCase();
86
+ let relativeFilename;
87
+ if (lowerPath.startsWith(lowerWd + '/')) {
88
+ // File is under working directory - manually calculate relative path
89
+ relativeFilename = normalizedFilepath.substring(normalizedWorkingDir.length + 1);
90
+ }
91
+ else if (lowerPath === lowerWd) {
92
+ // File IS the working directory (shouldn't happen)
93
+ relativeFilename = '.';
94
+ }
95
+ else {
96
+ // Use relative() for files outside working directory
97
+ relativeFilename = (0, node_path_1.relative)(workingDir, filename).replace(/\\/g, '/');
98
+ if (relativeFilename.startsWith('../')) {
99
+ relativeFilename = relativeFilename
100
+ .split('/')
101
+ .filter((part) => part !== '..')
102
+ .join('/');
103
+ }
104
+ }
105
+ // Final safety check - ensure we never pass an absolute path to SWC
106
+ if (relativeFilename.includes(':') || relativeFilename.startsWith('/')) {
107
+ // This should rarely happen, but use filename split as last resort
108
+ relativeFilename = normalizedFilepath.split('/').pop() || 'unknown.ts';
109
+ }
110
+ // Get decorator options from tsconfig (cached per working directory)
111
+ const decoratorOptions = await getDecoratorOptions(workingDir);
112
+ // Resolve module specifier for packages (node_modules or workspace packages)
113
+ const moduleSpecifier = await getModuleSpecifier(filename, workingDir);
16
114
  // Transform with SWC
17
115
  const result = await (0, core_1.transform)(normalizedSource, {
18
- filename,
116
+ filename: relativeFilename,
19
117
  jsc: {
20
118
  parser: {
21
- syntax: isTypeScript ? 'typescript' : 'ecmascript',
22
- tsx: isTsx,
119
+ ...(isTypeScript
120
+ ? {
121
+ syntax: 'typescript',
122
+ tsx: filename.endsWith('.tsx'),
123
+ decorators: decoratorOptions.decorators,
124
+ }
125
+ : {
126
+ syntax: 'ecmascript',
127
+ jsx: filename.endsWith('.jsx'),
128
+ decorators: decoratorOptions.decorators,
129
+ }),
23
130
  },
24
131
  target: 'es2022',
25
132
  experimental: {
26
133
  plugins: [
27
- [require.resolve('@workflow/swc-plugin'), { mode: 'client' }],
134
+ [
135
+ require.resolve('@workflow/swc-plugin'),
136
+ { mode: 'client', moduleSpecifier },
137
+ ],
28
138
  ],
29
139
  },
140
+ transform: {
141
+ react: {
142
+ runtime: 'preserve',
143
+ },
144
+ legacyDecorator: decoratorOptions.legacyDecorator,
145
+ decoratorMetadata: decoratorOptions.decoratorMetadata,
146
+ },
30
147
  },
31
148
  minify: false,
32
149
  inputSourceMap: sourceMap,
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":";;AAIA,iCAwCC;AA5CD,oCAAsC;AAEtC,oDAAoD;AACpD,wBAAwB;AACT,KAAK,UAAU,cAAc,CAI1C,MAAuB,EACvB,SAAc;IAEd,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;IACnC,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAE3C,4CAA4C;IAC5C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC;QACvD,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAExC,qBAAqB;IACrB,MAAM,MAAM,GAAG,MAAM,IAAA,gBAAS,EAAC,gBAAgB,EAAE;QAC/C,QAAQ;QACR,GAAG,EAAE;YACH,MAAM,EAAE;gBACN,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY;gBAClD,GAAG,EAAE,KAAK;aACX;YACD,MAAM,EAAE,QAAQ;YAChB,YAAY,EAAE;gBACZ,OAAO,EAAE;oBACP,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;iBAC9D;aACF;SACF;QACD,MAAM,EAAE,KAAK;QACb,cAAc,EAAE,SAAS;QACzB,UAAU,EAAE,IAAI;QAChB,oBAAoB,EAAE,IAAI;KAC3B,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
package/dist/runtime.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from '@workflow/cli/dist/lib/runtime';
1
+ export * from '@workflow/core/dist/runtime';
2
2
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAGA,cAAc,gCAAgC,CAAC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAGA,cAAc,6BAA6B,CAAC"}
package/dist/runtime.js CHANGED
@@ -17,5 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  // re-export runtime as stub for resolving to not
18
18
  // require @workflow/core be a dependency as well as
19
19
  // @workflow/next
20
- __exportStar(require("@workflow/cli/dist/lib/runtime"), exports);
20
+ __exportStar(require("@workflow/core/dist/runtime"), exports);
21
21
  //# sourceMappingURL=runtime.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAAiD;AACjD,oDAAoD;AACpD,iBAAiB;AACjB,iEAA+C"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAAiD;AACjD,oDAAoD;AACpD,iBAAiB;AACjB,8DAA4C"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Checks if the SWC plugin build has changed and invalidates the Next.js cache if needed.
3
+ * Also registers an exit handler to write the current build hash for future comparisons.
4
+ *
5
+ * @param distDir - The Next.js dist directory (e.g., '.next')
6
+ */
7
+ export declare function maybeInvalidateCacheOnSwcChange(distDir: string): void;
8
+ //# sourceMappingURL=swc-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swc-cache.d.ts","sourceRoot":"","sources":["../src/swc-cache.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAyCrE"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.maybeInvalidateCacheOnSwcChange = maybeInvalidateCacheOnSwcChange;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ /**
10
+ * Checks if the SWC plugin build has changed and invalidates the Next.js cache if needed.
11
+ * Also registers an exit handler to write the current build hash for future comparisons.
12
+ *
13
+ * @param distDir - The Next.js dist directory (e.g., '.next')
14
+ */
15
+ function maybeInvalidateCacheOnSwcChange(distDir) {
16
+ const cacheDir = path_1.default.join(distDir, 'cache');
17
+ const devCacheDir = path_1.default.join(distDir, 'dev', 'cache');
18
+ const workflowJsonPath = path_1.default.join(cacheDir, 'workflow.json');
19
+ const swcPluginBuildHash = require('@workflow/swc-plugin/build-hash.json')
20
+ .buildHash;
21
+ let shouldInvalidateCache = false;
22
+ try {
23
+ const existing = JSON.parse(fs_1.default.readFileSync(workflowJsonPath, 'utf-8'));
24
+ if (existing.swcPluginBuildHash !== swcPluginBuildHash) {
25
+ shouldInvalidateCache = true;
26
+ }
27
+ }
28
+ catch {
29
+ // File doesn't exist or is invalid
30
+ shouldInvalidateCache = true;
31
+ }
32
+ if (shouldInvalidateCache) {
33
+ console.log('workflow transform upgraded, invalidating Next.js cache');
34
+ // Delete cache directories
35
+ const cacheDirs = [cacheDir, devCacheDir];
36
+ for (const dir of cacheDirs) {
37
+ if (fs_1.default.existsSync(dir)) {
38
+ fs_1.default.rmSync(dir, { recursive: true, force: true });
39
+ }
40
+ }
41
+ }
42
+ // Write workflow.json lazily on process exit
43
+ process.on('exit', () => {
44
+ try {
45
+ fs_1.default.mkdirSync(cacheDir, { recursive: true });
46
+ fs_1.default.writeFileSync(workflowJsonPath, JSON.stringify({ swcPluginBuildHash }, null, 2));
47
+ }
48
+ catch {
49
+ // Ignore errors on exit
50
+ }
51
+ });
52
+ }
53
+ //# sourceMappingURL=swc-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swc-cache.js","sourceRoot":"","sources":["../src/swc-cache.ts"],"names":[],"mappings":";;;;;AASA,0EAyCC;AAlDD,4CAAoB;AACpB,gDAAwB;AAExB;;;;;GAKG;AACH,SAAgB,+BAA+B,CAAC,OAAe;IAC7D,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAC9D,MAAM,kBAAkB,GAAG,OAAO,CAAC,sCAAsC,CAAC;SACvE,SAAmB,CAAC;IAEvB,IAAI,qBAAqB,GAAG,KAAK,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;QACxE,IAAI,QAAQ,CAAC,kBAAkB,KAAK,kBAAkB,EAAE,CAAC;YACvD,qBAAqB,GAAG,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mCAAmC;QACnC,qBAAqB,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED,IAAI,qBAAqB,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;QACvE,2BAA2B;QAC3B,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1C,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,IAAI,YAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,YAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QACtB,IAAI,CAAC;YACH,YAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5C,YAAE,CAAC,aAAa,CACd,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAChD,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,14 @@
1
+ ---
2
+ title: "workflow/next"
3
+ description: Next.js integration for automatic bundling and runtime configuration.
4
+ ---
5
+
6
+ Next.js integration for Workflow DevKit that automatically configures bundling and runtime support.
7
+
8
+ ## Functions
9
+
10
+ <Cards>
11
+ <Card title="withWorkflow" href="/docs/api-reference/workflow-next/with-workflow">
12
+ Configures webpack/turbopack loaders to transform workflow code (`"use step"`/`"use workflow"` directives)
13
+ </Card>
14
+ </Cards>
@@ -0,0 +1,52 @@
1
+ ---
2
+ title: withWorkflow
3
+ description: Configure webpack/turbopack to transform workflow directives in Next.js.
4
+ ---
5
+
6
+ Configures webpack/turbopack loaders to transform workflow code (`"use step"`/`"use workflow"` directives)
7
+
8
+ ## Usage
9
+
10
+ To enable `"use step"` and `"use workflow"` directives while developing locally or deploying to production, wrap your `nextConfig` with `withWorkflow`.
11
+
12
+ ```typescript title="next.config.ts" lineNumbers
13
+ import { withWorkflow } from "workflow/next"; // [!code highlight]
14
+ import type { NextConfig } from "next";
15
+
16
+ const nextConfig: NextConfig = {
17
+ // … rest of your Next.js config
18
+ };
19
+
20
+ // not required but allows configuring workflow options
21
+ const workflowConfig = {}
22
+
23
+ export default withWorkflow(nextConfig, workflowConfig); // [!code highlight]
24
+ ```
25
+
26
+ If you are exporting a function in your `next.config` you will need to ensure you call the function returned from `withWorkflow`.
27
+
28
+ ```typescript title="next.config.ts" lineNumbers
29
+ import { NextConfig } from "next";
30
+ import { withWorkflow } from "workflow/next";
31
+ import createNextIntlPlugin from "next-intl/plugin";
32
+
33
+ const withNextIntl = createNextIntlPlugin();
34
+
35
+ export default async function config(
36
+ phase: string,
37
+ ctx: {
38
+ defaultConfig: NextConfig
39
+ }
40
+ ): Promise<NextConfig> {
41
+ let nextConfig: NextConfig | typeof config = {};
42
+
43
+ for (const configModifier of [withNextIntl, withWorkflow]) {
44
+ nextConfig = configModifier(nextConfig);
45
+
46
+ if (typeof nextConfig === "function") {
47
+ nextConfig = await nextConfig(phase, ctx);
48
+ }
49
+ }
50
+ return nextConfig;
51
+ }
52
+ ```