@workflow/builders 5.0.0-beta.3 → 5.0.0-beta.30
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/apply-swc-transform.d.ts +7 -2
- package/dist/apply-swc-transform.d.ts.map +1 -1
- package/dist/apply-swc-transform.js +10 -4
- package/dist/base-builder-logging.test.d.ts +2 -0
- package/dist/base-builder-logging.test.d.ts.map +1 -0
- package/dist/base-builder-logging.test.js +99 -0
- package/dist/base-builder.d.ts +127 -13
- package/dist/base-builder.d.ts.map +1 -1
- package/dist/base-builder.js +812 -102
- package/dist/build-queue.js +1 -1
- package/dist/config-helpers.d.ts +4 -1
- package/dist/config-helpers.d.ts.map +1 -1
- package/dist/config-helpers.js +63 -1
- package/dist/config-helpers.test.d.ts +2 -0
- package/dist/config-helpers.test.d.ts.map +1 -0
- package/dist/config-helpers.test.js +17 -0
- package/dist/constants.d.ts +31 -5
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +71 -19
- package/dist/constants.test.d.ts +2 -0
- package/dist/constants.test.d.ts.map +1 -0
- package/dist/constants.test.js +40 -0
- package/dist/discover-entries-esbuild-plugin.d.ts +3 -1
- package/dist/discover-entries-esbuild-plugin.d.ts.map +1 -1
- package/dist/discover-entries-esbuild-plugin.js +24 -4
- package/dist/discover-entries-esbuild-plugin.test.js +1 -1
- package/dist/esbuild-tsconfig.js +1 -1
- package/dist/esbuild-tsconfig.test.js +1 -1
- package/dist/external-package-warning.test.d.ts +2 -0
- package/dist/external-package-warning.test.d.ts.map +1 -0
- package/dist/external-package-warning.test.js +219 -0
- package/dist/fast-discovery.d.ts +20 -0
- package/dist/fast-discovery.d.ts.map +1 -0
- package/dist/fast-discovery.js +774 -0
- package/dist/fast-discovery.test.d.ts +2 -0
- package/dist/fast-discovery.test.d.ts.map +1 -0
- package/dist/fast-discovery.test.js +336 -0
- package/dist/get-input-files.test.js +34 -2
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -4
- package/dist/module-specifier.d.ts +20 -2
- package/dist/module-specifier.d.ts.map +1 -1
- package/dist/module-specifier.js +92 -17
- package/dist/module-specifier.test.js +45 -3
- package/dist/node-compat-banner.d.ts +15 -0
- package/dist/node-compat-banner.d.ts.map +1 -0
- package/dist/node-compat-banner.js +15 -0
- package/dist/node-module-esbuild-plugin.d.ts.map +1 -1
- package/dist/node-module-esbuild-plugin.js +73 -23
- package/dist/node-module-esbuild-plugin.test.js +97 -1
- package/dist/optional-otel-api.d.ts +14 -0
- package/dist/optional-otel-api.d.ts.map +1 -0
- package/dist/optional-otel-api.js +14 -0
- package/dist/optional-pg-native-alias.d.ts +2 -0
- package/dist/optional-pg-native-alias.d.ts.map +1 -0
- package/dist/optional-pg-native-alias.js +3 -0
- package/dist/optional-pg-native.d.ts +3 -0
- package/dist/optional-pg-native.d.ts.map +1 -0
- package/dist/optional-pg-native.js +3 -0
- package/dist/optional-typescript-alias.d.ts +2 -0
- package/dist/optional-typescript-alias.d.ts.map +1 -0
- package/dist/optional-typescript-alias.js +3 -0
- package/dist/optional-typescript.d.ts +3 -0
- package/dist/optional-typescript.d.ts.map +1 -0
- package/dist/optional-typescript.js +9 -0
- package/dist/pseudo-package-esbuild-plugin.js +1 -1
- package/dist/pseudo-package-esbuild-plugin.test.js +1 -1
- package/dist/request-converter.js +1 -1
- package/dist/resolve-sourcemap.test.d.ts +2 -0
- package/dist/resolve-sourcemap.test.d.ts.map +1 -0
- package/dist/resolve-sourcemap.test.js +194 -0
- package/dist/serde-checker.js +1 -1
- package/dist/standalone.d.ts +0 -3
- package/dist/standalone.d.ts.map +1 -1
- package/dist/standalone.js +12 -41
- package/dist/step-source-registration.test.d.ts +2 -0
- package/dist/step-source-registration.test.d.ts.map +1 -0
- package/dist/step-source-registration.test.js +82 -0
- package/dist/swc-esbuild-plugin.d.ts +10 -0
- package/dist/swc-esbuild-plugin.d.ts.map +1 -1
- package/dist/swc-esbuild-plugin.js +116 -14
- package/dist/swc-esbuild-plugin.test.js +370 -6
- package/dist/transform-utils.d.ts.map +1 -1
- package/dist/transform-utils.js +45 -6
- package/dist/transform-utils.test.js +78 -6
- package/dist/types.d.ts +38 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/dist/vercel-build-output-api.d.ts +0 -2
- package/dist/vercel-build-output-api.d.ts.map +1 -1
- package/dist/vercel-build-output-api.js +31 -59
- package/dist/workflow-alias.js +1 -1
- package/dist/workflow-alias.test.js +1 -1
- package/dist/workflows-extractor.js +8 -3
- package/dist/workflows-extractor.test.d.ts +2 -0
- package/dist/workflows-extractor.test.d.ts.map +1 -0
- package/dist/workflows-extractor.test.js +70 -0
- package/dist/world-target.d.ts +20 -0
- package/dist/world-target.d.ts.map +1 -0
- package/dist/world-target.js +74 -0
- package/dist/world-target.test.d.ts +2 -0
- package/dist/world-target.test.d.ts.map +1 -0
- package/dist/world-target.test.js +106 -0
- package/package.json +9 -7
- package/dist/apply-swc-transform.js.map +0 -1
- package/dist/base-builder.js.map +0 -1
- package/dist/build-queue.js.map +0 -1
- package/dist/config-helpers.js.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/discover-entries-esbuild-plugin.js.map +0 -1
- package/dist/discover-entries-esbuild-plugin.test.js.map +0 -1
- package/dist/esbuild-tsconfig.js.map +0 -1
- package/dist/esbuild-tsconfig.test.js.map +0 -1
- package/dist/get-input-files.test.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/module-specifier.js.map +0 -1
- package/dist/module-specifier.test.js.map +0 -1
- package/dist/node-module-esbuild-plugin.js.map +0 -1
- package/dist/node-module-esbuild-plugin.test.js.map +0 -1
- package/dist/pseudo-package-esbuild-plugin.js.map +0 -1
- package/dist/pseudo-package-esbuild-plugin.test.js.map +0 -1
- package/dist/request-converter.js.map +0 -1
- package/dist/serde-checker.js.map +0 -1
- package/dist/standalone.js.map +0 -1
- package/dist/swc-esbuild-plugin.js.map +0 -1
- package/dist/swc-esbuild-plugin.test.js.map +0 -1
- package/dist/transform-utils.js.map +0 -1
- package/dist/transform-utils.test.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/vercel-build-output-api.js.map +0 -1
- package/dist/workflow-alias.js.map +0 -1
- package/dist/workflow-alias.test.js.map +0 -1
- package/dist/workflows-extractor.js.map +0 -1
|
@@ -312,4 +312,4 @@ describe('workflow bundle dynamic imports', () => {
|
|
|
312
312
|
}
|
|
313
313
|
});
|
|
314
314
|
});
|
|
315
|
-
//# sourceMappingURL=pseudo-package-esbuild-plugin.test.js.map
|
|
315
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHNldWRvLXBhY2thZ2UtZXNidWlsZC1wbHVnaW4udGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wc2V1ZG8tcGFja2FnZS1lc2J1aWxkLXBsdWdpbi50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sYUFBYSxHQUNkLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVqQyxPQUFPLEtBQUssT0FBTyxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUMsT0FBTyxFQUNMLHlCQUF5QixFQUN6QixlQUFlLEdBQ2hCLE1BQU0sb0NBQW9DLENBQUM7QUFFNUMsd0VBQXdFO0FBQ3hFLE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBRTFDLEtBQUssVUFBVSxlQUFlLENBQzVCLE1BQWMsRUFDZCxVQUE0QixDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFFekQsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsNkJBQTZCLENBQUMsQ0FBQyxDQUFDO0lBQzdFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDL0MsYUFBYSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUVqQyxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDakMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ3hCLE1BQU0sRUFBRSxJQUFJO1FBQ1osS0FBSyxFQUFFLEtBQUs7UUFDWixRQUFR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QUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBta2RpclN5bmMsXG4gIG1rZHRlbXBTeW5jLFxuICByZWFscGF0aFN5bmMsXG4gIHJtU3luYyxcbiAgd3JpdGVGaWxlU3luYyxcbn0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyB0bXBkaXIgfSBmcm9tICdub2RlOm9zJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdub2RlOnBhdGgnO1xuXG5pbXBvcnQgKiBhcyBlc2J1aWxkIGZyb20gJ2VzYnVpbGQnO1xuaW1wb3J0IHsgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHtcbiAgY3JlYXRlUHNldWRvUGFja2FnZVBsdWdpbixcbiAgUFNFVURPX1BBQ0tBR0VTLFxufSBmcm9tICcuL3BzZXVkby1wYWNrYWdlLWVzYnVpbGQtcGx1Z2luLmpzJztcblxuLy8gUmVzb2x2ZSBzeW1saW5rcyBpbiB0bXBkaXIgdG8gYXZvaWQgbWFjT1MgL3ZhciAtPiAvcHJpdmF0ZS92YXIgaXNzdWVzXG5jb25zdCByZWFsVG1wZGlyID0gcmVhbHBhdGhTeW5jKHRtcGRpcigpKTtcblxuYXN5bmMgZnVuY3Rpb24gYnVpbGRXaXRoUGx1Z2luKFxuICBzb3VyY2U6IHN0cmluZyxcbiAgcGx1Z2luczogZXNidWlsZC5QbHVnaW5bXSA9IFtjcmVhdGVQc2V1ZG9QYWNrYWdlUGx1Z2luKCldXG4pOiBQcm9taXNlPHsgcmVzdWx0OiBlc2J1aWxkLkJ1aWxkUmVzdWx0OyB0ZW1wRGlyOiBzdHJpbmcgfT4ge1xuICBjb25zdCB0ZW1wRGlyID0gbWtkdGVtcFN5bmMoam9pbihyZWFsVG1wZGlyLCAncHNldWRvLXBhY2thZ2UtcGx1Z2luLXRlc3QtJykpO1xuICBjb25zdCBlbnRyeUZpbGUgPSBqb2luKHRlbXBEaXIsICd3b3JrZmxvdy50cycpO1xuICB3cml0ZUZpbGVTeW5jKGVudHJ5RmlsZSwgc291cmNlKTtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBlc2J1aWxkLmJ1aWxkKHtcbiAgICBlbnRyeVBvaW50czogW2VudHJ5RmlsZV0sXG4gICAgYnVuZGxlOiB0cnVlLFxuICAgIHdyaXRlOiBmYWxzZSxcbiAgICBwbGF0Zm9ybTogJ25ldXRyYWwnLFxuICAgIGZvcm1hdDogJ2NqcycsXG4gICAgbG9nTGV2ZWw6ICdzaWxlbnQnLFxuICAgIHBsdWdpbnMsXG4gIH0pO1xuXG4gIHJldHVybiB7IHJlc3VsdCwgdGVtcERpciB9O1xufVxuXG5kZXNjcmliZSgnY3JlYXRlUHNldWRvUGFja2FnZVBsdWdpbicsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3NlcnZlci1vbmx5IHBhY2thZ2UnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXBsYWNlIHNlcnZlci1vbmx5IGltcG9ydCB3aXRoIGVtcHR5IG1vZHVsZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRlc3RDb2RlID0gYFxuICAgICAgICBpbXBvcnQgJ3NlcnZlci1vbmx5JztcbiAgICAgICAgZXhwb3J0IGZ1bmN0aW9uIHdvcmtmbG93KCkge1xuICAgICAgICAgIHJldHVybiBcImhlbGxvXCI7XG4gICAgICAgIH1cbiAgICAgIGA7XG5cbiAgICAgIGNvbnN0IHsgcmVzdWx0LCB0ZW1wRGlyIH0gPSBhd2FpdCBidWlsZFdpdGhQbHVnaW4odGVzdENvZGUpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXM/LlswXS50ZXh0O1xuICAgICAgICBleHBlY3Qob3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAvLyBTaG91bGQgbm90IGNvbnRhaW4gcmVxdWlyZSgnc2VydmVyLW9ubHknKSBzaW5jZSBpdCdzIHJlcGxhY2VkIHdpdGggZW1wdHkgbW9kdWxlXG4gICAgICAgIC8vIChlc2J1aWxkIHRyZWUtc2hha2VzIHVudXNlZCBpbXBvcnRzLCBzbyB0aGUgbW9kdWxlIGNvbnRlbnQgbWF5IG5vdCBhcHBlYXIsXG4gICAgICAgIC8vIGJ1dCBpbXBvcnRhbnRseSBubyByZXF1aXJlKCkgY2FsbCBpcyBnZW5lcmF0ZWQpXG4gICAgICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oXCJyZXF1aXJlKCdzZXJ2ZXItb25seScpXCIpO1xuICAgICAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9Db250YWluKCdyZXF1aXJlKFwic2VydmVyLW9ubHlcIiknKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHJtU3luYyh0ZW1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBzZXJ2ZXItb25seSBhbG9uZ3NpZGUgb3RoZXIgaW1wb3J0cycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRlc3RDb2RlID0gYFxuICAgICAgICBpbXBvcnQgJ3NlcnZlci1vbmx5JztcbiAgICAgICAgY29uc3QgeCA9IDQyO1xuICAgICAgICBleHBvcnQgZnVuY3Rpb24gd29ya2Zsb3coKSB7XG4gICAgICAgICAgcmV0dXJuIHg7XG4gICAgICAgIH1cbiAgICAgIGA7XG5cbiAgICAgIGNvbnN0IHsgcmVzdWx0LCB0ZW1wRGlyIH0gPSBhd2FpdCBidWlsZFdpdGhQbHVnaW4odGVzdENvZGUpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXM/LlswXS50ZXh0O1xuICAgICAgICBleHBlY3Qob3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAvLyBObyByZXF1aXJlKCkgY2FsbCBzaG91bGQgYmUgZ2VuZXJhdGVkXG4gICAgICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oXCJyZXF1aXJlKCdzZXJ2ZXItb25seScpXCIpO1xuICAgICAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9Db250YWluKCdyZXF1aXJlKFwic2VydmVyLW9ubHlcIiknKTtcbiAgICAgICAgLy8gVGhlIGFjdHVhbCBjb2RlIHNob3VsZCBzdGlsbCB3b3JrXG4gICAgICAgIGV4cGVjdChvdXRwdXQpLnRvQ29udGFpbignNDInKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHJtU3luYyh0ZW1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjbGllbnQtb25seSBwYWNrYWdlJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVwbGFjZSBjbGllbnQtb25seSBpbXBvcnQgd2l0aCBlbXB0eSBtb2R1bGUnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0ZXN0Q29kZSA9IGBcbiAgICAgICAgaW1wb3J0ICdjbGllbnQtb25seSc7XG4gICAgICAgIGV4cG9ydCBjb25zdCB4ID0gMTtcbiAgICAgIGA7XG5cbiAgICAgIGNvbnN0IHsgcmVzdWx0LCB0ZW1wRGlyIH0gPSBhd2FpdCBidWlsZFdpdGhQbHVnaW4odGVzdENvZGUpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXM/LlswXS50ZXh0O1xuICAgICAgICBleHBlY3Qob3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgICAvLyBObyByZXF1aXJlKCkgY2FsbCBzaG91bGQgYmUgZ2VuZXJhdGVkXG4gICAgICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oXCJyZXF1aXJlKCdjbGllbnQtb25seScpXCIpO1xuICAgICAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9Db250YWluKCdyZXF1aXJlKFwiY2xpZW50LW9ubHlcIiknKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHJtU3luYyh0ZW1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjb21waWxlZCBwc2V1ZG8tcGFja2FnZXMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZXBsYWNlIG5leHQvZGlzdC9jb21waWxlZC9zZXJ2ZXItb25seSBpbXBvcnQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCB0ZXN0Q29kZSA9IGBcbiAgICAgICAgaW1wb3J0ICduZXh0L2Rpc3QvY29tcGlsZWQvc2VydmVyLW9ubHknO1xuICAgICAgICBleHBvcnQgY29uc3QgeCA9IDE7XG4gICAgICBgO1xuXG4gICAgICBjb25zdCB7IHJlc3VsdCwgdGVtcERpciB9ID0gYXdhaXQgYnVpbGRXaXRoUGx1Z2luKHRlc3RDb2RlKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gcmVzdWx0Lm91dHB1dEZpbGVzPy5bMF0udGV4dDtcbiAgICAgICAgZXhwZWN0KG91dHB1dCkudG9CZURlZmluZWQoKTtcbiAgICAgICAgZXhwZWN0KG91dHB1dCkubm90LnRvQ29udGFpbihcbiAgICAgICAgICBcInJlcXVpcmUoJ25leHQvZGlzdC9jb21waWxlZC9zZXJ2ZXItb25seScpXCJcbiAgICAgICAgKTtcbiAgICAgICAgZXhwZWN0KG91dHB1dCkubm90LnRvQ29udGFpbihcbiAgICAgICAgICAncmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9zZXJ2ZXItb25seVwiKSdcbiAgICAgICAgKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHJtU3luYyh0ZW1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlcGxhY2UgbmV4dC9kaXN0L2NvbXBpbGVkL2NsaWVudC1vbmx5IGltcG9ydCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRlc3RDb2RlID0gYFxuICAgICAgICBpbXBvcnQgJ25leHQvZGlzdC9jb21waWxlZC9jbGllbnQtb25seSc7XG4gICAgICAgIGV4cG9ydCBjb25zdCB4ID0gMTtcbiAgICAgIGA7XG5cbiAgICAgIGNvbnN0IHsgcmVzdWx0LCB0ZW1wRGlyIH0gPSBhd2FpdCBidWlsZFdpdGhQbHVnaW4odGVzdENvZGUpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSByZXN1bHQub3V0cHV0RmlsZXM/LlswXS50ZXh0O1xuICAgICAgICBleHBlY3Qob3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9Db250YWluKFxuICAgICAgICAgIFwicmVxdWlyZSgnbmV4dC9kaXN0L2NvbXBpbGVkL2NsaWVudC1vbmx5JylcIlxuICAgICAgICApO1xuICAgICAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9Db250YWluKFxuICAgICAgICAgICdyZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL2NsaWVudC1vbmx5XCIpJ1xuICAgICAgICApO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgcm1TeW5jKHRlbXBEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2JvdGggcHNldWRvLXBhY2thZ2VzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgaGFuZGxlIGJvdGggc2VydmVyLW9ubHkgYW5kIGNsaWVudC1vbmx5IGluIHNhbWUgZmlsZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRlc3RDb2RlID0gYFxuICAgICAgICBpbXBvcnQgJ3NlcnZlci1vbmx5JztcbiAgICAgICAgaW1wb3J0ICdjbGllbnQtb25seSc7XG4gICAgICAgIGV4cG9ydCBmdW5jdGlvbiB3b3JrZmxvdygpIHtcbiAgICAgICAgICByZXR1cm4gXCJtaXhlZFwiO1xuICAgICAgICB9XG4gICAgICBgO1xuXG4gICAgICBjb25zdCB7IHJlc3VsdCwgdGVtcERpciB9ID0gYXdhaXQgYnVpbGRXaXRoUGx1Z2luKHRlc3RDb2RlKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gcmVzdWx0Lm91dHB1dEZpbGVzPy5bMF0udGV4dDtcbiAgICAgICAgZXhwZWN0KG91dHB1dCkudG9CZURlZmluZWQoKTtcbiAgICAgICAgLy8gTm8gcmVxdWlyZSgpIGNhbGxzIHNob3VsZCBiZSBnZW5lcmF0ZWQgZm9yIGVpdGhlciBwYWNrYWdlXG4gICAgICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oXCJyZXF1aXJlKCdzZXJ2ZXItb25seScpXCIpO1xuICAgICAgICBleHBlY3Qob3V0cHV0KS5ub3QudG9Db250YWluKCdyZXF1aXJlKFwic2VydmVyLW9ubHlcIiknKTtcbiAgICAgICAgZXhwZWN0KG91dHB1dCkubm90LnRvQ29udGFpbihcInJlcXVpcmUoJ2NsaWVudC1vbmx5JylcIik7XG4gICAgICAgIGV4cGVjdChvdXRwdXQpLm5vdC50b0NvbnRhaW4oJ3JlcXVpcmUoXCJjbGllbnQtb25seVwiKScpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgcm1TeW5jKHRlbXBEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3dpdGhvdXQgcGx1Z2luJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgZmFpbCB0byByZXNvbHZlIHNlcnZlci1vbmx5IHdpdGhvdXQgdGhlIHBsdWdpbicsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IHRlc3RDb2RlID0gYFxuICAgICAgICBpbXBvcnQgJ3NlcnZlci1vbmx5JztcbiAgICAgICAgZXhwb3J0IGNvbnN0IHggPSAxO1xuICAgICAgYDtcblxuICAgICAgY29uc3QgdGVtcERpciA9IG1rZHRlbXBTeW5jKFxuICAgICAgICBqb2luKHJlYWxUbXBkaXIsICdwc2V1ZG8tcGFja2FnZS1wbHVnaW4tdGVzdC0nKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGVudHJ5RmlsZSA9IGpvaW4odGVtcERpciwgJ3dvcmtmbG93LnRzJyk7XG4gICAgICB3cml0ZUZpbGVTeW5jKGVudHJ5RmlsZSwgdGVzdENvZGUpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBlc2J1aWxkLmJ1aWxkKHtcbiAgICAgICAgICBlbnRyeVBvaW50czogW2VudHJ5RmlsZV0sXG4gICAgICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgICAgICBwbGF0Zm9ybTogJ25ldXRyYWwnLFxuICAgICAgICAgIGZvcm1hdDogJ2NqcycsXG4gICAgICAgICAgbG9nTGV2ZWw6ICdzaWxlbnQnLFxuICAgICAgICAgIC8vIE5vIHBsdWdpbnMgLSBzaG91bGQgZmFpbCB0byByZXNvbHZlXG4gICAgICAgIH0pO1xuICAgICAgICAvLyBJZiB3ZSBnZXQgaGVyZSwgdGhlIGJ1aWxkIHN1Y2NlZWRlZCAoc2VydmVyLW9ubHkgbWlnaHQgYmUgaW5zdGFsbGVkKVxuICAgICAgICAvLyBUaGlzIGlzIG9rYXkgLSB3ZSBqdXN0IHdhbnQgdG8gdmVyaWZ5IHRoZSBwbHVnaW4gd29ya3Mgd2hlbiB0aGUgcGFja2FnZSBpc24ndCB0aGVyZVxuICAgICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgICAvLyBFeHBlY3RlZDogZXNidWlsZCBjYW4ndCByZXNvbHZlIHNlcnZlci1vbmx5XG4gICAgICAgIGV4cGVjdChlcnJvci5lcnJvcnM/LlswXT8udGV4dCkudG9NYXRjaChcbiAgICAgICAgICAvQ291bGQgbm90IHJlc29sdmUgXCJzZXJ2ZXItb25seVwiL1xuICAgICAgICApO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgcm1TeW5jKHRlbXBEaXIsIHsgcmVjdXJzaXZlOiB0cnVlLCBmb3JjZTogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1BTRVVET19QQUNLQUdFUyBjb25zdGFudCcsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGNvbnRhaW4gbmV4dCBtYXJrZXIgcGFja2FnZXMnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoUFNFVURPX1BBQ0tBR0VTLmhhcygnc2VydmVyLW9ubHknKSkudG9CZSh0cnVlKTtcbiAgICAgIGV4cGVjdChQU0VVRE9fUEFDS0FHRVMuaGFzKCdjbGllbnQtb25seScpKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KFBTRVVET19QQUNLQUdFUy5oYXMoJ25leHQvZGlzdC9jb21waWxlZC9zZXJ2ZXItb25seScpKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KFBTRVVET19QQUNLQUdFUy5oYXMoJ25leHQvZGlzdC9jb21waWxlZC9jbGllbnQtb25seScpKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KFBTRVVET19QQUNLQUdFUy5zaXplKS50b0JlKDQpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnd29ya2Zsb3cgYnVuZGxlIGR5bmFtaWMgaW1wb3J0cycsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCBpbmxpbmUgZHluYW1pYyBpbXBvcnRzIHdoZW4gYnVuZGxpbmcgd2l0aG91dCBleHRlcm5hbCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0ZW1wRGlyID0gbWtkdGVtcFN5bmMoam9pbihyZWFsVG1wZGlyLCAnZHluYW1pYy1pbXBvcnQtdGVzdC0nKSk7XG4gICAgY29uc3Qgbm9kZU1vZHVsZXNEaXIgPSBqb2luKHRlbXBEaXIsICdub2RlX21vZHVsZXMnLCAnbXktdGVzdC1wYWNrYWdlJyk7XG4gICAgbWtkaXJTeW5jKG5vZGVNb2R1bGVzRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgIC8vIENyZWF0ZSBhIHNpbXBsZSBwYWNrYWdlIHRvIGR5bmFtaWNhbGx5IGltcG9ydFxuICAgIHdyaXRlRmlsZVN5bmMoXG4gICAgICBqb2luKG5vZGVNb2R1bGVzRGlyLCAnaW5kZXguanMnKSxcbiAgICAgICdleHBvcnQgY29uc3QgdGVzdFZhbHVlID0gNDI7J1xuICAgICk7XG4gICAgd3JpdGVGaWxlU3luYyhcbiAgICAgIGpvaW4obm9kZU1vZHVsZXNEaXIsICdwYWNrYWdlLmpzb24nKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHsgbmFtZTogJ215LXRlc3QtcGFja2FnZScsIG1haW46ICdpbmRleC5qcycgfSlcbiAgICApO1xuXG4gICAgY29uc3QgdGVzdENvZGUgPSBgXG4gICAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gd29ya2Zsb3coKSB7XG4gICAgICAgIGNvbnN0IHBrZyA9IGF3YWl0IGltcG9ydCgnbXktdGVzdC1wYWNrYWdlJyk7XG4gICAgICAgIHJldHVybiBwa2cudGVzdFZhbHVlO1xuICAgICAgfVxuICAgIGA7XG4gICAgY29uc3QgZW50cnlGaWxlID0gam9pbih0ZW1wRGlyLCAnd29ya2Zsb3cudHMnKTtcbiAgICB3cml0ZUZpbGVTeW5jKGVudHJ5RmlsZSwgdGVzdENvZGUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGVzYnVpbGQuYnVpbGQoe1xuICAgICAgICBlbnRyeVBvaW50czogW2VudHJ5RmlsZV0sXG4gICAgICAgIGJ1bmRsZTogdHJ1ZSxcbiAgICAgICAgd3JpdGU6IGZhbHNlLFxuICAgICAgICBwbGF0Zm9ybTogJ25ldXRyYWwnLFxuICAgICAgICBmb3JtYXQ6ICdjanMnLFxuICAgICAgICBsb2dMZXZlbDogJ3NpbGVudCcsXG4gICAgICAgIC8vIE5vIGV4dGVybmFsIG9wdGlvbiAtIHNob3VsZCBpbmxpbmUgdGhlIGR5bmFtaWMgaW1wb3J0XG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICAgIGNvbnN0IG91dHB1dCA9IHJlc3VsdC5vdXRwdXRGaWxlcz8uWzBdLnRleHQ7XG4gICAgICBleHBlY3Qob3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuXG4gICAgICAvLyBUaGUgZHluYW1pYyBpbXBvcnQgc2hvdWxkIGJlIHJlc29sdmVkIGFuZCB0aGUgdmFsdWUgaW5saW5lZFxuICAgICAgLy8gZXNidWlsZCBjb252ZXJ0cyBkeW5hbWljIGltcG9ydHMgdG8gZWl0aGVyIFByb21pc2UucmVzb2x2ZShyZXF1aXJlKC4uLikpXG4gICAgICAvLyBvciBpbmxpbmVzIHRoZSBjb2RlIGRpcmVjdGx5XG4gICAgICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJzQyJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHJtU3luYyh0ZW1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIGxlYXZlIGR5bmFtaWMgaW1wb3J0IGFzIGltcG9ydCgpIHdoZW4gbWFya2VkIGV4dGVybmFsJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHRlbXBEaXIgPSBta2R0ZW1wU3luYyhqb2luKHJlYWxUbXBkaXIsICdkeW5hbWljLWltcG9ydC10ZXN0LScpKTtcbiAgICBjb25zdCBub2RlTW9kdWxlc0RpciA9IGpvaW4odGVtcERpciwgJ25vZGVfbW9kdWxlcycsICdleHRlcm5hbC1wYWNrYWdlJyk7XG4gICAgbWtkaXJTeW5jKG5vZGVNb2R1bGVzRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgIHdyaXRlRmlsZVN5bmMoXG4gICAgICBqb2luKG5vZGVNb2R1bGVzRGlyLCAnaW5kZXguanMnKSxcbiAgICAgICdleHBvcnQgY29uc3QgdmFsdWUgPSAxMDA7J1xuICAgICk7XG4gICAgd3JpdGVGaWxlU3luYyhcbiAgICAgIGpvaW4obm9kZU1vZHVsZXNEaXIsICdwYWNrYWdlLmpzb24nKSxcbiAgICAgIEpTT04uc3RyaW5naWZ5KHsgbmFtZTogJ2V4dGVybmFsLXBhY2thZ2UnLCBtYWluOiAnaW5kZXguanMnIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IHRlc3RDb2RlID0gYFxuICAgICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdvcmtmbG93KCkge1xuICAgICAgICBjb25zdCBwa2cgPSBhd2FpdCBpbXBvcnQoJ2V4dGVybmFsLXBhY2thZ2UnKTtcbiAgICAgICAgcmV0dXJuIHBrZy52YWx1ZTtcbiAgICAgIH1cbiAgICBgO1xuICAgIGNvbnN0IGVudHJ5RmlsZSA9IGpvaW4odGVtcERpciwgJ3dvcmtmbG93LnRzJyk7XG4gICAgd3JpdGVGaWxlU3luYyhlbnRyeUZpbGUsIHRlc3RDb2RlKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBlc2J1aWxkLmJ1aWxkKHtcbiAgICAgICAgZW50cnlQb2ludHM6IFtlbnRyeUZpbGVdLFxuICAgICAgICBidW5kbGU6IHRydWUsXG4gICAgICAgIHdyaXRlOiBmYWxzZSxcbiAgICAgICAgcGxhdGZvcm06ICduZXV0cmFsJyxcbiAgICAgICAgZm9ybWF0OiAnY2pzJyxcbiAgICAgICAgbG9nTGV2ZWw6ICdzaWxlbnQnLFxuICAgICAgICBleHRlcm5hbDogWydleHRlcm5hbC1wYWNrYWdlJ10sIC8vIE1hcmsgYXMgZXh0ZXJuYWxcbiAgICAgIH0pO1xuXG4gICAgICBleHBlY3QocmVzdWx0LmVycm9ycykudG9IYXZlTGVuZ3RoKDApO1xuICAgICAgY29uc3Qgb3V0cHV0ID0gcmVzdWx0Lm91dHB1dEZpbGVzPy5bMF0udGV4dDtcbiAgICAgIGV4cGVjdChvdXRwdXQpLnRvQmVEZWZpbmVkKCk7XG5cbiAgICAgIC8vIFdoZW4gZXh0ZXJuYWwsIGVzYnVpbGQgbGVhdmVzIGEgZHluYW1pYyBpbXBvcnQoKSBjYWxsIHRoYXQgd291bGQgZmFpbCBpbiB0aGUgVk1cbiAgICAgIC8vICh0aGUgVk0gZG9lc24ndCBoYXZlIGltcG9ydCgpIGF2YWlsYWJsZSlcbiAgICAgIC8vIFRoaXMgZGVtb25zdHJhdGVzIHdoeSB3ZSBET04nVCB1c2UgZXh0ZXJuYWwgZm9yIHdvcmtmbG93IGJ1bmRsZXNcbiAgICAgIGV4cGVjdChvdXRwdXQpLnRvTWF0Y2goL2ltcG9ydFxcKFtcIiddZXh0ZXJuYWwtcGFja2FnZVtcIiddXFwpLyk7XG4gICAgICAvLyBUaGUgYWN0dWFsIHZhbHVlIHNob3VsZCBOT1QgYmUgaW5saW5lZFxuICAgICAgZXhwZWN0KG91dHB1dCkubm90LnRvQ29udGFpbignMTAwJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHJtU3luYyh0ZW1wRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnc2hvdWxkIGlubGluZSBuZXN0ZWQgZHluYW1pYyBpbXBvcnRzIGZyb20gZGVwZW5kZW5jaWVzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHRlbXBEaXIgPSBta2R0ZW1wU3luYyhqb2luKHJlYWxUbXBkaXIsICdkeW5hbWljLWltcG9ydC10ZXN0LScpKTtcblxuICAgIC8vIENyZWF0ZSBhIHBhY2thZ2UgdGhhdCBpdHNlbGYgdXNlcyBkeW5hbWljIGltcG9ydFxuICAgIGNvbnN0IG91dGVyUGFja2FnZURpciA9IGpvaW4odGVtcERpciwgJ25vZGVfbW9kdWxlcycsICdvdXRlci1wYWNrYWdlJyk7XG4gICAgY29uc3QgaW5uZXJQYWNrYWdlRGlyID0gam9pbih0ZW1wRGlyLCAnbm9kZV9tb2R1bGVzJywgJ2lubmVyLXBhY2thZ2UnKTtcbiAgICBta2RpclN5bmMob3V0ZXJQYWNrYWdlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICBta2RpclN5bmMoaW5uZXJQYWNrYWdlRGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcblxuICAgIHdyaXRlRmlsZVN5bmMoXG4gICAgICBqb2luKGlubmVyUGFja2FnZURpciwgJ2luZGV4LmpzJyksXG4gICAgICAnZXhwb3J0IGNvbnN0IGlubmVyVmFsdWUgPSA5OTk7J1xuICAgICk7XG4gICAgd3JpdGVGaWxlU3luYyhcbiAgICAgIGpvaW4oaW5uZXJQYWNrYWdlRGlyLCAncGFja2FnZS5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7IG5hbWU6ICdpbm5lci1wYWNrYWdlJywgbWFpbjogJ2luZGV4LmpzJyB9KVxuICAgICk7XG5cbiAgICB3cml0ZUZpbGVTeW5jKFxuICAgICAgam9pbihvdXRlclBhY2thZ2VEaXIsICdpbmRleC5qcycpLFxuICAgICAgYFxuICAgICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWRJbm5lcigpIHtcbiAgICAgICAgY29uc3QgaW5uZXIgPSBhd2FpdCBpbXBvcnQoJ2lubmVyLXBhY2thZ2UnKTtcbiAgICAgICAgcmV0dXJuIGlubmVyLmlubmVyVmFsdWU7XG4gICAgICB9XG4gICAgYFxuICAgICk7XG4gICAgd3JpdGVGaWxlU3luYyhcbiAgICAgIGpvaW4ob3V0ZXJQYWNrYWdlRGlyLCAncGFja2FnZS5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7IG5hbWU6ICdvdXRlci1wYWNrYWdlJywgbWFpbjogJ2luZGV4LmpzJyB9KVxuICAgICk7XG5cbiAgICBjb25zdCB0ZXN0Q29kZSA9IGBcbiAgICAgIGltcG9ydCB7IGxvYWRJbm5lciB9IGZyb20gJ291dGVyLXBhY2thZ2UnO1xuICAgICAgZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdvcmtmbG93KCkge1xuICAgICAgICByZXR1cm4gbG9hZElubmVyKCk7XG4gICAgICB9XG4gICAgYDtcbiAgICBjb25zdCBlbnRyeUZpbGUgPSBqb2luKHRlbXBEaXIsICd3b3JrZmxvdy50cycpO1xuICAgIHdyaXRlRmlsZVN5bmMoZW50cnlGaWxlLCB0ZXN0Q29kZSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXNidWlsZC5idWlsZCh7XG4gICAgICAgIGVudHJ5UG9pbnRzOiBbZW50cnlGaWxlXSxcbiAgICAgICAgYnVuZGxlOiB0cnVlLFxuICAgICAgICB3cml0ZTogZmFsc2UsXG4gICAgICAgIHBsYXRmb3JtOiAnbmV1dHJhbCcsXG4gICAgICAgIGZvcm1hdDogJ2NqcycsXG4gICAgICAgIGxvZ0xldmVsOiAnc2lsZW50JyxcbiAgICAgICAgLy8gTm8gZXh0ZXJuYWwgLSBldmVyeXRoaW5nIHNob3VsZCBiZSBpbmxpbmVkXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdC5lcnJvcnMpLnRvSGF2ZUxlbmd0aCgwKTtcbiAgICAgIGNvbnN0IG91dHB1dCA9IHJlc3VsdC5vdXRwdXRGaWxlcz8uWzBdLnRleHQ7XG4gICAgICBleHBlY3Qob3V0cHV0KS50b0JlRGVmaW5lZCgpO1xuXG4gICAgICAvLyBCb3RoIHRoZSBvdXRlciBhbmQgaW5uZXIgcGFja2FnZSBjb2RlIHNob3VsZCBiZSBpbmxpbmVkXG4gICAgICBleHBlY3Qob3V0cHV0KS50b0NvbnRhaW4oJzk5OScpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBybVN5bmModGVtcERpciwgeyByZWN1cnNpdmU6IHRydWUsIGZvcmNlOiB0cnVlIH0pO1xuICAgIH1cbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -11,4 +11,4 @@ async function normalizeRequest(request) {
|
|
|
11
11
|
}
|
|
12
12
|
`;
|
|
13
13
|
export { NORMALIZE_REQUEST_CODE };
|
|
14
|
-
//# sourceMappingURL=
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1jb252ZXJ0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcmVxdWVzdC1jb252ZXJ0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxzQkFBc0IsR0FBRzs7Ozs7Ozs7Ozs7Q0FXOUIsQ0FBQztBQUVGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTk9STUFMSVpFX1JFUVVFU1RfQ09ERSA9IGBcbmFzeW5jIGZ1bmN0aW9uIG5vcm1hbGl6ZVJlcXVlc3QocmVxdWVzdCkge1xuICBjb25zdCBvcHRpb25zID0ge1xuICAgIG1ldGhvZDogcmVxdWVzdC5tZXRob2QsXG4gICAgaGVhZGVyczogbmV3IEhlYWRlcnMocmVxdWVzdC5oZWFkZXJzKVxuICB9O1xuICBpZiAoIVsnR0VUJywgJ0hFQUQnLCAnT1BUSU9OUycsICdUUkFDRScsICdDT05ORUNUJ10uaW5jbHVkZXMocmVxdWVzdC5tZXRob2QpKSB7XG4gICAgb3B0aW9ucy5ib2R5ID0gYXdhaXQgcmVxdWVzdC5hcnJheUJ1ZmZlcigpO1xuICB9XG4gIHJldHVybiBuZXcgUmVxdWVzdChyZXF1ZXN0LnVybCwgb3B0aW9ucyk7XG59XG5gO1xuXG5leHBvcnQgeyBOT1JNQUxJWkVfUkVRVUVTVF9DT0RFIH07XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-sourcemap.test.d.ts","sourceRoot":"","sources":["../src/resolve-sourcemap.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
2
|
+
import { BaseBuilder } from './base-builder.js';
|
|
3
|
+
/**
|
|
4
|
+
* Minimal subclass that exposes the protected `resolveSourcemap()` and
|
|
5
|
+
* `sourcemapsEnabled` members for testing.
|
|
6
|
+
*/
|
|
7
|
+
class TestBuilder extends BaseBuilder {
|
|
8
|
+
async build() {
|
|
9
|
+
// no-op
|
|
10
|
+
}
|
|
11
|
+
callResolveSourcemap(defaultMode) {
|
|
12
|
+
return this.resolveSourcemap(defaultMode);
|
|
13
|
+
}
|
|
14
|
+
get publicSourcemapsEnabled() {
|
|
15
|
+
return this.sourcemapsEnabled;
|
|
16
|
+
}
|
|
17
|
+
get publicDefaultSourcemapMode() {
|
|
18
|
+
return this.defaultSourcemapMode;
|
|
19
|
+
}
|
|
20
|
+
get publicIsDevelopmentBuild() {
|
|
21
|
+
return this.isDevelopmentBuild;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function createBuilder(sourcemap, watch) {
|
|
25
|
+
const config = {
|
|
26
|
+
buildTarget: 'standalone',
|
|
27
|
+
workingDir: '/tmp/workflow-test',
|
|
28
|
+
dirs: ['.'],
|
|
29
|
+
stepsBundlePath: '',
|
|
30
|
+
workflowsBundlePath: '',
|
|
31
|
+
webhookBundlePath: '',
|
|
32
|
+
sourcemap,
|
|
33
|
+
watch,
|
|
34
|
+
};
|
|
35
|
+
return new TestBuilder(config);
|
|
36
|
+
}
|
|
37
|
+
describe('resolveSourcemap', () => {
|
|
38
|
+
const originalEnv = process.env.WORKFLOW_SOURCEMAP;
|
|
39
|
+
beforeEach(() => {
|
|
40
|
+
delete process.env.WORKFLOW_SOURCEMAP;
|
|
41
|
+
});
|
|
42
|
+
afterEach(() => {
|
|
43
|
+
if (originalEnv === undefined) {
|
|
44
|
+
delete process.env.WORKFLOW_SOURCEMAP;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
process.env.WORKFLOW_SOURCEMAP = originalEnv;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
it('returns the default when no config or env var is set', () => {
|
|
51
|
+
const builder = createBuilder();
|
|
52
|
+
expect(builder.callResolveSourcemap('inline')).toBe('inline');
|
|
53
|
+
expect(builder.callResolveSourcemap(false)).toBe(false);
|
|
54
|
+
expect(builder.callResolveSourcemap(true)).toBe(true);
|
|
55
|
+
});
|
|
56
|
+
it('prefers explicit config over the default', () => {
|
|
57
|
+
expect(createBuilder(false).callResolveSourcemap('inline')).toBe(false);
|
|
58
|
+
expect(createBuilder('external').callResolveSourcemap('inline')).toBe('external');
|
|
59
|
+
expect(createBuilder('linked').callResolveSourcemap(false)).toBe('linked');
|
|
60
|
+
expect(createBuilder(true).callResolveSourcemap('inline')).toBe(true);
|
|
61
|
+
});
|
|
62
|
+
it('prefers explicit config over environment variable', () => {
|
|
63
|
+
process.env.WORKFLOW_SOURCEMAP = 'inline';
|
|
64
|
+
expect(createBuilder(false).callResolveSourcemap('inline')).toBe(false);
|
|
65
|
+
expect(createBuilder('external').callResolveSourcemap('inline')).toBe('external');
|
|
66
|
+
});
|
|
67
|
+
it('uses environment variable when config is not set', () => {
|
|
68
|
+
process.env.WORKFLOW_SOURCEMAP = 'false';
|
|
69
|
+
expect(createBuilder().callResolveSourcemap('inline')).toBe(false);
|
|
70
|
+
process.env.WORKFLOW_SOURCEMAP = 'true';
|
|
71
|
+
expect(createBuilder().callResolveSourcemap(false)).toBe(true);
|
|
72
|
+
for (const mode of ['inline', 'linked', 'external', 'both']) {
|
|
73
|
+
process.env.WORKFLOW_SOURCEMAP = mode;
|
|
74
|
+
expect(createBuilder().callResolveSourcemap('inline')).toBe(mode);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
it('accepts "0" / "1" as environment variable aliases for false / true', () => {
|
|
78
|
+
process.env.WORKFLOW_SOURCEMAP = '0';
|
|
79
|
+
expect(createBuilder().callResolveSourcemap('inline')).toBe(false);
|
|
80
|
+
process.env.WORKFLOW_SOURCEMAP = '1';
|
|
81
|
+
expect(createBuilder().callResolveSourcemap(false)).toBe(true);
|
|
82
|
+
});
|
|
83
|
+
it('falls back to default when env var is empty or unrecognized', () => {
|
|
84
|
+
process.env.WORKFLOW_SOURCEMAP = '';
|
|
85
|
+
expect(createBuilder().callResolveSourcemap('inline')).toBe('inline');
|
|
86
|
+
// Suppress the expected warning
|
|
87
|
+
const originalWarn = console.warn;
|
|
88
|
+
console.warn = () => { };
|
|
89
|
+
try {
|
|
90
|
+
process.env.WORKFLOW_SOURCEMAP = 'nonsense';
|
|
91
|
+
expect(createBuilder().callResolveSourcemap('inline')).toBe('inline');
|
|
92
|
+
}
|
|
93
|
+
finally {
|
|
94
|
+
console.warn = originalWarn;
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
describe('defaultSourcemapMode / isDevelopmentBuild', () => {
|
|
99
|
+
const originalNodeEnv = process.env.NODE_ENV;
|
|
100
|
+
const originalSourcemapEnv = process.env.WORKFLOW_SOURCEMAP;
|
|
101
|
+
beforeEach(() => {
|
|
102
|
+
delete process.env.WORKFLOW_SOURCEMAP;
|
|
103
|
+
});
|
|
104
|
+
afterEach(() => {
|
|
105
|
+
if (originalNodeEnv === undefined) {
|
|
106
|
+
delete process.env.NODE_ENV;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
process.env.NODE_ENV = originalNodeEnv;
|
|
110
|
+
}
|
|
111
|
+
if (originalSourcemapEnv === undefined) {
|
|
112
|
+
delete process.env.WORKFLOW_SOURCEMAP;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
process.env.WORKFLOW_SOURCEMAP = originalSourcemapEnv;
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
it('defaults to off in production (no watch, NODE_ENV not development)', () => {
|
|
119
|
+
process.env.NODE_ENV = 'production';
|
|
120
|
+
const builder = createBuilder();
|
|
121
|
+
expect(builder.publicIsDevelopmentBuild).toBe(false);
|
|
122
|
+
expect(builder.publicDefaultSourcemapMode).toBe(false);
|
|
123
|
+
});
|
|
124
|
+
it('defaults to inline when config.watch is true', () => {
|
|
125
|
+
// Even with a production NODE_ENV, an active watch/dev server opts in.
|
|
126
|
+
process.env.NODE_ENV = 'production';
|
|
127
|
+
const builder = createBuilder(undefined, true);
|
|
128
|
+
expect(builder.publicIsDevelopmentBuild).toBe(true);
|
|
129
|
+
expect(builder.publicDefaultSourcemapMode).toBe('inline');
|
|
130
|
+
});
|
|
131
|
+
it('defaults to inline when NODE_ENV is development', () => {
|
|
132
|
+
process.env.NODE_ENV = 'development';
|
|
133
|
+
const builder = createBuilder();
|
|
134
|
+
expect(builder.publicIsDevelopmentBuild).toBe(true);
|
|
135
|
+
expect(builder.publicDefaultSourcemapMode).toBe('inline');
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
describe('sourcemapsEnabled', () => {
|
|
139
|
+
const originalNodeEnv = process.env.NODE_ENV;
|
|
140
|
+
const originalEnv = process.env.WORKFLOW_SOURCEMAP;
|
|
141
|
+
beforeEach(() => {
|
|
142
|
+
delete process.env.WORKFLOW_SOURCEMAP;
|
|
143
|
+
// Pin to production so the environment-aware default is deterministic;
|
|
144
|
+
// individual tests opt into dev via watch/NODE_ENV as needed.
|
|
145
|
+
process.env.NODE_ENV = 'production';
|
|
146
|
+
});
|
|
147
|
+
afterEach(() => {
|
|
148
|
+
if (originalNodeEnv === undefined) {
|
|
149
|
+
delete process.env.NODE_ENV;
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
process.env.NODE_ENV = originalNodeEnv;
|
|
153
|
+
}
|
|
154
|
+
if (originalEnv === undefined) {
|
|
155
|
+
delete process.env.WORKFLOW_SOURCEMAP;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
process.env.WORKFLOW_SOURCEMAP = originalEnv;
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
it('is false by default in production', () => {
|
|
162
|
+
expect(createBuilder().publicSourcemapsEnabled).toBe(false);
|
|
163
|
+
});
|
|
164
|
+
it('is true by default in development (watch)', () => {
|
|
165
|
+
expect(createBuilder(undefined, true).publicSourcemapsEnabled).toBe(true);
|
|
166
|
+
});
|
|
167
|
+
it('is true by default in development (NODE_ENV)', () => {
|
|
168
|
+
process.env.NODE_ENV = 'development';
|
|
169
|
+
expect(createBuilder().publicSourcemapsEnabled).toBe(true);
|
|
170
|
+
});
|
|
171
|
+
it('is false when config sourcemap is false', () => {
|
|
172
|
+
expect(createBuilder(false).publicSourcemapsEnabled).toBe(false);
|
|
173
|
+
});
|
|
174
|
+
it('is true for any non-false config value', () => {
|
|
175
|
+
for (const mode of [
|
|
176
|
+
true,
|
|
177
|
+
'inline',
|
|
178
|
+
'linked',
|
|
179
|
+
'external',
|
|
180
|
+
'both',
|
|
181
|
+
]) {
|
|
182
|
+
expect(createBuilder(mode).publicSourcemapsEnabled).toBe(true);
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
it('is true in production when WORKFLOW_SOURCEMAP env opts in', () => {
|
|
186
|
+
process.env.WORKFLOW_SOURCEMAP = 'inline';
|
|
187
|
+
expect(createBuilder().publicSourcemapsEnabled).toBe(true);
|
|
188
|
+
});
|
|
189
|
+
it('is false when WORKFLOW_SOURCEMAP env is false', () => {
|
|
190
|
+
process.env.WORKFLOW_SOURCEMAP = 'false';
|
|
191
|
+
expect(createBuilder().publicSourcemapsEnabled).toBe(false);
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1zb3VyY2VtYXAudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXNvbHZlLXNvdXJjZW1hcC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdoRDs7O0dBR0c7QUFDSCxNQUFNLFdBQVksU0FBUSxXQUFXO0lBQ25DLEtBQUssQ0FBQyxLQUFLO1FBQ1QsUUFBUTtJQUNWLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxXQUEwQjtRQUNwRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBVyx1QkFBdUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQVcsMEJBQTBCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFXLHdCQUF3QjtRQUNqQyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFFRCxTQUFTLGFBQWEsQ0FDcEIsU0FBeUIsRUFDekIsS0FBZTtJQUVmLE1BQU0sTUFBTSxHQUFxQjtRQUMvQixXQUFXLEVBQUUsWUFBWTtRQUN6QixVQUFVLEVBQUUsb0JBQW9CO1FBQ2hDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUNYLGVBQWUsRUFBRSxFQUFFO1FBQ25CLG1CQUFtQixFQUFFLEVBQUU7UUFDdkIsaUJBQWlCLEVBQUUsRUFBRTtRQUNyQixTQUFTO1FBQ1QsS0FBSztLQUNOLENBQUM7SUFDRixPQUFPLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFFRCxRQUFRLENB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eHBlY3QsIGl0IH0gZnJvbSAndml0ZXN0JztcbmltcG9ydCB7IEJhc2VCdWlsZGVyIH0gZnJvbSAnLi9iYXNlLWJ1aWxkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBTb3VyY2VtYXBNb2RlLCBTdGFuZGFsb25lQ29uZmlnIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogTWluaW1hbCBzdWJjbGFzcyB0aGF0IGV4cG9zZXMgdGhlIHByb3RlY3RlZCBgcmVzb2x2ZVNvdXJjZW1hcCgpYCBhbmRcbiAqIGBzb3VyY2VtYXBzRW5hYmxlZGAgbWVtYmVycyBmb3IgdGVzdGluZy5cbiAqL1xuY2xhc3MgVGVzdEJ1aWxkZXIgZXh0ZW5kcyBCYXNlQnVpbGRlciB7XG4gIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIG5vLW9wXG4gIH1cblxuICBwdWJsaWMgY2FsbFJlc29sdmVTb3VyY2VtYXAoZGVmYXVsdE1vZGU6IFNvdXJjZW1hcE1vZGUpOiBTb3VyY2VtYXBNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlU291cmNlbWFwKGRlZmF1bHRNb2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHVibGljU291cmNlbWFwc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc291cmNlbWFwc0VuYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHB1YmxpY0RlZmF1bHRTb3VyY2VtYXBNb2RlKCk6IFNvdXJjZW1hcE1vZGUge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRTb3VyY2VtYXBNb2RlO1xuICB9XG5cbiAgcHVibGljIGdldCBwdWJsaWNJc0RldmVsb3BtZW50QnVpbGQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNEZXZlbG9wbWVudEJ1aWxkO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJ1aWxkZXIoXG4gIHNvdXJjZW1hcD86IFNvdXJjZW1hcE1vZGUsXG4gIHdhdGNoPzogYm9vbGVhblxuKTogVGVzdEJ1aWxkZXIge1xuICBjb25zdCBjb25maWc6IFN0YW5kYWxvbmVDb25maWcgPSB7XG4gICAgYnVpbGRUYXJnZXQ6ICdzdGFuZGFsb25lJyxcbiAgICB3b3JraW5nRGlyOiAnL3RtcC93b3JrZmxvdy10ZXN0JyxcbiAgICBkaXJzOiBbJy4nXSxcbiAgICBzdGVwc0J1bmRsZVBhdGg6ICcnLFxuICAgIHdvcmtmbG93c0J1bmRsZVBhdGg6ICcnLFxuICAgIHdlYmhvb2tCdW5kbGVQYXRoOiAnJyxcbiAgICBzb3VyY2VtYXAsXG4gICAgd2F0Y2gsXG4gIH07XG4gIHJldHVybiBuZXcgVGVzdEJ1aWxkZXIoY29uZmlnKTtcbn1cblxuZGVzY3JpYmUoJ3Jlc29sdmVTb3VyY2VtYXAnLCAoKSA9PiB7XG4gIGNvbnN0IG9yaWdpbmFsRW52ID0gcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVA7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgaWYgKG9yaWdpbmFsRW52ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUCA9IG9yaWdpbmFsRW52O1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ3JldHVybnMgdGhlIGRlZmF1bHQgd2hlbiBubyBjb25maWcgb3IgZW52IHZhciBpcyBzZXQnLCAoKSA9PiB7XG4gICAgY29uc3QgYnVpbGRlciA9IGNyZWF0ZUJ1aWxkZXIoKTtcbiAgICBleHBlY3QoYnVpbGRlci5jYWxsUmVzb2x2ZVNvdXJjZW1hcCgnaW5saW5lJykpLnRvQmUoJ2lubGluZScpO1xuICAgIGV4cGVjdChidWlsZGVyLmNhbGxSZXNvbHZlU291cmNlbWFwKGZhbHNlKSkudG9CZShmYWxzZSk7XG4gICAgZXhwZWN0KGJ1aWxkZXIuY2FsbFJlc29sdmVTb3VyY2VtYXAodHJ1ZSkpLnRvQmUodHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdwcmVmZXJzIGV4cGxpY2l0IGNvbmZpZyBvdmVyIHRoZSBkZWZhdWx0JywgKCkgPT4ge1xuICAgIGV4cGVjdChjcmVhdGVCdWlsZGVyKGZhbHNlKS5jYWxsUmVzb2x2ZVNvdXJjZW1hcCgnaW5saW5lJykpLnRvQmUoZmFsc2UpO1xuICAgIGV4cGVjdChjcmVhdGVCdWlsZGVyKCdleHRlcm5hbCcpLmNhbGxSZXNvbHZlU291cmNlbWFwKCdpbmxpbmUnKSkudG9CZShcbiAgICAgICdleHRlcm5hbCdcbiAgICApO1xuICAgIGV4cGVjdChjcmVhdGVCdWlsZGVyKCdsaW5rZWQnKS5jYWxsUmVzb2x2ZVNvdXJjZW1hcChmYWxzZSkpLnRvQmUoJ2xpbmtlZCcpO1xuICAgIGV4cGVjdChjcmVhdGVCdWlsZGVyKHRydWUpLmNhbGxSZXNvbHZlU291cmNlbWFwKCdpbmxpbmUnKSkudG9CZSh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ3ByZWZlcnMgZXhwbGljaXQgY29uZmlnIG92ZXIgZW52aXJvbm1lbnQgdmFyaWFibGUnLCAoKSA9PiB7XG4gICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQID0gJ2lubGluZSc7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoZmFsc2UpLmNhbGxSZXNvbHZlU291cmNlbWFwKCdpbmxpbmUnKSkudG9CZShmYWxzZSk7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoJ2V4dGVybmFsJykuY2FsbFJlc29sdmVTb3VyY2VtYXAoJ2lubGluZScpKS50b0JlKFxuICAgICAgJ2V4dGVybmFsJ1xuICAgICk7XG4gIH0pO1xuXG4gIGl0KCd1c2VzIGVudmlyb25tZW50IHZhcmlhYmxlIHdoZW4gY29uZmlnIGlzIG5vdCBzZXQnLCAoKSA9PiB7XG4gICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQID0gJ2ZhbHNlJztcbiAgICBleHBlY3QoY3JlYXRlQnVpbGRlcigpLmNhbGxSZXNvbHZlU291cmNlbWFwKCdpbmxpbmUnKSkudG9CZShmYWxzZSk7XG5cbiAgICBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVAgPSAndHJ1ZSc7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoKS5jYWxsUmVzb2x2ZVNvdXJjZW1hcChmYWxzZSkpLnRvQmUodHJ1ZSk7XG5cbiAgICBmb3IgKGNvbnN0IG1vZGUgb2YgWydpbmxpbmUnLCAnbGlua2VkJywgJ2V4dGVybmFsJywgJ2JvdGgnXSBhcyBjb25zdCkge1xuICAgICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQID0gbW9kZTtcbiAgICAgIGV4cGVjdChjcmVhdGVCdWlsZGVyKCkuY2FsbFJlc29sdmVTb3VyY2VtYXAoJ2lubGluZScpKS50b0JlKG1vZGUpO1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ2FjY2VwdHMgXCIwXCIgLyBcIjFcIiBhcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBhbGlhc2VzIGZvciBmYWxzZSAvIHRydWUnLCAoKSA9PiB7XG4gICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQID0gJzAnO1xuICAgIGV4cGVjdChjcmVhdGVCdWlsZGVyKCkuY2FsbFJlc29sdmVTb3VyY2VtYXAoJ2lubGluZScpKS50b0JlKGZhbHNlKTtcblxuICAgIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUCA9ICcxJztcbiAgICBleHBlY3QoY3JlYXRlQnVpbGRlcigpLmNhbGxSZXNvbHZlU291cmNlbWFwKGZhbHNlKSkudG9CZSh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ2ZhbGxzIGJhY2sgdG8gZGVmYXVsdCB3aGVuIGVudiB2YXIgaXMgZW1wdHkgb3IgdW5yZWNvZ25pemVkJywgKCkgPT4ge1xuICAgIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUCA9ICcnO1xuICAgIGV4cGVjdChjcmVhdGVCdWlsZGVyKCkuY2FsbFJlc29sdmVTb3VyY2VtYXAoJ2lubGluZScpKS50b0JlKCdpbmxpbmUnKTtcblxuICAgIC8vIFN1cHByZXNzIHRoZSBleHBlY3RlZCB3YXJuaW5nXG4gICAgY29uc3Qgb3JpZ2luYWxXYXJuID0gY29uc29sZS53YXJuO1xuICAgIGNvbnNvbGUud2FybiA9ICgpID0+IHt9O1xuICAgIHRyeSB7XG4gICAgICBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVAgPSAnbm9uc2Vuc2UnO1xuICAgICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoKS5jYWxsUmVzb2x2ZVNvdXJjZW1hcCgnaW5saW5lJykpLnRvQmUoJ2lubGluZScpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBjb25zb2xlLndhcm4gPSBvcmlnaW5hbFdhcm47XG4gICAgfVxuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnZGVmYXVsdFNvdXJjZW1hcE1vZGUgLyBpc0RldmVsb3BtZW50QnVpbGQnLCAoKSA9PiB7XG4gIGNvbnN0IG9yaWdpbmFsTm9kZUVudiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WO1xuICBjb25zdCBvcmlnaW5hbFNvdXJjZW1hcEVudiA9IHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUDtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBkZWxldGUgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQO1xuICB9KTtcblxuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIGlmIChvcmlnaW5hbE5vZGVFbnYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVsZXRlIHByb2Nlc3MuZW52Lk5PREVfRU5WO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9IG9yaWdpbmFsTm9kZUVudjtcbiAgICB9XG4gICAgaWYgKG9yaWdpbmFsU291cmNlbWFwRW52ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUCA9IG9yaWdpbmFsU291cmNlbWFwRW52O1xuICAgIH1cbiAgfSk7XG5cbiAgaXQoJ2RlZmF1bHRzIHRvIG9mZiBpbiBwcm9kdWN0aW9uIChubyB3YXRjaCwgTk9ERV9FTlYgbm90IGRldmVsb3BtZW50KScsICgpID0+IHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9ICdwcm9kdWN0aW9uJztcbiAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQnVpbGRlcigpO1xuICAgIGV4cGVjdChidWlsZGVyLnB1YmxpY0lzRGV2ZWxvcG1lbnRCdWlsZCkudG9CZShmYWxzZSk7XG4gICAgZXhwZWN0KGJ1aWxkZXIucHVibGljRGVmYXVsdFNvdXJjZW1hcE1vZGUpLnRvQmUoZmFsc2UpO1xuICB9KTtcblxuICBpdCgnZGVmYXVsdHMgdG8gaW5saW5lIHdoZW4gY29uZmlnLndhdGNoIGlzIHRydWUnLCAoKSA9PiB7XG4gICAgLy8gRXZlbiB3aXRoIGEgcHJvZHVjdGlvbiBOT0RFX0VOViwgYW4gYWN0aXZlIHdhdGNoL2RldiBzZXJ2ZXIgb3B0cyBpbi5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9ICdwcm9kdWN0aW9uJztcbiAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQnVpbGRlcih1bmRlZmluZWQsIHRydWUpO1xuICAgIGV4cGVjdChidWlsZGVyLnB1YmxpY0lzRGV2ZWxvcG1lbnRCdWlsZCkudG9CZSh0cnVlKTtcbiAgICBleHBlY3QoYnVpbGRlci5wdWJsaWNEZWZhdWx0U291cmNlbWFwTW9kZSkudG9CZSgnaW5saW5lJyk7XG4gIH0pO1xuXG4gIGl0KCdkZWZhdWx0cyB0byBpbmxpbmUgd2hlbiBOT0RFX0VOViBpcyBkZXZlbG9wbWVudCcsICgpID0+IHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9ICdkZXZlbG9wbWVudCc7XG4gICAgY29uc3QgYnVpbGRlciA9IGNyZWF0ZUJ1aWxkZXIoKTtcbiAgICBleHBlY3QoYnVpbGRlci5wdWJsaWNJc0RldmVsb3BtZW50QnVpbGQpLnRvQmUodHJ1ZSk7XG4gICAgZXhwZWN0KGJ1aWxkZXIucHVibGljRGVmYXVsdFNvdXJjZW1hcE1vZGUpLnRvQmUoJ2lubGluZScpO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnc291cmNlbWFwc0VuYWJsZWQnLCAoKSA9PiB7XG4gIGNvbnN0IG9yaWdpbmFsTm9kZUVudiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WO1xuICBjb25zdCBvcmlnaW5hbEVudiA9IHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUDtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBkZWxldGUgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQO1xuICAgIC8vIFBpbiB0byBwcm9kdWN0aW9uIHNvIHRoZSBlbnZpcm9ubWVudC1hd2FyZSBkZWZhdWx0IGlzIGRldGVybWluaXN0aWM7XG4gICAgLy8gaW5kaXZpZHVhbCB0ZXN0cyBvcHQgaW50byBkZXYgdmlhIHdhdGNoL05PREVfRU5WIGFzIG5lZWRlZC5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9ICdwcm9kdWN0aW9uJztcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBpZiAob3JpZ2luYWxOb2RlRW52ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlbGV0ZSBwcm9jZXNzLmVudi5OT0RFX0VOVjtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPSBvcmlnaW5hbE5vZGVFbnY7XG4gICAgfVxuICAgIGlmIChvcmlnaW5hbEVudiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWxldGUgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVAgPSBvcmlnaW5hbEVudjtcbiAgICB9XG4gIH0pO1xuXG4gIGl0KCdpcyBmYWxzZSBieSBkZWZhdWx0IGluIHByb2R1Y3Rpb24nLCAoKSA9PiB7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoKS5wdWJsaWNTb3VyY2VtYXBzRW5hYmxlZCkudG9CZShmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdpcyB0cnVlIGJ5IGRlZmF1bHQgaW4gZGV2ZWxvcG1lbnQgKHdhdGNoKScsICgpID0+IHtcbiAgICBleHBlY3QoY3JlYXRlQnVpbGRlcih1bmRlZmluZWQsIHRydWUpLnB1YmxpY1NvdXJjZW1hcHNFbmFibGVkKS50b0JlKHRydWUpO1xuICB9KTtcblxuICBpdCgnaXMgdHJ1ZSBieSBkZWZhdWx0IGluIGRldmVsb3BtZW50IChOT0RFX0VOViknLCAoKSA9PiB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPSAnZGV2ZWxvcG1lbnQnO1xuICAgIGV4cGVjdChjcmVhdGVCdWlsZGVyKCkucHVibGljU291cmNlbWFwc0VuYWJsZWQpLnRvQmUodHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdpcyBmYWxzZSB3aGVuIGNvbmZpZyBzb3VyY2VtYXAgaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoZmFsc2UpLnB1YmxpY1NvdXJjZW1hcHNFbmFibGVkKS50b0JlKGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoJ2lzIHRydWUgZm9yIGFueSBub24tZmFsc2UgY29uZmlnIHZhbHVlJywgKCkgPT4ge1xuICAgIGZvciAoY29uc3QgbW9kZSBvZiBbXG4gICAgICB0cnVlLFxuICAgICAgJ2lubGluZScsXG4gICAgICAnbGlua2VkJyxcbiAgICAgICdleHRlcm5hbCcsXG4gICAgICAnYm90aCcsXG4gICAgXSBhcyBjb25zdCkge1xuICAgICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIobW9kZSkucHVibGljU291cmNlbWFwc0VuYWJsZWQpLnRvQmUodHJ1ZSk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnaXMgdHJ1ZSBpbiBwcm9kdWN0aW9uIHdoZW4gV09SS0ZMT1dfU09VUkNFTUFQIGVudiBvcHRzIGluJywgKCkgPT4ge1xuICAgIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUCA9ICdpbmxpbmUnO1xuICAgIGV4cGVjdChjcmVhdGVCdWlsZGVyKCkucHVibGljU291cmNlbWFwc0VuYWJsZWQpLnRvQmUodHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdpcyBmYWxzZSB3aGVuIFdPUktGTE9XX1NPVVJDRU1BUCBlbnYgaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQID0gJ2ZhbHNlJztcbiAgICBleHBlY3QoY3JlYXRlQnVpbGRlcigpLnB1YmxpY1NvdXJjZW1hcHNFbmFibGVkKS50b0JlKGZhbHNlKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
package/dist/serde-checker.js
CHANGED
|
@@ -115,4 +115,4 @@ export function extractClassEntries(manifest) {
|
|
|
115
115
|
}
|
|
116
116
|
return entries;
|
|
117
117
|
}
|
|
118
|
-
//# sourceMappingURL=serde-checker.js.map
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyZGUtY2hlY2tlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXJkZS1jaGVja2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBRUgsT0FBTyxjQUFjLE1BQU0saUJBQWlCLENBQUM7QUFHN0Msa0ZBQWtGO0FBQ2xGLDZFQUE2RTtBQUM3RSxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBRTlDLHdFQUF3RTtBQUN4RSxNQUFNLHNCQUFzQixHQUFHLElBQUksTUFBTSxDQUN2QyxnQ0FBZ0MsWUFBWSxvQkFBb0I7SUFDOUQsd0NBQXdDLFlBQVksNEJBQTRCLEVBQ2xGLEdBQUcsQ0FDSixDQUFDO0FBRUYsdUVBQXVFO0FBQ3ZFLE1BQU0scUJBQXFCLEdBQ3pCLHlEQUF5RCxDQUFDO0FBdUM1RDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLHNCQUFzQixDQUFDLE9BT3RDO0lBQ0MsTUFBTSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBRXZELG1FQUFtRTtJQUNuRSxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRTNELGlFQUFpRTtJQUNqRSxNQUFNLFlBQVksR0FBRyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuRCxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVoRCw4REFBOEQ7SUFDOUQsTUFBTSxlQUFlLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBRWpFLHdCQUF3QjtJQUN4QixNQUFNLE9BQU8sR0FBNEIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2xFLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztRQUU1QixzRUFBc0U7UUFDdEUsSUFBSSxp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QVMsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQy9ELE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTZXJkZSBjb21wbGlhbmNlIGNoZWNrZXIgZm9yIHdvcmtmbG93IGN1c3RvbSBjbGFzcyBzZXJpYWxpemF0aW9uLlxuICpcbiAqIEFuYWx5emVzIHNvdXJjZSBjb2RlIHRvIGRldGVybWluZSBpZiBjbGFzc2VzIHdpdGggV09SS0ZMT1dfU0VSSUFMSVpFIC9cbiAqIFdPUktGTE9XX0RFU0VSSUFMSVpFIGFyZSBjb3JyZWN0bHkgc2V0IHVwIGZvciB0aGUgd29ya2Zsb3cgc2FuZGJveC5cbiAqXG4gKiBVc2VkIGJ5OlxuICogLSBDTEkgYHZhbGlkYXRlYCBjb21tYW5kXG4gKiAtIENMSSBgdHJhbnNmb3JtYCBjb21tYW5kICgtLWNoZWNrLXNlcmRlKVxuICogLSBTV0MgcGxheWdyb3VuZCBzZXJkZSBhbmFseXNpcyBwYW5lbFxuICogLSBCdWlsZC10aW1lIHdhcm5pbmdzIGluIEJhc2VCdWlsZGVyXG4gKi9cblxuaW1wb3J0IGJ1aWx0aW5Nb2R1bGVzIGZyb20gJ2J1aWx0aW4tbW9kdWxlcyc7XG5pbXBvcnQgdHlwZSB7IFdvcmtmbG93TWFuaWZlc3QgfSBmcm9tICcuL2FwcGx5LXN3Yy10cmFuc2Zvcm0uanMnO1xuXG4vLyBCdWlsZCBhIHJlZ2V4IHRoYXQgbWF0Y2hlcyBOb2RlLmpzIGJ1aWx0LWluIG1vZHVsZSBpbXBvcnRzIGluIHRyYW5zZm9ybWVkIGNvZGUuXG4vLyBIYW5kbGVzIGJvdGggRVNNIChgZnJvbSAnZnMnYCwgYGZyb20gJ25vZGU6ZnMnYCkgYW5kIENKUyAoYHJlcXVpcmUoJ2ZzJylgKVxuY29uc3Qgbm9kZUJ1aWx0aW5zID0gYnVpbHRpbk1vZHVsZXMuam9pbignfCcpO1xuXG4vLyBSZWdleCB0byBleHRyYWN0IHNwZWNpZmljIG1vZHVsZSBuYW1lcyBmcm9tIGltcG9ydC9yZXF1aXJlIHN0YXRlbWVudHNcbmNvbnN0IG5vZGVJbXBvcnRFeHRyYWN0UmVnZXggPSBuZXcgUmVnRXhwKFxuICBgKD86ZnJvbVxcXFxzK1snXCJdKD86bm9kZTopPygoPzoke25vZGVCdWlsdGluc30pKD86L1teJ1wiXSopPylbJ1wiXWAgK1xuICAgIGB8cmVxdWlyZVxcXFxzKlxcXFwoXFxcXHMqWydcIl0oPzpub2RlOik/KCg/OiR7bm9kZUJ1aWx0aW5zfSkoPzovW14nXCJdKik/KVsnXCJdXFxcXHMqXFxcXCkpYCxcbiAgJ2cnXG4pO1xuXG4vLyBSZWdleCB0byBkZXRlY3QgY2xhc3MgcmVnaXN0cmF0aW9uIElJRkVzIGdlbmVyYXRlZCBieSB0aGUgU1dDIHBsdWdpblxuY29uc3QgcmVnaXN0cmF0aW9uSWlmZVJlZ2V4ID1cbiAgL1N5bWJvbFxcLmZvclxccypcXChcXHMqW1wiJ113b3JrZmxvdy1jbGFzcy1yZWdpc3RyeVtcIiddXFxzKlxcKS87XG5cbi8qKlxuICogUmVzdWx0IG9mIGNoZWNraW5nIGEgc2luZ2xlIGNsYXNzIGZvciBzZXJkZSBjb21wbGlhbmNlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlcmRlQ2xhc3NDaGVja1Jlc3VsdCB7XG4gIC8qKiBUaGUgY2xhc3MgbmFtZSBhcyBkZXRlY3RlZCBpbiB0aGUgc291cmNlICovXG4gIGNsYXNzTmFtZTogc3RyaW5nO1xuICAvKiogVGhlIGNsYXNzSWQgYXNzaWduZWQgYnkgdGhlIFNXQyBwbHVnaW4gKGZyb20gdGhlIG1hbmlmZXN0KSAqL1xuICBjbGFzc0lkOiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBTV0MgcGx1Z2luIGRldGVjdGVkIHNlcmRlIHN5bWJvbHMgb24gdGhpcyBjbGFzcyAqL1xuICBkZXRlY3RlZDogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgYSByZWdpc3RyYXRpb24gSUlGRSB3YXMgZ2VuZXJhdGVkIGluIHRoZSBvdXRwdXQgKi9cbiAgcmVnaXN0ZXJlZDogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE5vZGUuanMgYnVpbHQtaW4gbW9kdWxlIGltcG9ydHMgcmVtYWluaW5nIGluIHRoZSB3b3JrZmxvdy1tb2RlIG91dHB1dC5cbiAgICogSWYgbm9uLWVtcHR5LCB0aGUgY2xhc3MgaXMgTk9UIHdvcmtmbG93LXNhbmRib3ggY29tcGxpYW50LlxuICAgKi9cbiAgbm9kZUltcG9ydHM6IHN0cmluZ1tdO1xuICAvKiogV2hldGhlciB0aGUgY2xhc3MgcGFzc2VzIGFsbCBjb21wbGlhbmNlIGNoZWNrcyAqL1xuICBjb21wbGlhbnQ6IGJvb2xlYW47XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbnMgb2YgYW55IGlzc3VlcyBmb3VuZCAqL1xuICBpc3N1ZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEZ1bGwgcmVzdWx0IG9mIHNlcmRlIGNvbXBsaWFuY2UgYW5hbHlzaXMgZm9yIGEgc291cmNlIGZpbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VyZGVDaGVja1Jlc3VsdCB7XG4gIC8qKiBQZXItY2xhc3MgYW5hbHlzaXMgcmVzdWx0cyAqL1xuICBjbGFzc2VzOiBTZXJkZUNsYXNzQ2hlY2tSZXN1bHRbXTtcbiAgLyoqIEFsbCBOb2RlLmpzIGJ1aWx0LWluIGltcG9ydHMgZm91bmQgaW4gdGhlIHdvcmtmbG93LW1vZGUgb3V0cHV0ICovXG4gIGdsb2JhbE5vZGVJbXBvcnRzOiBzdHJpbmdbXTtcbiAgLyoqIFdoZXRoZXIgdGhlIHdvcmtmbG93LW1vZGUgb3V0cHV0IGNvbnRhaW5zIGFueSBzZXJkZS1yZWxhdGVkIGNsYXNzZXMgKi9cbiAgaGFzU2VyZGVDbGFzc2VzOiBib29sZWFuO1xuICAvKiogVGhlIHJhdyB3b3JrZmxvdyBtYW5pZmVzdCBleHRyYWN0ZWQgZnJvbSB0aGUgU1dDIHRyYW5zZm9ybSAqL1xuICBtYW5pZmVzdDogV29ya2Zsb3dNYW5pZmVzdDtcbn1cblxuLyoqXG4gKiBMaWdodHdlaWdodCBzZXJkZSBjb21wbGlhbmNlIGNoZWNrZXIgdGhhdCB3b3JrcyB3aXRoIHByZS1jb21wdXRlZFxuICogU1dDIHRyYW5zZm9ybSByZXN1bHRzLiBUaGlzIGF2b2lkcyByZS1ydW5uaW5nIHRoZSBTV0MgdHJhbnNmb3JtXG4gKiB3aGVuIHRoZSBjYWxsZXIgYWxyZWFkeSBoYXMgdGhlIG91dHB1dHMgKGUuZy4sIHRoZSBwbGF5Z3JvdW5kIG9yIGJ1aWxkZXIpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYW5hbHl6ZVNlcmRlQ29tcGxpYW5jZShvcHRpb25zOiB7XG4gIC8qKiBTb3VyY2UgY29kZSAodXNlZCBmb3IgcGF0dGVybiBkZXRlY3Rpb24pICovXG4gIHNvdXJjZUNvZGU6IHN0cmluZztcbiAgLyoqIFdvcmtmbG93LW1vZGUgdHJhbnNmb3JtZWQgb3V0cHV0ICovXG4gIHdvcmtmbG93Q29kZTogc3RyaW5nO1xuICAvKiogTWFuaWZlc3QgZXh0cmFjdGVkIGZyb20gdGhlIFNXQyB0cmFuc2Zvcm0gKi9cbiAgbWFuaWZlc3Q6IFdvcmtmbG93TWFuaWZlc3Q7XG59KTogU2VyZGVDaGVja1Jlc3VsdCB7XG4gIGNvbnN0IHsgc291cmNlQ29kZSwgd29ya2Zsb3dDb2RlLCBtYW5pZmVzdCB9ID0gb3B0aW9ucztcblxuICAvLyAxLiBFeHRyYWN0IGFsbCBOb2RlLmpzIGJ1aWx0LWluIGltcG9ydHMgZnJvbSB0aGUgd29ya2Zsb3cgb3V0cHV0XG4gIGNvbnN0IGdsb2JhbE5vZGVJbXBvcnRzID0gZXh0cmFjdE5vZGVJbXBvcnRzKHdvcmtmbG93Q29kZSk7XG5cbiAgLy8gMi4gQ2hlY2sgaWYgdGhlIG1hbmlmZXN0IGNvbnRhaW5zIGFueSBzZXJkZS1yZWdpc3RlcmVkIGNsYXNzZXNcbiAgY29uc3QgY2xhc3NFbnRyaWVzID0gZXh0cmFjdENsYXNzRW50cmllcyhtYW5pZmVzdCk7XG4gIGNvbnN0IGhhc1NlcmRlQ2xhc3NlcyA9IGNsYXNzRW50cmllcy5sZW5ndGggPiAwO1xuXG4gIC8vIDMuIENoZWNrIGlmIHRoZSB3b3JrZmxvdyBvdXRwdXQgY29udGFpbnMgcmVnaXN0cmF0aW9uIElJRkVzXG4gIGNvbnN0IGhhc1JlZ2lzdHJhdGlvbiA9IHJlZ2lzdHJhdGlvbklpZmVSZWdleC50ZXN0KHdvcmtmbG93Q29kZSk7XG5cbiAgLy8gNC4gQW5hbHl6ZSBlYWNoIGNsYXNzXG4gIGNvbnN0IGNsYXNzZXM6IFNlcmRlQ2xhc3NDaGVja1Jlc3VsdFtdID0gY2xhc3NFbnRyaWVzLm1hcCgoZW50cnkpID0+IHtcbiAgICBjb25zdCBpc3N1ZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAvLyBDaGVjayBmb3IgTm9kZS5qcyBpbXBvcnRzICh0aGVzZSB3aWxsIGZhaWwgaW4gdGhlIHdvcmtmbG93IHNhbmRib3gpXG4gICAgaWYgKGdsb2JhbE5vZGVJbXBvcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlzc3Vlcy5wdXNoKFxuICAgICAgICBgV29ya2Zsb3cgYnVuZGxlIGNvbnRhaW5zIE5vZGUuanMgYnVpbHQtaW4gaW1wb3J0czogJHtnbG9iYWxOb2RlSW1wb3J0cy5qb2luKCcsICcpfS4gYCArXG4gICAgICAgICAgYFRoZXNlIHdpbGwgZmFpbCBhdCBydW50aW1lIGluIHRoZSB3b3JrZmxvdyBzYW5kYm94LiBgICtcbiAgICAgICAgICBgQWRkIFwidXNlIHN0ZXBcIiB0byBtZXRob2RzIHRoYXQgZGVwZW5kIG9uIE5vZGUuanMgQVBJcyBzbyB0aGV5IGFyZSBzdHJpcHBlZCBmcm9tIHRoZSB3b3JrZmxvdyBidW5kbGUuYFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBmb3IgcmVnaXN0cmF0aW9uXG4gICAgaWYgKCFoYXNSZWdpc3RyYXRpb24pIHtcbiAgICAgIGlzc3Vlcy5wdXNoKFxuICAgICAgICBgTm8gY2xhc3MgcmVnaXN0cmF0aW9uIElJRkUgd2FzIGdlbmVyYXRlZC4gYCArXG4gICAgICAgICAgYEVuc3VyZSBXT1JLRkxPV19TRVJJQUxJWkUgYW5kIFdPUktGTE9XX0RFU0VSSUFMSVpFIGFyZSBkZWZpbmVkIGFzIHN0YXRpYyBtZXRob2RzIGAgK1xuICAgICAgICAgIGBpbnNpZGUgdGhlIGNsYXNzIGJvZHkgdXNpbmcgY29tcHV0ZWQgcHJvcGVydHkgc3ludGF4OiBzdGF0aWMgW1dPUktGTE9XX1NFUklBTElaRV0oLi4uKSB7IC4uLiB9YFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgY2xhc3NOYW1lOiBlbnRyeS5jbGFzc05hbWUsXG4gICAgICBjbGFzc0lkOiBlbnRyeS5jbGFzc0lkLFxuICAgICAgZGV0ZWN0ZWQ6IHRydWUsXG4gICAgICByZWdpc3RlcmVkOiBoYXNSZWdpc3RyYXRpb24sXG4gICAgICBub2RlSW1wb3J0czogZ2xvYmFsTm9kZUltcG9ydHMsXG4gICAgICBjb21wbGlhbnQ6IGdsb2JhbE5vZGVJbXBvcnRzLmxlbmd0aCA9PT0gMCAmJiBoYXNSZWdpc3RyYXRpb24sXG4gICAgICBpc3N1ZXMsXG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gNS4gQ2hlY2sgZm9yIGNsYXNzZXMgdGhhdCBoYXZlIHNlcmRlIHBhdHRlcm5zIGluIHNvdXJjZSBidXQgd2VyZW4ndCBkZXRlY3RlZCBieSBTV0NcbiAgY29uc3Qgc291cmNlSGFzU2VyZGVQYXR0ZXJucyA9XG4gICAgL1xcW1xccypXT1JLRkxPV18oPzpTRVJJQUxJWkV8REVTRVJJQUxJWkUpXFxzKlxcXS8udGVzdChzb3VyY2VDb2RlKSB8fFxuICAgIC9TeW1ib2xcXC5mb3JcXHMqXFwoXFxzKlsnXCJdd29ya2Zsb3ctKD86c2VyaWFsaXplfGRlc2VyaWFsaXplKVsnXCJdXFxzKlxcKS8udGVzdChcbiAgICAgIHNvdXJjZUNvZGVcbiAgICApO1xuXG4gIGlmIChzb3VyY2VIYXNTZXJkZVBhdHRlcm5zICYmIGNsYXNzRW50cmllcy5sZW5ndGggPT09IDApIHtcbiAgICBjbGFzc2VzLnB1c2goe1xuICAgICAgY2xhc3NOYW1lOiAnPHVua25vd24+JyxcbiAgICAgIGNsYXNzSWQ6ICcnLFxuICAgICAgZGV0ZWN0ZWQ6IGZhbHNlLFxuICAgICAgcmVnaXN0ZXJlZDogZmFsc2UsXG4gICAgICBub2RlSW1wb3J0czogZ2xvYmFsTm9kZUltcG9ydHMsXG4gICAgICBjb21wbGlhbnQ6IGZhbHNlLFxuICAgICAgaXNzdWVzOiBbXG4gICAgICAgIGBTb3VyY2UgY29kZSBjb250YWlucyBXT1JLRkxPV19TRVJJQUxJWkUvV09SS0ZMT1dfREVTRVJJQUxJWkUgcGF0dGVybnMgYnV0IGAgK1xuICAgICAgICAgIGB0aGUgU1dDIHBsdWdpbiBkaWQgbm90IGRldGVjdCBhbnkgc2VyZGUtZW5hYmxlZCBjbGFzc2VzLiBgICtcbiAgICAgICAgICBgRW5zdXJlIHRoZSBzeW1ib2xzIGFyZSBkZWZpbmVkIGFzIHN0YXRpYyBtZXRob2RzIElOU0lERSB0aGUgY2xhc3MgYm9keSwgYCArXG4gICAgICAgICAgYG5vdCBhc3NpZ25lZCBleHRlcm5hbGx5IChlLmcuLCAoTXlDbGFzcyBhcyBhbnkpW1dPUktGTE9XX1NFUklBTElaRV0gPSAuLi4pLmAsXG4gICAgICBdLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBjbGFzc2VzLFxuICAgIGdsb2JhbE5vZGVJbXBvcnRzLFxuICAgIGhhc1NlcmRlQ2xhc3NlcyxcbiAgICBtYW5pZmVzdCxcbiAgfTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IE5vZGUuanMgYnVpbHQtaW4gbW9kdWxlIG5hbWVzIGZyb20gdHJhbnNmb3JtZWQgY29kZS5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdE5vZGVJbXBvcnRzKGNvZGU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgY29uc3QgaW1wb3J0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAvLyBSZXNldCByZWdleCBzdGF0ZVxuICBub2RlSW1wb3J0RXh0cmFjdFJlZ2V4Lmxhc3RJbmRleCA9IDA7XG4gIGZvciAoXG4gICAgbGV0IG1hdGNoID0gbm9kZUltcG9ydEV4dHJhY3RSZWdleC5leGVjKGNvZGUpO1xuICAgIG1hdGNoICE9PSBudWxsO1xuICAgIG1hdGNoID0gbm9kZUltcG9ydEV4dHJhY3RSZWdleC5leGVjKGNvZGUpXG4gICkge1xuICAgIC8vIG1hdGNoWzFdIGlzIGZyb20gdGhlIEVTTSBwYXR0ZXJuLCBtYXRjaFsyXSBpcyBmcm9tIHRoZSBDSlMgcGF0dGVyblxuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSBtYXRjaFsxXSB8fCBtYXRjaFsyXTtcbiAgICBpZiAobW9kdWxlTmFtZSkge1xuICAgICAgLy8gTm9ybWFsaXplIHRvIGJhc2UgbW9kdWxlIG5hbWUgKGUuZy4sICdmcy9wcm9taXNlcycgLT4gJ2ZzJylcbiAgICAgIGltcG9ydHMuYWRkKG1vZHVsZU5hbWUuc3BsaXQoJy8nKVswXSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbLi4uaW1wb3J0c10uc29ydCgpO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgY2xhc3MgZW50cmllcyBmcm9tIGEgV29ya2Zsb3dNYW5pZmVzdC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RDbGFzc0VudHJpZXMoXG4gIG1hbmlmZXN0OiBXb3JrZmxvd01hbmlmZXN0XG4pOiBBcnJheTx7IGNsYXNzTmFtZTogc3RyaW5nOyBjbGFzc0lkOiBzdHJpbmc7IGZpbGVOYW1lOiBzdHJpbmcgfT4ge1xuICBjb25zdCBlbnRyaWVzOiBBcnJheTx7XG4gICAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgY2xhc3NJZDogc3RyaW5nO1xuICAgIGZpbGVOYW1lOiBzdHJpbmc7XG4gIH0+ID0gW107XG4gIGlmICghbWFuaWZlc3QuY2xhc3NlcykgcmV0dXJuIGVudHJpZXM7XG5cbiAgZm9yIChjb25zdCBbZmlsZU5hbWUsIGNsYXNzZXNdIG9mIE9iamVjdC5lbnRyaWVzKG1hbmlmZXN0LmNsYXNzZXMpKSB7XG4gICAgZm9yIChjb25zdCBbY2xhc3NOYW1lLCB7IGNsYXNzSWQgfV0gb2YgT2JqZWN0LmVudHJpZXMoY2xhc3NlcykpIHtcbiAgICAgIGVudHJpZXMucHVzaCh7IGNsYXNzTmFtZSwgY2xhc3NJZCwgZmlsZU5hbWUgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBlbnRyaWVzO1xufVxuIl19
|
package/dist/standalone.d.ts
CHANGED
|
@@ -3,9 +3,6 @@ import type { WorkflowConfig } from './types.js';
|
|
|
3
3
|
export declare class StandaloneBuilder extends BaseBuilder {
|
|
4
4
|
constructor(config: WorkflowConfig);
|
|
5
5
|
build(): Promise<void>;
|
|
6
|
-
private mergeManifests;
|
|
7
|
-
private buildStepsBundle;
|
|
8
|
-
private buildWorkflowsBundle;
|
|
9
6
|
private buildWebhookFunction;
|
|
10
7
|
}
|
|
11
8
|
//# sourceMappingURL=standalone.d.ts.map
|
package/dist/standalone.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../src/standalone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qBAAa,iBAAkB,SAAQ,WAAW;gBACpC,MAAM,EAAE,cAAc;IAO5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../src/standalone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qBAAa,iBAAkB,SAAQ,WAAW;gBACpC,MAAM,EAAE,cAAc;IAO5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAiCd,oBAAoB;CAanC"}
|
package/dist/standalone.js
CHANGED
|
@@ -9,19 +9,19 @@ export class StandaloneBuilder extends BaseBuilder {
|
|
|
9
9
|
async build() {
|
|
10
10
|
const inputFiles = await this.getInputFiles();
|
|
11
11
|
const tsconfigPath = await this.findTsConfigPath();
|
|
12
|
-
const
|
|
12
|
+
const stepsBundlePath = this.resolvePath(this.config.stepsBundlePath);
|
|
13
|
+
const workflowBundlePath = this.resolvePath(this.config.workflowsBundlePath);
|
|
14
|
+
await this.ensureDirectory(stepsBundlePath);
|
|
15
|
+
await this.ensureDirectory(workflowBundlePath);
|
|
16
|
+
this.logBaseBuilderInfo('Creating combined bundle');
|
|
17
|
+
const { manifest } = await this.createCombinedBundle({
|
|
13
18
|
inputFiles,
|
|
19
|
+
stepsOutfile: stepsBundlePath,
|
|
20
|
+
flowOutfile: workflowBundlePath,
|
|
14
21
|
tsconfigPath,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const workflowsManifest = await this.buildWorkflowsBundle(options);
|
|
22
|
+
bundleFinalOutput: true,
|
|
23
|
+
});
|
|
18
24
|
await this.buildWebhookFunction();
|
|
19
|
-
// Merge manifests from both bundles
|
|
20
|
-
// Steps bundle discovers classes from default export conditions
|
|
21
|
-
// Workflow bundle discovers classes from 'workflow' export conditions
|
|
22
|
-
const manifest = this.mergeManifests(stepsManifest, workflowsManifest);
|
|
23
|
-
// Build unified manifest from workflow bundle
|
|
24
|
-
const workflowBundlePath = this.resolvePath(this.config.workflowsBundlePath);
|
|
25
25
|
const manifestDir = this.resolvePath('.well-known/workflow/v1');
|
|
26
26
|
await this.createManifest({
|
|
27
27
|
workflowBundlePath,
|
|
@@ -30,37 +30,8 @@ export class StandaloneBuilder extends BaseBuilder {
|
|
|
30
30
|
});
|
|
31
31
|
await this.createClientLibrary();
|
|
32
32
|
}
|
|
33
|
-
mergeManifests(stepsManifest, workflowsManifest) {
|
|
34
|
-
return {
|
|
35
|
-
steps: { ...stepsManifest.steps, ...workflowsManifest.steps },
|
|
36
|
-
workflows: { ...stepsManifest.workflows, ...workflowsManifest.workflows },
|
|
37
|
-
classes: { ...stepsManifest.classes, ...workflowsManifest.classes },
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
async buildStepsBundle({ inputFiles, tsconfigPath, }) {
|
|
41
|
-
console.log('Creating steps bundle at', this.config.stepsBundlePath);
|
|
42
|
-
const stepsBundlePath = this.resolvePath(this.config.stepsBundlePath);
|
|
43
|
-
await this.ensureDirectory(stepsBundlePath);
|
|
44
|
-
const { manifest } = await this.createStepsBundle({
|
|
45
|
-
outfile: stepsBundlePath,
|
|
46
|
-
inputFiles,
|
|
47
|
-
tsconfigPath,
|
|
48
|
-
});
|
|
49
|
-
return manifest;
|
|
50
|
-
}
|
|
51
|
-
async buildWorkflowsBundle({ inputFiles, tsconfigPath, }) {
|
|
52
|
-
console.log('Creating workflows bundle at', this.config.workflowsBundlePath);
|
|
53
|
-
const workflowBundlePath = this.resolvePath(this.config.workflowsBundlePath);
|
|
54
|
-
await this.ensureDirectory(workflowBundlePath);
|
|
55
|
-
const { manifest } = await this.createWorkflowsBundle({
|
|
56
|
-
outfile: workflowBundlePath,
|
|
57
|
-
inputFiles,
|
|
58
|
-
tsconfigPath,
|
|
59
|
-
});
|
|
60
|
-
return manifest;
|
|
61
|
-
}
|
|
62
33
|
async buildWebhookFunction() {
|
|
63
|
-
|
|
34
|
+
this.logBaseBuilderInfo('Creating webhook bundle at', this.config.webhookBundlePath);
|
|
64
35
|
const webhookBundlePath = this.resolvePath(this.config.webhookBundlePath);
|
|
65
36
|
await this.ensureDirectory(webhookBundlePath);
|
|
66
37
|
await this.createWebhookBundle({
|
|
@@ -68,4 +39,4 @@ export class StandaloneBuilder extends BaseBuilder {
|
|
|
68
39
|
});
|
|
69
40
|
}
|
|
70
41
|
}
|
|
71
|
-
//# sourceMappingURL=
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhbG9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGFuZGFsb25lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdoRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsV0FBVztJQUNoRCxZQUFZLE1BQXNCO1FBQ2hDLEtBQUssQ0FBQztZQUNKLEdBQUcsTUFBTTtZQUNULElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzlDLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFbkQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FDaEMsQ0FBQztRQUNGLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM1QyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUvQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUVwRCxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUM7WUFDbkQsVUFBVTtZQUNWLFlBQVksRUFBRSxlQUFlO1lBQzdCLFdBQVcsRUFBRSxrQkFBa0I7WUFDL0IsWUFBWTtZQUNaLGlCQUFpQixFQUFFLElBQUk7U0FDeEIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUVsQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDaEUsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDO1lBQ3hCLGtCQUFrQjtZQUNsQixXQUFXO1lBQ1gsUUFBUTtTQUNULENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVPLEtBQUssQ0FBQyxvQkFBb0I7UUFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUNyQiw0QkFBNEIsRUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FDOUIsQ0FBQztRQUVGLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUUsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFOUMsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDN0IsT0FBTyxFQUFFLGlCQUFpQjtTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQnVpbGRlciB9IGZyb20gJy4vYmFzZS1idWlsZGVyLmpzJztcbmltcG9ydCB0eXBlIHsgV29ya2Zsb3dDb25maWcgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IGNsYXNzIFN0YW5kYWxvbmVCdWlsZGVyIGV4dGVuZHMgQmFzZUJ1aWxkZXIge1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IFdvcmtmbG93Q29uZmlnKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgZGlyczogWycuJ10sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBidWlsZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpbnB1dEZpbGVzID0gYXdhaXQgdGhpcy5nZXRJbnB1dEZpbGVzKCk7XG4gICAgY29uc3QgdHNjb25maWdQYXRoID0gYXdhaXQgdGhpcy5maW5kVHNDb25maWdQYXRoKCk7XG5cbiAgICBjb25zdCBzdGVwc0J1bmRsZVBhdGggPSB0aGlzLnJlc29sdmVQYXRoKHRoaXMuY29uZmlnLnN0ZXBzQnVuZGxlUGF0aCk7XG4gICAgY29uc3Qgd29ya2Zsb3dCdW5kbGVQYXRoID0gdGhpcy5yZXNvbHZlUGF0aChcbiAgICAgIHRoaXMuY29uZmlnLndvcmtmbG93c0J1bmRsZVBhdGhcbiAgICApO1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlRGlyZWN0b3J5KHN0ZXBzQnVuZGxlUGF0aCk7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVEaXJlY3Rvcnkod29ya2Zsb3dCdW5kbGVQYXRoKTtcblxuICAgIHRoaXMubG9nQmFzZUJ1aWxkZXJJbmZvKCdDcmVhdGluZyBjb21iaW5lZCBidW5kbGUnKTtcblxuICAgIGNvbnN0IHsgbWFuaWZlc3QgfSA9IGF3YWl0IHRoaXMuY3JlYXRlQ29tYmluZWRCdW5kbGUoe1xuICAgICAgaW5wdXRGaWxlcyxcbiAgICAgIHN0ZXBzT3V0ZmlsZTogc3RlcHNCdW5kbGVQYXRoLFxuICAgICAgZmxvd091dGZpbGU6IHdvcmtmbG93QnVuZGxlUGF0aCxcbiAgICAgIHRzY29uZmlnUGF0aCxcbiAgICAgIGJ1bmRsZUZpbmFsT3V0cHV0OiB0cnVlLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgdGhpcy5idWlsZFdlYmhvb2tGdW5jdGlvbigpO1xuXG4gICAgY29uc3QgbWFuaWZlc3REaXIgPSB0aGlzLnJlc29sdmVQYXRoKCcud2VsbC1rbm93bi93b3JrZmxvdy92MScpO1xuICAgIGF3YWl0IHRoaXMuY3JlYXRlTWFuaWZlc3Qoe1xuICAgICAgd29ya2Zsb3dCdW5kbGVQYXRoLFxuICAgICAgbWFuaWZlc3REaXIsXG4gICAgICBtYW5pZmVzdCxcbiAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMuY3JlYXRlQ2xpZW50TGlicmFyeSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBidWlsZFdlYmhvb2tGdW5jdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmxvZ0Jhc2VCdWlsZGVySW5mbyhcbiAgICAgICdDcmVhdGluZyB3ZWJob29rIGJ1bmRsZSBhdCcsXG4gICAgICB0aGlzLmNvbmZpZy53ZWJob29rQnVuZGxlUGF0aFxuICAgICk7XG5cbiAgICBjb25zdCB3ZWJob29rQnVuZGxlUGF0aCA9IHRoaXMucmVzb2x2ZVBhdGgodGhpcy5jb25maWcud2ViaG9va0J1bmRsZVBhdGgpO1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlRGlyZWN0b3J5KHdlYmhvb2tCdW5kbGVQYXRoKTtcblxuICAgIGF3YWl0IHRoaXMuY3JlYXRlV2ViaG9va0J1bmRsZSh7XG4gICAgICBvdXRmaWxlOiB3ZWJob29rQnVuZGxlUGF0aCxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step-source-registration.test.d.ts","sourceRoot":"","sources":["../src/step-source-registration.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { mkdirSync, mkdtempSync, readFileSync, realpathSync, rmSync, writeFileSync, } from 'node:fs';
|
|
2
|
+
import { tmpdir } from 'node:os';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
5
|
+
import { BaseBuilder } from './base-builder.js';
|
|
6
|
+
class TestBuilder extends BaseBuilder {
|
|
7
|
+
async build() {
|
|
8
|
+
// no-op
|
|
9
|
+
}
|
|
10
|
+
createSourceStepRegistrations(inputFiles, outfile, discoveredEntries) {
|
|
11
|
+
return this.createStepsBundle({
|
|
12
|
+
inputFiles,
|
|
13
|
+
outfile,
|
|
14
|
+
externalizeNonSteps: true,
|
|
15
|
+
bundleTransitiveLocalStepDependencies: false,
|
|
16
|
+
sourceStepRegistrationImports: true,
|
|
17
|
+
discoveredEntries,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const realTmpdir = realpathSync(tmpdir());
|
|
22
|
+
function writeFile(path, contents) {
|
|
23
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
24
|
+
writeFileSync(path, contents, 'utf-8');
|
|
25
|
+
}
|
|
26
|
+
function createBuilder(workingDir) {
|
|
27
|
+
const config = {
|
|
28
|
+
buildTarget: 'standalone',
|
|
29
|
+
workingDir,
|
|
30
|
+
dirs: ['.'],
|
|
31
|
+
stepsBundlePath: join(workingDir, '.workflow', 'steps.js'),
|
|
32
|
+
workflowsBundlePath: join(workingDir, '.workflow', 'workflows.js'),
|
|
33
|
+
webhookBundlePath: join(workingDir, '.workflow', 'webhook.js'),
|
|
34
|
+
};
|
|
35
|
+
return new TestBuilder(config);
|
|
36
|
+
}
|
|
37
|
+
describe('step source registration', () => {
|
|
38
|
+
let testRoot;
|
|
39
|
+
beforeEach(() => {
|
|
40
|
+
testRoot = mkdtempSync(join(realTmpdir, 'workflow-step-registration-'));
|
|
41
|
+
writeFile(join(testRoot, 'node_modules', 'workflow', 'package.json'), JSON.stringify({ name: 'workflow', version: '1.0.0' }));
|
|
42
|
+
writeFile(join(testRoot, 'node_modules', 'workflow', 'internal', 'builtins.js'), 'export const __builtins = true;\n');
|
|
43
|
+
});
|
|
44
|
+
afterEach(() => {
|
|
45
|
+
rmSync(testRoot, { recursive: true, force: true });
|
|
46
|
+
});
|
|
47
|
+
it('imports serde-only files for step context class registration', async () => {
|
|
48
|
+
const entryFile = join(testRoot, 'src', 'entry.ts');
|
|
49
|
+
const stepFile = join(testRoot, 'src', 'step.ts');
|
|
50
|
+
const serdeFile = join(testRoot, 'src', 'serde.ts');
|
|
51
|
+
const outfile = join(testRoot, '.workflow', 'steps.js');
|
|
52
|
+
mkdirSync(dirname(outfile), { recursive: true });
|
|
53
|
+
writeFile(entryFile, `export { runStep } from './step';\n`);
|
|
54
|
+
writeFile(stepFile, `export async function runStep() {
|
|
55
|
+
'use step';
|
|
56
|
+
return 1;
|
|
57
|
+
}
|
|
58
|
+
`);
|
|
59
|
+
writeFile(serdeFile, `export class Value {
|
|
60
|
+
static classId = 'Value';
|
|
61
|
+
static [Symbol.for('workflow-serialize')](value: Value) {
|
|
62
|
+
return value;
|
|
63
|
+
}
|
|
64
|
+
static [Symbol.for('workflow-deserialize')](value: Value) {
|
|
65
|
+
return value;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
`);
|
|
69
|
+
const discoveredEntries = {
|
|
70
|
+
discoveredSteps: new Set([stepFile]),
|
|
71
|
+
discoveredWorkflows: new Set(),
|
|
72
|
+
discoveredSerdeFiles: new Set([serdeFile]),
|
|
73
|
+
};
|
|
74
|
+
const { manifest } = await createBuilder(testRoot).createSourceStepRegistrations([entryFile], outfile, discoveredEntries);
|
|
75
|
+
const generated = readFileSync(outfile, 'utf-8');
|
|
76
|
+
expect(generated).toContain('import "workflow/internal/builtins";');
|
|
77
|
+
expect(generated).toContain('import "../src/step.ts";');
|
|
78
|
+
expect(generated).toContain('import "../src/serde.ts";');
|
|
79
|
+
expect(Object.keys(manifest.classes ?? {})).toContain('src/serde.ts');
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RlcC1zb3VyY2UtcmVnaXN0cmF0aW9uLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvc3RlcC1zb3VyY2UtcmVnaXN0cmF0aW9uLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sYUFBYSxHQUNkLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDakMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDMUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxtQkFBbUIsQ0FBQztBQUd4RSxNQUFNLFdBQVksU0FBUSxXQUFXO0lBQ25DLEtBQUssQ0FBQyxLQUFLO1FBQ1QsUUFBUTtJQUNWLENBQUM7SUFFTSw2QkFBNkIsQ0FDbEMsVUFBb0IsRUFDcEIsT0FBZSxFQUNmLGlCQUFvQztRQUVwQyxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztZQUM1QixVQUFVO1lBQ1YsT0FBTztZQUNQLG1CQUFtQixFQUFFLElBQUk7WUFDekIscUNBQXFDLEVBQUUsS0FBSztZQUM1Qyw2QkFBNkIsRUFBRSxJQUFJO1lBQ25DLGlCQUFpQjtTQUNsQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUUxQyxTQUFTLFNBQVMsQ0FBQyxJQUFZLEVBQUUsUUFBZ0I7SUFDL0MsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lB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RSxPQUFPLENBQUMsQ0FBQztRQUVqRCxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7UUFDcEUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUN6RCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBta2RpclN5bmMsXG4gIG1rZHRlbXBTeW5jLFxuICByZWFkRmlsZVN5bmMsXG4gIHJlYWxwYXRoU3luYyxcbiAgcm1TeW5jLFxuICB3cml0ZUZpbGVTeW5jLFxufSBmcm9tICdub2RlOmZzJztcbmltcG9ydCB7IHRtcGRpciB9IGZyb20gJ25vZGU6b3MnO1xuaW1wb3J0IHsgZGlybmFtZSwgam9pbiB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBhZnRlckVhY2gsIGJlZm9yZUVhY2gsIGRlc2NyaWJlLCBleHBlY3QsIGl0IH0gZnJvbSAndml0ZXN0JztcbmltcG9ydCB7IEJhc2VCdWlsZGVyLCB0eXBlIERpc2NvdmVyZWRFbnRyaWVzIH0gZnJvbSAnLi9iYXNlLWJ1aWxkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFuZGFsb25lQ29uZmlnIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmNsYXNzIFRlc3RCdWlsZGVyIGV4dGVuZHMgQmFzZUJ1aWxkZXIge1xuICBhc3luYyBidWlsZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBuby1vcFxuICB9XG5cbiAgcHVibGljIGNyZWF0ZVNvdXJjZVN0ZXBSZWdpc3RyYXRpb25zKFxuICAgIGlucHV0RmlsZXM6IHN0cmluZ1tdLFxuICAgIG91dGZpbGU6IHN0cmluZyxcbiAgICBkaXNjb3ZlcmVkRW50cmllczogRGlzY292ZXJlZEVudHJpZXNcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlU3RlcHNCdW5kbGUoe1xuICAgICAgaW5wdXRGaWxlcyxcbiAgICAgIG91dGZpbGUsXG4gICAgICBleHRlcm5hbGl6ZU5vblN0ZXBzOiB0cnVlLFxuICAgICAgYnVuZGxlVHJhbnNpdGl2ZUxvY2FsU3RlcERlcGVuZGVuY2llczogZmFsc2UsXG4gICAgICBzb3VyY2VTdGVwUmVnaXN0cmF0aW9uSW1wb3J0czogdHJ1ZSxcbiAgICAgIGRpc2NvdmVyZWRFbnRyaWVzLFxuICAgIH0pO1xuICB9XG59XG5cbmNvbnN0IHJlYWxUbXBkaXIgPSByZWFscGF0aFN5bmModG1wZGlyKCkpO1xuXG5mdW5jdGlvbiB3cml0ZUZpbGUocGF0aDogc3RyaW5nLCBjb250ZW50czogc3RyaW5nKTogdm9pZCB7XG4gIG1rZGlyU3luYyhkaXJuYW1lKHBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgd3JpdGVGaWxlU3luYyhwYXRoLCBjb250ZW50cywgJ3V0Zi04Jyk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJ1aWxkZXIod29ya2luZ0Rpcjogc3RyaW5nKTogVGVzdEJ1aWxkZXIge1xuICBjb25zdCBjb25maWc6IFN0YW5kYWxvbmVDb25maWcgPSB7XG4gICAgYnVpbGRUYXJnZXQ6ICdzdGFuZGFsb25lJyxcbiAgICB3b3JraW5nRGlyLFxuICAgIGRpcnM6IFsnLiddLFxuICAgIHN0ZXBzQnVuZGxlUGF0aDogam9pbih3b3JraW5nRGlyLCAnLndvcmtmbG93JywgJ3N0ZXBzLmpzJyksXG4gICAgd29ya2Zsb3dzQnVuZGxlUGF0aDogam9pbih3b3JraW5nRGlyLCAnLndvcmtmbG93JywgJ3dvcmtmbG93cy5qcycpLFxuICAgIHdlYmhvb2tCdW5kbGVQYXRoOiBqb2luKHdvcmtpbmdEaXIsICcud29ya2Zsb3cnLCAnd2ViaG9vay5qcycpLFxuICB9O1xuICByZXR1cm4gbmV3IFRlc3RCdWlsZGVyKGNvbmZpZyk7XG59XG5cbmRlc2NyaWJlKCdzdGVwIHNvdXJjZSByZWdpc3RyYXRpb24nLCAoKSA9PiB7XG4gIGxldCB0ZXN0Um9vdDogc3RyaW5nO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHRlc3RSb290ID0gbWtkdGVtcFN5bmMoam9pbihyZWFsVG1wZGlyLCAnd29ya2Zsb3ctc3RlcC1yZWdpc3RyYXRpb24tJykpO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4odGVzdFJvb3QsICdub2RlX21vZHVsZXMnLCAnd29ya2Zsb3cnLCAncGFja2FnZS5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeSh7IG5hbWU6ICd3b3JrZmxvdycsIHZlcnNpb246ICcxLjAuMCcgfSlcbiAgICApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIGpvaW4odGVzdFJvb3QsICdub2RlX21vZHVsZXMnLCAnd29ya2Zsb3cnLCAnaW50ZXJuYWwnLCAnYnVpbHRpbnMuanMnKSxcbiAgICAgICdleHBvcnQgY29uc3QgX19idWlsdGlucyA9IHRydWU7XFxuJ1xuICAgICk7XG4gIH0pO1xuXG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgcm1TeW5jKHRlc3RSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gIH0pO1xuXG4gIGl0KCdpbXBvcnRzIHNlcmRlLW9ubHkgZmlsZXMgZm9yIHN0ZXAgY29udGV4dCBjbGFzcyByZWdpc3RyYXRpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgZW50cnlGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NyYycsICdlbnRyeS50cycpO1xuICAgIGNvbnN0IHN0ZXBGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NyYycsICdzdGVwLnRzJyk7XG4gICAgY29uc3Qgc2VyZGVGaWxlID0gam9pbih0ZXN0Um9vdCwgJ3NyYycsICdzZXJkZS50cycpO1xuICAgIGNvbnN0IG91dGZpbGUgPSBqb2luKHRlc3RSb290LCAnLndvcmtmbG93JywgJ3N0ZXBzLmpzJyk7XG5cbiAgICBta2RpclN5bmMoZGlybmFtZShvdXRmaWxlKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgd3JpdGVGaWxlKGVudHJ5RmlsZSwgYGV4cG9ydCB7IHJ1blN0ZXAgfSBmcm9tICcuL3N0ZXAnO1xcbmApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIHN0ZXBGaWxlLFxuICAgICAgYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5TdGVwKCkge1xuICAndXNlIHN0ZXAnO1xuICByZXR1cm4gMTtcbn1cbmBcbiAgICApO1xuICAgIHdyaXRlRmlsZShcbiAgICAgIHNlcmRlRmlsZSxcbiAgICAgIGBleHBvcnQgY2xhc3MgVmFsdWUge1xuICBzdGF0aWMgY2xhc3NJZCA9ICdWYWx1ZSc7XG4gIHN0YXRpYyBbU3ltYm9sLmZvcignd29ya2Zsb3ctc2VyaWFsaXplJyldKHZhbHVlOiBWYWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBzdGF0aWMgW1N5bWJvbC5mb3IoJ3dvcmtmbG93LWRlc2VyaWFsaXplJyldKHZhbHVlOiBWYWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufVxuYFxuICAgICk7XG5cbiAgICBjb25zdCBkaXNjb3ZlcmVkRW50cmllczogRGlzY292ZXJlZEVudHJpZXMgPSB7XG4gICAgICBkaXNjb3ZlcmVkU3RlcHM6IG5ldyBTZXQoW3N0ZXBGaWxlXSksXG4gICAgICBkaXNjb3ZlcmVkV29ya2Zsb3dzOiBuZXcgU2V0KCksXG4gICAgICBkaXNjb3ZlcmVkU2VyZGVGaWxlczogbmV3IFNldChbc2VyZGVGaWxlXSksXG4gICAgfTtcblxuICAgIGNvbnN0IHsgbWFuaWZlc3QgfSA9IGF3YWl0IGNyZWF0ZUJ1aWxkZXIoXG4gICAgICB0ZXN0Um9vdFxuICAgICkuY3JlYXRlU291cmNlU3RlcFJlZ2lzdHJhdGlvbnMoW2VudHJ5RmlsZV0sIG91dGZpbGUsIGRpc2NvdmVyZWRFbnRyaWVzKTtcbiAgICBjb25zdCBnZW5lcmF0ZWQgPSByZWFkRmlsZVN5bmMob3V0ZmlsZSwgJ3V0Zi04Jyk7XG5cbiAgICBleHBlY3QoZ2VuZXJhdGVkKS50b0NvbnRhaW4oJ2ltcG9ydCBcIndvcmtmbG93L2ludGVybmFsL2J1aWx0aW5zXCI7Jyk7XG4gICAgZXhwZWN0KGdlbmVyYXRlZCkudG9Db250YWluKCdpbXBvcnQgXCIuLi9zcmMvc3RlcC50c1wiOycpO1xuICAgIGV4cGVjdChnZW5lcmF0ZWQpLnRvQ29udGFpbignaW1wb3J0IFwiLi4vc3JjL3NlcmRlLnRzXCI7Jyk7XG4gICAgZXhwZWN0KE9iamVjdC5rZXlzKG1hbmlmZXN0LmNsYXNzZXMgPz8ge30pKS50b0NvbnRhaW4oJ3NyYy9zZXJkZS50cycpO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -5,6 +5,7 @@ export interface SwcPluginOptions {
|
|
|
5
5
|
entriesToBundle?: string[];
|
|
6
6
|
outdir?: string;
|
|
7
7
|
projectRoot?: string;
|
|
8
|
+
moduleSpecifierRoot?: string;
|
|
8
9
|
workflowManifest?: WorkflowManifest;
|
|
9
10
|
/**
|
|
10
11
|
* Rewrite TypeScript extensions (.ts, .tsx, .mts, .cts) to their JS
|
|
@@ -18,6 +19,15 @@ export interface SwcPluginOptions {
|
|
|
18
19
|
* breaks them because the .js file doesn't exist on disk.
|
|
19
20
|
*/
|
|
20
21
|
rewriteTsExtensions?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Bundle project-local files that are transitively imported by step entries.
|
|
24
|
+
*
|
|
25
|
+
* Keep this disabled when a downstream bundler consumes the generated step
|
|
26
|
+
* bundle because that bundler can resolve the externalized local imports.
|
|
27
|
+
* Enable it for direct runtime loading, where Node imports the generated step
|
|
28
|
+
* bundle from disk without a later bundling pass.
|
|
29
|
+
*/
|
|
30
|
+
bundleTransitiveLocalStepDependencies?: boolean;
|
|
21
31
|
/**
|
|
22
32
|
* Absolute file paths of discovered workflow/step/serde entries whose
|
|
23
33
|
* imports must be treated as side-effectful.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swc-esbuild-plugin.d.ts","sourceRoot":"","sources":["../src/swc-esbuild-plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"swc-esbuild-plugin.d.ts","sourceRoot":"","sources":["../src/swc-esbuild-plugin.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAQlC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;OAOG;IACH,qCAAqC,CAAC,EAAE,OAAO,CAAC;IAChD;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAkHD,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAoXjE"}
|