@workflow/next 5.0.0-beta.4 → 5.0.0-beta.40
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/builder-eager.d.ts +1 -1
- package/dist/builder-eager.d.ts.map +1 -1
- package/dist/builder-eager.js +377 -220
- package/dist/builder.d.ts +1 -4
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +2 -28
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +311 -55
- package/dist/loader.d.ts +5 -0
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +15 -341
- package/dist/runtime.d.ts +1 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +2 -2
- package/dist/swc-plugin-cache.d.ts +7 -0
- package/dist/swc-plugin-cache.d.ts.map +1 -0
- package/dist/swc-plugin-cache.js +23 -0
- package/dist/watch-ignore.d.ts +51 -0
- package/dist/watch-ignore.d.ts.map +1 -0
- package/dist/watch-ignore.js +264 -0
- package/dist/watch-rebuild.d.ts +63 -0
- package/dist/watch-rebuild.d.ts.map +1 -0
- package/dist/watch-rebuild.js +399 -0
- package/docs/api-reference/with-workflow.mdx +56 -2
- package/docs/next.mdx +12 -6
- package/package.json +10 -7
- package/dist/builder-deferred.d.ts +0 -2
- package/dist/builder-deferred.d.ts.map +0 -1
- package/dist/builder-deferred.js +0 -1401
- package/dist/builder-deferred.js.map +0 -1
- package/dist/builder-eager.js.map +0 -1
- package/dist/builder.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/loader.js.map +0 -1
- package/dist/runtime.js.map +0 -1
- package/dist/socket-server.d.ts +0 -48
- package/dist/socket-server.d.ts.map +0 -1
- package/dist/socket-server.js +0 -154
- package/dist/socket-server.js.map +0 -1
package/dist/loader.js
CHANGED
|
@@ -1,48 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLoaderSourceMapOptions = getLoaderSourceMapOptions;
|
|
3
4
|
exports.default = workflowLoader;
|
|
4
5
|
const node_fs_1 = require("node:fs");
|
|
5
|
-
const promises_1 = require("node:fs/promises");
|
|
6
|
-
const node_net_1 = require("node:net");
|
|
7
6
|
const node_path_1 = require("node:path");
|
|
8
7
|
const core_1 = require("@swc/core");
|
|
9
|
-
const socket_server_js_1 = require("./socket-server.js");
|
|
10
8
|
// Cache decorator options per working directory to avoid reading tsconfig for every file
|
|
11
9
|
const decoratorOptionsCache = new Map();
|
|
12
10
|
// Cache for shared utilities from @workflow/builders (ESM module loaded dynamically in CommonJS context)
|
|
13
11
|
let cachedBuildersModule = null;
|
|
14
12
|
let cachedLoaderStaticDependencies = null;
|
|
15
|
-
const discoveredPatternStateByFilePath = new Map();
|
|
16
|
-
// Cache socket connection to avoid reconnecting on every file.
|
|
17
|
-
let socketClientPromise = null;
|
|
18
|
-
let socketClient = null;
|
|
19
|
-
let socketClientKey = null;
|
|
20
|
-
const ROUTE_STUB_FILE_MARKER = 'WORKFLOW_ROUTE_STUB_FILE';
|
|
21
|
-
const ROUTE_STUB_BUILD_WAIT_TIMEOUT_MS = 120_000;
|
|
22
|
-
let pendingDeferredRouteStubBuildPromise = null;
|
|
23
13
|
function registerFileDependency(loaderContext, dependencyPath) {
|
|
24
14
|
loaderContext.addDependency?.(dependencyPath);
|
|
25
15
|
loaderContext.addBuildDependency?.(dependencyPath);
|
|
26
16
|
}
|
|
27
|
-
function updateDiscoveredPatternState(filePath, nextState) {
|
|
28
|
-
const previousState = discoveredPatternStateByFilePath.get(filePath);
|
|
29
|
-
const hasAnyPattern = nextState.hasWorkflow || nextState.hasStep || nextState.hasSerde;
|
|
30
|
-
if (!hasAnyPattern) {
|
|
31
|
-
if (!previousState) {
|
|
32
|
-
return { shouldNotify: false };
|
|
33
|
-
}
|
|
34
|
-
discoveredPatternStateByFilePath.delete(filePath);
|
|
35
|
-
return { shouldNotify: true, previousState };
|
|
36
|
-
}
|
|
37
|
-
if (previousState &&
|
|
38
|
-
previousState.hasWorkflow === nextState.hasWorkflow &&
|
|
39
|
-
previousState.hasStep === nextState.hasStep &&
|
|
40
|
-
previousState.hasSerde === nextState.hasSerde) {
|
|
41
|
-
return { shouldNotify: false, previousState };
|
|
42
|
-
}
|
|
43
|
-
discoveredPatternStateByFilePath.set(filePath, nextState);
|
|
44
|
-
return { shouldNotify: true, previousState };
|
|
45
|
-
}
|
|
46
17
|
function addIfExists(files, dependencyPath) {
|
|
47
18
|
if ((0, node_fs_1.existsSync)(dependencyPath)) {
|
|
48
19
|
files.add(dependencyPath);
|
|
@@ -61,7 +32,6 @@ function resolveLoaderStaticDependencies() {
|
|
|
61
32
|
const workflowBuildersPackageJsonPath = (0, node_path_1.join)((0, node_path_1.dirname)(workflowBuildersPath), '../package.json');
|
|
62
33
|
const files = new Set([
|
|
63
34
|
__filename,
|
|
64
|
-
require.resolve('./socket-server'),
|
|
65
35
|
swcPluginPath,
|
|
66
36
|
swcPluginBuildHashPath,
|
|
67
37
|
workflowBuildersPath,
|
|
@@ -81,286 +51,6 @@ function registerTransformDependencies(loaderContext) {
|
|
|
81
51
|
}
|
|
82
52
|
return staticDependencies.swcPluginPath;
|
|
83
53
|
}
|
|
84
|
-
function resetSocketClient(cachedSocket) {
|
|
85
|
-
if (cachedSocket && socketClient && socketClient !== cachedSocket) {
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
socketClientPromise = null;
|
|
89
|
-
socketClient = null;
|
|
90
|
-
socketClientKey = null;
|
|
91
|
-
}
|
|
92
|
-
async function writeSocketMessage(socket, message) {
|
|
93
|
-
await new Promise((resolve, reject) => {
|
|
94
|
-
socket.write(message, (error) => {
|
|
95
|
-
if (error) {
|
|
96
|
-
reject(error);
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
resolve();
|
|
100
|
-
});
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
function getSocketInfoFilePath() {
|
|
104
|
-
const configuredPath = process.env.WORKFLOW_SOCKET_INFO_PATH;
|
|
105
|
-
if (configuredPath) {
|
|
106
|
-
return configuredPath;
|
|
107
|
-
}
|
|
108
|
-
// Fallback for worker processes that don't inherit dynamic env updates
|
|
109
|
-
// from the process that created the socket server.
|
|
110
|
-
const distDir = process.env.WORKFLOW_NEXT_DIST_DIR || '.next';
|
|
111
|
-
const cwdFallbackPath = (0, node_path_1.join)(process.cwd(), distDir, 'cache', 'workflow-socket.json');
|
|
112
|
-
const projectRoot = process.env.WORKFLOW_PROJECT_ROOT;
|
|
113
|
-
if (projectRoot) {
|
|
114
|
-
const projectRootFallbackPath = (0, node_path_1.join)(projectRoot, distDir, 'cache', 'workflow-socket.json');
|
|
115
|
-
if ((0, node_fs_1.existsSync)(projectRootFallbackPath)) {
|
|
116
|
-
return projectRootFallbackPath;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
return cwdFallbackPath;
|
|
120
|
-
}
|
|
121
|
-
function getSocketCredentialsFromEnv() {
|
|
122
|
-
const socketPort = process.env.WORKFLOW_SOCKET_PORT;
|
|
123
|
-
const authToken = process.env.WORKFLOW_SOCKET_AUTH;
|
|
124
|
-
if (!socketPort || !authToken) {
|
|
125
|
-
return null;
|
|
126
|
-
}
|
|
127
|
-
const port = Number.parseInt(socketPort, 10);
|
|
128
|
-
if (Number.isNaN(port)) {
|
|
129
|
-
return null;
|
|
130
|
-
}
|
|
131
|
-
return { port, authToken };
|
|
132
|
-
}
|
|
133
|
-
async function getSocketCredentialsFromFile() {
|
|
134
|
-
const socketInfoFilePath = getSocketInfoFilePath();
|
|
135
|
-
if (!socketInfoFilePath) {
|
|
136
|
-
return null;
|
|
137
|
-
}
|
|
138
|
-
if (!(0, node_fs_1.existsSync)(socketInfoFilePath)) {
|
|
139
|
-
return null;
|
|
140
|
-
}
|
|
141
|
-
try {
|
|
142
|
-
const raw = await (0, promises_1.readFile)(socketInfoFilePath, 'utf8');
|
|
143
|
-
const parsed = JSON.parse(raw);
|
|
144
|
-
const authToken = typeof parsed.authToken === 'string' ? parsed.authToken : null;
|
|
145
|
-
const numericPort = typeof parsed.port === 'number'
|
|
146
|
-
? parsed.port
|
|
147
|
-
: Number.parseInt(String(parsed.port), 10);
|
|
148
|
-
if (!authToken || Number.isNaN(numericPort)) {
|
|
149
|
-
return null;
|
|
150
|
-
}
|
|
151
|
-
return {
|
|
152
|
-
port: numericPort,
|
|
153
|
-
authToken,
|
|
154
|
-
};
|
|
155
|
-
}
|
|
156
|
-
catch {
|
|
157
|
-
return null;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
async function getSocketCredentials() {
|
|
161
|
-
const envCredentials = getSocketCredentialsFromEnv();
|
|
162
|
-
if (envCredentials) {
|
|
163
|
-
return envCredentials;
|
|
164
|
-
}
|
|
165
|
-
return await getSocketCredentialsFromFile();
|
|
166
|
-
}
|
|
167
|
-
async function getSocketClient() {
|
|
168
|
-
const socketCredentials = await getSocketCredentials();
|
|
169
|
-
if (!socketCredentials) {
|
|
170
|
-
return null;
|
|
171
|
-
}
|
|
172
|
-
if (socketClient?.destroyed) {
|
|
173
|
-
resetSocketClient(socketClient);
|
|
174
|
-
}
|
|
175
|
-
const currentSocketKey = `${socketCredentials.port}:${socketCredentials.authToken}`;
|
|
176
|
-
if (socketClientKey && socketClientKey !== currentSocketKey) {
|
|
177
|
-
if (socketClient) {
|
|
178
|
-
resetSocketClient(socketClient);
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
resetSocketClient();
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
if (!socketClientPromise) {
|
|
185
|
-
socketClientPromise = (async () => {
|
|
186
|
-
try {
|
|
187
|
-
const socket = (0, node_net_1.connect)({
|
|
188
|
-
port: socketCredentials.port,
|
|
189
|
-
host: '127.0.0.1',
|
|
190
|
-
});
|
|
191
|
-
// Wait for connection
|
|
192
|
-
await new Promise((resolve, reject) => {
|
|
193
|
-
const onConnect = () => {
|
|
194
|
-
socket.setNoDelay(true);
|
|
195
|
-
cleanup();
|
|
196
|
-
resolve();
|
|
197
|
-
};
|
|
198
|
-
const onError = (error) => {
|
|
199
|
-
cleanup();
|
|
200
|
-
reject(error);
|
|
201
|
-
};
|
|
202
|
-
const timeout = setTimeout(() => {
|
|
203
|
-
cleanup();
|
|
204
|
-
socket.destroy();
|
|
205
|
-
reject(new Error('Socket connection timeout'));
|
|
206
|
-
}, 1000);
|
|
207
|
-
const cleanup = () => {
|
|
208
|
-
clearTimeout(timeout);
|
|
209
|
-
socket.off('connect', onConnect);
|
|
210
|
-
socket.off('error', onError);
|
|
211
|
-
};
|
|
212
|
-
socket.on('connect', onConnect);
|
|
213
|
-
socket.on('error', onError);
|
|
214
|
-
});
|
|
215
|
-
socket.on('close', () => {
|
|
216
|
-
resetSocketClient(socket);
|
|
217
|
-
});
|
|
218
|
-
socket.on('error', () => {
|
|
219
|
-
resetSocketClient(socket);
|
|
220
|
-
});
|
|
221
|
-
socketClient = socket;
|
|
222
|
-
socketClientKey = currentSocketKey;
|
|
223
|
-
return socket;
|
|
224
|
-
}
|
|
225
|
-
catch (error) {
|
|
226
|
-
resetSocketClient();
|
|
227
|
-
throw error;
|
|
228
|
-
}
|
|
229
|
-
})();
|
|
230
|
-
}
|
|
231
|
-
return socketClientPromise;
|
|
232
|
-
}
|
|
233
|
-
async function notifySocketServer(filename, hasWorkflow, hasStep, hasSerde) {
|
|
234
|
-
const socketCredentials = await getSocketCredentials();
|
|
235
|
-
if (!socketCredentials) {
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
238
|
-
const socket = await getSocketClient();
|
|
239
|
-
if (!socket) {
|
|
240
|
-
throw new Error('Invariant: missing workflow socket connection');
|
|
241
|
-
}
|
|
242
|
-
const message = {
|
|
243
|
-
type: 'file-discovered',
|
|
244
|
-
filePath: filename,
|
|
245
|
-
hasWorkflow,
|
|
246
|
-
hasStep,
|
|
247
|
-
hasSerde,
|
|
248
|
-
};
|
|
249
|
-
const serializedMessage = (0, socket_server_js_1.serializeMessage)(message, socketCredentials.authToken);
|
|
250
|
-
try {
|
|
251
|
-
await writeSocketMessage(socket, serializedMessage);
|
|
252
|
-
}
|
|
253
|
-
catch (error) {
|
|
254
|
-
resetSocketClient(socket);
|
|
255
|
-
const reconnectedSocket = await getSocketClient();
|
|
256
|
-
if (!reconnectedSocket) {
|
|
257
|
-
throw error;
|
|
258
|
-
}
|
|
259
|
-
await writeSocketMessage(reconnectedSocket, serializedMessage);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
function isWorkflowRouteStubSource(source) {
|
|
263
|
-
return source.includes(ROUTE_STUB_FILE_MARKER);
|
|
264
|
-
}
|
|
265
|
-
async function createSocketConnection(socketCredentials, timeoutMs = 1_000) {
|
|
266
|
-
return await new Promise((resolve, reject) => {
|
|
267
|
-
const socket = (0, node_net_1.connect)({
|
|
268
|
-
port: socketCredentials.port,
|
|
269
|
-
host: '127.0.0.1',
|
|
270
|
-
});
|
|
271
|
-
const timeout = setTimeout(() => {
|
|
272
|
-
cleanup();
|
|
273
|
-
socket.destroy();
|
|
274
|
-
reject(new Error('Socket connection timeout'));
|
|
275
|
-
}, timeoutMs);
|
|
276
|
-
const cleanup = () => {
|
|
277
|
-
clearTimeout(timeout);
|
|
278
|
-
socket.off('connect', onConnect);
|
|
279
|
-
socket.off('error', onError);
|
|
280
|
-
};
|
|
281
|
-
const onConnect = () => {
|
|
282
|
-
socket.setNoDelay(true);
|
|
283
|
-
cleanup();
|
|
284
|
-
resolve(socket);
|
|
285
|
-
};
|
|
286
|
-
const onError = (error) => {
|
|
287
|
-
cleanup();
|
|
288
|
-
socket.destroy();
|
|
289
|
-
reject(error);
|
|
290
|
-
};
|
|
291
|
-
socket.on('connect', onConnect);
|
|
292
|
-
socket.on('error', onError);
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
async function waitForDeferredBuildComplete(socket, authToken, timeoutMs = ROUTE_STUB_BUILD_WAIT_TIMEOUT_MS) {
|
|
296
|
-
await new Promise((resolve, reject) => {
|
|
297
|
-
let buffer = '';
|
|
298
|
-
const timeout = setTimeout(() => {
|
|
299
|
-
cleanup();
|
|
300
|
-
reject(new Error('Timed out waiting for deferred route build completion'));
|
|
301
|
-
}, timeoutMs);
|
|
302
|
-
const cleanup = () => {
|
|
303
|
-
clearTimeout(timeout);
|
|
304
|
-
socket.off('data', onData);
|
|
305
|
-
socket.off('error', onError);
|
|
306
|
-
socket.off('close', onClose);
|
|
307
|
-
socket.off('end', onClose);
|
|
308
|
-
};
|
|
309
|
-
const onError = (error) => {
|
|
310
|
-
cleanup();
|
|
311
|
-
reject(error);
|
|
312
|
-
};
|
|
313
|
-
const onClose = () => {
|
|
314
|
-
cleanup();
|
|
315
|
-
reject(new Error('Socket closed before deferred route build completed'));
|
|
316
|
-
};
|
|
317
|
-
const onData = (chunk) => {
|
|
318
|
-
buffer += chunk.toString();
|
|
319
|
-
let newlineIndex = buffer.indexOf('\n');
|
|
320
|
-
while (newlineIndex !== -1) {
|
|
321
|
-
const line = buffer.slice(0, newlineIndex);
|
|
322
|
-
buffer = buffer.slice(newlineIndex + 1);
|
|
323
|
-
newlineIndex = buffer.indexOf('\n');
|
|
324
|
-
const message = (0, socket_server_js_1.parseMessage)(line, authToken);
|
|
325
|
-
if (message?.type === 'build-complete') {
|
|
326
|
-
cleanup();
|
|
327
|
-
resolve();
|
|
328
|
-
return;
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
};
|
|
332
|
-
socket.on('data', onData);
|
|
333
|
-
socket.on('error', onError);
|
|
334
|
-
socket.on('close', onClose);
|
|
335
|
-
socket.on('end', onClose);
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
async function triggerDeferredRouteStubBuildAndWait() {
|
|
339
|
-
const socketCredentials = await getSocketCredentials();
|
|
340
|
-
if (!socketCredentials) {
|
|
341
|
-
return;
|
|
342
|
-
}
|
|
343
|
-
const socket = await createSocketConnection(socketCredentials);
|
|
344
|
-
try {
|
|
345
|
-
await writeSocketMessage(socket, (0, socket_server_js_1.serializeMessage)({ type: 'trigger-build' }, socketCredentials.authToken));
|
|
346
|
-
await waitForDeferredBuildComplete(socket, socketCredentials.authToken);
|
|
347
|
-
}
|
|
348
|
-
finally {
|
|
349
|
-
socket.destroy();
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
async function ensureDeferredRouteStubBuildAndWait() {
|
|
353
|
-
if (pendingDeferredRouteStubBuildPromise) {
|
|
354
|
-
return pendingDeferredRouteStubBuildPromise;
|
|
355
|
-
}
|
|
356
|
-
const pendingPromise = triggerDeferredRouteStubBuildAndWait();
|
|
357
|
-
pendingDeferredRouteStubBuildPromise = pendingPromise.finally(() => {
|
|
358
|
-
if (pendingDeferredRouteStubBuildPromise === pendingPromise) {
|
|
359
|
-
pendingDeferredRouteStubBuildPromise = null;
|
|
360
|
-
}
|
|
361
|
-
});
|
|
362
|
-
return pendingDeferredRouteStubBuildPromise;
|
|
363
|
-
}
|
|
364
54
|
async function getBuildersModule() {
|
|
365
55
|
if (cachedBuildersModule) {
|
|
366
56
|
return cachedBuildersModule;
|
|
@@ -442,6 +132,17 @@ async function getRelativeFilenameForSwc(filename, workingDir) {
|
|
|
442
132
|
}
|
|
443
133
|
return relativeFilename;
|
|
444
134
|
}
|
|
135
|
+
function isNodeModulesPath(filename) {
|
|
136
|
+
return /(?:^|[/\\])node_modules(?:[/\\]|$)/.test(filename);
|
|
137
|
+
}
|
|
138
|
+
function getLoaderSourceMapOptions(filename, sourceMap) {
|
|
139
|
+
const shouldEmitSourceMaps = !isNodeModulesPath(filename);
|
|
140
|
+
return {
|
|
141
|
+
inputSourceMap: shouldEmitSourceMaps ? (sourceMap ?? false) : false,
|
|
142
|
+
sourceMaps: shouldEmitSourceMaps,
|
|
143
|
+
inlineSourcesContent: shouldEmitSourceMaps,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
445
146
|
function workflowLoader(source, sourceMap) {
|
|
446
147
|
const callback = this.async?.();
|
|
447
148
|
const run = async () => {
|
|
@@ -452,37 +153,11 @@ function workflowLoader(source, sourceMap) {
|
|
|
452
153
|
const sourceForTransform = normalizedSource;
|
|
453
154
|
const isGeneratedWorkflowFile = await checkGeneratedFile(filename);
|
|
454
155
|
// Skip generated workflow route files to avoid re-processing them.
|
|
455
|
-
// Deferred route stubs are a special case: wait for the generated route
|
|
456
|
-
// output to become available before returning.
|
|
457
156
|
if (isGeneratedWorkflowFile) {
|
|
458
|
-
if (process.env.WORKFLOW_NEXT_LAZY_DISCOVERY === '1' &&
|
|
459
|
-
isWorkflowRouteStubSource(normalizedSource)) {
|
|
460
|
-
try {
|
|
461
|
-
await ensureDeferredRouteStubBuildAndWait();
|
|
462
|
-
const refreshedSource = await (0, promises_1.readFile)(filename, 'utf8');
|
|
463
|
-
if (!isWorkflowRouteStubSource(refreshedSource)) {
|
|
464
|
-
return { code: refreshedSource, map: sourceMap };
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
catch (error) {
|
|
468
|
-
console.warn(`[workflow] Failed waiting for deferred route build for ${filename}, using stub output`, error);
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
157
|
return { code: normalizedSource, map: sourceMap };
|
|
472
158
|
}
|
|
473
159
|
// Detect workflow patterns in the source code.
|
|
474
160
|
const patterns = await detectPatterns(sourceForTransform);
|
|
475
|
-
// Always notify discovery tracking, even for `false/false`, so files that
|
|
476
|
-
// previously had workflow/step usage are removed from the tracked sets.
|
|
477
|
-
const nextPatternState = {
|
|
478
|
-
hasWorkflow: patterns.hasUseWorkflow,
|
|
479
|
-
hasStep: patterns.hasUseStep,
|
|
480
|
-
hasSerde: patterns.hasSerde,
|
|
481
|
-
};
|
|
482
|
-
const { shouldNotify } = updateDiscoveredPatternState(filename, nextPatternState);
|
|
483
|
-
if (shouldNotify) {
|
|
484
|
-
await notifySocketServer(filename, nextPatternState.hasWorkflow, nextPatternState.hasStep, nextPatternState.hasSerde);
|
|
485
|
-
}
|
|
486
161
|
// Check if file needs transformation based on patterns and path
|
|
487
162
|
if (!(await checkShouldTransform(filename, patterns))) {
|
|
488
163
|
return { code: normalizedSource, map: sourceMap };
|
|
@@ -521,6 +196,7 @@ function workflowLoader(source, sourceMap) {
|
|
|
521
196
|
},
|
|
522
197
|
target: 'es2022',
|
|
523
198
|
experimental: {
|
|
199
|
+
cacheRoot: (0, node_path_1.join)(workingDir, '.swc'),
|
|
524
200
|
plugins: [[swcPluginPath, { mode, moduleSpecifier }]],
|
|
525
201
|
},
|
|
526
202
|
transform: {
|
|
@@ -532,9 +208,7 @@ function workflowLoader(source, sourceMap) {
|
|
|
532
208
|
},
|
|
533
209
|
},
|
|
534
210
|
minify: false,
|
|
535
|
-
|
|
536
|
-
sourceMaps: true,
|
|
537
|
-
inlineSourcesContent: true,
|
|
211
|
+
...getLoaderSourceMapOptions(filename, sourceMap),
|
|
538
212
|
});
|
|
539
213
|
let transformedMap = sourceMap;
|
|
540
214
|
if (typeof result.map === 'string') {
|
|
@@ -559,4 +233,4 @@ function workflowLoader(source, sourceMap) {
|
|
|
559
233
|
callback(error instanceof Error ? error : new Error(String(error)));
|
|
560
234
|
});
|
|
561
235
|
}
|
|
562
|
-
//# sourceMappingURL=loader.js.map
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTBNQSw4REFPQztBQWdCRCxpQ0E0R0M7QUE3VUQscUNBQXFDO0FBQ3JDLHlDQUFvRDtBQUNwRCxvQ0FBc0M7QUFNdEMseUZBQXlGO0FBQ3pGLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxHQUFHLEVBR2xDLENBQUM7QUFDSix5R0FBeUc7QUFDekcsSUFBSSxvQkFBb0IsR0FBK0MsSUFBSSxDQUFDO0FBSzVFLElBQUksOEJBQThCLEdBQW9DLElBQUksQ0FBQztBQUUzRSxTQUFTLHNCQUFzQixDQUM3QixhQUFvQyxFQUNwQyxjQUFzQjtJQUV0QixhQUFhLENBQUMsYUFBYSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLEtBQWtCLEVBQUUsY0FBc0I7SUFDN0QsSUFBSSxJQUFBLG9CQUFVLEVBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUMvQixLQUFLLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUywrQkFBK0I7SUFDdEMsSUFBSSw4QkFBOEIsRUFBRSxDQUFDO1FBQ25DLE9BQU8sOEJBQThCLENBQUM7SUFDeEMsQ0FBQztJQUVELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUM5RCxNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQzVDLHNDQUFzQyxDQUN2QyxDQUFDO0lBQ0YsTUFBTSxvQkFBb0IsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFbkUsK0RBQStEO0lBQy9ELG9FQUFvRTtJQUNwRSxNQUFNLHdCQUF3QixH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QUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsS0FBSyxHQUFHLEVBQUU7U0FDUCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDekQsS0FBSyxDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUU7UUFDeEIsUUFBUSxDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGlzdHNTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBkaXJuYW1lLCBqb2luLCByZWxhdGl2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyB0cmFuc2Zvcm0gfSBmcm9tICdAc3djL2NvcmUnO1xuXG50eXBlIERlY29yYXRvck9wdGlvbnNXaXRoQ29uZmlnUGF0aCA9XG4gIGltcG9ydCgnQHdvcmtmbG93L2J1aWxkZXJzJykuRGVjb3JhdG9yT3B0aW9uc1dpdGhDb25maWdQYXRoO1xudHlwZSBXb3JrZmxvd1BhdHRlcm5NYXRjaCA9IGltcG9ydCgnQHdvcmtmbG93L2J1aWxkZXJzJykuV29ya2Zsb3dQYXR0ZXJuTWF0Y2g7XG5cbi8vIENhY2hlIGRlY29yYXRvciBvcHRpb25zIHBlciB3b3JraW5nIGRpcmVjdG9yeSB0byBhdm9pZCByZWFkaW5nIHRzY29uZmlnIGZvciBldmVyeSBmaWxlXG5jb25zdCBkZWNvcmF0b3JPcHRpb25zQ2FjaGUgPSBuZXcgTWFwPFxuICBzdHJpbmcsXG4gIFByb21pc2U8RGVjb3JhdG9yT3B0aW9uc1dpdGhDb25maWdQYXRoPlxuPigpO1xuLy8gQ2FjaGUgZm9yIHNoYXJlZCB1dGlsaXRpZXMgZnJvbSBAd29ya2Zsb3cvYnVpbGRlcnMgKEVTTSBtb2R1bGUgbG9hZGVkIGR5bmFtaWNhbGx5IGluIENvbW1vbkpTIGNvbnRleHQpXG5sZXQgY2FjaGVkQnVpbGRlcnNNb2R1bGU6IHR5cGVvZiBpbXBvcnQoJ0B3b3JrZmxvdy9idWlsZGVycycpIHwgbnVsbCA9IG51bGw7XG50eXBlIExvYWRlclN0YXRpY0RlcGVuZGVuY2llcyA9IHtcbiAgc3djUGx1Z2luUGF0aDogc3RyaW5nO1xuICBmaWxlczogc3RyaW5nW107XG59O1xubGV0IGNhY2hlZExvYWRlclN0YXRpY0RlcGVuZGVuY2llczogTG9hZGVyU3RhdGljRGVwZW5kZW5jaWVzIHwgbnVsbCA9IG51bGw7XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyRmlsZURlcGVuZGVuY3koXG4gIGxvYWRlckNvbnRleHQ6IFdvcmtmbG93TG9hZGVyQ29udGV4dCxcbiAgZGVwZW5kZW5jeVBhdGg6IHN0cmluZ1xuKTogdm9pZCB7XG4gIGxvYWRlckNvbnRleHQuYWRkRGVwZW5kZW5jeT8uKGRlcGVuZGVuY3lQYXRoKTtcbiAgbG9hZGVyQ29udGV4dC5hZGRCdWlsZERlcGVuZGVuY3k/LihkZXBlbmRlbmN5UGF0aCk7XG59XG5cbmZ1bmN0aW9uIGFkZElmRXhpc3RzKGZpbGVzOiBTZXQ8c3RyaW5nPiwgZGVwZW5kZW5jeVBhdGg6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoZXhpc3RzU3luYyhkZXBlbmRlbmN5UGF0aCkpIHtcbiAgICBmaWxlcy5hZGQoZGVwZW5kZW5jeVBhdGgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVMb2FkZXJTdGF0aWNEZXBlbmRlbmNpZXMoKTogTG9hZGVyU3RhdGljRGVwZW5kZW5jaWVzIHtcbiAgaWYgKGNhY2hlZExvYWRlclN0YXRpY0RlcGVuZGVuY2llcykge1xuICAgIHJldHVybiBjYWNoZWRMb2FkZXJTdGF0aWNEZXBlbmRlbmNpZXM7XG4gIH1cblxuICBjb25zdCBzd2NQbHVnaW5QYXRoID0gcmVxdWlyZS5yZXNvbHZlKCdAd29ya2Zsb3cvc3djLXBsdWdpbicpO1xuICBjb25zdCBzd2NQbHVnaW5CdWlsZEhhc2hQYXRoID0gcmVxdWlyZS5yZXNvbHZlKFxuICAgICdAd29ya2Zsb3cvc3djLXBsdWdpbi9idWlsZC1oYXNoLmpzb24nXG4gICk7XG4gIGNvbnN0IHdvcmtmbG93QnVpbGRlcnNQYXRoID0gcmVxdWlyZS5yZXNvbHZlKCdAd29ya2Zsb3cvYnVpbGRlcnMnKTtcblxuICAvLyBEZXJpdmUgcGFja2FnZS5qc29uIHBhdGhzIGZyb20gcmVzb2x2ZWQgZW50cnlwb2ludHMgdG8gYXZvaWRcbiAgLy8gVHVyYm9wYWNrIGxvYWRlci1ldmFsIGZhaWx1cmVzIGFyb3VuZCAuLi9wYWNrYWdlLmpzb24gcmVzb2x1dGlvbi5cbiAgY29uc3Qgc3djUGx1Z2luUGFja2FnZUpzb25QYXRoID0gam9pbihkaXJuYW1lKHN3Y1BsdWdpblBhdGgpLCAncGFja2FnZS5qc29uJyk7XG4gIGNvbnN0IHdvcmtmbG93QnVpbGRlcnNQYWNrYWdlSnNvblBhdGggPSBqb2luKFxuICAgIGRpcm5hbWUod29ya2Zsb3dCdWlsZGVyc1BhdGgpLFxuICAgICcuLi9wYWNrYWdlLmpzb24nXG4gICk7XG5cbiAgY29uc3QgZmlsZXMgPSBuZXcgU2V0PHN0cmluZz4oW1xuICAgIF9fZmlsZW5hbWUsXG4gICAgc3djUGx1Z2luUGF0aCxcbiAgICBzd2NQbHVnaW5CdWlsZEhhc2hQYXRoLFxuICAgIHdvcmtmbG93QnVpbGRlcnNQYXRoLFxuICBdKTtcbiAgYWRkSWZFeGlzdHMoZmlsZXMsIHN3Y1BsdWdpblBhY2thZ2VKc29uUGF0aCk7XG4gIGFkZElmRXhpc3RzKGZpbGVzLCB3b3JrZmxvd0J1aWxkZXJzUGFja2FnZUpzb25QYXRoKTtcblxuICBjYWNoZWRMb2FkZXJTdGF0aWNEZXBlbmRlbmNpZXMgPSB7XG4gICAgc3djUGx1Z2luUGF0aCxcbiAgICBmaWxlczogQXJyYXkuZnJvbShmaWxlcyksXG4gIH07XG4gIHJldHVybiBjYWNoZWRMb2FkZXJTdGF0aWNEZXBlbmRlbmNpZXM7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyVHJhbnNmb3JtRGVwZW5kZW5jaWVzKFxuICBsb2FkZXJDb250ZXh0OiBXb3JrZmxvd0xvYWRlckNvbnRleHRcbik6IHN0cmluZyB7XG4gIGNvbnN0IHN0YXRpY0RlcGVuZGVuY2llcyA9IHJlc29sdmVMb2FkZXJTdGF0aWNEZXBlbmRlbmNpZXMoKTtcbiAgZm9yIChjb25zdCBkZXBlbmRlbmN5UGF0aCBvZiBzdGF0aWNEZXBlbmRlbmNpZXMuZmlsZXMpIHtcbiAgICByZWdpc3RlckZpbGVEZXBlbmRlbmN5KGxvYWRlckNvbnRleHQsIGRlcGVuZGVuY3lQYXRoKTtcbiAgfVxuXG4gIHJldHVybiBzdGF0aWNEZXBlbmRlbmNpZXMuc3djUGx1Z2luUGF0aDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QnVpbGRlcnNNb2R1bGUoKTogUHJvbWlzZTxcbiAgdHlwZW9mIGltcG9ydCgnQHdvcmtmbG93L2J1aWxkZXJzJylcbj4ge1xuICBpZiAoY2FjaGVkQnVpbGRlcnNNb2R1bGUpIHtcbiAgICByZXR1cm4gY2FjaGVkQnVpbGRlcnNNb2R1bGU7XG4gIH1cbiAgLy8gRHluYW1pYyBpbXBvcnQgdG8gaGFuZGxlIEVTTSBtb2R1bGUgZnJvbSBDb21tb25KUyBjb250ZXh0XG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L3NlY3VyaXR5L25vR2xvYmFsRXZhbDogTmVlZCB0byB1c2UgZXZhbCBoZXJlIHRvIGF2b2lkIFR5cGVTY3JpcHQgZnJvbSB0cmFuc3BpbGluZyB0aGUgaW1wb3J0IHN0YXRlbWVudCBpbnRvIGByZXF1aXJlKClgXG4gIGNhY2hlZEJ1aWxkZXJzTW9kdWxlID0gKGF3YWl0IGV2YWwoXG4gICAgJ2ltcG9ydChcIkB3b3JrZmxvdy9idWlsZGVyc1wiKSdcbiAgKSkgYXMgdHlwZW9mIGltcG9ydCgnQHdvcmtmbG93L2J1aWxkZXJzJyk7XG4gIHJldHVybiBjYWNoZWRCdWlsZGVyc01vZHVsZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RGVjb3JhdG9yT3B0aW9ucyhcbiAgd29ya2luZ0Rpcjogc3RyaW5nXG4pOiBQcm9taXNlPERlY29yYXRvck9wdGlvbnNXaXRoQ29uZmlnUGF0aD4ge1xuICBjb25zdCBjYWNoZWQgPSBkZWNvcmF0b3JPcHRpb25zQ2FjaGUuZ2V0KHdvcmtpbmdEaXIpO1xuICBpZiAoY2FjaGVkKSB7XG4gICAgcmV0dXJuIGNhY2hlZDtcbiAgfVxuXG4gIGNvbnN0IHByb21pc2UgPSAoYXN5bmMgKCk6IFByb21pc2U8RGVjb3JhdG9yT3B0aW9uc1dpdGhDb25maWdQYXRoPiA9PiB7XG4gICAgY29uc3QgeyBnZXREZWNvcmF0b3JPcHRpb25zRm9yRGlyZWN0b3J5V2l0aENvbmZpZ1BhdGggfSA9XG4gICAgICBhd2FpdCBnZXRCdWlsZGVyc01vZHVsZSgpO1xuICAgIHJldHVybiBnZXREZWNvcmF0b3JPcHRpb25zRm9yRGlyZWN0b3J5V2l0aENvbmZpZ1BhdGgod29ya2luZ0Rpcik7XG4gIH0pKCk7XG5cbiAgZGVjb3JhdG9yT3B0aW9uc0NhY2hlLnNldCh3b3JraW5nRGlyLCBwcm9taXNlKTtcbiAgcmV0dXJuIHByb21pc2U7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRldGVjdFBhdHRlcm5zKHNvdXJjZTogc3RyaW5nKTogUHJvbWlzZTxXb3JrZmxvd1BhdHRlcm5NYXRjaD4ge1xuICBjb25zdCB7IGRldGVjdFdvcmtmbG93UGF0dGVybnMgfSA9IGF3YWl0IGdldEJ1aWxkZXJzTW9kdWxlKCk7XG4gIHJldHVybiBkZXRlY3RXb3JrZmxvd1BhdHRlcm5zKHNvdXJjZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNoZWNrR2VuZXJhdGVkRmlsZShmaWxlUGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHsgaXNHZW5lcmF0ZWRXb3JrZmxvd0ZpbGUgfSA9IGF3YWl0IGdldEJ1aWxkZXJzTW9kdWxlKCk7XG4gIHJldHVybiBpc0dlbmVyYXRlZFdvcmtmbG93RmlsZShmaWxlUGF0aCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNoZWNrU2hvdWxkVHJhbnNmb3JtKFxuICBmaWxlUGF0aDogc3RyaW5nLFxuICBwYXR0ZXJuczogV29ya2Zsb3dQYXR0ZXJuTWF0Y2hcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB7IHNob3VsZFRyYW5zZm9ybUZpbGUgfSA9IGF3YWl0IGdldEJ1aWxkZXJzTW9kdWxlKCk7XG4gIHJldHVybiBzaG91bGRUcmFuc2Zvcm1GaWxlKGZpbGVQYXRoLCBwYXR0ZXJucyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE1vZHVsZVNwZWNpZmllcihcbiAgZmlsZVBhdGg6IHN0cmluZyxcbiAgcHJvamVjdFJvb3Q6IHN0cmluZ1xuKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgeyByZXNvbHZlTW9kdWxlU3BlY2lmaWVyIH0gPSBhd2FpdCBnZXRCdWlsZGVyc01vZHVsZSgpO1xuICByZXR1cm4gcmVzb2x2ZU1vZHVsZVNwZWNpZmllcihmaWxlUGF0aCwgcHJvamVjdFJvb3QpLm1vZHVsZVNwZWNpZmllcjtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVdvcmtmbG93QWxpYXNQYXRoKFxuICBmaWxlUGF0aDogc3RyaW5nLFxuICB3b3JraW5nRGlyOiBzdHJpbmdcbik6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHsgcmVzb2x2ZVdvcmtmbG93QWxpYXNSZWxhdGl2ZVBhdGggfSA9IGF3YWl0IGdldEJ1aWxkZXJzTW9kdWxlKCk7XG4gIHJldHVybiByZXNvbHZlV29ya2Zsb3dBbGlhc1JlbGF0aXZlUGF0aChmaWxlUGF0aCwgd29ya2luZ0Rpcik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFJlbGF0aXZlRmlsZW5hbWVGb3JTd2MoXG4gIGZpbGVuYW1lOiBzdHJpbmcsXG4gIHdvcmtpbmdEaXI6IHN0cmluZ1xuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3Qgbm9ybWFsaXplZFdvcmtpbmdEaXIgPSB3b3JraW5nRGlyXG4gICAgLnJlcGxhY2UoL1xcXFwvZywgJy8nKVxuICAgIC5yZXBsYWNlKC9cXC8kLywgJycpO1xuICBjb25zdCBub3JtYWxpemVkRmlsZXBhdGggPSBmaWxlbmFtZS5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG5cbiAgLy8gV2luZG93cyBmaXg6IFVzZSBjYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24gdG8gd29yayBhcm91bmQgZHJpdmUgbGV0dGVyIGNhc2luZyBpc3N1ZXNcbiAgY29uc3QgbG93ZXJXZCA9IG5vcm1hbGl6ZWRXb3JraW5nRGlyLnRvTG93ZXJDYXNlKCk7XG4gIGNvbnN0IGxvd2VyUGF0aCA9IG5vcm1hbGl6ZWRGaWxlcGF0aC50b0xvd2VyQ2FzZSgpO1xuXG4gIGxldCByZWxhdGl2ZUZpbGVuYW1lOiBzdHJpbmc7XG4gIGlmIChsb3dlclBhdGguc3RhcnRzV2l0aChgJHtsb3dlcldkfS9gKSkge1xuICAgIC8vIEZpbGUgaXMgdW5kZXIgd29ya2luZyBkaXJlY3RvcnkgLSBtYW51YWxseSBjYWxjdWxhdGUgcmVsYXRpdmUgcGF0aFxuICAgIHJlbGF0aXZlRmlsZW5hbWUgPSBub3JtYWxpemVkRmlsZXBhdGguc3Vic3RyaW5nKFxuICAgICAgbm9ybWFsaXplZFdvcmtpbmdEaXIubGVuZ3RoICsgMVxuICAgICk7XG4gIH0gZWxzZSBpZiAobG93ZXJQYXRoID09PSBsb3dlcldkKSB7XG4gICAgLy8gRmlsZSBJUyB0aGUgd29ya2luZyBkaXJlY3RvcnkgKHNob3VsZG4ndCBoYXBwZW4pXG4gICAgcmVsYXRpdmVGaWxlbmFtZSA9ICcuJztcbiAgfSBlbHNlIHtcbiAgICAvLyBVc2UgcmVsYXRpdmUoKSBmb3IgZmlsZXMgb3V0c2lkZSB3b3JraW5nIGRpcmVjdG9yeVxuICAgIHJlbGF0aXZlRmlsZW5hbWUgPSByZWxhdGl2ZSh3b3JraW5nRGlyLCBmaWxlbmFtZSkucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuXG4gICAgaWYgKHJlbGF0aXZlRmlsZW5hbWUuc3RhcnRzV2l0aCgnLi4vJykpIHtcbiAgICAgIGNvbnN0IGFsaWFzZWRSZWxhdGl2ZVBhdGggPSBhd2FpdCByZXNvbHZlV29ya2Zsb3dBbGlhc1BhdGgoXG4gICAgICAgIGZpbGVuYW1lLFxuICAgICAgICB3b3JraW5nRGlyXG4gICAgICApO1xuICAgICAgaWYgKGFsaWFzZWRSZWxhdGl2ZVBhdGgpIHtcbiAgICAgICAgcmVsYXRpdmVGaWxlbmFtZSA9IGFsaWFzZWRSZWxhdGl2ZVBhdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWxhdGl2ZUZpbGVuYW1lID0gcmVsYXRpdmVGaWxlbmFtZVxuICAgICAgICAgIC5zcGxpdCgnLycpXG4gICAgICAgICAgLmZpbHRlcigocGFydCkgPT4gcGFydCAhPT0gJy4uJylcbiAgICAgICAgICAuam9pbignLycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEZpbmFsIHNhZmV0eSBjaGVjayAtIGVuc3VyZSB3ZSBuZXZlciBwYXNzIGFuIGFic29sdXRlIHBhdGggdG8gU1dDXG4gIGlmIChyZWxhdGl2ZUZpbGVuYW1lLmluY2x1ZGVzKCc6JykgfHwgcmVsYXRpdmVGaWxlbmFtZS5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAvLyBUaGlzIHNob3VsZCByYXJlbHkgaGFwcGVuLCBidXQgdXNlIGZpbGVuYW1lIHNwbGl0IGFzIGxhc3QgcmVzb3J0XG4gICAgcmVsYXRpdmVGaWxlbmFtZSA9IG5vcm1hbGl6ZWRGaWxlcGF0aC5zcGxpdCgnLycpLnBvcCgpIHx8ICd1bmtub3duLnRzJztcbiAgfVxuXG4gIHJldHVybiByZWxhdGl2ZUZpbGVuYW1lO1xufVxuXG5mdW5jdGlvbiBpc05vZGVNb2R1bGVzUGF0aChmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvKD86XnxbL1xcXFxdKW5vZGVfbW9kdWxlcyg/OlsvXFxcXF18JCkvLnRlc3QoZmlsZW5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9hZGVyU291cmNlTWFwT3B0aW9ucyhmaWxlbmFtZTogc3RyaW5nLCBzb3VyY2VNYXA6IGFueSkge1xuICBjb25zdCBzaG91bGRFbWl0U291cmNlTWFwcyA9ICFpc05vZGVNb2R1bGVzUGF0aChmaWxlbmFtZSk7XG4gIHJldHVybiB7XG4gICAgaW5wdXRTb3VyY2VNYXA6IHNob3VsZEVtaXRTb3VyY2VNYXBzID8gKHNvdXJjZU1hcCA/PyBmYWxzZSkgOiBmYWxzZSxcbiAgICBzb3VyY2VNYXBzOiBzaG91bGRFbWl0U291cmNlTWFwcyxcbiAgICBpbmxpbmVTb3VyY2VzQ29udGVudDogc2hvdWxkRW1pdFNvdXJjZU1hcHMsXG4gIH07XG59XG5cbi8vIFRoaXMgbG9hZGVyIGFwcGxpZXMgdGhlIFwidXNlIHdvcmtmbG93XCIvXCJ1c2Ugc3RlcFwiIHRyYW5zZm9ybS5cbi8vIEFsbCBmaWxlcyB1c2Ugc3RlcCBtb2RlOyB0aGUgU1dDIHBsdWdpbiBkZWNpZGVzIHBlci1mdW5jdGlvbiB3aGV0aGVyXG4vLyB0byBlbWl0IHdvcmtmbG93IG9yIHN0ZXAgYmluZGluZ3MgYmFzZWQgb24gdGhlIHNvdXJjZSdzIGRpcmVjdGl2ZXMuXG50eXBlIFdvcmtmbG93TG9hZGVyQ29udGV4dCA9IHtcbiAgcmVzb3VyY2VQYXRoOiBzdHJpbmc7XG4gIGFzeW5jPzogKCkgPT4gKFxuICAgIGVycm9yOiBFcnJvciB8IG51bGwsXG4gICAgY29udGVudD86IHN0cmluZyxcbiAgICBzb3VyY2VNYXA/OiBhbnlcbiAgKSA9PiB2b2lkO1xuICBhZGREZXBlbmRlbmN5PzogKGRlcGVuZGVuY3k6IHN0cmluZykgPT4gdm9pZDtcbiAgYWRkQnVpbGREZXBlbmRlbmN5PzogKGRlcGVuZGVuY3k6IHN0cmluZykgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHdvcmtmbG93TG9hZGVyKFxuICB0aGlzOiBXb3JrZmxvd0xvYWRlckNvbnRleHQsXG4gIHNvdXJjZTogc3RyaW5nIHwgQnVmZmVyLFxuICBzb3VyY2VNYXA6IGFueVxuKTogc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+IHwgdm9pZCB7XG4gIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5hc3luYz8uKCk7XG4gIGNvbnN0IHJ1biA9IGFzeW5jICgpOiBQcm9taXNlPHsgY29kZTogc3RyaW5nOyBtYXA6IGFueSB9PiA9PiB7XG4gICAgY29uc3QgZmlsZW5hbWUgPSB0aGlzLnJlc291cmNlUGF0aDtcbiAgICBjb25zdCBub3JtYWxpemVkU291cmNlID0gc291cmNlLnRvU3RyaW5nKCk7XG4gICAgY29uc3Qgd29ya2luZ0RpciA9IHByb2Nlc3MuY3dkKCk7XG4gICAgY29uc3Qgc3djUGx1Z2luUGF0aCA9IHJlZ2lzdGVyVHJhbnNmb3JtRGVwZW5kZW5jaWVzKHRoaXMpO1xuICAgIGNvbnN0IHNvdXJjZUZvclRyYW5zZm9ybSA9IG5vcm1hbGl6ZWRTb3VyY2U7XG5cbiAgICBjb25zdCBpc0dlbmVyYXRlZFdvcmtmbG93RmlsZSA9IGF3YWl0IGNoZWNrR2VuZXJhdGVkRmlsZShmaWxlbmFtZSk7XG4gICAgLy8gU2tpcCBnZW5lcmF0ZWQgd29ya2Zsb3cgcm91dGUgZmlsZXMgdG8gYXZvaWQgcmUtcHJvY2Vzc2luZyB0aGVtLlxuICAgIGlmIChpc0dlbmVyYXRlZFdvcmtmbG93RmlsZSkge1xuICAgICAgcmV0dXJuIHsgY29kZTogbm9ybWFsaXplZFNvdXJjZSwgbWFwOiBzb3VyY2VNYXAgfTtcbiAgICB9XG5cbiAgICAvLyBEZXRlY3Qgd29ya2Zsb3cgcGF0dGVybnMgaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgIGNvbnN0IHBhdHRlcm5zID0gYXdhaXQgZGV0ZWN0UGF0dGVybnMoc291cmNlRm9yVHJhbnNmb3JtKTtcblxuICAgIC8vIENoZWNrIGlmIGZpbGUgbmVlZHMgdHJhbnNmb3JtYXRpb24gYmFzZWQgb24gcGF0dGVybnMgYW5kIHBhdGhcbiAgICBpZiAoIShhd2FpdCBjaGVja1Nob3VsZFRyYW5zZm9ybShmaWxlbmFtZSwgcGF0dGVybnMpKSkge1xuICAgICAgcmV0dXJuIHsgY29kZTogbm9ybWFsaXplZFNvdXJjZSwgbWFwOiBzb3VyY2VNYXAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBpc1R5cGVTY3JpcHQgPVxuICAgICAgZmlsZW5hbWUuZW5kc1dpdGgoJy50cycpIHx8XG4gICAgICBmaWxlbmFtZS5lbmRzV2l0aCgnLnRzeCcpIHx8XG4gICAgICBmaWxlbmFtZS5lbmRzV2l0aCgnLm10cycpIHx8XG4gICAgICBmaWxlbmFtZS5lbmRzV2l0aCgnLmN0cycpO1xuXG4gICAgLy8gQ2FsY3VsYXRlIHJlbGF0aXZlIGZpbGVuYW1lIGZvciBTV0MgcGx1Z2luXG4gICAgLy8gVGhlIFNXQyBwbHVnaW4gdXNlcyBmaWxlbmFtZSB0byBnZW5lcmF0ZSB3b3JrZmxvd0lkLCBzbyBpdCBtdXN0IGJlIHJlbGF0aXZlXG4gICAgY29uc3QgcmVsYXRpdmVGaWxlbmFtZSA9IGF3YWl0IGdldFJlbGF0aXZlRmlsZW5hbWVGb3JTd2MoXG4gICAgICBmaWxlbmFtZSxcbiAgICAgIHdvcmtpbmdEaXJcbiAgICApO1xuXG4gICAgLy8gR2V0IGRlY29yYXRvciBvcHRpb25zIGZyb20gdHNjb25maWcgKGNhY2hlZCBwZXIgd29ya2luZyBkaXJlY3RvcnkpXG4gICAgY29uc3QgeyBvcHRpb25zOiBkZWNvcmF0b3JPcHRpb25zLCBjb25maWdQYXRoIH0gPVxuICAgICAgYXdhaXQgZ2V0RGVjb3JhdG9yT3B0aW9ucyh3b3JraW5nRGlyKTtcbiAgICBpZiAoY29uZmlnUGF0aCkge1xuICAgICAgcmVnaXN0ZXJGaWxlRGVwZW5kZW5jeSh0aGlzLCBjb25maWdQYXRoKTtcbiAgICB9XG5cbiAgICAvLyBSZXNvbHZlIG1vZHVsZSBzcGVjaWZpZXIgZm9yIHBhY2thZ2VzIChub2RlX21vZHVsZXMgb3Igd29ya3NwYWNlIHBhY2thZ2VzKVxuICAgIGNvbnN0IG1vZHVsZVNwZWNpZmllciA9IGF3YWl0IGdldE1vZHVsZVNwZWNpZmllcihmaWxlbmFtZSwgd29ya2luZ0Rpcik7XG4gICAgY29uc3QgbW9kZSA9ICdzdGVwJztcblxuICAgIC8vIFRyYW5zZm9ybSB3aXRoIFNXQ1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRyYW5zZm9ybShzb3VyY2VGb3JUcmFuc2Zvcm0sIHtcbiAgICAgIGZpbGVuYW1lOiByZWxhdGl2ZUZpbGVuYW1lLFxuICAgICAganNjOiB7XG4gICAgICAgIHBhcnNlcjoge1xuICAgICAgICAgIC4uLihpc1R5cGVTY3JpcHRcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgIHN5bnRheDogJ3R5cGVzY3JpcHQnLFxuICAgICAgICAgICAgICAgIHRzeDogZmlsZW5hbWUuZW5kc1dpdGgoJy50c3gnKSxcbiAgICAgICAgICAgICAgICBkZWNvcmF0b3JzOiBkZWNvcmF0b3JPcHRpb25zLmRlY29yYXRvcnMsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAgIHN5bnRheDogJ2VjbWFzY3JpcHQnLFxuICAgICAgICAgICAgICAgIGpzeDogZmlsZW5hbWUuZW5kc1dpdGgoJy5qc3gnKSxcbiAgICAgICAgICAgICAgICBkZWNvcmF0b3JzOiBkZWNvcmF0b3JPcHRpb25zLmRlY29yYXRvcnMsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgICB0YXJnZXQ6ICdlczIwMjInLFxuICAgICAgICBleHBlcmltZW50YWw6IHtcbiAgICAgICAgICBjYWNoZVJvb3Q6IGpvaW4od29ya2luZ0RpciwgJy5zd2MnKSxcbiAgICAgICAgICBwbHVnaW5zOiBbW3N3Y1BsdWdpblBhdGgsIHsgbW9kZSwgbW9kdWxlU3BlY2lmaWVyIH1dXSxcbiAgICAgICAgfSxcbiAgICAgICAgdHJhbnNmb3JtOiB7XG4gICAgICAgICAgcmVhY3Q6IHtcbiAgICAgICAgICAgIHJ1bnRpbWU6ICdwcmVzZXJ2ZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsZWdhY3lEZWNvcmF0b3I6IGRlY29yYXRvck9wdGlvbnMubGVnYWN5RGVjb3JhdG9yLFxuICAgICAgICAgIGRlY29yYXRvck1ldGFkYXRhOiBkZWNvcmF0b3JPcHRpb25zLmRlY29yYXRvck1ldGFkYXRhLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG1pbmlmeTogZmFsc2UsXG4gICAgICAuLi5nZXRMb2FkZXJTb3VyY2VNYXBPcHRpb25zKGZpbGVuYW1lLCBzb3VyY2VNYXApLFxuICAgIH0pO1xuXG4gICAgbGV0IHRyYW5zZm9ybWVkTWFwID0gc291cmNlTWFwO1xuICAgIGlmICh0eXBlb2YgcmVzdWx0Lm1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRyYW5zZm9ybWVkTWFwID0gSlNPTi5wYXJzZShyZXN1bHQubWFwKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICB0cmFuc2Zvcm1lZE1hcCA9IHJlc3VsdC5tYXA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChyZXN1bHQubWFwKSB7XG4gICAgICB0cmFuc2Zvcm1lZE1hcCA9IHJlc3VsdC5tYXA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgY29kZTogcmVzdWx0LmNvZGUsIG1hcDogdHJhbnNmb3JtZWRNYXAgfTtcbiAgfTtcblxuICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHJ1bigpLnRoZW4oKHJlc3VsdCkgPT4gcmVzdWx0LmNvZGUpO1xuICB9XG5cbiAgdm9pZCBydW4oKVxuICAgIC50aGVuKChyZXN1bHQpID0+IGNhbGxiYWNrKG51bGwsIHJlc3VsdC5jb2RlLCByZXN1bHQubWFwKSlcbiAgICAuY2F0Y2goKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICBjYWxsYmFjayhlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSkpO1xuICAgIH0pO1xufVxuIl19
|
package/dist/runtime.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from '@workflow/core/
|
|
1
|
+
export * from '@workflow/core/runtime';
|
|
2
2
|
//# sourceMappingURL=runtime.d.ts.map
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAGA,cAAc,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAGA,cAAc,wBAAwB,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/core/
|
|
21
|
-
//# sourceMappingURL=
|
|
20
|
+
__exportStar(require("@workflow/core/runtime"), exports);
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ydW50aW1lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBaUQ7QUFDakQsb0RBQW9EO0FBQ3BELGlCQUFpQjtBQUNqQix5REFBdUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyByZS1leHBvcnQgcnVudGltZSBhcyBzdHViIGZvciByZXNvbHZpbmcgdG8gbm90XG4vLyByZXF1aXJlIEB3b3JrZmxvdy9jb3JlIGJlIGEgZGVwZW5kZW5jeSBhcyB3ZWxsIGFzXG4vLyBAd29ya2Zsb3cvbmV4dFxuZXhwb3J0ICogZnJvbSAnQHdvcmtmbG93L2NvcmUvcnVudGltZSc7XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SWC does not atomically write its Wasmer cache. Compile the plugin before
|
|
3
|
+
* Next.js starts parallel loader workers.
|
|
4
|
+
* @see https://github.com/swc-project/swc/issues/10065
|
|
5
|
+
*/
|
|
6
|
+
export declare function prewarmWorkflowSwcPluginCache(projectRoot: string): void;
|
|
7
|
+
//# sourceMappingURL=swc-plugin-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swc-plugin-cache.d.ts","sourceRoot":"","sources":["../src/swc-plugin-cache.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAWvE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.prewarmWorkflowSwcPluginCache = prewarmWorkflowSwcPluginCache;
|
|
4
|
+
const node_path_1 = require("node:path");
|
|
5
|
+
const core_1 = require("@swc/core");
|
|
6
|
+
/**
|
|
7
|
+
* SWC does not atomically write its Wasmer cache. Compile the plugin before
|
|
8
|
+
* Next.js starts parallel loader workers.
|
|
9
|
+
* @see https://github.com/swc-project/swc/issues/10065
|
|
10
|
+
*/
|
|
11
|
+
function prewarmWorkflowSwcPluginCache(projectRoot) {
|
|
12
|
+
(0, core_1.transformSync)(`async function step() { 'use step'; }`, {
|
|
13
|
+
filename: '__workflow_swc_cache_warmup__.js',
|
|
14
|
+
swcrc: false,
|
|
15
|
+
jsc: {
|
|
16
|
+
experimental: {
|
|
17
|
+
cacheRoot: (0, node_path_1.join)(projectRoot, '.swc'),
|
|
18
|
+
plugins: [[require.resolve('@workflow/swc-plugin'), { mode: 'step' }]],
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3djLXBsdWdpbi1jYWNoZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zd2MtcGx1Z2luLWNhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUEsc0VBV0M7QUFuQkQseUNBQWlDO0FBQ2pDLG9DQUEwQztBQUUxQzs7OztHQUlHO0FBQ0gsU0FBZ0IsNkJBQTZCLENBQUMsV0FBbUI7SUFDL0QsSUFBQSxvQkFBYSxFQUFDLHVDQUF1QyxFQUFFO1FBQ3JELFFBQVEsRUFBRSxrQ0FBa0M7UUFDNUMsS0FBSyxFQUFFLEtBQUs7UUFDWixHQUFHLEVBQUU7WUFDSCxZQUFZLEVBQUU7Z0JBQ1osU0FBUyxFQUFFLElBQUEsZ0JBQUksRUFBQyxXQUFXLEVBQUUsTUFBTSxDQUFDO2dCQUNwQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZFO1NBQ0Y7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyB0cmFuc2Zvcm1TeW5jIH0gZnJvbSAnQHN3Yy9jb3JlJztcblxuLyoqXG4gKiBTV0MgZG9lcyBub3QgYXRvbWljYWxseSB3cml0ZSBpdHMgV2FzbWVyIGNhY2hlLiBDb21waWxlIHRoZSBwbHVnaW4gYmVmb3JlXG4gKiBOZXh0LmpzIHN0YXJ0cyBwYXJhbGxlbCBsb2FkZXIgd29ya2Vycy5cbiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3N3Yy1wcm9qZWN0L3N3Yy9pc3N1ZXMvMTAwNjVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXdhcm1Xb3JrZmxvd1N3Y1BsdWdpbkNhY2hlKHByb2plY3RSb290OiBzdHJpbmcpOiB2b2lkIHtcbiAgdHJhbnNmb3JtU3luYyhgYXN5bmMgZnVuY3Rpb24gc3RlcCgpIHsgJ3VzZSBzdGVwJzsgfWAsIHtcbiAgICBmaWxlbmFtZTogJ19fd29ya2Zsb3dfc3djX2NhY2hlX3dhcm11cF9fLmpzJyxcbiAgICBzd2NyYzogZmFsc2UsXG4gICAganNjOiB7XG4gICAgICBleHBlcmltZW50YWw6IHtcbiAgICAgICAgY2FjaGVSb290OiBqb2luKHByb2plY3RSb290LCAnLnN3YycpLFxuICAgICAgICBwbHVnaW5zOiBbW3JlcXVpcmUucmVzb2x2ZSgnQHdvcmtmbG93L3N3Yy1wbHVnaW4nKSwgeyBtb2RlOiAnc3RlcCcgfV1dLFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directory-name fragments that are always excluded from the dev watcher,
|
|
3
|
+
* regardless of `.gitignore`. Matched as POSIX substrings of the absolute
|
|
4
|
+
* path (e.g. `/node_modules/` matches any path containing that segment).
|
|
5
|
+
*/
|
|
6
|
+
export declare const BUILTIN_IGNORED_PATH_FRAGMENTS: readonly string[];
|
|
7
|
+
/**
|
|
8
|
+
* Environment variable that lets a project add extra path fragments to the
|
|
9
|
+
* dev watcher ignore list. Comma-separated; each entry is matched as a POSIX
|
|
10
|
+
* substring of the absolute path, exactly like {@link BUILTIN_IGNORED_PATH_FRAGMENTS}.
|
|
11
|
+
* Additive to `.gitignore` and the built-in list. Dev-mode only.
|
|
12
|
+
*/
|
|
13
|
+
export declare const WATCH_IGNORED_PATHS_ENV = "WORKFLOW_DEV_WATCH_IGNORED_PATHS";
|
|
14
|
+
/**
|
|
15
|
+
* Parse the comma-separated {@link WATCH_IGNORED_PATHS_ENV} value into a list
|
|
16
|
+
* of POSIX path fragments. Whitespace is trimmed and empty entries dropped.
|
|
17
|
+
*/
|
|
18
|
+
export declare function parseIgnoredPathsEnv(value: string | undefined): string[];
|
|
19
|
+
export interface WatchIgnoreOptions {
|
|
20
|
+
/** Absolute path of the app directory being built. */
|
|
21
|
+
workingDir: string;
|
|
22
|
+
/** Absolute path of the workspace/project root. Defaults to `workingDir`. */
|
|
23
|
+
projectRoot?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Extra POSIX substring fragments to ignore, in addition to the built-in
|
|
26
|
+
* list and the {@link WATCH_IGNORED_PATHS_ENV} env var. Used by the caller
|
|
27
|
+
* for build-time paths such as the generated workflow directory.
|
|
28
|
+
*/
|
|
29
|
+
extraFragments?: string[];
|
|
30
|
+
/**
|
|
31
|
+
* Override for the {@link WATCH_IGNORED_PATHS_ENV} env var. Primarily for
|
|
32
|
+
* testing; defaults to `process.env[WATCH_IGNORED_PATHS_ENV]`.
|
|
33
|
+
*/
|
|
34
|
+
envIgnoredPaths?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Build the dev-watcher ignore predicate. The returned function receives a
|
|
38
|
+
* POSIX-normalized absolute path and returns `true` when that path should be
|
|
39
|
+
* pruned from both the initial directory walk and the chokidar watch set.
|
|
40
|
+
*
|
|
41
|
+
* A path is ignored when it matches any of:
|
|
42
|
+
* - a built-in fragment ({@link BUILTIN_IGNORED_PATH_FRAGMENTS}) or caller
|
|
43
|
+
* `extraFragments` (POSIX substring match),
|
|
44
|
+
* - a {@link WATCH_IGNORED_PATHS_ENV} fragment (POSIX substring match),
|
|
45
|
+
* - a `.gitignore` rule from `workingDir` up to `projectRoot`.
|
|
46
|
+
*
|
|
47
|
+
* Matchers are built once here; the returned predicate is hot (called per path
|
|
48
|
+
* during traversal and per chokidar event) and does no I/O.
|
|
49
|
+
*/
|
|
50
|
+
export declare function createWatchIgnorePredicate(options: WatchIgnoreOptions): (normalizedPath: string) => boolean;
|
|
51
|
+
//# sourceMappingURL=watch-ignore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-ignore.d.ts","sourceRoot":"","sources":["../src/watch-ignore.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,SAAS,MAAM,EAc3D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,qCAAqC,CAAC;AAI1E;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAQxE;AAyFD,MAAM,WAAW,kBAAkB;IACjC,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,kBAAkB,GAC1B,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CA2JrC"}
|