@workflow/next 5.0.0-beta.2 → 5.0.0-beta.21
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.map +1 -1
- package/dist/builder-eager.js +105 -128
- 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 +249 -51
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +11 -381
- package/dist/runtime.js +1 -1
- package/docs/api-reference/with-workflow.mdx +56 -2
- package/docs/next.mdx +5 -3
- package/package.json +4 -5
- package/dist/builder-deferred.d.ts +0 -2
- package/dist/builder-deferred.d.ts.map +0 -1
- package/dist/builder-deferred.js +0 -1589
- 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/step-copy-utils.d.ts +0 -19
- package/dist/step-copy-utils.d.ts.map +0 -1
- package/dist/step-copy-utils.js +0 -101
- package/dist/step-copy-utils.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -4,8 +4,143 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.withWorkflow = withWorkflow;
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
8
|
+
const promises_1 = require("node:fs/promises");
|
|
9
|
+
const node_path_1 = require("node:path");
|
|
7
10
|
const semver_1 = __importDefault(require("semver"));
|
|
8
11
|
const builder_js_1 = require("./builder.js");
|
|
12
|
+
const VERCEL_WORLD_PACKAGE = '@workflow/world-vercel';
|
|
13
|
+
const VERCEL_WORLD_DEPENDENCY_PACKAGES = [
|
|
14
|
+
'@vercel/queue',
|
|
15
|
+
'@vercel/oidc',
|
|
16
|
+
'@vercel/cli-auth',
|
|
17
|
+
'@napi-rs/keyring',
|
|
18
|
+
];
|
|
19
|
+
const VERCEL_WORLD_SERVER_EXTERNAL_PACKAGES = [
|
|
20
|
+
VERCEL_WORLD_PACKAGE,
|
|
21
|
+
...VERCEL_WORLD_DEPENDENCY_PACKAGES,
|
|
22
|
+
];
|
|
23
|
+
const useWorkflowPattern = /^\s*(['"])use workflow\1;?\s*$/m;
|
|
24
|
+
const useStepPattern = /^\s*(['"])use step\1;?\s*$/m;
|
|
25
|
+
const workflowSerdeImportPattern = /from\s+(['"])@workflow\/serde\1/;
|
|
26
|
+
const workflowSerdeSymbolPattern = /Symbol\.for\s*\(\s*(['"])workflow-(?:serialize|deserialize)\1\s*\)/;
|
|
27
|
+
const workflowSerdeComputedPropertyPattern = /\[\s*WORKFLOW_(?:SERIALIZE|DESERIALIZE)\s*\]/;
|
|
28
|
+
const PSEUDO_EXTERNAL_PACKAGES = new Set(['server-only', 'client-only']);
|
|
29
|
+
const warnedAutoRemovedServerExternalPackages = new Set();
|
|
30
|
+
function isPlainObject(value) {
|
|
31
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
32
|
+
}
|
|
33
|
+
function isResolvablePackageSpecifier(specifier) {
|
|
34
|
+
if (specifier.startsWith('.') || specifier.startsWith('/')) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
if (specifier.startsWith('$')) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
if (specifier.includes('*') || specifier.includes(':')) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
function detectWorkflowPatterns(source) {
|
|
46
|
+
const hasUseWorkflow = useWorkflowPattern.test(source);
|
|
47
|
+
const hasUseStep = useStepPattern.test(source);
|
|
48
|
+
const hasSerdeImport = workflowSerdeImportPattern.test(source);
|
|
49
|
+
const hasSerdeSymbol = workflowSerdeSymbolPattern.test(source);
|
|
50
|
+
const hasSerdeComputedProperty = workflowSerdeComputedPropertyPattern.test(source);
|
|
51
|
+
return {
|
|
52
|
+
hasUseWorkflow,
|
|
53
|
+
hasUseStep,
|
|
54
|
+
hasSerde: hasSerdeImport || hasSerdeSymbol || hasSerdeComputedProperty,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function getIssueLabels(detected) {
|
|
58
|
+
const issues = [];
|
|
59
|
+
if (detected.hasUseWorkflow) {
|
|
60
|
+
issues.push('"use workflow" functions');
|
|
61
|
+
}
|
|
62
|
+
if (detected.hasUseStep) {
|
|
63
|
+
issues.push('"use step" functions');
|
|
64
|
+
}
|
|
65
|
+
if (detected.hasSerde) {
|
|
66
|
+
issues.push('serialization classes');
|
|
67
|
+
}
|
|
68
|
+
return issues;
|
|
69
|
+
}
|
|
70
|
+
function hasWorkflowSerdeDependency(packageJson) {
|
|
71
|
+
if (!isPlainObject(packageJson)) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
const dependencies = isPlainObject(packageJson.dependencies)
|
|
75
|
+
? packageJson.dependencies
|
|
76
|
+
: {};
|
|
77
|
+
const peerDependencies = isPlainObject(packageJson.peerDependencies)
|
|
78
|
+
? packageJson.peerDependencies
|
|
79
|
+
: {};
|
|
80
|
+
return (Object.hasOwn(dependencies, '@workflow/serde') ||
|
|
81
|
+
Object.hasOwn(peerDependencies, '@workflow/serde'));
|
|
82
|
+
}
|
|
83
|
+
async function detectServerExternalPackage(packageName, workingDir) {
|
|
84
|
+
if (!isResolvablePackageSpecifier(packageName)) {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
let hasUseWorkflow = false;
|
|
88
|
+
let hasUseStep = false;
|
|
89
|
+
let hasSerde = false;
|
|
90
|
+
try {
|
|
91
|
+
const packageJsonPath = require.resolve(`${packageName}/package.json`, {
|
|
92
|
+
paths: [workingDir],
|
|
93
|
+
});
|
|
94
|
+
const packageJsonSource = await (0, promises_1.readFile)(packageJsonPath, 'utf-8');
|
|
95
|
+
const packageJson = JSON.parse(packageJsonSource);
|
|
96
|
+
hasSerde = hasWorkflowSerdeDependency(packageJson);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// Best-effort only. Continue to source scanning.
|
|
100
|
+
}
|
|
101
|
+
try {
|
|
102
|
+
const entryPath = require.resolve(packageName, {
|
|
103
|
+
paths: [workingDir],
|
|
104
|
+
});
|
|
105
|
+
const source = await (0, promises_1.readFile)(entryPath, 'utf-8');
|
|
106
|
+
const patterns = detectWorkflowPatterns(source);
|
|
107
|
+
hasUseWorkflow = patterns.hasUseWorkflow;
|
|
108
|
+
hasUseStep = patterns.hasUseStep;
|
|
109
|
+
hasSerde ||= patterns.hasSerde;
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// Best-effort only. Use whichever signal we already have.
|
|
113
|
+
}
|
|
114
|
+
if (!hasUseWorkflow && !hasUseStep && !hasSerde) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
packageName,
|
|
119
|
+
hasUseWorkflow,
|
|
120
|
+
hasUseStep,
|
|
121
|
+
hasSerde,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
function warnAboutAutoRemovedServerExternalPackages(detectedPackages) {
|
|
125
|
+
const newlyDetectedPackages = detectedPackages.filter(({ packageName }) => {
|
|
126
|
+
return !warnedAutoRemovedServerExternalPackages.has(packageName);
|
|
127
|
+
});
|
|
128
|
+
if (newlyDetectedPackages.length === 0) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
for (const { packageName } of newlyDetectedPackages) {
|
|
132
|
+
warnedAutoRemovedServerExternalPackages.add(packageName);
|
|
133
|
+
}
|
|
134
|
+
const packageDescriptions = newlyDetectedPackages
|
|
135
|
+
.map((detected) => `"${detected.packageName}" (${getIssueLabels(detected).join(', ')})`)
|
|
136
|
+
.join(', ');
|
|
137
|
+
const packageNames = newlyDetectedPackages
|
|
138
|
+
.map((detected) => `"${detected.packageName}"`)
|
|
139
|
+
.join(', ');
|
|
140
|
+
console.warn(`\n⚠ Workflow found workflow code in serverExternalPackages: ${packageDescriptions}.` +
|
|
141
|
+
`\n Workflow removed the affected entries from serverExternalPackages for this build and is compiling the packages anyway.` +
|
|
142
|
+
`\n Remove ${packageNames} from serverExternalPackages in next.config to silence this warning.\n`);
|
|
143
|
+
}
|
|
9
144
|
function resolveNextVersion(workingDir) {
|
|
10
145
|
const errors = [];
|
|
11
146
|
// Try resolving from the consuming project's working directory first.
|
|
@@ -36,10 +171,63 @@ function resolveNextVersion(workingDir) {
|
|
|
36
171
|
}
|
|
37
172
|
throw new AggregateError(errors, `Could not resolve Next.js version. Ensure \`next\` is installed in your project (working directory: ${workingDir}).`);
|
|
38
173
|
}
|
|
39
|
-
function
|
|
40
|
-
|
|
41
|
-
|
|
174
|
+
function fileExists(path) {
|
|
175
|
+
try {
|
|
176
|
+
const stats = (0, node_fs_1.statSync)(path);
|
|
177
|
+
return stats.isFile();
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
return false;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
function getWorkflowManifestCopyPaths({ projectDir, distDir, }) {
|
|
184
|
+
const manifestCandidates = [
|
|
185
|
+
(0, node_path_1.join)(projectDir, 'app/.well-known/workflow/v1/manifest.json'),
|
|
186
|
+
(0, node_path_1.join)(projectDir, 'src/app/.well-known/workflow/v1/manifest.json'),
|
|
187
|
+
(0, node_path_1.join)(projectDir, 'public/.well-known/workflow/v1/manifest.json'),
|
|
188
|
+
];
|
|
189
|
+
const manifestPath = manifestCandidates.find(fileExists);
|
|
190
|
+
if (!manifestPath) {
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
const resolvedDistDir = (0, node_path_1.isAbsolute)(distDir)
|
|
194
|
+
? distDir
|
|
195
|
+
: (0, node_path_1.join)(projectDir, distDir);
|
|
196
|
+
const diagnosticsManifestPath = (0, node_path_1.join)(resolvedDistDir, 'diagnostics', 'workflows-manifest.json');
|
|
197
|
+
return { manifestPath, diagnosticsManifestPath };
|
|
198
|
+
}
|
|
199
|
+
async function copyWorkflowDiagnosticsManifest(metadata) {
|
|
200
|
+
const paths = getWorkflowManifestCopyPaths(metadata);
|
|
201
|
+
if (!paths) {
|
|
202
|
+
return;
|
|
42
203
|
}
|
|
204
|
+
const { manifestPath, diagnosticsManifestPath } = paths;
|
|
205
|
+
await (0, promises_1.mkdir)((0, node_path_1.dirname)(diagnosticsManifestPath), { recursive: true });
|
|
206
|
+
await (0, promises_1.copyFile)(manifestPath, diagnosticsManifestPath);
|
|
207
|
+
}
|
|
208
|
+
function copyWorkflowDiagnosticsManifestSync(metadata) {
|
|
209
|
+
const paths = getWorkflowManifestCopyPaths(metadata);
|
|
210
|
+
if (!paths) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
const { manifestPath, diagnosticsManifestPath } = paths;
|
|
214
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(diagnosticsManifestPath), { recursive: true });
|
|
215
|
+
(0, node_fs_1.copyFileSync)(manifestPath, diagnosticsManifestPath);
|
|
216
|
+
}
|
|
217
|
+
function registerWorkflowDiagnosticsManifestCopy(metadata) {
|
|
218
|
+
const marker = '__workflowDiagnosticsManifestCopies';
|
|
219
|
+
const globalWithMarker = globalThis;
|
|
220
|
+
if (!globalWithMarker[marker]) {
|
|
221
|
+
globalWithMarker[marker] = [];
|
|
222
|
+
process.once('exit', () => {
|
|
223
|
+
for (const copyMetadata of globalWithMarker[marker] || []) {
|
|
224
|
+
copyWorkflowDiagnosticsManifestSync(copyMetadata);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
globalWithMarker[marker].push(metadata);
|
|
229
|
+
}
|
|
230
|
+
function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
|
|
43
231
|
if (!process.env.VERCEL_DEPLOYMENT_ID) {
|
|
44
232
|
if (!process.env.WORKFLOW_TARGET_WORLD) {
|
|
45
233
|
process.env.WORKFLOW_TARGET_WORLD = 'local';
|
|
@@ -57,7 +245,6 @@ function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
|
|
|
57
245
|
}
|
|
58
246
|
return async function buildConfig(phase, ctx) {
|
|
59
247
|
const loaderPath = require.resolve('./loader');
|
|
60
|
-
let runDeferredBuildFromCallback;
|
|
61
248
|
let nextConfig;
|
|
62
249
|
if (typeof nextConfigOrFn === 'function') {
|
|
63
250
|
nextConfig = await nextConfigOrFn(phase, ctx);
|
|
@@ -67,6 +254,45 @@ function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
|
|
|
67
254
|
}
|
|
68
255
|
// shallow clone to avoid read-only on top-level
|
|
69
256
|
nextConfig = Object.assign({}, nextConfig);
|
|
257
|
+
nextConfig.serverExternalPackages = [
|
|
258
|
+
...new Set([
|
|
259
|
+
...(nextConfig.serverExternalPackages || []),
|
|
260
|
+
// Keep the Vercel world and its native-prone dependencies external so
|
|
261
|
+
// local builds do not try to parse @vercel/queue's keyring dependency
|
|
262
|
+
// tree.
|
|
263
|
+
...VERCEL_WORLD_SERVER_EXTERNAL_PACKAGES,
|
|
264
|
+
]),
|
|
265
|
+
];
|
|
266
|
+
const existingCompiler = nextConfig.compiler ?? {};
|
|
267
|
+
const existingRunAfterProductionCompile = existingCompiler.runAfterProductionCompile;
|
|
268
|
+
const configuredServerExternalPackages = Array.isArray(nextConfig.serverExternalPackages)
|
|
269
|
+
? nextConfig.serverExternalPackages
|
|
270
|
+
: [];
|
|
271
|
+
let effectiveServerExternalPackages = configuredServerExternalPackages;
|
|
272
|
+
if (configuredServerExternalPackages.length > 0) {
|
|
273
|
+
const detectedWorkflowPackages = [];
|
|
274
|
+
for (const packageName of configuredServerExternalPackages) {
|
|
275
|
+
if (PSEUDO_EXTERNAL_PACKAGES.has(packageName)) {
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
try {
|
|
279
|
+
const detected = await detectServerExternalPackage(packageName, process.cwd());
|
|
280
|
+
if (detected) {
|
|
281
|
+
detectedWorkflowPackages.push(detected);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
catch {
|
|
285
|
+
// Best-effort only. Never block config generation.
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
if (detectedWorkflowPackages.length > 0) {
|
|
289
|
+
const removedPackages = new Set(detectedWorkflowPackages.map((detected) => detected.packageName));
|
|
290
|
+
effectiveServerExternalPackages =
|
|
291
|
+
configuredServerExternalPackages.filter((packageName) => !removedPackages.has(packageName));
|
|
292
|
+
nextConfig.serverExternalPackages = effectiveServerExternalPackages;
|
|
293
|
+
warnAboutAutoRemovedServerExternalPackages(detectedWorkflowPackages);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
70
296
|
// configure the loader if turbopack is being used
|
|
71
297
|
if (!nextConfig.turbopack) {
|
|
72
298
|
nextConfig.turbopack = {};
|
|
@@ -77,12 +303,19 @@ function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
|
|
|
77
303
|
const existingRules = nextConfig.turbopack.rules;
|
|
78
304
|
const nextVersion = resolveNextVersion(process.cwd());
|
|
79
305
|
const supportsTurboCondition = semver_1.default.gte(nextVersion, 'v16.0.0');
|
|
80
|
-
const useDeferredBuilder = (0, builder_js_1.shouldUseDeferredBuilder)(nextVersion);
|
|
81
|
-
// Deferred builder discovers files via loader socket notifications, so
|
|
82
|
-
// turbopack content conditions are only needed with the eager builder.
|
|
83
|
-
const shouldApplyTurboCondition = supportsTurboCondition && !useDeferredBuilder;
|
|
84
306
|
const shouldWatch = process.env.NODE_ENV === 'development';
|
|
85
307
|
let workflowBuilderPromise;
|
|
308
|
+
const distDir = nextConfig.distDir || '.next';
|
|
309
|
+
nextConfig.compiler = {
|
|
310
|
+
...existingCompiler,
|
|
311
|
+
runAfterProductionCompile: async (metadata) => {
|
|
312
|
+
if (existingRunAfterProductionCompile) {
|
|
313
|
+
await existingRunAfterProductionCompile(metadata);
|
|
314
|
+
}
|
|
315
|
+
await copyWorkflowDiagnosticsManifest(metadata);
|
|
316
|
+
registerWorkflowDiagnosticsManifestCopy(metadata);
|
|
317
|
+
},
|
|
318
|
+
};
|
|
86
319
|
const getWorkflowBuilder = async () => {
|
|
87
320
|
if (!workflowBuilderPromise) {
|
|
88
321
|
workflowBuilderPromise = (async () => {
|
|
@@ -92,16 +325,15 @@ function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
|
|
|
92
325
|
// discover workflows from pages/app entries
|
|
93
326
|
dirs: ['pages', 'app', 'src/pages', 'src/app'],
|
|
94
327
|
projectRoot: nextConfig.outputFileTracingRoot,
|
|
328
|
+
moduleSpecifierRoot: process.cwd(),
|
|
95
329
|
workingDir: process.cwd(),
|
|
96
|
-
distDir
|
|
330
|
+
distDir,
|
|
331
|
+
diagnosticsDir: `${distDir}/diagnostics`,
|
|
97
332
|
buildTarget: 'next',
|
|
98
333
|
workflowsBundlePath: '', // not used in base
|
|
99
334
|
stepsBundlePath: '', // not used in base
|
|
100
335
|
webhookBundlePath: '', // node used in base
|
|
101
|
-
|
|
102
|
-
suppressCreateWorkflowsBundleWarnings: useDeferredBuilder,
|
|
103
|
-
suppressCreateWebhookBundleLogs: useDeferredBuilder,
|
|
104
|
-
suppressCreateManifestLogs: useDeferredBuilder,
|
|
336
|
+
sourcemap: workflows?.sourcemap,
|
|
105
337
|
externalPackages: [
|
|
106
338
|
// server-only and client-only are pseudo-packages handled by Next.js
|
|
107
339
|
// during its build process. We mark them as external to prevent esbuild
|
|
@@ -109,47 +341,13 @@ function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
|
|
|
109
341
|
// See: https://nextjs.org/docs/app/getting-started/server-and-client-components
|
|
110
342
|
'server-only',
|
|
111
343
|
'client-only',
|
|
112
|
-
...
|
|
344
|
+
...effectiveServerExternalPackages,
|
|
113
345
|
],
|
|
114
346
|
});
|
|
115
347
|
})();
|
|
116
348
|
}
|
|
117
349
|
return workflowBuilderPromise;
|
|
118
350
|
};
|
|
119
|
-
if (useDeferredBuilder) {
|
|
120
|
-
runDeferredBuildFromCallback = async () => {
|
|
121
|
-
const workflowBuilder = await getWorkflowBuilder();
|
|
122
|
-
if (typeof workflowBuilder.onBeforeDeferredEntries === 'function') {
|
|
123
|
-
await workflowBuilder.onBeforeDeferredEntries();
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
const existingExperimental = (nextConfig.experimental ?? {});
|
|
127
|
-
const existingDeferredEntries = Array.isArray(existingExperimental.deferredEntries)
|
|
128
|
-
? existingExperimental.deferredEntries
|
|
129
|
-
: [];
|
|
130
|
-
const existingOnBeforeDeferredEntries = typeof existingExperimental.onBeforeDeferredEntries === 'function'
|
|
131
|
-
? existingExperimental.onBeforeDeferredEntries
|
|
132
|
-
: undefined;
|
|
133
|
-
nextConfig.experimental = {
|
|
134
|
-
...existingExperimental,
|
|
135
|
-
// biome-ignore lint/suspicious/noTsIgnore: expect-error is wrong as it will work on valid version
|
|
136
|
-
// @ts-ignore this is only available in canary Next.js
|
|
137
|
-
deferredEntries: [
|
|
138
|
-
...new Set([
|
|
139
|
-
...existingDeferredEntries,
|
|
140
|
-
...builder_js_1.WORKFLOW_DEFERRED_ENTRIES,
|
|
141
|
-
]),
|
|
142
|
-
],
|
|
143
|
-
onBeforeDeferredEntries: async (...args) => {
|
|
144
|
-
if (existingOnBeforeDeferredEntries) {
|
|
145
|
-
await existingOnBeforeDeferredEntries(...args);
|
|
146
|
-
}
|
|
147
|
-
if (runDeferredBuildFromCallback) {
|
|
148
|
-
await runDeferredBuildFromCallback();
|
|
149
|
-
}
|
|
150
|
-
},
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
351
|
for (const key of [
|
|
154
352
|
'*.tsx',
|
|
155
353
|
'*.ts',
|
|
@@ -161,7 +359,7 @@ function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
|
|
|
161
359
|
'*.cts',
|
|
162
360
|
]) {
|
|
163
361
|
nextConfig.turbopack.rules[key] = {
|
|
164
|
-
...(
|
|
362
|
+
...(supportsTurboCondition
|
|
165
363
|
? {
|
|
166
364
|
condition: {
|
|
167
365
|
// Use 'all' to combine: must match content AND must NOT be in generated path
|
|
@@ -199,7 +397,7 @@ function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
|
|
|
199
397
|
loader: loaderPath,
|
|
200
398
|
});
|
|
201
399
|
return existingWebpackModify
|
|
202
|
-
? existingWebpackModify(...args)
|
|
400
|
+
? (existingWebpackModify(...args) ?? webpackConfig)
|
|
203
401
|
: webpackConfig;
|
|
204
402
|
};
|
|
205
403
|
// only run this in the main process so it only runs once
|
|
@@ -213,4 +411,4 @@ function withWorkflow(nextConfigOrFn, { workflows, } = {}) {
|
|
|
213
411
|
return nextConfig;
|
|
214
412
|
};
|
|
215
413
|
}
|
|
216
|
-
//# sourceMappingURL=index.js.map
|
|
414
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUF3VEEsb0NBa1BDO0FBMWlCRCxxQ0FBNEQ7QUFDNUQsK0NBQTZEO0FBQzdELHlDQUFzRDtBQUV0RCxvREFBNEI7QUFDNUIsNkNBQThDO0FBRTlDLE1BQU0sb0JBQW9CLEdBQUcsd0JBQXdCLENBQUM7QUFDdEQsTUFBTSxnQ0FBZ0MsR0FBRztJQUN2QyxlQUFlO0lBQ2YsY0FBYztJQUNkLGtCQUFrQjtJQUNsQixrQkFBa0I7Q0FDbkIsQ0FBQztBQUNGLE1BQU0scUNBQXFDLEdBQUc7SUFDNUMsb0JBQW9CO0lBQ3BCLEdBQUcsZ0NBQWdDO0NBQ3BDLENBQUM7QUFFRixNQUFNLGtCQUFrQixHQUFHLGlDQUFpQyxDQUFDO0FBQzdELE1BQU0sY0FBYyxHQUFHLDZCQUE2QixDQUFDO0FBQ3JELE1BQU0sMEJBQTBCLEdBQUcsaUNBQWlDLENBQUM7QUFDckUsTUFBTSwwQkFBMEIsR0FDOUIsb0VBQW9FLENBQUM7QUFDdkUsTUFBTSxvQ0FBb0MsR0FDeEMsOENBQThDLENBQUM7QUFFakQsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLE1BQU0sdUNBQXVDLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztBQWVsRSxTQUFTLGFBQWEsQ0FBQyxLQUFjO0lBQ25DLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFFRCxTQUFTLDRCQUE0QixDQUFDLFNBQWlCO0lBQ3JELElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7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QkFDOUIsSUFBSSxFQUFFLGtDQUFrQztnQkFDeEMsTUFBTSxFQUFFLFVBQVU7YUFDbkIsQ0FBQyxDQUFDO1lBRUgsT0FBTyxxQkFBcUI7Z0JBQzFCLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksYUFBYSxDQUFDO2dCQUNuRCxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQ3BCLENBQUMsQ0FBQztRQUNGLHlEQUF5RDtRQUN6RCx1REFBdUQ7UUFDdkQsSUFDRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCO1lBQ3hDLEtBQUssS0FBSyx5QkFBeUIsRUFDbkMsQ0FBQztZQUNELE1BQU0sZUFBZSxHQUFHLE1BQU0sa0JBQWtCLEVBQUUsQ0FBQztZQUVuRCxNQUFNLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixHQUFHLEdBQUcsQ0FBQztRQUNoRCxDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvcHlGaWxlU3luYywgbWtkaXJTeW5jLCBzdGF0U3luYyB9IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgY29weUZpbGUsIG1rZGlyLCByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgZGlybmFtZSwgaXNBYnNvbHV0ZSwgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgdHlwZSB7IE5leHRDb25maWcgfSBmcm9tICduZXh0JztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCB7IGdldE5leHRCdWlsZGVyIH0gZnJvbSAnLi9idWlsZGVyLmpzJztcblxuY29uc3QgVkVSQ0VMX1dPUkxEX1BBQ0tBR0UgPSAnQHdvcmtmbG93L3dvcmxkLXZlcmNlbCc7XG5jb25zdCBWRVJDRUxfV09STERfREVQRU5ERU5DWV9QQUNLQUdFUyA9IFtcbiAgJ0B2ZXJjZWwvcXVldWUnLFxuICAnQHZlcmNlbC9vaWRjJyxcbiAgJ0B2ZXJjZWwvY2xpLWF1dGgnLFxuICAnQG5hcGktcnMva2V5cmluZycsXG5dO1xuY29uc3QgVkVSQ0VMX1dPUkxEX1NFUlZFUl9FWFRFUk5BTF9QQUNLQUdFUyA9IFtcbiAgVkVSQ0VMX1dPUkxEX1BBQ0tBR0UsXG4gIC4uLlZFUkNFTF9XT1JMRF9ERVBFTkRFTkNZX1BBQ0tBR0VTLFxuXTtcblxuY29uc3QgdXNlV29ya2Zsb3dQYXR0ZXJuID0gL15cXHMqKFsnXCJdKXVzZSB3b3JrZmxvd1xcMTs/XFxzKiQvbTtcbmNvbnN0IHVzZVN0ZXBQYXR0ZXJuID0gL15cXHMqKFsnXCJdKXVzZSBzdGVwXFwxOz9cXHMqJC9tO1xuY29uc3Qgd29ya2Zsb3dTZXJkZUltcG9ydFBhdHRlcm4gPSAvZnJvbVxccysoWydcIl0pQHdvcmtmbG93XFwvc2VyZGVcXDEvO1xuY29uc3Qgd29ya2Zsb3dTZXJkZVN5bWJvbFBhdHRlcm4gPVxuICAvU3ltYm9sXFwuZm9yXFxzKlxcKFxccyooWydcIl0pd29ya2Zsb3ctKD86c2VyaWFsaXplfGRlc2VyaWFsaXplKVxcMVxccypcXCkvO1xuY29uc3Qgd29ya2Zsb3dTZXJkZUNvbXB1dGVkUHJvcGVydHlQYXR0ZXJuID1cbiAgL1xcW1xccypXT1JLRkxPV18oPzpTRVJJQUxJWkV8REVTRVJJQUxJWkUpXFxzKlxcXS87XG5cbmNvbnN0IFBTRVVET19FWFRFUk5BTF9QQUNLQUdFUyA9IG5ldyBTZXQoWydzZXJ2ZXItb25seScsICdjbGllbnQtb25seSddKTtcbmNvbnN0IHdhcm5lZEF1dG9SZW1vdmVkU2VydmVyRXh0ZXJuYWxQYWNrYWdlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG5pbnRlcmZhY2UgV29ya2Zsb3dQYXR0ZXJuTWF0Y2gge1xuICBoYXNVc2VXb3JrZmxvdzogYm9vbGVhbjtcbiAgaGFzVXNlU3RlcDogYm9vbGVhbjtcbiAgaGFzU2VyZGU6IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBEZXRlY3RlZFNlcnZlckV4dGVybmFsUGFja2FnZSB7XG4gIHBhY2thZ2VOYW1lOiBzdHJpbmc7XG4gIGhhc1VzZVdvcmtmbG93OiBib29sZWFuO1xuICBoYXNVc2VTdGVwOiBib29sZWFuO1xuICBoYXNTZXJkZTogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gaXNQbGFpbk9iamVjdCh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpO1xufVxuXG5mdW5jdGlvbiBpc1Jlc29sdmFibGVQYWNrYWdlU3BlY2lmaWVyKHNwZWNpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmIChzcGVjaWZpZXIuc3RhcnRzV2l0aCgnLicpIHx8IHNwZWNpZmllci5zdGFydHNXaXRoKCcvJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHNwZWNpZmllci5zdGFydHNXaXRoKCckJykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHNwZWNpZmllci5pbmNsdWRlcygnKicpIHx8IHNwZWNpZmllci5pbmNsdWRlcygnOicpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGRldGVjdFdvcmtmbG93UGF0dGVybnMoc291cmNlOiBzdHJpbmcpOiBXb3JrZmxvd1BhdHRlcm5NYXRjaCB7XG4gIGNvbnN0IGhhc1VzZVdvcmtmbG93ID0gdXNlV29ya2Zsb3dQYXR0ZXJuLnRlc3Qoc291cmNlKTtcbiAgY29uc3QgaGFzVXNlU3RlcCA9IHVzZVN0ZXBQYXR0ZXJuLnRlc3Qoc291cmNlKTtcbiAgY29uc3QgaGFzU2VyZGVJbXBvcnQgPSB3b3JrZmxvd1NlcmRlSW1wb3J0UGF0dGVybi50ZXN0KHNvdXJjZSk7XG4gIGNvbnN0IGhhc1NlcmRlU3ltYm9sID0gd29ya2Zsb3dTZXJkZVN5bWJvbFBhdHRlcm4udGVzdChzb3VyY2UpO1xuICBjb25zdCBoYXNTZXJkZUNvbXB1dGVkUHJvcGVydHkgPVxuICAgIHdvcmtmbG93U2VyZGVDb21wdXRlZFByb3BlcnR5UGF0dGVybi50ZXN0KHNvdXJjZSk7XG5cbiAgcmV0dXJuIHtcbiAgICBoYXNVc2VXb3JrZmxvdyxcbiAgICBoYXNVc2VTdGVwLFxuICAgIGhhc1NlcmRlOiBoYXNTZXJkZUltcG9ydCB8fCBoYXNTZXJkZVN5bWJvbCB8fCBoYXNTZXJkZUNvbXB1dGVkUHJvcGVydHksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldElzc3VlTGFiZWxzKGRldGVjdGVkOiBEZXRlY3RlZFNlcnZlckV4dGVybmFsUGFja2FnZSk6IHN0cmluZ1tdIHtcbiAgY29uc3QgaXNzdWVzOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAoZGV0ZWN0ZWQuaGFzVXNlV29ya2Zsb3cpIHtcbiAgICBpc3N1ZXMucHVzaCgnXCJ1c2Ugd29ya2Zsb3dcIiBmdW5jdGlvbnMnKTtcbiAgfVxuICBpZiAoZGV0ZWN0ZWQuaGFzVXNlU3RlcCkge1xuICAgIGlzc3Vlcy5wdXNoKCdcInVzZSBzdGVwXCIgZnVuY3Rpb25zJyk7XG4gIH1cbiAgaWYgKGRldGVjdGVkLmhhc1NlcmRlKSB7XG4gICAgaXNzdWVzLnB1c2goJ3NlcmlhbGl6YXRpb24gY2xhc3NlcycpO1xuICB9XG4gIHJldHVybiBpc3N1ZXM7XG59XG5cbmZ1bmN0aW9uIGhhc1dvcmtmbG93U2VyZGVEZXBlbmRlbmN5KHBhY2thZ2VKc29uOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmICghaXNQbGFpbk9iamVjdChwYWNrYWdlSnNvbikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBkZXBlbmRlbmNpZXMgPSBpc1BsYWluT2JqZWN0KHBhY2thZ2VKc29uLmRlcGVuZGVuY2llcylcbiAgICA/IHBhY2thZ2VKc29uLmRlcGVuZGVuY2llc1xuICAgIDoge307XG4gIGNvbnN0IHBlZXJEZXBlbmRlbmNpZXMgPSBpc1BsYWluT2JqZWN0KHBhY2thZ2VKc29uLnBlZXJEZXBlbmRlbmNpZXMpXG4gICAgPyBwYWNrYWdlSnNvbi5wZWVyRGVwZW5kZW5jaWVzXG4gICAgOiB7fTtcblxuICByZXR1cm4gKFxuICAgIE9iamVjdC5oYXNPd24oZGVwZW5kZW5jaWVzLCAnQHdvcmtmbG93L3NlcmRlJykgfHxcbiAgICBPYmplY3QuaGFzT3duKHBlZXJEZXBlbmRlbmNpZXMsICdAd29ya2Zsb3cvc2VyZGUnKVxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkZXRlY3RTZXJ2ZXJFeHRlcm5hbFBhY2thZ2UoXG4gIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gIHdvcmtpbmdEaXI6IHN0cmluZ1xuKTogUHJvbWlzZTxEZXRlY3RlZFNlcnZlckV4dGVybmFsUGFja2FnZSB8IG51bGw+IHtcbiAgaWYgKCFpc1Jlc29sdmFibGVQYWNrYWdlU3BlY2lmaWVyKHBhY2thZ2VOYW1lKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgbGV0IGhhc1VzZVdvcmtmbG93ID0gZmFsc2U7XG4gIGxldCBoYXNVc2VTdGVwID0gZmFsc2U7XG4gIGxldCBoYXNTZXJkZSA9IGZhbHNlO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcmVxdWlyZS5yZXNvbHZlKGAke3BhY2thZ2VOYW1lfS9wYWNrYWdlLmpzb25gLCB7XG4gICAgICBwYXRoczogW3dvcmtpbmdEaXJdLFxuICAgIH0pO1xuICAgIGNvbnN0IHBhY2thZ2VKc29uU291cmNlID0gYXdhaXQgcmVhZEZpbGUocGFja2FnZUpzb25QYXRoLCAndXRmLTgnKTtcbiAgICBjb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocGFja2FnZUpzb25Tb3VyY2UpIGFzIHVua25vd247XG4gICAgaGFzU2VyZGUgPSBoYXNXb3JrZmxvd1NlcmRlRGVwZW5kZW5jeShwYWNrYWdlSnNvbik7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEJlc3QtZWZmb3J0IG9ubHkuIENvbnRpbnVlIHRvIHNvdXJjZSBzY2FubmluZy5cbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgZW50cnlQYXRoID0gcmVxdWlyZS5yZXNvbHZlKHBhY2thZ2VOYW1lLCB7XG4gICAgICBwYXRoczogW3dvcmtpbmdEaXJdLFxuICAgIH0pO1xuICAgIGNvbnN0IHNvdXJjZSA9IGF3YWl0IHJlYWRGaWxlKGVudHJ5UGF0aCwgJ3V0Zi04Jyk7XG4gICAgY29uc3QgcGF0dGVybnMgPSBkZXRlY3RXb3JrZmxvd1BhdHRlcm5zKHNvdXJjZSk7XG4gICAgaGFzVXNlV29ya2Zsb3cgPSBwYXR0ZXJucy5oYXNVc2VXb3JrZmxvdztcbiAgICBoYXNVc2VTdGVwID0gcGF0dGVybnMuaGFzVXNlU3RlcDtcbiAgICBoYXNTZXJkZSB8fD0gcGF0dGVybnMuaGFzU2VyZGU7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEJlc3QtZWZmb3J0IG9ubHkuIFVzZSB3aGljaGV2ZXIgc2lnbmFsIHdlIGFscmVhZHkgaGF2ZS5cbiAgfVxuXG4gIGlmICghaGFzVXNlV29ya2Zsb3cgJiYgIWhhc1VzZVN0ZXAgJiYgIWhhc1NlcmRlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHBhY2thZ2VOYW1lLFxuICAgIGhhc1VzZVdvcmtmbG93LFxuICAgIGhhc1VzZVN0ZXAsXG4gICAgaGFzU2VyZGUsXG4gIH07XG59XG5cbmZ1bmN0aW9uIHdhcm5BYm91dEF1dG9SZW1vdmVkU2VydmVyRXh0ZXJuYWxQYWNrYWdlcyhcbiAgZGV0ZWN0ZWRQYWNrYWdlczogRGV0ZWN0ZWRTZXJ2ZXJFeHRlcm5hbFBhY2thZ2VbXVxuKTogdm9pZCB7XG4gIGNvbnN0IG5ld2x5RGV0ZWN0ZWRQYWNrYWdlcyA9IGRldGVjdGVkUGFja2FnZXMuZmlsdGVyKCh7IHBhY2thZ2VOYW1lIH0pID0+IHtcbiAgICByZXR1cm4gIXdhcm5lZEF1dG9SZW1vdmVkU2VydmVyRXh0ZXJuYWxQYWNrYWdlcy5oYXMocGFja2FnZU5hbWUpO1xuICB9KTtcblxuICBpZiAobmV3bHlEZXRlY3RlZFBhY2thZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGZvciAoY29uc3QgeyBwYWNrYWdlTmFtZSB9IG9mIG5ld2x5RGV0ZWN0ZWRQYWNrYWdlcykge1xuICAgIHdhcm5lZEF1dG9SZW1vdmVkU2VydmVyRXh0ZXJuYWxQYWNrYWdlcy5hZGQocGFja2FnZU5hbWUpO1xuICB9XG5cbiAgY29uc3QgcGFja2FnZURlc2NyaXB0aW9ucyA9IG5ld2x5RGV0ZWN0ZWRQYWNrYWdlc1xuICAgIC5tYXAoXG4gICAgICAoZGV0ZWN0ZWQpID0+XG4gICAgICAgIGBcIiR7ZGV0ZWN0ZWQucGFja2FnZU5hbWV9XCIgKCR7Z2V0SXNzdWVMYWJlbHMoZGV0ZWN0ZWQpLmpvaW4oJywgJyl9KWBcbiAgICApXG4gICAgLmpvaW4oJywgJyk7XG4gIGNvbnN0IHBhY2thZ2VOYW1lcyA9IG5ld2x5RGV0ZWN0ZWRQYWNrYWdlc1xuICAgIC5tYXAoKGRldGVjdGVkKSA9PiBgXCIke2RldGVjdGVkLnBhY2thZ2VOYW1lfVwiYClcbiAgICAuam9pbignLCAnKTtcblxuICBjb25zb2xlLndhcm4oXG4gICAgYFxcbuKaoCBXb3JrZmxvdyBmb3VuZCB3b3JrZmxvdyBjb2RlIGluIHNlcnZlckV4dGVybmFsUGFja2FnZXM6ICR7cGFja2FnZURlc2NyaXB0aW9uc30uYCArXG4gICAgICBgXFxuICBXb3JrZmxvdyByZW1vdmVkIHRoZSBhZmZlY3RlZCBlbnRyaWVzIGZyb20gc2VydmVyRXh0ZXJuYWxQYWNrYWdlcyBmb3IgdGhpcyBidWlsZCBhbmQgaXMgY29tcGlsaW5nIHRoZSBwYWNrYWdlcyBhbnl3YXkuYCArXG4gICAgICBgXFxuICBSZW1vdmUgJHtwYWNrYWdlTmFtZXN9IGZyb20gc2VydmVyRXh0ZXJuYWxQYWNrYWdlcyBpbiBuZXh0LmNvbmZpZyB0byBzaWxlbmNlIHRoaXMgd2FybmluZy5cXG5gXG4gICk7XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVOZXh0VmVyc2lvbih3b3JraW5nRGlyOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBlcnJvcnM6IHVua25vd25bXSA9IFtdO1xuXG4gIC8vIFRyeSByZXNvbHZpbmcgZnJvbSB0aGUgY29uc3VtaW5nIHByb2plY3QncyB3b3JraW5nIGRpcmVjdG9yeSBmaXJzdC5cbiAgLy8gVGhpcyBoYW5kbGVzIG1vbm9yZXBvIHNldHVwcyB3aGVyZSBgbmV4dGAgbWF5IG5vdCBiZSBob2lzdGVkIHRvIHRoZVxuICAvLyBzYW1lIGxvY2F0aW9uIGFzIGBAd29ya2Zsb3cvbmV4dGAuXG4gIHRyeSB7XG4gICAgY29uc3QgcGFja2FnZUpzb25QYXRoID0gcmVxdWlyZS5yZXNvbHZlKCduZXh0L3BhY2thZ2UuanNvbicsIHtcbiAgICAgIHBhdGhzOiBbd29ya2luZ0Rpcl0sXG4gICAgfSk7XG4gICAgY29uc3QgcmVzb2x2ZWRQYWNrYWdlSnNvbiA9IHJlcXVpcmUocGFja2FnZUpzb25QYXRoKSBhcyB7XG4gICAgICB2ZXJzaW9uPzogdW5rbm93bjtcbiAgICB9O1xuICAgIGlmICh0eXBlb2YgcmVzb2x2ZWRQYWNrYWdlSnNvbi52ZXJzaW9uID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIHJlc29sdmVkUGFja2FnZUpzb24udmVyc2lvbjtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBlcnJvcnMucHVzaChlKTtcbiAgfVxuXG4gIC8vIEZhbGwgYmFjayB0byByZXNvbHZpbmcgcmVsYXRpdmUgdG8gdGhpcyBwYWNrYWdlJ3MgbG9jYXRpb24uXG4gIHRyeSB7XG4gICAgY29uc3QgdmVyc2lvbiA9IChyZXF1aXJlKCduZXh0L3BhY2thZ2UuanNvbicpIGFzIHsgdmVyc2lvbj86IHVua25vd24gfSlcbiAgICAgIC52ZXJzaW9uO1xuICAgIGlmICh0eXBlb2YgdmVyc2lvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB2ZXJzaW9uO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIGVycm9ycy5wdXNoKGUpO1xuICB9XG5cbiAgdGhyb3cgbmV3IEFnZ3JlZ2F0ZUVycm9yKFxuICAgIGVycm9ycyxcbiAgICBgQ291bGQgbm90IHJlc29sdmUgTmV4dC5qcyB2ZXJzaW9uLiBFbnN1cmUgXFxgbmV4dFxcYCBpcyBpbnN0YWxsZWQgaW4geW91ciBwcm9qZWN0ICh3b3JraW5nIGRpcmVjdG9yeTogJHt3b3JraW5nRGlyfSkuYFxuICApO1xufVxuXG5mdW5jdGlvbiBmaWxlRXhpc3RzKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IHN0YXRzID0gc3RhdFN5bmMocGF0aCk7XG4gICAgcmV0dXJuIHN0YXRzLmlzRmlsZSgpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0V29ya2Zsb3dNYW5pZmVzdENvcHlQYXRocyh7XG4gIHByb2plY3REaXIsXG4gIGRpc3REaXIsXG59OiB7XG4gIHByb2plY3REaXI6IHN0cmluZztcbiAgZGlzdERpcjogc3RyaW5nO1xufSk6IHsgbWFuaWZlc3RQYXRoOiBzdHJpbmc7IGRpYWdub3N0aWNzTWFuaWZlc3RQYXRoOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG1hbmlmZXN0Q2FuZGlkYXRlcyA9IFtcbiAgICBqb2luKHByb2plY3REaXIsICdhcHAvLndlbGwta25vd24vd29ya2Zsb3cvdjEvbWFuaWZlc3QuanNvbicpLFxuICAgIGpvaW4ocHJvamVjdERpciwgJ3NyYy9hcHAvLndlbGwta25vd24vd29ya2Zsb3cvdjEvbWFuaWZlc3QuanNvbicpLFxuICAgIGpvaW4ocHJvamVjdERpciwgJ3B1YmxpYy8ud2VsbC1rbm93bi93b3JrZmxvdy92MS9tYW5pZmVzdC5qc29uJyksXG4gIF07XG4gIGNvbnN0IG1hbmlmZXN0UGF0aCA9IG1hbmlmZXN0Q2FuZGlkYXRlcy5maW5kKGZpbGVFeGlzdHMpO1xuXG4gIGlmICghbWFuaWZlc3RQYXRoKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWREaXN0RGlyID0gaXNBYnNvbHV0ZShkaXN0RGlyKVxuICAgID8gZGlzdERpclxuICAgIDogam9pbihwcm9qZWN0RGlyLCBkaXN0RGlyKTtcbiAgY29uc3QgZGlhZ25vc3RpY3NNYW5pZmVzdFBhdGggPSBqb2luKFxuICAgIHJlc29sdmVkRGlzdERpcixcbiAgICAnZGlhZ25vc3RpY3MnLFxuICAgICd3b3JrZmxvd3MtbWFuaWZlc3QuanNvbidcbiAgKTtcbiAgcmV0dXJuIHsgbWFuaWZlc3RQYXRoLCBkaWFnbm9zdGljc01hbmlmZXN0UGF0aCB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBjb3B5V29ya2Zsb3dEaWFnbm9zdGljc01hbmlmZXN0KG1ldGFkYXRhOiB7XG4gIHByb2plY3REaXI6IHN0cmluZztcbiAgZGlzdERpcjogc3RyaW5nO1xufSk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBwYXRocyA9IGdldFdvcmtmbG93TWFuaWZlc3RDb3B5UGF0aHMobWV0YWRhdGEpO1xuICBpZiAoIXBhdGhzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgeyBtYW5pZmVzdFBhdGgsIGRpYWdub3N0aWNzTWFuaWZlc3RQYXRoIH0gPSBwYXRocztcbiAgYXdhaXQgbWtkaXIoZGlybmFtZShkaWFnbm9zdGljc01hbmlmZXN0UGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBhd2FpdCBjb3B5RmlsZShtYW5pZmVzdFBhdGgsIGRpYWdub3N0aWNzTWFuaWZlc3RQYXRoKTtcbn1cblxuZnVuY3Rpb24gY29weVdvcmtmbG93RGlhZ25vc3RpY3NNYW5pZmVzdFN5bmMobWV0YWRhdGE6IHtcbiAgcHJvamVjdERpcjogc3RyaW5nO1xuICBkaXN0RGlyOiBzdHJpbmc7XG59KTogdm9pZCB7XG4gIGNvbnN0IHBhdGhzID0gZ2V0V29ya2Zsb3dNYW5pZmVzdENvcHlQYXRocyhtZXRhZGF0YSk7XG4gIGlmICghcGF0aHMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB7IG1hbmlmZXN0UGF0aCwgZGlhZ25vc3RpY3NNYW5pZmVzdFBhdGggfSA9IHBhdGhzO1xuICBta2RpclN5bmMoZGlybmFtZShkaWFnbm9zdGljc01hbmlmZXN0UGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICBjb3B5RmlsZVN5bmMobWFuaWZlc3RQYXRoLCBkaWFnbm9zdGljc01hbmlmZXN0UGF0aCk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyV29ya2Zsb3dEaWFnbm9zdGljc01hbmlmZXN0Q29weShtZXRhZGF0YToge1xuICBwcm9qZWN0RGlyOiBzdHJpbmc7XG4gIGRpc3REaXI6IHN0cmluZztcbn0pOiB2b2lkIHtcbiAgY29uc3QgbWFya2VyID0gJ19fd29ya2Zsb3dEaWFnbm9zdGljc01hbmlmZXN0Q29waWVzJztcbiAgY29uc3QgZ2xvYmFsV2l0aE1hcmtlciA9IGdsb2JhbFRoaXMgYXMgdHlwZW9mIGdsb2JhbFRoaXMgJiB7XG4gICAgW21hcmtlcl0/OiBBcnJheTx7IHByb2plY3REaXI6IHN0cmluZzsgZGlzdERpcjogc3RyaW5nIH0+O1xuICB9O1xuXG4gIGlmICghZ2xvYmFsV2l0aE1hcmtlclttYXJrZXJdKSB7XG4gICAgZ2xvYmFsV2l0aE1hcmtlclttYXJrZXJdID0gW107XG4gICAgcHJvY2Vzcy5vbmNlKCdleGl0JywgKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBjb3B5TWV0YWRhdGEgb2YgZ2xvYmFsV2l0aE1hcmtlclttYXJrZXJdIHx8IFtdKSB7XG4gICAgICAgIGNvcHlXb3JrZmxvd0RpYWdub3N0aWNzTWFuaWZlc3RTeW5jKGNvcHlNZXRhZGF0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBnbG9iYWxXaXRoTWFya2VyW21hcmtlcl0ucHVzaChtZXRhZGF0YSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoV29ya2Zsb3coXG4gIG5leHRDb25maWdPckZuOlxuICAgIHwgTmV4dENvbmZpZ1xuICAgIHwgKChcbiAgICAgICAgcGhhc2U6IHN0cmluZyxcbiAgICAgICAgY3R4OiB7IGRlZmF1bHRDb25maWc6IE5leHRDb25maWcgfVxuICAgICAgKSA9PiBQcm9taXNlPE5leHRDb25maWc+KSxcbiAge1xuICAgIHdvcmtmbG93cyxcbiAgfToge1xuICAgIHdvcmtmbG93cz86IHtcbiAgICAgIGxvY2FsPzoge1xuICAgICAgICBwb3J0PzogbnVtYmVyO1xuICAgICAgfTtcbiAgICAgIC8qKlxuICAgICAgICogQ29udHJvbHMgaG93IHNvdXJjZSBtYXBzIGFyZSBlbWl0dGVkIGZvciB3b3JrZmxvdyBidW5kbGVzLiBBY2NlcHRzXG4gICAgICAgKiB0aGUgc2FtZSB2YWx1ZXMgYXMgZXNidWlsZCdzIGBzb3VyY2VtYXBgIG9wdGlvbjogYHRydWVgL2AnaW5saW5lJ2BcbiAgICAgICAqIChkZWZhdWx0KSwgYCdsaW5rZWQnYCwgYCdleHRlcm5hbCdgLCBgJ2JvdGgnYCwgb3IgYGZhbHNlYCB0byBvbWl0XG4gICAgICAgKiBzb3VyY2UgbWFwcy4gQ2FuIGFsc28gYmUgc2V0IHZpYSB0aGUgYFdPUktGTE9XX1NPVVJDRU1BUGBcbiAgICAgICAqIGVudmlyb25tZW50IHZhcmlhYmxlLlxuICAgICAgICovXG4gICAgICBzb3VyY2VtYXA/OiBib29sZWFuIHwgJ2lubGluZScgfCAnbGlua2VkJyB8ICdleHRlcm5hbCcgfCAnYm90aCc7XG4gICAgfTtcbiAgfSA9IHt9XG4pIHtcbiAgaWYgKCFwcm9jZXNzLmVudi5WRVJDRUxfREVQTE9ZTUVOVF9JRCkge1xuICAgIGlmICghcHJvY2Vzcy5lbnYuV09SS0ZMT1dfVEFSR0VUX1dPUkxEKSB7XG4gICAgICBwcm9jZXNzLmVudi5XT1JLRkxPV19UQVJHRVRfV09STEQgPSAnbG9jYWwnO1xuICAgICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfTE9DQUxfREFUQV9ESVIgPSAnLm5leHQvd29ya2Zsb3ctZGF0YSc7XG4gICAgfVxuICAgIGNvbnN0IG1heWJlUG9ydCA9IHdvcmtmbG93cz8ubG9jYWw/LnBvcnQ7XG4gICAgaWYgKG1heWJlUG9ydCkge1xuICAgICAgcHJvY2Vzcy5lbnYuUE9SVCA9IG1heWJlUG9ydC50b1N0cmluZygpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoIXByb2Nlc3MuZW52LldPUktGTE9XX1RBUkdFVF9XT1JMRCkge1xuICAgICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfVEFSR0VUX1dPUkxEID0gJ3ZlcmNlbCc7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIGJ1aWxkQ29uZmlnKFxuICAgIHBoYXNlOiBzdHJpbmcsXG4gICAgY3R4OiB7IGRlZmF1bHRDb25maWc6IE5leHRDb25maWcgfVxuICApIHtcbiAgICBjb25zdCBsb2FkZXJQYXRoID0gcmVxdWlyZS5yZXNvbHZlKCcuL2xvYWRlcicpO1xuICAgIGxldCBuZXh0Q29uZmlnOiBOZXh0Q29uZmlnO1xuXG4gICAgaWYgKHR5cGVvZiBuZXh0Q29uZmlnT3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbmV4dENvbmZpZyA9IGF3YWl0IG5leHRDb25maWdPckZuKHBoYXNlLCBjdHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0Q29uZmlnID0gbmV4dENvbmZpZ09yRm47XG4gICAgfVxuICAgIC8vIHNoYWxsb3cgY2xvbmUgdG8gYXZvaWQgcmVhZC1vbmx5IG9uIHRvcC1sZXZlbFxuICAgIG5leHRDb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBuZXh0Q29uZmlnKTtcbiAgICBuZXh0Q29uZmlnLnNlcnZlckV4dGVybmFsUGFja2FnZXMgPSBbXG4gICAgICAuLi5uZXcgU2V0KFtcbiAgICAgICAgLi4uKG5leHRDb25maWcuc2VydmVyRXh0ZXJuYWxQYWNrYWdlcyB8fCBbXSksXG4gICAgICAgIC8vIEtlZXAgdGhlIFZlcmNlbCB3b3JsZCBhbmQgaXRzIG5hdGl2ZS1wcm9uZSBkZXBlbmRlbmNpZXMgZXh0ZXJuYWwgc29cbiAgICAgICAgLy8gbG9jYWwgYnVpbGRzIGRvIG5vdCB0cnkgdG8gcGFyc2UgQHZlcmNlbC9xdWV1ZSdzIGtleXJpbmcgZGVwZW5kZW5jeVxuICAgICAgICAvLyB0cmVlLlxuICAgICAgICAuLi5WRVJDRUxfV09STERfU0VSVkVSX0VYVEVSTkFMX1BBQ0tBR0VTLFxuICAgICAgXSksXG4gICAgXTtcbiAgICBjb25zdCBleGlzdGluZ0NvbXBpbGVyID0gbmV4dENvbmZpZy5jb21waWxlciA/PyB7fTtcbiAgICBjb25zdCBleGlzdGluZ1J1bkFmdGVyUHJvZHVjdGlvbkNvbXBpbGUgPSAoXG4gICAgICBleGlzdGluZ0NvbXBpbGVyIGFzIHtcbiAgICAgICAgcnVuQWZ0ZXJQcm9kdWN0aW9uQ29tcGlsZT86IChtZXRhZGF0YToge1xuICAgICAgICAgIHByb2plY3REaXI6IHN0cmluZztcbiAgICAgICAgICBkaXN0RGlyOiBzdHJpbmc7XG4gICAgICAgIH0pID0+IFByb21pc2U8dm9pZD47XG4gICAgICB9XG4gICAgKS5ydW5BZnRlclByb2R1Y3Rpb25Db21waWxlO1xuXG4gICAgY29uc3QgY29uZmlndXJlZFNlcnZlckV4dGVybmFsUGFja2FnZXMgPSBBcnJheS5pc0FycmF5KFxuICAgICAgbmV4dENvbmZpZy5zZXJ2ZXJFeHRlcm5hbFBhY2thZ2VzXG4gICAgKVxuICAgICAgPyBuZXh0Q29uZmlnLnNlcnZlckV4dGVybmFsUGFja2FnZXNcbiAgICAgIDogW107XG4gICAgbGV0IGVmZmVjdGl2ZVNlcnZlckV4dGVybmFsUGFja2FnZXMgPSBjb25maWd1cmVkU2VydmVyRXh0ZXJuYWxQYWNrYWdlcztcblxuICAgIGlmIChjb25maWd1cmVkU2VydmVyRXh0ZXJuYWxQYWNrYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBkZXRlY3RlZFdvcmtmbG93UGFja2FnZXM6IERldGVjdGVkU2VydmVyRXh0ZXJuYWxQYWNrYWdlW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgcGFja2FnZU5hbWUgb2YgY29uZmlndXJlZFNlcnZlckV4dGVybmFsUGFja2FnZXMpIHtcbiAgICAgICAgaWYgKFBTRVVET19FWFRFUk5BTF9QQUNLQUdFUy5oYXMocGFja2FnZU5hbWUpKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IGRldGVjdGVkID0gYXdhaXQgZGV0ZWN0U2VydmVyRXh0ZXJuYWxQYWNrYWdlKFxuICAgICAgICAgICAgcGFja2FnZU5hbWUsXG4gICAgICAgICAgICBwcm9jZXNzLmN3ZCgpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoZGV0ZWN0ZWQpIHtcbiAgICAgICAgICAgIGRldGVjdGVkV29ya2Zsb3dQYWNrYWdlcy5wdXNoKGRldGVjdGVkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIEJlc3QtZWZmb3J0IG9ubHkuIE5ldmVyIGJsb2NrIGNvbmZpZyBnZW5lcmF0aW9uLlxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChkZXRlY3RlZFdvcmtmbG93UGFja2FnZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCByZW1vdmVkUGFja2FnZXMgPSBuZXcgU2V0KFxuICAgICAgICAgIGRldGVjdGVkV29ya2Zsb3dQYWNrYWdlcy5tYXAoKGRldGVjdGVkKSA9PiBkZXRlY3RlZC5wYWNrYWdlTmFtZSlcbiAgICAgICAgKTtcbiAgICAgICAgZWZmZWN0aXZlU2VydmVyRXh0ZXJuYWxQYWNrYWdlcyA9XG4gICAgICAgICAgY29uZmlndXJlZFNlcnZlckV4dGVybmFsUGFja2FnZXMuZmlsdGVyKFxuICAgICAgICAgICAgKHBhY2thZ2VOYW1lKSA9PiAhcmVtb3ZlZFBhY2thZ2VzLmhhcyhwYWNrYWdlTmFtZSlcbiAgICAgICAgICApO1xuICAgICAgICBuZXh0Q29uZmlnLnNlcnZlckV4dGVybmFsUGFja2FnZXMgPSBlZmZlY3RpdmVTZXJ2ZXJFeHRlcm5hbFBhY2thZ2VzO1xuICAgICAgICB3YXJuQWJvdXRBdXRvUmVtb3ZlZFNlcnZlckV4dGVybmFsUGFja2FnZXMoZGV0ZWN0ZWRXb3JrZmxvd1BhY2thZ2VzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBjb25maWd1cmUgdGhlIGxvYWRlciBpZiB0dXJib3BhY2sgaXMgYmVpbmcgdXNlZFxuICAgIGlmICghbmV4dENvbmZpZy50dXJib3BhY2spIHtcbiAgICAgIG5leHRDb25maWcudHVyYm9wYWNrID0ge307XG4gICAgfVxuICAgIGlmICghbmV4dENvbmZpZy50dXJib3BhY2sucnVsZXMpIHtcbiAgICAgIG5leHRDb25maWcudHVyYm9wYWNrLnJ1bGVzID0ge307XG4gICAgfVxuICAgIGNvbnN0IGV4aXN0aW5nUnVsZXMgPSBuZXh0Q29uZmlnLnR1cmJvcGFjay5ydWxlcyBhcyBhbnk7XG4gICAgY29uc3QgbmV4dFZlcnNpb24gPSByZXNvbHZlTmV4dFZlcnNpb24ocHJvY2Vzcy5jd2QoKSk7XG4gICAgY29uc3Qgc3VwcG9ydHNUdXJib0NvbmRpdGlvbiA9IHNlbXZlci5ndGUobmV4dFZlcnNpb24sICd2MTYuMC4wJyk7XG5cbiAgICBjb25zdCBzaG91bGRXYXRjaCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnO1xuICAgIGxldCB3b3JrZmxvd0J1aWxkZXJQcm9taXNlOiBQcm9taXNlPGFueT4gfCB1bmRlZmluZWQ7XG4gICAgY29uc3QgZGlzdERpciA9IG5leHRDb25maWcuZGlzdERpciB8fCAnLm5leHQnO1xuXG4gICAgbmV4dENvbmZpZy5jb21waWxlciA9IHtcbiAgICAgIC4uLmV4aXN0aW5nQ29tcGlsZXIsXG4gICAgICBydW5BZnRlclByb2R1Y3Rpb25Db21waWxlOiBhc3luYyAobWV0YWRhdGEpID0+IHtcbiAgICAgICAgaWYgKGV4aXN0aW5nUnVuQWZ0ZXJQcm9kdWN0aW9uQ29tcGlsZSkge1xuICAgICAgICAgIGF3YWl0IGV4aXN0aW5nUnVuQWZ0ZXJQcm9kdWN0aW9uQ29tcGlsZShtZXRhZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgY29weVdvcmtmbG93RGlhZ25vc3RpY3NNYW5pZmVzdChtZXRhZGF0YSk7XG4gICAgICAgIHJlZ2lzdGVyV29ya2Zsb3dEaWFnbm9zdGljc01hbmlmZXN0Q29weShtZXRhZGF0YSk7XG4gICAgICB9LFxuICAgIH07XG5cbiAgICBjb25zdCBnZXRXb3JrZmxvd0J1aWxkZXIgPSBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAoIXdvcmtmbG93QnVpbGRlclByb21pc2UpIHtcbiAgICAgICAgd29ya2Zsb3dCdWlsZGVyUHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgTmV4dEJ1aWxkZXIgPSBhd2FpdCBnZXROZXh0QnVpbGRlcihuZXh0VmVyc2lvbik7XG4gICAgICAgICAgcmV0dXJuIG5ldyBOZXh0QnVpbGRlcih7XG4gICAgICAgICAgICB3YXRjaDogc2hvdWxkV2F0Y2gsXG4gICAgICAgICAgICAvLyBkaXNjb3ZlciB3b3JrZmxvd3MgZnJvbSBwYWdlcy9hcHAgZW50cmllc1xuICAgICAgICAgICAgZGlyczogWydwYWdlcycsICdhcHAnLCAnc3JjL3BhZ2VzJywgJ3NyYy9hcHAnXSxcbiAgICAgICAgICAgIHByb2plY3RSb290OiBuZXh0Q29uZmlnLm91dHB1dEZpbGVUcmFjaW5nUm9vdCxcbiAgICAgICAgICAgIG1vZHVsZVNwZWNpZmllclJvb3Q6IHByb2Nlc3MuY3dkKCksXG4gICAgICAgICAgICB3b3JraW5nRGlyOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgICAgICAgZGlzdERpcixcbiAgICAgICAgICAgIGRpYWdub3N0aWNzRGlyOiBgJHtkaXN0RGlyfS9kaWFnbm9zdGljc2AsXG4gICAgICAgICAgICBidWlsZFRhcmdldDogJ25leHQnLFxuICAgICAgICAgICAgd29ya2Zsb3dzQnVuZGxlUGF0aDogJycsIC8vIG5vdCB1c2VkIGluIGJhc2VcbiAgICAgICAgICAgIHN0ZXBzQnVuZGxlUGF0aDogJycsIC8vIG5vdCB1c2VkIGluIGJhc2VcbiAgICAgICAgICAgIHdlYmhvb2tCdW5kbGVQYXRoOiAnJywgLy8gbm9kZSB1c2VkIGluIGJhc2VcbiAgICAgICAgICAgIHNvdXJjZW1hcDogd29ya2Zsb3dzPy5zb3VyY2VtYXAsXG4gICAgICAgICAgICBleHRlcm5hbFBhY2thZ2VzOiBbXG4gICAgICAgICAgICAgIC8vIHNlcnZlci1vbmx5IGFuZCBjbGllbnQtb25seSBhcmUgcHNldWRvLXBhY2thZ2VzIGhhbmRsZWQgYnkgTmV4dC5qc1xuICAgICAgICAgICAgICAvLyBkdXJpbmcgaXRzIGJ1aWxkIHByb2Nlc3MuIFdlIG1hcmsgdGhlbSBhcyBleHRlcm5hbCB0byBwcmV2ZW50IGVzYnVpbGRcbiAgICAgICAgICAgICAgLy8gZnJvbSBmYWlsaW5nIHdoZW4gYnVuZGxpbmcgY29kZSB0aGF0IGltcG9ydHMgdGhlbS5cbiAgICAgICAgICAgICAgLy8gU2VlOiBodHRwczovL25leHRqcy5vcmcvZG9jcy9hcHAvZ2V0dGluZy1zdGFydGVkL3NlcnZlci1hbmQtY2xpZW50LWNvbXBvbmVudHNcbiAgICAgICAgICAgICAgJ3NlcnZlci1vbmx5JyxcbiAgICAgICAgICAgICAgJ2NsaWVudC1vbmx5JyxcbiAgICAgICAgICAgICAgLi4uZWZmZWN0aXZlU2VydmVyRXh0ZXJuYWxQYWNrYWdlcyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB3b3JrZmxvd0J1aWxkZXJQcm9taXNlO1xuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IGtleSBvZiBbXG4gICAgICAnKi50c3gnLFxuICAgICAgJyoudHMnLFxuICAgICAgJyouanN4JyxcbiAgICAgICcqLmpzJyxcbiAgICAgICcqLm1qcycsXG4gICAgICAnKi5tdHMnLFxuICAgICAgJyouY2pzJyxcbiAgICAgICcqLmN0cycsXG4gICAgXSkge1xuICAgICAgbmV4dENvbmZpZy50dXJib3BhY2sucnVsZXNba2V5XSA9IHtcbiAgICAgICAgLi4uKHN1cHBvcnRzVHVyYm9Db25kaXRpb25cbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgY29uZGl0aW9uOiB7XG4gICAgICAgICAgICAgICAgLy8gVXNlICdhbGwnIHRvIGNvbWJpbmU6IG11c3QgbWF0Y2ggY29udGVudCBBTkQgbXVzdCBOT1QgYmUgaW4gZ2VuZXJhdGVkIHBhdGhcbiAgICAgICAgICAgICAgICAvLyBNZXJnZSB3aXRoIGFueSBleGlzdGluZyAnYWxsJyBjb25kaXRpb25zIGZyb20gdXNlciBjb25maWdcbiAgICAgICAgICAgICAgICBhbGw6IFtcbiAgICAgICAgICAgICAgICAgIC4uLihleGlzdGluZ1J1bGVzW2tleV0/LmNvbmRpdGlvbj8uYWxsIHx8IFtdKSxcbiAgICAgICAgICAgICAgICAgIC8vIEV4Y2x1ZGUgZ2VuZXJhdGVkIHdvcmtmbG93IHJvdXRlIGZpbGVzIGZyb20gdHJhbnNmb3JtYXRpb25cbiAgICAgICAgICAgICAgICAgIHsgbm90OiB7IHBhdGg6IC9bL1xcXFxdXFwud2VsbC1rbm93blsvXFxcXF13b3JrZmxvd1svXFxcXF0vIH0gfSxcbiAgICAgICAgICAgICAgICAgIC8vIE1hdGNoIGZpbGVzIHdpdGggd29ya2Zsb3cgZGlyZWN0aXZlcyBvciBjdXN0b20gc2VyaWFsaXphdGlvbiBwYXR0ZXJuc1xuICAgICAgICAgICAgICAgICAgLy8gVXNlcyBiYWNrcmVmZXJlbmNlcyAoXFwyLCBcXDMpIHRvIGVuc3VyZSBtYXRjaGluZyBxdW90ZSB0eXBlc1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBjb250ZW50OlxuICAgICAgICAgICAgICAgICAgICAgIC8odXNlIHdvcmtmbG93fHVzZSBzdGVwfGZyb21cXHMrKFsnXCJdKUB3b3JrZmxvd1xcL3NlcmRlXFwyfFN5bWJvbFxcLmZvclxccypcXChcXHMqKFsnXCJdKXdvcmtmbG93LSg/OnNlcmlhbGl6ZXxkZXNlcmlhbGl6ZSlcXDNcXHMqXFwpKS8sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB7fSksXG4gICAgICAgIGxvYWRlcnM6IFsuLi4oZXhpc3RpbmdSdWxlc1trZXldPy5sb2FkZXJzIHx8IFtdKSwgbG9hZGVyUGF0aF0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIGNvbmZpZ3VyZSB0aGUgbG9hZGVyIGZvciB3ZWJwYWNrXG4gICAgY29uc3QgZXhpc3RpbmdXZWJwYWNrTW9kaWZ5ID0gbmV4dENvbmZpZy53ZWJwYWNrO1xuICAgIG5leHRDb25maWcud2VicGFjayA9ICguLi5hcmdzKSA9PiB7XG4gICAgICBjb25zdCBbd2VicGFja0NvbmZpZ10gPSBhcmdzO1xuICAgICAgaWYgKCF3ZWJwYWNrQ29uZmlnLm1vZHVsZSkge1xuICAgICAgICB3ZWJwYWNrQ29uZmlnLm1vZHVsZSA9IHt9O1xuICAgICAgfVxuICAgICAgaWYgKCF3ZWJwYWNrQ29uZmlnLm1vZHVsZS5ydWxlcykge1xuICAgICAgICB3ZWJwYWNrQ29uZmlnLm1vZHVsZS5ydWxlcyA9IFtdO1xuICAgICAgfVxuICAgICAgLy8gbG9hZGVycyBpbiB3ZWJwYWNrIGFwcGx5IGJvdHRvbS0+dXAgc28gZW5zdXJlXG4gICAgICAvLyBvdXJzIGNvbWVzIGJlZm9yZSB0aGUgZGVmYXVsdCBzd2MgdHJhbnNmb3JtXG4gICAgICB3ZWJwYWNrQ29uZmlnLm1vZHVsZS5ydWxlcy5wdXNoKHtcbiAgICAgICAgdGVzdDogLy4qXFwuKG1qc3xjanN8Y3RzfHRzfHRzeHxqc3xqc3gpJC8sXG4gICAgICAgIGxvYWRlcjogbG9hZGVyUGF0aCxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gZXhpc3RpbmdXZWJwYWNrTW9kaWZ5XG4gICAgICAgID8gKGV4aXN0aW5nV2VicGFja01vZGlmeSguLi5hcmdzKSA/PyB3ZWJwYWNrQ29uZmlnKVxuICAgICAgICA6IHdlYnBhY2tDb25maWc7XG4gICAgfTtcbiAgICAvLyBvbmx5IHJ1biB0aGlzIGluIHRoZSBtYWluIHByb2Nlc3Mgc28gaXQgb25seSBydW5zIG9uY2VcbiAgICAvLyBhcyBOZXh0LmpzIHVzZXMgY2hpbGQgcHJvY2Vzc2VzIGZvciBkaWZmZXJlbnQgYnVpbGRzXG4gICAgaWYgKFxuICAgICAgIXByb2Nlc3MuZW52LldPUktGTE9XX05FWFRfUFJJVkFURV9CVUlMVCAmJlxuICAgICAgcGhhc2UgIT09ICdwaGFzZS1wcm9kdWN0aW9uLXNlcnZlcidcbiAgICApIHtcbiAgICAgIGNvbnN0IHdvcmtmbG93QnVpbGRlciA9IGF3YWl0IGdldFdvcmtmbG93QnVpbGRlcigpO1xuXG4gICAgICBhd2FpdCB3b3JrZmxvd0J1aWxkZXIuYnVpbGQoKTtcbiAgICAgIHByb2Nlc3MuZW52LldPUktGTE9XX05FWFRfUFJJVkFURV9CVUlMVCA9ICcxJztcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dENvbmZpZztcbiAgfTtcbn1cbiJdfQ==
|
package/dist/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAyMA,KAAK,qBAAqB,GAAG;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CACZ,KAAK,EAAE,KAAK,GAAG,IAAI,EACnB,OAAO,CAAC,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,GAAG,KACZ,IAAI,CAAC;IACV,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,IAAI,EAAE,qBAAqB,EAC3B,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,SAAS,EAAE,GAAG,GACb,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAyGjC"}
|