@workflow/builders 5.0.0-beta.1 → 5.0.0-beta.10

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.
Files changed (86) hide show
  1. package/dist/apply-swc-transform.d.ts +1 -1
  2. package/dist/apply-swc-transform.d.ts.map +1 -1
  3. package/dist/apply-swc-transform.js +1 -1
  4. package/dist/base-builder.d.ts +72 -5
  5. package/dist/base-builder.d.ts.map +1 -1
  6. package/dist/base-builder.js +401 -42
  7. package/dist/build-queue.js +1 -1
  8. package/dist/config-helpers.d.ts +2 -1
  9. package/dist/config-helpers.d.ts.map +1 -1
  10. package/dist/config-helpers.js +2 -1
  11. package/dist/constants.d.ts +3 -13
  12. package/dist/constants.d.ts.map +1 -1
  13. package/dist/constants.js +4 -14
  14. package/dist/discover-entries-esbuild-plugin.d.ts.map +1 -1
  15. package/dist/discover-entries-esbuild-plugin.js +19 -3
  16. package/dist/discover-entries-esbuild-plugin.test.js +1 -1
  17. package/dist/esbuild-tsconfig.js +1 -1
  18. package/dist/esbuild-tsconfig.test.js +1 -1
  19. package/dist/external-package-warning.test.d.ts +2 -0
  20. package/dist/external-package-warning.test.d.ts.map +1 -0
  21. package/dist/external-package-warning.test.js +219 -0
  22. package/dist/get-input-files.test.js +49 -2
  23. package/dist/index.d.ts +1 -1
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +2 -2
  26. package/dist/module-specifier.d.ts.map +1 -1
  27. package/dist/module-specifier.js +48 -10
  28. package/dist/module-specifier.test.js +21 -1
  29. package/dist/node-module-esbuild-plugin.d.ts.map +1 -1
  30. package/dist/node-module-esbuild-plugin.js +73 -23
  31. package/dist/node-module-esbuild-plugin.test.js +97 -1
  32. package/dist/pseudo-package-esbuild-plugin.js +1 -1
  33. package/dist/pseudo-package-esbuild-plugin.test.js +1 -1
  34. package/dist/request-converter.js +1 -1
  35. package/dist/resolve-sourcemap.test.d.ts +2 -0
  36. package/dist/resolve-sourcemap.test.d.ts.map +1 -0
  37. package/dist/resolve-sourcemap.test.js +126 -0
  38. package/dist/serde-checker.js +1 -1
  39. package/dist/standalone.d.ts +0 -3
  40. package/dist/standalone.d.ts.map +1 -1
  41. package/dist/standalone.js +11 -40
  42. package/dist/swc-esbuild-plugin.d.ts +10 -1
  43. package/dist/swc-esbuild-plugin.d.ts.map +1 -1
  44. package/dist/swc-esbuild-plugin.js +64 -9
  45. package/dist/swc-esbuild-plugin.test.js +280 -4
  46. package/dist/transform-utils.js +1 -1
  47. package/dist/transform-utils.test.js +1 -1
  48. package/dist/types.d.ts +31 -0
  49. package/dist/types.d.ts.map +1 -1
  50. package/dist/types.js +1 -1
  51. package/dist/vercel-build-output-api.d.ts +0 -2
  52. package/dist/vercel-build-output-api.d.ts.map +1 -1
  53. package/dist/vercel-build-output-api.js +28 -56
  54. package/dist/workflow-alias.js +1 -1
  55. package/dist/workflow-alias.test.js +1 -1
  56. package/dist/workflows-extractor.js +1 -1
  57. package/package.json +5 -5
  58. package/dist/apply-swc-transform.js.map +0 -1
  59. package/dist/base-builder.js.map +0 -1
  60. package/dist/build-queue.js.map +0 -1
  61. package/dist/config-helpers.js.map +0 -1
  62. package/dist/constants.js.map +0 -1
  63. package/dist/discover-entries-esbuild-plugin.js.map +0 -1
  64. package/dist/discover-entries-esbuild-plugin.test.js.map +0 -1
  65. package/dist/esbuild-tsconfig.js.map +0 -1
  66. package/dist/esbuild-tsconfig.test.js.map +0 -1
  67. package/dist/get-input-files.test.js.map +0 -1
  68. package/dist/index.js.map +0 -1
  69. package/dist/module-specifier.js.map +0 -1
  70. package/dist/module-specifier.test.js.map +0 -1
  71. package/dist/node-module-esbuild-plugin.js.map +0 -1
  72. package/dist/node-module-esbuild-plugin.test.js.map +0 -1
  73. package/dist/pseudo-package-esbuild-plugin.js.map +0 -1
  74. package/dist/pseudo-package-esbuild-plugin.test.js.map +0 -1
  75. package/dist/request-converter.js.map +0 -1
  76. package/dist/serde-checker.js.map +0 -1
  77. package/dist/standalone.js.map +0 -1
  78. package/dist/swc-esbuild-plugin.js.map +0 -1
  79. package/dist/swc-esbuild-plugin.test.js.map +0 -1
  80. package/dist/transform-utils.js.map +0 -1
  81. package/dist/transform-utils.test.js.map +0 -1
  82. package/dist/types.js.map +0 -1
  83. package/dist/vercel-build-output-api.js.map +0 -1
  84. package/dist/workflow-alias.js.map +0 -1
  85. package/dist/workflow-alias.test.js.map +0 -1
  86. package/dist/workflows-extractor.js.map +0 -1
@@ -0,0 +1,126 @@
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
+ }
18
+ function createBuilder(sourcemap) {
19
+ const config = {
20
+ buildTarget: 'standalone',
21
+ workingDir: '/tmp/workflow-test',
22
+ dirs: ['.'],
23
+ stepsBundlePath: '',
24
+ workflowsBundlePath: '',
25
+ webhookBundlePath: '',
26
+ sourcemap,
27
+ };
28
+ return new TestBuilder(config);
29
+ }
30
+ describe('resolveSourcemap', () => {
31
+ const originalEnv = process.env.WORKFLOW_SOURCEMAP;
32
+ beforeEach(() => {
33
+ delete process.env.WORKFLOW_SOURCEMAP;
34
+ });
35
+ afterEach(() => {
36
+ if (originalEnv === undefined) {
37
+ delete process.env.WORKFLOW_SOURCEMAP;
38
+ }
39
+ else {
40
+ process.env.WORKFLOW_SOURCEMAP = originalEnv;
41
+ }
42
+ });
43
+ it('returns the default when no config or env var is set', () => {
44
+ const builder = createBuilder();
45
+ expect(builder.callResolveSourcemap('inline')).toBe('inline');
46
+ expect(builder.callResolveSourcemap(false)).toBe(false);
47
+ expect(builder.callResolveSourcemap(true)).toBe(true);
48
+ });
49
+ it('prefers explicit config over the default', () => {
50
+ expect(createBuilder(false).callResolveSourcemap('inline')).toBe(false);
51
+ expect(createBuilder('external').callResolveSourcemap('inline')).toBe('external');
52
+ expect(createBuilder('linked').callResolveSourcemap(false)).toBe('linked');
53
+ expect(createBuilder(true).callResolveSourcemap('inline')).toBe(true);
54
+ });
55
+ it('prefers explicit config over environment variable', () => {
56
+ process.env.WORKFLOW_SOURCEMAP = 'inline';
57
+ expect(createBuilder(false).callResolveSourcemap('inline')).toBe(false);
58
+ expect(createBuilder('external').callResolveSourcemap('inline')).toBe('external');
59
+ });
60
+ it('uses environment variable when config is not set', () => {
61
+ process.env.WORKFLOW_SOURCEMAP = 'false';
62
+ expect(createBuilder().callResolveSourcemap('inline')).toBe(false);
63
+ process.env.WORKFLOW_SOURCEMAP = 'true';
64
+ expect(createBuilder().callResolveSourcemap(false)).toBe(true);
65
+ for (const mode of ['inline', 'linked', 'external', 'both']) {
66
+ process.env.WORKFLOW_SOURCEMAP = mode;
67
+ expect(createBuilder().callResolveSourcemap('inline')).toBe(mode);
68
+ }
69
+ });
70
+ it('accepts "0" / "1" as environment variable aliases for false / true', () => {
71
+ process.env.WORKFLOW_SOURCEMAP = '0';
72
+ expect(createBuilder().callResolveSourcemap('inline')).toBe(false);
73
+ process.env.WORKFLOW_SOURCEMAP = '1';
74
+ expect(createBuilder().callResolveSourcemap(false)).toBe(true);
75
+ });
76
+ it('falls back to default when env var is empty or unrecognized', () => {
77
+ process.env.WORKFLOW_SOURCEMAP = '';
78
+ expect(createBuilder().callResolveSourcemap('inline')).toBe('inline');
79
+ // Suppress the expected warning
80
+ const originalWarn = console.warn;
81
+ console.warn = () => { };
82
+ try {
83
+ process.env.WORKFLOW_SOURCEMAP = 'nonsense';
84
+ expect(createBuilder().callResolveSourcemap('inline')).toBe('inline');
85
+ }
86
+ finally {
87
+ console.warn = originalWarn;
88
+ }
89
+ });
90
+ });
91
+ describe('sourcemapsEnabled', () => {
92
+ const originalEnv = process.env.WORKFLOW_SOURCEMAP;
93
+ beforeEach(() => {
94
+ delete process.env.WORKFLOW_SOURCEMAP;
95
+ });
96
+ afterEach(() => {
97
+ if (originalEnv === undefined) {
98
+ delete process.env.WORKFLOW_SOURCEMAP;
99
+ }
100
+ else {
101
+ process.env.WORKFLOW_SOURCEMAP = originalEnv;
102
+ }
103
+ });
104
+ it('is true by default', () => {
105
+ expect(createBuilder().publicSourcemapsEnabled).toBe(true);
106
+ });
107
+ it('is false when config sourcemap is false', () => {
108
+ expect(createBuilder(false).publicSourcemapsEnabled).toBe(false);
109
+ });
110
+ it('is true for any non-false config value', () => {
111
+ for (const mode of [
112
+ true,
113
+ 'inline',
114
+ 'linked',
115
+ 'external',
116
+ 'both',
117
+ ]) {
118
+ expect(createBuilder(mode).publicSourcemapsEnabled).toBe(true);
119
+ }
120
+ });
121
+ it('is false when WORKFLOW_SOURCEMAP env is false', () => {
122
+ process.env.WORKFLOW_SOURCEMAP = 'false';
123
+ expect(createBuilder().publicSourcemapsEnabled).toBe(false);
124
+ });
125
+ });
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS1zb3VyY2VtYXAudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXNvbHZlLXNvdXJjZW1hcC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdoRDs7O0dBR0c7QUFDSCxNQUFNLFdBQVksU0FBUSxXQUFXO0lBQ25DLEtBQUssQ0FBQyxLQUFLO1FBQ1QsUUFBUTtJQUNWLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxXQUEwQjtRQUNwRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsSUFBVyx1QkFBdUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBRUQsU0FBUyxhQUFhLENBQUMsU0FBeUI7SUFDOUMsTUFBTSxNQUFNLEdBQXFCO1FBQy9CLFdBQVcsRUFBRSxZQUFZO1FBQ3pCLFVBQVUsRUFBRSxvQkFBb0I7UUFDaEMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDO1FBQ1gsZUFBZSxFQUFFLEVBQUU7UUFDbkIsbUJBQW1CLEVBQUUsRUFBRTtRQUN2QixpQkFBaUIsRUFBRSxFQUFFO1FBQ3JCLFNBQVM7S0FDVixDQUFDO0lBQ0YsT0FBTyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQsUUFBUSxDQUFDLGtCQUFrQixFQUFFLEdBQUcsRUFBRTtJQUNoQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDO0lBRW5ELFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENB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QUFDLENBQUM7UUFDakUsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLCtDQUErQyxFQUFFLEdBQUcsRUFBRTtRQUN2RCxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztRQUN6QyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFmdGVyRWFjaCwgYmVmb3JlRWFjaCwgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHsgQmFzZUJ1aWxkZXIgfSBmcm9tICcuL2Jhc2UtYnVpbGRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFNvdXJjZW1hcE1vZGUsIFN0YW5kYWxvbmVDb25maWcgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqXG4gKiBNaW5pbWFsIHN1YmNsYXNzIHRoYXQgZXhwb3NlcyB0aGUgcHJvdGVjdGVkIGByZXNvbHZlU291cmNlbWFwKClgIGFuZFxuICogYHNvdXJjZW1hcHNFbmFibGVkYCBtZW1iZXJzIGZvciB0ZXN0aW5nLlxuICovXG5jbGFzcyBUZXN0QnVpbGRlciBleHRlbmRzIEJhc2VCdWlsZGVyIHtcbiAgYXN5bmMgYnVpbGQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gbm8tb3BcbiAgfVxuXG4gIHB1YmxpYyBjYWxsUmVzb2x2ZVNvdXJjZW1hcChkZWZhdWx0TW9kZTogU291cmNlbWFwTW9kZSk6IFNvdXJjZW1hcE1vZGUge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVTb3VyY2VtYXAoZGVmYXVsdE1vZGUpO1xuICB9XG5cbiAgcHVibGljIGdldCBwdWJsaWNTb3VyY2VtYXBzRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2VtYXBzRW5hYmxlZDtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVCdWlsZGVyKHNvdXJjZW1hcD86IFNvdXJjZW1hcE1vZGUpOiBUZXN0QnVpbGRlciB7XG4gIGNvbnN0IGNvbmZpZzogU3RhbmRhbG9uZUNvbmZpZyA9IHtcbiAgICBidWlsZFRhcmdldDogJ3N0YW5kYWxvbmUnLFxuICAgIHdvcmtpbmdEaXI6ICcvdG1wL3dvcmtmbG93LXRlc3QnLFxuICAgIGRpcnM6IFsnLiddLFxuICAgIHN0ZXBzQnVuZGxlUGF0aDogJycsXG4gICAgd29ya2Zsb3dzQnVuZGxlUGF0aDogJycsXG4gICAgd2ViaG9va0J1bmRsZVBhdGg6ICcnLFxuICAgIHNvdXJjZW1hcCxcbiAgfTtcbiAgcmV0dXJuIG5ldyBUZXN0QnVpbGRlcihjb25maWcpO1xufVxuXG5kZXNjcmliZSgncmVzb2x2ZVNvdXJjZW1hcCcsICgpID0+IHtcbiAgY29uc3Qgb3JpZ2luYWxFbnYgPSBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVA7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgZGVsZXRlIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUDtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBpZiAob3JpZ2luYWxFbnYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVsZXRlIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUDtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQID0gb3JpZ2luYWxFbnY7XG4gICAgfVxuICB9KTtcblxuICBpdCgncmV0dXJucyB0aGUgZGVmYXVsdCB3aGVuIG5vIGNvbmZpZyBvciBlbnYgdmFyIGlzIHNldCcsICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQnVpbGRlcigpO1xuICAgIGV4cGVjdChidWlsZGVyLmNhbGxSZXNvbHZlU291cmNlbWFwKCdpbmxpbmUnKSkudG9CZSgnaW5saW5lJyk7XG4gICAgZXhwZWN0KGJ1aWxkZXIuY2FsbFJlc29sdmVTb3VyY2VtYXAoZmFsc2UpKS50b0JlKGZhbHNlKTtcbiAgICBleHBlY3QoYnVpbGRlci5jYWxsUmVzb2x2ZVNvdXJjZW1hcCh0cnVlKSkudG9CZSh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ3ByZWZlcnMgZXhwbGljaXQgY29uZmlnIG92ZXIgdGhlIGRlZmF1bHQnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoZmFsc2UpLmNhbGxSZXNvbHZlU291cmNlbWFwKCdpbmxpbmUnKSkudG9CZShmYWxzZSk7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoJ2V4dGVybmFsJykuY2FsbFJlc29sdmVTb3VyY2VtYXAoJ2lubGluZScpKS50b0JlKFxuICAgICAgJ2V4dGVybmFsJ1xuICAgICk7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoJ2xpbmtlZCcpLmNhbGxSZXNvbHZlU291cmNlbWFwKGZhbHNlKSkudG9CZSgnbGlua2VkJyk7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIodHJ1ZSkuY2FsbFJlc29sdmVTb3VyY2VtYXAoJ2lubGluZScpKS50b0JlKHRydWUpO1xuICB9KTtcblxuICBpdCgncHJlZmVycyBleHBsaWNpdCBjb25maWcgb3ZlciBlbnZpcm9ubWVudCB2YXJpYWJsZScsICgpID0+IHtcbiAgICBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVAgPSAnaW5saW5lJztcbiAgICBleHBlY3QoY3JlYXRlQnVpbGRlcihmYWxzZSkuY2FsbFJlc29sdmVTb3VyY2VtYXAoJ2lubGluZScpKS50b0JlKGZhbHNlKTtcbiAgICBleHBlY3QoY3JlYXRlQnVpbGRlcignZXh0ZXJuYWwnKS5jYWxsUmVzb2x2ZVNvdXJjZW1hcCgnaW5saW5lJykpLnRvQmUoXG4gICAgICAnZXh0ZXJuYWwnXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3VzZXMgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBjb25maWcgaXMgbm90IHNldCcsICgpID0+IHtcbiAgICBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVAgPSAnZmFsc2UnO1xuICAgIGV4cGVjdChjcmVhdGVCdWlsZGVyKCkuY2FsbFJlc29sdmVTb3VyY2VtYXAoJ2lubGluZScpKS50b0JlKGZhbHNlKTtcblxuICAgIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUCA9ICd0cnVlJztcbiAgICBleHBlY3QoY3JlYXRlQnVpbGRlcigpLmNhbGxSZXNvbHZlU291cmNlbWFwKGZhbHNlKSkudG9CZSh0cnVlKTtcblxuICAgIGZvciAoY29uc3QgbW9kZSBvZiBbJ2lubGluZScsICdsaW5rZWQnLCAnZXh0ZXJuYWwnLCAnYm90aCddIGFzIGNvbnN0KSB7XG4gICAgICBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVAgPSBtb2RlO1xuICAgICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoKS5jYWxsUmVzb2x2ZVNvdXJjZW1hcCgnaW5saW5lJykpLnRvQmUobW9kZSk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnYWNjZXB0cyBcIjBcIiAvIFwiMVwiIGFzIGVudmlyb25tZW50IHZhcmlhYmxlIGFsaWFzZXMgZm9yIGZhbHNlIC8gdHJ1ZScsICgpID0+IHtcbiAgICBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVAgPSAnMCc7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoKS5jYWxsUmVzb2x2ZVNvdXJjZW1hcCgnaW5saW5lJykpLnRvQmUoZmFsc2UpO1xuXG4gICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQID0gJzEnO1xuICAgIGV4cGVjdChjcmVhdGVCdWlsZGVyKCkuY2FsbFJlc29sdmVTb3VyY2VtYXAoZmFsc2UpKS50b0JlKHRydWUpO1xuICB9KTtcblxuICBpdCgnZmFsbHMgYmFjayB0byBkZWZhdWx0IHdoZW4gZW52IHZhciBpcyBlbXB0eSBvciB1bnJlY29nbml6ZWQnLCAoKSA9PiB7XG4gICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQID0gJyc7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoKS5jYWxsUmVzb2x2ZVNvdXJjZW1hcCgnaW5saW5lJykpLnRvQmUoJ2lubGluZScpO1xuXG4gICAgLy8gU3VwcHJlc3MgdGhlIGV4cGVjdGVkIHdhcm5pbmdcbiAgICBjb25zdCBvcmlnaW5hbFdhcm4gPSBjb25zb2xlLndhcm47XG4gICAgY29uc29sZS53YXJuID0gKCkgPT4ge307XG4gICAgdHJ5IHtcbiAgICAgIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUCA9ICdub25zZW5zZSc7XG4gICAgICBleHBlY3QoY3JlYXRlQnVpbGRlcigpLmNhbGxSZXNvbHZlU291cmNlbWFwKCdpbmxpbmUnKSkudG9CZSgnaW5saW5lJyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGNvbnNvbGUud2FybiA9IG9yaWdpbmFsV2FybjtcbiAgICB9XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdzb3VyY2VtYXBzRW5hYmxlZCcsICgpID0+IHtcbiAgY29uc3Qgb3JpZ2luYWxFbnYgPSBwcm9jZXNzLmVudi5XT1JLRkxPV19TT1VSQ0VNQVA7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgZGVsZXRlIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUDtcbiAgfSk7XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBpZiAob3JpZ2luYWxFbnYgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVsZXRlIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUDtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvY2Vzcy5lbnYuV09SS0ZMT1dfU09VUkNFTUFQID0gb3JpZ2luYWxFbnY7XG4gICAgfVxuICB9KTtcblxuICBpdCgnaXMgdHJ1ZSBieSBkZWZhdWx0JywgKCkgPT4ge1xuICAgIGV4cGVjdChjcmVhdGVCdWlsZGVyKCkucHVibGljU291cmNlbWFwc0VuYWJsZWQpLnRvQmUodHJ1ZSk7XG4gIH0pO1xuXG4gIGl0KCdpcyBmYWxzZSB3aGVuIGNvbmZpZyBzb3VyY2VtYXAgaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoZmFsc2UpLnB1YmxpY1NvdXJjZW1hcHNFbmFibGVkKS50b0JlKGZhbHNlKTtcbiAgfSk7XG5cbiAgaXQoJ2lzIHRydWUgZm9yIGFueSBub24tZmFsc2UgY29uZmlnIHZhbHVlJywgKCkgPT4ge1xuICAgIGZvciAoY29uc3QgbW9kZSBvZiBbXG4gICAgICB0cnVlLFxuICAgICAgJ2lubGluZScsXG4gICAgICAnbGlua2VkJyxcbiAgICAgICdleHRlcm5hbCcsXG4gICAgICAnYm90aCcsXG4gICAgXSBhcyBjb25zdCkge1xuICAgICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIobW9kZSkucHVibGljU291cmNlbWFwc0VuYWJsZWQpLnRvQmUodHJ1ZSk7XG4gICAgfVxuICB9KTtcblxuICBpdCgnaXMgZmFsc2Ugd2hlbiBXT1JLRkxPV19TT1VSQ0VNQVAgZW52IGlzIGZhbHNlJywgKCkgPT4ge1xuICAgIHByb2Nlc3MuZW52LldPUktGTE9XX1NPVVJDRU1BUCA9ICdmYWxzZSc7XG4gICAgZXhwZWN0KGNyZWF0ZUJ1aWxkZXIoKS5wdWJsaWNTb3VyY2VtYXBzRW5hYmxlZCkudG9CZShmYWxzZSk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -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
@@ -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
@@ -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;IA+B5B,OAAO,CAAC,cAAc;YAuBR,gBAAgB;YAqBhB,oBAAoB;YA0BpB,oBAAoB;CAUnC"}
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;CAUnC"}
@@ -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 options = {
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
+ console.log('Creating combined bundle');
17
+ const { manifest } = await this.createCombinedBundle({
13
18
  inputFiles,
19
+ stepsOutfile: stepsBundlePath,
20
+ flowOutfile: workflowBundlePath,
14
21
  tsconfigPath,
15
- };
16
- const stepsManifest = await this.buildStepsBundle(options);
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,35 +30,6 @@ 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
  console.log('Creating webhook bundle at', this.config.webhookBundlePath);
64
35
  const webhookBundlePath = this.resolvePath(this.config.webhookBundlePath);
@@ -68,4 +39,4 @@ export class StandaloneBuilder extends BaseBuilder {
68
39
  });
69
40
  }
70
41
  }
71
- //# sourceMappingURL=standalone.js.map
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhbG9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdGFuZGFsb25lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdoRCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsV0FBVztJQUNoRCxZQUFZLE1BQXNCO1FBQ2hDLEtBQUssQ0FBQztZQUNKLEdBQUcsTUFBTTtZQUNULElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUNaLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzlDLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFbkQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FDaEMsQ0FBQztRQUNGLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM1QyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUUvQyxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFFeEMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQ25ELFVBQVU7WUFDVixZQUFZLEVBQUUsZUFBZTtZQUM3QixXQUFXLEVBQUUsa0JBQWtCO1lBQy9CLFlBQVk7WUFDWixpQkFBaUIsRUFBRSxJQUFJO1NBQ3hCLENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFbEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUN4QixrQkFBa0I7WUFDbEIsV0FBVztZQUNYLFFBQVE7U0FDVCxDQUFDLENBQUM7UUFFSCxNQUFNLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFTyxLQUFLLENBQUMsb0JBQW9CO1FBQ2hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRXpFLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDMUUsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFOUMsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDN0IsT0FBTyxFQUFFLGlCQUFpQjtTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQnVpbGRlciB9IGZyb20gJy4vYmFzZS1idWlsZGVyLmpzJztcbmltcG9ydCB0eXBlIHsgV29ya2Zsb3dDb25maWcgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IGNsYXNzIFN0YW5kYWxvbmVCdWlsZGVyIGV4dGVuZHMgQmFzZUJ1aWxkZXIge1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IFdvcmtmbG93Q29uZmlnKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgZGlyczogWycuJ10sXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBidWlsZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBpbnB1dEZpbGVzID0gYXdhaXQgdGhpcy5nZXRJbnB1dEZpbGVzKCk7XG4gICAgY29uc3QgdHNjb25maWdQYXRoID0gYXdhaXQgdGhpcy5maW5kVHNDb25maWdQYXRoKCk7XG5cbiAgICBjb25zdCBzdGVwc0J1bmRsZVBhdGggPSB0aGlzLnJlc29sdmVQYXRoKHRoaXMuY29uZmlnLnN0ZXBzQnVuZGxlUGF0aCk7XG4gICAgY29uc3Qgd29ya2Zsb3dCdW5kbGVQYXRoID0gdGhpcy5yZXNvbHZlUGF0aChcbiAgICAgIHRoaXMuY29uZmlnLndvcmtmbG93c0J1bmRsZVBhdGhcbiAgICApO1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlRGlyZWN0b3J5KHN0ZXBzQnVuZGxlUGF0aCk7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVEaXJlY3Rvcnkod29ya2Zsb3dCdW5kbGVQYXRoKTtcblxuICAgIGNvbnNvbGUubG9nKCdDcmVhdGluZyBjb21iaW5lZCBidW5kbGUnKTtcblxuICAgIGNvbnN0IHsgbWFuaWZlc3QgfSA9IGF3YWl0IHRoaXMuY3JlYXRlQ29tYmluZWRCdW5kbGUoe1xuICAgICAgaW5wdXRGaWxlcyxcbiAgICAgIHN0ZXBzT3V0ZmlsZTogc3RlcHNCdW5kbGVQYXRoLFxuICAgICAgZmxvd091dGZpbGU6IHdvcmtmbG93QnVuZGxlUGF0aCxcbiAgICAgIHRzY29uZmlnUGF0aCxcbiAgICAgIGJ1bmRsZUZpbmFsT3V0cHV0OiB0cnVlLFxuICAgIH0pO1xuXG4gICAgYXdhaXQgdGhpcy5idWlsZFdlYmhvb2tGdW5jdGlvbigpO1xuXG4gICAgY29uc3QgbWFuaWZlc3REaXIgPSB0aGlzLnJlc29sdmVQYXRoKCcud2VsbC1rbm93bi93b3JrZmxvdy92MScpO1xuICAgIGF3YWl0IHRoaXMuY3JlYXRlTWFuaWZlc3Qoe1xuICAgICAgd29ya2Zsb3dCdW5kbGVQYXRoLFxuICAgICAgbWFuaWZlc3REaXIsXG4gICAgICBtYW5pZmVzdCxcbiAgICB9KTtcblxuICAgIGF3YWl0IHRoaXMuY3JlYXRlQ2xpZW50TGlicmFyeSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBidWlsZFdlYmhvb2tGdW5jdGlvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmxvZygnQ3JlYXRpbmcgd2ViaG9vayBidW5kbGUgYXQnLCB0aGlzLmNvbmZpZy53ZWJob29rQnVuZGxlUGF0aCk7XG5cbiAgICBjb25zdCB3ZWJob29rQnVuZGxlUGF0aCA9IHRoaXMucmVzb2x2ZVBhdGgodGhpcy5jb25maWcud2ViaG9va0J1bmRsZVBhdGgpO1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlRGlyZWN0b3J5KHdlYmhvb2tCdW5kbGVQYXRoKTtcblxuICAgIGF3YWl0IHRoaXMuY3JlYXRlV2ViaG9va0J1bmRsZSh7XG4gICAgICBvdXRmaWxlOiB3ZWJob29rQnVuZGxlUGF0aCxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,7 +1,7 @@
1
1
  import type { Plugin } from 'esbuild';
2
2
  import { type WorkflowManifest } from './apply-swc-transform.js';
3
3
  export interface SwcPluginOptions {
4
- mode: 'step' | 'workflow' | 'client';
4
+ mode: 'step' | 'workflow';
5
5
  entriesToBundle?: string[];
6
6
  outdir?: string;
7
7
  projectRoot?: string;
@@ -18,6 +18,15 @@ export interface SwcPluginOptions {
18
18
  * breaks them because the .js file doesn't exist on disk.
19
19
  */
20
20
  rewriteTsExtensions?: boolean;
21
+ /**
22
+ * Bundle project-local files that are transitively imported by step entries.
23
+ *
24
+ * Keep this disabled when a downstream bundler consumes the generated step
25
+ * bundle because that bundler can resolve the externalized local imports.
26
+ * Enable it for direct runtime loading, where Node imports the generated step
27
+ * bundle from disk without a later bundling pass.
28
+ */
29
+ bundleTransitiveLocalStepDependencies?: boolean;
21
30
  /**
22
31
  * Absolute file paths of discovered workflow/step/serde entries whose
23
32
  * 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":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,0BAA0B,CAAC;AAOlC,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAC;IACrC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAsCD,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAgTjE"}
1
+ {"version":3,"file":"swc-esbuild-plugin.d.ts","sourceRoot":"","sources":["../src/swc-esbuild-plugin.ts"],"names":[],"mappings":"AAIA,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,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;AA0CD,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAqWjE"}
@@ -4,6 +4,7 @@ import { promisify } from 'node:util';
4
4
  import enhancedResolveOrig from 'enhanced-resolve';
5
5
  import { applySwcTransform, } from './apply-swc-transform.js';
6
6
  import { jsTsRegex, parentHasChild, } from './discover-entries-esbuild-plugin.js';
7
+ import { resolveModuleSpecifier } from './module-specifier.js';
7
8
  import { resolveWorkflowAliasRelativePath } from './workflow-alias.js';
8
9
  const NODE_RESOLVE_OPTIONS = {
9
10
  dependencyType: 'commonjs',
@@ -39,6 +40,9 @@ const NODE_ESM_RESOLVE_OPTIONS = {
39
40
  dependencyType: 'esm',
40
41
  conditionNames: ['node', 'import'],
41
42
  };
43
+ function normalizePath(path) {
44
+ return path.replace(/\\/g, '/');
45
+ }
42
46
  export function createSwcPlugin(options) {
43
47
  return {
44
48
  name: 'swc-workflow-plugin',
@@ -75,17 +79,33 @@ export function createSwcPlugin(options) {
75
79
  const specifier = args.path;
76
80
  const specifierIsPath = specifier.startsWith('.') || specifier.startsWith('/');
77
81
  let resolvedPath;
78
- // Determines whether the external path should be relativized
79
- // (project-local file) or kept as a bare specifier (npm package).
80
- let shouldMakeRelative = specifierIsPath;
82
+ // Path-style specifiers (./foo, ../foo, /abs/path) externalize as
83
+ // relative paths from `outdir`. Bare specifiers (npm packages)
84
+ // externalize as-is so Node can resolve them at runtime.
85
+ const shouldMakeRelative = specifierIsPath;
81
86
  if (specifierIsPath) {
82
87
  resolvedPath = await enhancedResolve(args.resolveDir, specifier);
83
88
  }
84
89
  else {
85
90
  // Resolve from project root so nested deps aren't externalized
86
91
  resolvedPath = await enhancedResolve(build.initialOptions.absWorkingDir || process.cwd(), specifier).catch(() => undefined); // swallow so esbuild fallback below can try
87
- // Fall back to esbuild for aliases/tsconfig paths,
88
- // but only accept project-local results
92
+ // Fall back to esbuild for aliases/tsconfig paths.
93
+ //
94
+ // If the specifier resolves to a project-local file via an
95
+ // alias/path mapping (e.g. tsconfig `paths`, esbuild `alias`,
96
+ // self-referencing package names like `@my-pkg/lib/foo`), we
97
+ // bundle it inline rather than externalizing.
98
+ //
99
+ // Externalizing such files is unsafe: we'd emit a relative
100
+ // import to the original source on disk, but that source can
101
+ // contain further alias imports. At runtime, Node's ESM loader
102
+ // doesn't know about tsconfig paths or build-time aliases, so
103
+ // those transitive imports throw `ERR_MODULE_NOT_FOUND` /
104
+ // `Package subpath ... is not defined by "exports"`.
105
+ //
106
+ // Bundling inline ensures alias-based imports are resolved at
107
+ // build time (where the alias map is known) and the runtime
108
+ // never sees an unresolvable specifier.
89
109
  if (!resolvedPath) {
90
110
  const esbuildResult = await build.resolve(specifier, {
91
111
  resolveDir: args.resolveDir,
@@ -99,15 +119,33 @@ export function createSwcPlugin(options) {
99
119
  .replace(/\\/g, '/')
100
120
  .includes('/node_modules/');
101
121
  if (isProjectLocalFile) {
102
- resolvedPath = esbuildResult.path;
103
- shouldMakeRelative = true;
122
+ // Let esbuild bundle this aliased project-local file inline
123
+ // (return null to defer to esbuild's normal pipeline). The
124
+ // SWC `onLoad` handler will still process it.
125
+ return null;
126
+ }
127
+ else if (options.entriesToBundle &&
128
+ esbuildResult.path?.endsWith('.node')) {
129
+ return {
130
+ external: true,
131
+ path: specifier,
132
+ };
104
133
  }
105
134
  }
106
135
  }
107
136
  if (!resolvedPath)
108
137
  return null;
109
138
  // Normalize to forward slashes for cross-platform comparison
110
- const normalizedResolvedPath = resolvedPath.replace(/\\/g, '/');
139
+ const normalizedResolvedPath = normalizePath(resolvedPath);
140
+ const workingDir = build.initialOptions.absWorkingDir || process.cwd();
141
+ const projectRoot = options.projectRoot || workingDir;
142
+ if (options.entriesToBundle &&
143
+ normalizedResolvedPath.endsWith('.node')) {
144
+ return {
145
+ external: true,
146
+ path: specifier,
147
+ };
148
+ }
111
149
  // Check if this module is a discovered entry whose SWC-transformed
112
150
  // code contains side effects (workflow/step/class registration).
113
151
  // Override the package.json "sideEffects": false so esbuild does not
@@ -128,6 +166,17 @@ export function createSwcPlugin(options) {
128
166
  shouldBundle = true;
129
167
  break;
130
168
  }
169
+ // Bundle project-local source files that are imported by a
170
+ // step/serde entry so direct runtime loaders do not see raw TS
171
+ // extensionless imports. Keep package dependencies external
172
+ // unless they are themselves in entriesToBundle or are parents
173
+ // of a discovered workflow/step/serde file via the check above.
174
+ if (options.bundleTransitiveLocalStepDependencies &&
175
+ isProjectLocalFile(normalizedResolvedPath, projectRoot) &&
176
+ parentHasChild(normalizedEntry, normalizedResolvedPath)) {
177
+ shouldBundle = true;
178
+ break;
179
+ }
131
180
  }
132
181
  if (shouldBundle) {
133
182
  // Let esbuild bundle this entry, but override sideEffects if needed.
@@ -275,4 +324,10 @@ export function createSwcPlugin(options) {
275
324
  },
276
325
  };
277
326
  }
278
- //# sourceMappingURL=swc-esbuild-plugin.js.map
327
+ function isProjectLocalFile(filePath, projectRoot) {
328
+ if (normalizePath(filePath).includes('/node_modules/')) {
329
+ return false;
330
+ }
331
+ return (resolveModuleSpecifier(filePath, projectRoot).moduleSpecifier === undefined);
332
+ }
333
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3djLWVzYnVpbGQtcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N3Yy1lc2J1aWxkLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sbUJBQW1CLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQsT0FBTyxFQUNMLGlCQUFpQixHQUVsQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsY0FBYyxHQUNmLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUF5Q3ZFLE1BQU0sb0JBQW9CLEdBQUc7SUFDM0IsY0FBYyxFQUFFLFVBQVU7SUFDMUIsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO0lBQ3pCLGFBQWEsRUFBRSxDQUFDLFNBQVMsQ0FBQztJQUMxQixhQUFhLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDMUIsY0FBYyxFQUFFLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQztJQUNuQyxnQkFBZ0IsRUFBRSxDQUFDLGNBQWMsQ0FBQztJQUNsQyxVQUFVLEVBQUU7UUFDVixLQUFLO1FBQ0wsTUFBTTtRQUNOLE1BQU07UUFDTixNQUFNO1FBQ04sTUFBTTtRQUNOLE1BQU07UUFDTixLQUFLO1FBQ0wsTUFBTTtRQUNOLE9BQU87UUFDUCxPQUFPO0tBQ1I7SUFDRCxpQkFBaUIsRUFBRSxLQUFLO0lBQ3hCLFFBQVEsRUFBRSxJQUFJO0lBQ2QsVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ3BCLFNBQVMsRUFBRSxDQUFD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LE9BQU87d0JBQ0wsUUFBUSxFQUFFLGVBQWU7d0JBQ3pCLE1BQU07cUJBQ1AsQ0FBQztnQkFDSixDQUFDO2dCQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7b0JBQ2YsTUFBTSxZQUFZLEdBQ2hCLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDekQsT0FBTyxDQUFDLEtBQUssQ0FDWCw0QkFBNEIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUN4QyxZQUFZLENBQ2IsQ0FBQztvQkFDRixPQUFPO3dCQUNMLE1BQU0sRUFBRTs0QkFDTjtnQ0FDRSxJQUFJLEVBQUUseUJBQXlCLFlBQVksRUFBRTtnQ0FDN0MsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFOzZCQUNsRDt5QkFDRjtxQkFDRixDQUFDO2dCQUNKLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsUUFBZ0IsRUFBRSxXQUFtQjtJQUMvRCxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1FBQ3ZELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sQ0FDTCxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUMsZUFBZSxLQUFLLFNBQVMsQ0FDNUUsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgcmVsYXRpdmUgfSBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCBlbmhhbmNlZFJlc29sdmVPcmlnIGZyb20gJ2VuaGFuY2VkLXJlc29sdmUnO1xuaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tICdlc2J1aWxkJztcbmltcG9ydCB7XG4gIGFwcGx5U3djVHJhbnNmb3JtLFxuICB0eXBlIFdvcmtmbG93TWFuaWZlc3QsXG59IGZyb20gJy4vYXBwbHktc3djLXRyYW5zZm9ybS5qcyc7XG5pbXBvcnQge1xuICBqc1RzUmVnZXgsXG4gIHBhcmVudEhhc0NoaWxkLFxufSBmcm9tICcuL2Rpc2NvdmVyLWVudHJpZXMtZXNidWlsZC1wbHVnaW4uanMnO1xuaW1wb3J0IHsgcmVzb2x2ZU1vZHVsZVNwZWNpZmllciB9IGZyb20gJy4vbW9kdWxlLXNwZWNpZmllci5qcyc7XG5pbXBvcnQgeyByZXNvbHZlV29ya2Zsb3dBbGlhc1JlbGF0aXZlUGF0aCB9IGZyb20gJy4vd29ya2Zsb3ctYWxpYXMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN3Y1BsdWdpbk9wdGlvbnMge1xuICBtb2RlOiAnc3RlcCcgfCAnd29ya2Zsb3cnO1xuICBlbnRyaWVzVG9CdW5kbGU/OiBzdHJpbmdbXTtcbiAgb3V0ZGlyPzogc3RyaW5nO1xuICBwcm9qZWN0Um9vdD86IHN0cmluZztcbiAgd29ya2Zsb3dNYW5pZmVzdD86IFdvcmtmbG93TWFuaWZlc3Q7XG4gIC8qKlxuICAgKiBSZXdyaXRlIFR5cGVTY3JpcHQgZXh0ZW5zaW9ucyAoLnRzLCAudHN4LCAubXRzLCAuY3RzKSB0byB0aGVpciBKU1xuICAgKiBlcXVpdmFsZW50cyAoLmpzLCAubWpzLCAuY2pzKSBpbiBleHRlcm5hbGl6ZWQgaW1wb3J0IHBhdGhzLlxuICAgKlxuICAgKiBFbmFibGUgdGhpcyB3aGVuIHRoZSBvdXRwdXQgYnVuZGxlIGlzIGNvbnN1bWVkIGRpcmVjdGx5IGJ5IE5vZGUncyBuYXRpdmVcbiAgICogRVNNIGxvYWRlciAoZS5nLiB2aXRlc3QpLCB3aGljaCBjYW5ub3QgcmVzb2x2ZSAudHMgZXh0ZW5zaW9ucy5cbiAgICpcbiAgICogTGVhdmUgZGlzYWJsZWQgKGRlZmF1bHQpIHdoZW4gYSBkb3duc3RyZWFtIGJ1bmRsZXIgKHdlYnBhY2ssIFZpdGUsIGV0Yy4pXG4gICAqIGhhbmRsZXMgcmVzb2x1dGlvbiDigJQgdGhvc2UgdG9vbHMgcmVzb2x2ZSAudHMgbmF0aXZlbHkgYW5kIHJld3JpdGluZ1xuICAgKiBicmVha3MgdGhlbSBiZWNhdXNlIHRoZSAuanMgZmlsZSBkb2Vzbid0IGV4aXN0IG9uIGRpc2suXG4gICAqL1xuICByZXdyaXRlVHNFeHRlbnNpb25zPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEJ1bmRsZSBwcm9qZWN0LWxvY2FsIGZpbGVzIHRoYXQgYXJlIHRyYW5zaXRpdmVseSBpbXBvcnRlZCBieSBzdGVwIGVudHJpZXMuXG4gICAqXG4gICAqIEtlZXAgdGhpcyBkaXNhYmxlZCB3aGVuIGEgZG93bnN0cmVhbSBidW5kbGVyIGNvbnN1bWVzIHRoZSBnZW5lcmF0ZWQgc3RlcFxuICAgKiBidW5kbGUgYmVjYXVzZSB0aGF0IGJ1bmRsZXIgY2FuIHJlc29sdmUgdGhlIGV4dGVybmFsaXplZCBsb2NhbCBpbXBvcnRzLlxuICAgKiBFbmFibGUgaXQgZm9yIGRpcmVjdCBydW50aW1lIGxvYWRpbmcsIHdoZXJlIE5vZGUgaW1wb3J0cyB0aGUgZ2VuZXJhdGVkIHN0ZXBcbiAgICogYnVuZGxlIGZyb20gZGlzayB3aXRob3V0IGEgbGF0ZXIgYnVuZGxpbmcgcGFzcy5cbiAgICovXG4gIGJ1bmRsZVRyYW5zaXRpdmVMb2NhbFN0ZXBEZXBlbmRlbmNpZXM/OiBib29sZWFuO1xuICAvKipcbiAgICogQWJzb2x1dGUgZmlsZSBwYXRocyBvZiBkaXNjb3ZlcmVkIHdvcmtmbG93L3N0ZXAvc2VyZGUgZW50cmllcyB3aG9zZVxuICAgKiBpbXBvcnRzIG11c3QgYmUgdHJlYXRlZCBhcyBzaWRlLWVmZmVjdGZ1bC5cbiAgICpcbiAgICogVGhlIFNXQyBjb21waWxlciB0cmFuc2Zvcm0gaW5qZWN0cyByZWdpc3RyYXRpb24gY2FsbHMgKHdvcmtmbG93IElEcyxcbiAgICogc3RlcCBJRHMsIGNsYXNzIHNlcmlhbGl6YXRpb24sIGV0Yy4pIGludG8gdGhlc2UgZmlsZXMuIFdpdGhvdXQgdGhpc1xuICAgKiBvdmVycmlkZSwgZXNidWlsZCBob25vdXJzIGBcInNpZGVFZmZlY3RzXCI6IGZhbHNlYCBmcm9tIHRoZSBwYWNrYWdlJ3NcbiAgICogYHBhY2thZ2UuanNvbmAgYW5kIHNpbGVudGx5IGRyb3BzIGJhcmUgaW1wb3J0cyBvZiB0aGVzZSBtb2R1bGVzLlxuICAgKi9cbiAgc2lkZUVmZmVjdEVudHJpZXM/OiBzdHJpbmdbXTtcbn1cblxuY29uc3QgTk9ERV9SRVNPTFZFX09QVElPTlMgPSB7XG4gIGRlcGVuZGVuY3lUeXBlOiAnY29tbW9uanMnLFxuICBtb2R1bGVzOiBbJ25vZGVfbW9kdWxlcyddLFxuICBleHBvcnRzRmllbGRzOiBbJ2V4cG9ydHMnXSxcbiAgaW1wb3J0c0ZpZWxkczogWydpbXBvcnRzJ10sXG4gIGNvbmRpdGlvbk5hbWVzOiBbJ25vZGUnLCAncmVxdWlyZSddLFxuICBkZXNjcmlwdGlvbkZpbGVzOiBbJ3BhY2thZ2UuanNvbiddLFxuICBleHRlbnNpb25zOiBbXG4gICAgJy50cycsXG4gICAgJy50c3gnLFxuICAgICcubXRzJyxcbiAgICAnLmN0cycsXG4gICAgJy5janMnLFxuICAgICcubWpzJyxcbiAgICAnLmpzJyxcbiAgICAnLmpzeCcsXG4gICAgJy5qc29uJyxcbiAgICAnLm5vZGUnLFxuICBdLFxuICBlbmZvcmNlRXh0ZW5zaW9uczogZmFsc2UsXG4gIHN5bWxpbmtzOiB0cnVlLFxuICBtYWluRmllbGRzOiBbJ21haW4nXSxcbiAgbWFpbkZpbGVzOiBbJ2luZGV4J10sXG4gIHJvb3RzOiBbXSxcbiAgZnVsbHlTcGVjaWZpZWQ6IGZhbHNlLFxuICBwcmVmZXJSZWxhdGl2ZTogZmFsc2UsXG4gIHByZWZlckFic29sdXRlOiBmYWxzZSxcbiAgcmVzdHJpY3Rpb25zOiBbXSxcbn07XG5cbmNvbnN0IE5PREVfRVNNX1JFU09MVkVfT1BUSU9OUyA9IHtcbiAgLi4uTk9ERV9SRVNPTFZFX09QVElPTlMsXG4gIGRlcGVuZGVuY3lUeXBlOiAnZXNtJyxcbiAgY29uZGl0aW9uTmFtZXM6IFsnbm9kZScsICdpbXBvcnQnXSxcbn07XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3djUGx1Z2luKG9wdGlvbnM6IFN3Y1BsdWdpbk9wdGlvbnMpOiBQbHVnaW4ge1xuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzd2Mtd29ya2Zsb3ctcGx1Z2luJyxcbiAgICBzZXR1cChidWlsZCkge1xuICAgICAgLy8gZXZlcnl0aGluZyBpcyBleHRlcm5hbCB1bmxlc3MgZXhwbGljaXRseSBjb25maWd1cmVkXG4gICAgICAvLyB0byBiZSBidW5kbGVkXG4gICAgICBjb25zdCBjanNSZXNvbHZlciA9IHByb21pc2lmeShcbiAgICAgICAgZW5oYW5jZWRSZXNvbHZlT3JpZy5jcmVhdGUoTk9ERV9SRVNPTFZFX09QVElPTlMpXG4gICAgICApO1xuICAgICAgY29uc3QgZXNtUmVzb2x2ZXIgPSBwcm9taXNpZnkoXG4gICAgICAgIGVuaGFuY2VkUmVzb2x2ZU9yaWcuY3JlYXRlKE5PREVfRVNNX1JFU09MVkVfT1BUSU9OUylcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IGVuaGFuY2VkUmVzb2x2ZSA9IGFzeW5jIChjb250ZXh0OiBzdHJpbmcsIHBhdGg6IHN0cmluZykgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBhd2FpdCBlc21SZXNvbHZlcihjb250ZXh0LCBwYXRoKTtcbiAgICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICAgIHJldHVybiBjanNSZXNvbHZlcihjb250ZXh0LCBwYXRoKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgLy8gUHJlLWNvbXB1dGUgdGhlIG5vcm1hbGl6ZWQgc2lkZS1lZmZlY3QgZW50cmllcyBzZXQgZm9yIE8oMSkgbG9va3Vwcy5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRTaWRlRWZmZWN0RW50cmllcyA9IG5ldyBTZXQoXG4gICAgICAgIG9wdGlvbnMuc2lkZUVmZmVjdEVudHJpZXM/Lm1hcCgoZSkgPT4gZS5yZXBsYWNlKC9cXFxcL2csICcvJykpXG4gICAgICApO1xuXG4gICAgICBidWlsZC5vblJlc29sdmUoeyBmaWx0ZXI6IC8uKi8gfSwgYXN5bmMgKGFyZ3MpID0+IHtcbiAgICAgICAgaWYgKGFyZ3MucGx1Z2luRGF0YT8uc2tpcFN3Y1BsdWdpbikgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICFvcHRpb25zLmVudHJpZXNUb0J1bmRsZSAmJlxuICAgICAgICAgIG5vcm1hbGl6ZWRTaWRlRWZmZWN0RW50cmllcy5zaXplID09PSAwXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2hlbiBvbmx5IHNpZGVFZmZlY3RFbnRyaWVzIGlzIHNldCAobm8gZW50cmllc1RvQnVuZGxlKSwgd2Ugb25seVxuICAgICAgICAvLyBuZWVkIHRvIG92ZXJyaWRlIHNpZGVFZmZlY3RzIGZvciB0b3AtbGV2ZWwgYmFyZSBpbXBvcnRzIOKAlCB0eXBpY2FsbHlcbiAgICAgICAgLy8gZnJvbSB0aGUgdmlydHVhbCBlbnRyeS4gU2tpcCByZXNvbHV0aW9uIGZvciB0cmFuc2l0aXZlIGltcG9ydHNcbiAgICAgICAgLy8gKGR5bmFtaWMgaW1wb3J0cywgcmVxdWlyZXMsIGV0Yy4pIHRvIGF2b2lkIHVubmVjZXNzYXJ5IG92ZXJoZWFkLlxuICAgICAgICBpZiAoIW9wdGlvbnMuZW50cmllc1RvQnVuZGxlICYmIGFyZ3Mua2luZCAhPT0gJ2ltcG9ydC1zdGF0ZW1lbnQnKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHNwZWNpZmllciA9IGFyZ3MucGF0aDtcbiAgICAgICAgICBjb25zdCBzcGVjaWZpZXJJc1BhdGggPVxuICAgICAgICAgICAgc3BlY2lmaWVyLnN0YXJ0c1dpdGgoJy4nKSB8fCBzcGVjaWZpZXIuc3RhcnRzV2l0aCgnLycpO1xuXG4gICAgICAgICAgbGV0IHJlc29sdmVkUGF0aDogc3RyaW5nIHwgZmFsc2UgfCB1bmRlZmluZWQ7XG4gICAgICAgICAgLy8gUGF0aC1zdHlsZSBzcGVjaWZpZXJzICguL2ZvbywgLi4vZm9vLCAvYWJzL3BhdGgpIGV4dGVybmFsaXplIGFzXG4gICAgICAgICAgLy8gcmVsYXRpdmUgcGF0aHMgZnJvbSBgb3V0ZGlyYC4gQmFyZSBzcGVjaWZpZXJzIChucG0gcGFja2FnZXMpXG4gICAgICAgICAgLy8gZXh0ZXJuYWxpemUgYXMtaXMgc28gTm9kZSBjYW4gcmVzb2x2ZSB0aGVtIGF0IHJ1bnRpbWUuXG4gICAgICAgICAgY29uc3Qgc2hvdWxkTWFrZVJlbGF0aXZlID0gc3BlY2lmaWVySXNQYXRoO1xuXG4gICAgICAgICAgaWYgKHNwZWNpZmllcklzUGF0aCkge1xuICAgICAgICAgICAgcmVzb2x2ZWRQYXRoID0gYXdhaXQgZW5oYW5jZWRSZXNvbHZlKGFyZ3MucmVzb2x2ZURpciwgc3BlY2lmaWVyKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gUmVzb2x2ZSBmcm9tIHByb2plY3Qgcm9vdCBzbyBuZXN0ZWQgZGVwcyBhcmVuJ3QgZXh0ZXJuYWxpemVkXG4gICAgICAgICAgICByZXNvbHZlZFBhdGggPSBhd2FpdCBlbmhhbmNlZFJlc29sdmUoXG4gICAgICAgICAgICAgIGJ1aWxkLmluaXRpYWxPcHRpb25zLmFic1dvcmtpbmdEaXIgfHwgcHJvY2Vzcy5jd2QoKSxcbiAgICAgICAgICAgICAgc3BlY2lmaWVyXG4gICAgICAgICAgICApLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7IC8vIHN3YWxsb3cgc28gZXNidWlsZCBmYWxsYmFjayBiZWxvdyBjYW4gdHJ5XG5cbiAgICAgICAgICAgIC8vIEZhbGwgYmFjayB0byBlc2J1aWxkIGZvciBhbGlhc2VzL3RzY29uZmlnIHBhdGhzLlxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIElmIHRoZSBzcGVjaWZpZXIgcmVzb2x2ZXMgdG8gYSBwcm9qZWN0LWxvY2FsIGZpbGUgdmlhIGFuXG4gICAgICAgICAgICAvLyBhbGlhcy9wYXRoIG1hcHBpbmcgKGUuZy4gdHNjb25maWcgYHBhdGhzYCwgZXNidWlsZCBgYWxpYXNgLFxuICAgICAgICAgICAgLy8gc2VsZi1yZWZlcmVuY2luZyBwYWNrYWdlIG5hbWVzIGxpa2UgYEBteS1wa2cvbGliL2Zvb2ApLCB3ZVxuICAgICAgICAgICAgLy8gYnVuZGxlIGl0IGlubGluZSByYXRoZXIgdGhhbiBleHRlcm5hbGl6aW5nLlxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIC8vIEV4dGVybmFsaXppbmcgc3VjaCBmaWxlcyBpcyB1bnNhZmU6IHdlJ2QgZW1pdCBhIHJlbGF0aXZlXG4gICAgICAgICAgICAvLyBpbXBvcnQgdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBvbiBkaXNrLCBidXQgdGhhdCBzb3VyY2UgY2FuXG4gICAgICAgICAgICAvLyBjb250YWluIGZ1cnRoZXIgYWxpYXMgaW1wb3J0cy4gQXQgcnVudGltZSwgTm9kZSdzIEVTTSBsb2FkZXJcbiAgICAgICAgICAgIC8vIGRvZXNuJ3Qga25vdyBhYm91dCB0c2NvbmZpZyBwYXRocyBvciBidWlsZC10aW1lIGFsaWFzZXMsIHNvXG4gICAgICAgICAgICAvLyB0aG9zZSB0cmFuc2l0aXZlIGltcG9ydHMgdGhyb3cgYEVSUl9NT0RVTEVfTk9UX0ZPVU5EYCAvXG4gICAgICAgICAgICAvLyBgUGFja2FnZSBzdWJwYXRoIC4uLiBpcyBub3QgZGVmaW5lZCBieSBcImV4cG9ydHNcImAuXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gQnVuZGxpbmcgaW5saW5lIGVuc3VyZXMgYWxpYXMtYmFzZWQgaW1wb3J0cyBhcmUgcmVzb2x2ZWQgYXRcbiAgICAgICAgICAgIC8vIGJ1aWxkIHRpbWUgKHdoZXJlIHRoZSBhbGlhcyBtYXAgaXMga25vd24pIGFuZCB0aGUgcnVudGltZVxuICAgICAgICAgICAgLy8gbmV2ZXIgc2VlcyBhbiB1bnJlc29sdmFibGUgc3BlY2lmaWVyLlxuICAgICAgICAgICAgaWYgKCFyZXNvbHZlZFBhdGgpIHtcbiAgICAgICAgICAgICAgY29uc3QgZXNidWlsZFJlc3VsdCA9IGF3YWl0IGJ1aWxkLnJlc29sdmUoc3BlY2lmaWVyLCB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZURpcjogYXJncy5yZXNvbHZlRGlyLFxuICAgICAgICAgICAgICAgIGtpbmQ6IGFyZ3Mua2luZCxcbiAgICAgICAgICAgICAgICBwbHVnaW5EYXRhOiB7IHNraXBTd2NQbHVnaW46IHRydWUgfSxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGNvbnN0IGRpZFJlc29sdmUgPVxuICAgICAgICAgICAgICAgICEhZXNidWlsZFJlc3VsdC5wYXRoICYmICFlc2J1aWxkUmVzdWx0LmVycm9ycy5sZW5ndGg7XG4gICAgICAgICAgICAgIGNvbnN0IGlzUHJvamVjdExvY2FsRmlsZSA9XG4gICAgICAgICAgICAgICAgZGlkUmVzb2x2ZSAmJlxuICAgICAgICAgICAgICAgICFlc2J1aWxkUmVzdWx0LmV4dGVybmFsICYmXG4gICAgICAgICAgICAgICAgIWVzYnVpbGRSZXN1bHQucGF0aFxuICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgJy8nKVxuICAgICAgICAgICAgICAgICAgLmluY2x1ZGVzKCcvbm9kZV9tb2R1bGVzLycpO1xuICAgICAgICAgICAgICBpZiAoaXNQcm9qZWN0TG9jYWxGaWxlKSB7XG4gICAgICAgICAgICAgICAgLy8gTGV0IGVzYnVpbGQgYnVuZGxlIHRoaXMgYWxpYXNlZCBwcm9qZWN0LWxvY2FsIGZpbGUgaW5saW5lXG4gICAgICAgICAgICAgICAgLy8gKHJldHVybiBudWxsIHRvIGRlZmVyIHRvIGVzYnVpbGQncyBub3JtYWwgcGlwZWxpbmUpLiBUaGVcbiAgICAgICAgICAgICAgICAvLyBTV0MgYG9uTG9hZGAgaGFuZGxlciB3aWxsIHN0aWxsIHByb2Nlc3MgaXQuXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5lbnRyaWVzVG9CdW5kbGUgJiZcbiAgICAgICAgICAgICAgICBlc2J1aWxkUmVzdWx0LnBhdGg/LmVuZHNXaXRoKCcubm9kZScpXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICBleHRlcm5hbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIHBhdGg6IHNwZWNpZmllcixcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFyZXNvbHZlZFBhdGgpIHJldHVybiBudWxsO1xuXG4gICAgICAgICAgLy8gTm9ybWFsaXplIHRvIGZvcndhcmQgc2xhc2hlcyBmb3IgY3Jvc3MtcGxhdGZvcm0gY29tcGFyaXNvblxuICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRSZXNvbHZlZFBhdGggPSBub3JtYWxpemVQYXRoKHJlc29sdmVkUGF0aCk7XG4gICAgICAgICAgY29uc3Qgd29ya2luZ0RpciA9XG4gICAgICAgICAgICBidWlsZC5pbml0aWFsT3B0aW9ucy5hYnNXb3JraW5nRGlyIHx8IHByb2Nlc3MuY3dkKCk7XG4gICAgICAgICAgY29uc3QgcHJvamVjdFJvb3QgPSBvcHRpb25zLnByb2plY3RSb290IHx8IHdvcmtpbmdEaXI7XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBvcHRpb25zLmVudHJpZXNUb0J1bmRsZSAmJlxuICAgICAgICAgICAgbm9ybWFsaXplZFJlc29sdmVkUGF0aC5lbmRzV2l0aCgnLm5vZGUnKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZXh0ZXJuYWw6IHRydWUsXG4gICAgICAgICAgICAgIHBhdGg6IHNwZWNpZmllcixcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhpcyBtb2R1bGUgaXMgYSBkaXNjb3ZlcmVkIGVudHJ5IHdob3NlIFNXQy10cmFuc2Zvcm1lZFxuICAgICAgICAgIC8vIGNvZGUgY29udGFpbnMgc2lkZSBlZmZlY3RzICh3b3JrZmxvdy9zdGVwL2NsYXNzIHJlZ2lzdHJhdGlvbikuXG4gICAgICAgICAgLy8gT3ZlcnJpZGUgdGhlIHBhY2thZ2UuanNvbiBcInNpZGVFZmZlY3RzXCI6IGZhbHNlIHNvIGVzYnVpbGQgZG9lcyBub3RcbiAgICAgICAgICAvLyBkcm9wIGJhcmUgaW1wb3J0cyBvZiB0aGVzZSBtb2R1bGVzLlxuICAgICAgICAgIGNvbnN0IGhhc1NpZGVFZmZlY3RzID0gbm9ybWFsaXplZFNpZGVFZmZlY3RFbnRyaWVzLmhhcyhcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRSZXNvbHZlZFBhdGhcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKG9wdGlvbnMuZW50cmllc1RvQnVuZGxlKSB7XG4gICAgICAgICAgICBsZXQgc2hvdWxkQnVuZGxlID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVudHJ5VG9CdW5kbGUgb2Ygb3B0aW9ucy5lbnRyaWVzVG9CdW5kbGUpIHtcbiAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZEVudHJ5ID0gZW50cnlUb0J1bmRsZS5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG5cbiAgICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRSZXNvbHZlZFBhdGggPT09IG5vcm1hbGl6ZWRFbnRyeSkge1xuICAgICAgICAgICAgICAgIHNob3VsZEJ1bmRsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBpZiB0aGUgY3VycmVudCBlbnRyeSBpbXBvcnRzIGEgY2hpbGQgdGhhdCBuZWVkc1xuICAgICAgICAgICAgICAvLyB0byBiZSBidW5kbGVkIHRoZW4gaXQgbmVlZHMgdG8gYWxzbyBiZSBidW5kbGVkIHNvXG4gICAgICAgICAgICAgIC8vIHRoYXQgdGhlIGNoaWxkIGNhbiBoYXZlIG91ciB0cmFuc2Zvcm0gYXBwbGllZFxuICAgICAgICAgICAgICBpZiAocGFyZW50SGFzQ2hpbGQobm9ybWFsaXplZFJlc29sdmVkUGF0aCwgbm9ybWFsaXplZEVudHJ5KSkge1xuICAgICAgICAgICAgICAgIHNob3VsZEJ1bmRsZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyBCdW5kbGUgcHJvamVjdC1sb2NhbCBzb3VyY2UgZmlsZXMgdGhhdCBhcmUgaW1wb3J0ZWQgYnkgYVxuICAgICAgICAgICAgICAvLyBzdGVwL3NlcmRlIGVudHJ5IHNvIGRpcmVjdCBydW50aW1lIGxvYWRlcnMgZG8gbm90IHNlZSByYXcgVFNcbiAgICAgICAgICAgICAgLy8gZXh0ZW5zaW9ubGVzcyBpbXBvcnRzLiBLZWVwIHBhY2thZ2UgZGVwZW5kZW5jaWVzIGV4dGVybmFsXG4gICAgICAgICAgICAgIC8vIHVubGVzcyB0aGV5IGFyZSB0aGVtc2VsdmVzIGluIGVudHJpZXNUb0J1bmRsZSBvciBhcmUgcGFyZW50c1xuICAgICAgICAgICAgICAvLyBvZiBhIGRpc2NvdmVyZWQgd29ya2Zsb3cvc3RlcC9zZXJkZSBmaWxlIHZpYSB0aGUgY2hlY2sgYWJvdmUuXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBvcHRpb25zLmJ1bmRsZVRyYW5zaXRpdmVMb2NhbFN0ZXBEZXBlbmRlbmNpZXMgJiZcbiAgICAgICAgICAgICAgICBpc1Byb2plY3RMb2NhbEZpbGUobm9ybWFsaXplZFJlc29sdmVkUGF0aCwgcHJvamVjdFJvb3QpICYmXG4gICAgICAgICAgICAgICAgcGFyZW50SGFzQ2hpbGQobm9ybWFsaXplZEVudHJ5LCBub3JtYWxpemVkUmVzb2x2ZWRQYXRoKVxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzaG91bGRCdW5kbGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzaG91bGRCdW5kbGUpIHtcbiAgICAgICAgICAgICAgLy8gTGV0IGVzYnVpbGQgYnVuZGxlIHRoaXMgZW50cnksIGJ1dCBvdmVycmlkZSBzaWRlRWZmZWN0cyBpZiBuZWVkZWQuXG4gICAgICAgICAgICAgIC8vIFdlIG11c3QgcmV0dXJuIHRoZSByZXNvbHZlZCBgcGF0aGAgYWxvbmdzaWRlIGBzaWRlRWZmZWN0c2AgYmVjYXVzZVxuICAgICAgICAgICAgICAvLyByZXR1cm5pbmcgb25seSBgeyBzaWRlRWZmZWN0czogdHJ1ZSB9YCB3aXRob3V0IGEgcGF0aCBjYXVzZXMgZXNidWlsZFxuICAgICAgICAgICAgICAvLyB0byBmYWxsIHRocm91Z2ggdG8gaXRzIG93biByZXNvbHZlciwgd2hpY2ggcmUtcmVhZHMgdGhlIHBhY2thZ2UuanNvblxuICAgICAgICAgICAgICAvLyBhbmQgYXBwbGllcyBgXCJzaWRlRWZmZWN0c1wiOiBmYWxzZWAgZnJvbSB0aGVyZS5cbiAgICAgICAgICAgICAgcmV0dXJuIGhhc1NpZGVFZmZlY3RzXG4gICAgICAgICAgICAgICAgPyB7IHBhdGg6IHJlc29sdmVkUGF0aCwgc2lkZUVmZmVjdHM6IHRydWUgfVxuICAgICAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGV4dGVybmFsUGF0aDogc3RyaW5nO1xuICAgICAgICAgICAgaWYgKHNob3VsZE1ha2VSZWxhdGl2ZSkge1xuICAgICAgICAgICAgICAvLyBXaGVuIHRoZSByZXNvbHZlZCBmaWxlIGxpdmVzIGluc2lkZSBub2RlX21vZHVsZXMsIGxldFxuICAgICAgICAgICAgICAvLyBlc2J1aWxkIGJ1bmRsZSBpdCByYXRoZXIgdGhhbiBleHRlcm5hbGl6aW5nIHdpdGggYSBkZWVwbHlcbiAgICAgICAgICAgICAgLy8gbmVzdGVkIHJlbGF0aXZlIHBhdGguIERvd25zdHJlYW0gYnVuZGxlcnMgKFJvbGx1cC9WaXRlKVxuICAgICAgICAgICAgICAvLyBjYW4ndCByZXdyaXRlIG9wYXF1ZSBgX19yZXF1aXJlKClgIGNhbGxzIGluIENKUyBzaGltcywgc29cbiAgICAgICAgICAgICAgLy8gcmVsYXRpdmUgcGF0aHMgY29tcHV0ZWQgZm9yIGBvdXRkaXJgIGJyZWFrIG9uY2UgdGhlIG91dHB1dFxuICAgICAgICAgICAgICAvLyBpcyByZWJ1bmRsZWQgdG8gYSBkaWZmZXJlbnQgZGlyZWN0b3J5LlxuICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZFJlc29sdmVkUGF0aC5pbmNsdWRlcygnL25vZGVfbW9kdWxlcy8nKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBudWxsOyAvLyBsZXQgZXNidWlsZCBidW5kbGUgaXRcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGV4dGVybmFsUGF0aCA9IHJlbGF0aXZlKFxuICAgICAgICAgICAgICAgIG9wdGlvbnMub3V0ZGlyIHx8IHByb2Nlc3MuY3dkKCksXG4gICAgICAgICAgICAgICAgcmVzb2x2ZWRQYXRoXG4gICAgICAgICAgICAgICkucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnJld3JpdGVUc0V4dGVuc2lvbnMpIHtcbiAgICAgICAgICAgICAgICAvLyBSZXdyaXRlIFR5cGVTY3JpcHQgZXh0ZW5zaW9ucyB0byB0aGVpciBKUyBlcXVpdmFsZW50cyBzbyB0aGVcbiAgICAgICAgICAgICAgICAvLyBleHRlcm5hbGl6ZWQgaW1wb3J0IGlzIGxvYWRhYmxlIGJ5IE5vZGUncyBuYXRpdmUgRVNNIGxvYWRlci5cbiAgICAgICAgICAgICAgICBleHRlcm5hbFBhdGggPSBleHRlcm5hbFBhdGhcbiAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXC50c3g/JC8sICcuanMnKVxuICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcLm10cyQvLCAnLm1qcycpXG4gICAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFwuY3RzJC8sICcuY2pzJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGV4dGVybmFsUGF0aCA9IHNwZWNpZmllcjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgZXh0ZXJuYWw6IHRydWUsXG4gICAgICAgICAgICAgIHBhdGg6IGV4dGVybmFsUGF0aCxcbiAgICAgICAgICAgICAgc2lkZUVmZmVjdHM6IGhhc1NpZGVFZmZlY3RzIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gTm8gZW50cmllc1RvQnVuZGxlIOKAlCBvbmx5IG92ZXJyaWRlIHNpZGVFZmZlY3RzIHdoZW4gbmVlZGVkLlxuICAgICAgICAgIC8vIFdlIG11c3QgcmV0dXJuIHRoZSByZXNvbHZlZCBgcGF0aGAgYWxvbmdzaWRlIGBzaWRlRWZmZWN0c2AgYmVjYXVzZVxuICAgICAgICAgIC8vIHJldHVybmluZyBvbmx5IGB7IHNpZGVFZmZlY3RzOiB0cnVlIH1gIHdpdGhvdXQgYSBwYXRoIGNhdXNlcyBlc2J1aWxkXG4gICAgICAgICAgLy8gdG8gZmFsbCB0aHJvdWdoIHRvIGl0cyBvd24gcmVzb2x2ZXIsIHdoaWNoIHJlLXJlYWRzIHRoZSBwYWNrYWdlLmpzb25cbiAgICAgICAgICAvLyBhbmQgYXBwbGllcyBgXCJzaWRlRWZmZWN0c1wiOiBmYWxzZWAgZnJvbSB0aGVyZS5cbiAgICAgICAgICByZXR1cm4gaGFzU2lkZUVmZmVjdHNcbiAgICAgICAgICAgID8geyBwYXRoOiByZXNvbHZlZFBhdGgsIHNpZGVFZmZlY3RzOiB0cnVlIH1cbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgfSBjYXRjaCAoXykge31cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9KTtcblxuICAgICAgLy8gSGFuZGxlIFR5cGVTY3JpcHQgYW5kIEphdmFTY3JpcHQgZmlsZXNcbiAgICAgIGJ1aWxkLm9uTG9hZCh7IGZpbHRlcjoganNUc1JlZ2V4IH0sIGFzeW5jIChhcmdzKSA9PiB7XG4gICAgICAgIC8vIERldGVybWluZSBpZiB0aGlzIGlzIGEgVHlwZVNjcmlwdCBmaWxlXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBsb2FkZXIgYmFzZWQgb24gdGhlIG91dHB1dFxuICAgICAgICAgIGxldCBsb2FkZXI6ICdqcycgfCAnanN4JyB8ICd0c3gnID0gJ2pzJztcbiAgICAgICAgICBpZiAoYXJncy5wYXRoLmVuZHNXaXRoKCcuanN4JykpIHtcbiAgICAgICAgICAgIGxvYWRlciA9ICdqc3gnO1xuICAgICAgICAgIH0gZWxzZSBpZiAoYXJncy5wYXRoLmVuZHNXaXRoKCcudHN4JykpIHtcbiAgICAgICAgICAgIGxvYWRlciA9ICd0c3gnO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBzb3VyY2UgPSBhd2FpdCByZWFkRmlsZShhcmdzLnBhdGgsICd1dGY4Jyk7XG4gICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFNvdXJjZSA9IHNvdXJjZVxuICAgICAgICAgICAgLnJlcGxhY2UoL3JlcXVpcmVcXChcXHMqKFsnXCJdKXNlcnZlci1vbmx5XFwxXFxzKlxcKS9nLCAndm9pZCAwJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC9yZXF1aXJlXFwoXFxzKihbJ1wiXSljbGllbnQtb25seVxcMVxccypcXCkvZywgJ3ZvaWQgMCcpO1xuXG4gICAgICAgICAgLy8gQ2FsY3VsYXRlIHJlbGF0aXZlIHBhdGggZm9yIFNXQyBwbHVnaW5cbiAgICAgICAgICAvLyBUaGUgZmlsZW5hbWUgcGFyYW1ldGVyIGlzIHVzZWQgdG8gZ2VuZXJhdGUgd29ya2Zsb3dJZC9zdGVwSWQsIHNvIGl0IG11c3QgYmUgcmVsYXRpdmVcbiAgICAgICAgICBjb25zdCB3b3JraW5nRGlyID1cbiAgICAgICAgICAgIGJ1aWxkLmluaXRpYWxPcHRpb25zLmFic1dvcmtpbmdEaXIgfHwgcHJvY2Vzcy5jd2QoKTtcbiAgICAgICAgICBjb25zdCBwcm9qZWN0Um9vdCA9IG9wdGlvbnMucHJvamVjdFJvb3QgfHwgd29ya2luZ0RpcjtcbiAgICAgICAgICAvLyBOb3JtYWxpemUgcGF0aHM6IGNvbnZlcnQgYmFja3NsYXNoZXMgdG8gZm9yd2FyZCBzbGFzaGVzIGFuZCByZW1vdmUgdHJhaWxpbmcgc2xhc2hlc1xuICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRXb3JraW5nRGlyID0gd29ya2luZ0RpclxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFwvZywgJy8nKVxuICAgICAgICAgICAgLnJlcGxhY2UoL1xcLyQvLCAnJyk7XG4gICAgICAgICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBhcmdzLnBhdGgucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuXG4gICAgICAgICAgLy8gV2luZG93cyBmaXg6IEFsd2F5cyBkbyBjYXNlLWluc2Vuc2l0aXZlIHBhdGggY29tcGFyaXNvbiBhcyB0aGUgUFJJTUFSWSBsb2dpY1xuICAgICAgICAgIC8vIHRvIHdvcmsgYXJvdW5kIG5vZGU6cGF0aC5yZWxhdGl2ZSgpIG5vdCByZWNvZ25pemluZyBwYXRocyB3aXRoIGRpZmZlcmVudCBkcml2ZVxuICAgICAgICAgIC8vIGxldHRlciBjYXNpbmcgKGUuZy4sIEQ6IHZzIGQ6KSBhcyBiZWluZyBpbiB0aGUgc2FtZSB0cmVlXG4gICAgICAgICAgY29uc3QgbG93ZXJXZCA9IG5vcm1hbGl6ZWRXb3JraW5nRGlyLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgY29uc3QgbG93ZXJQYXRoID0gbm9ybWFsaXplZFBhdGgudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICAgIGxldCByZWxhdGl2ZUZpbGVwYXRoOiBzdHJpbmc7XG4gICAgICAgICAgaWYgKGxvd2VyUGF0aC5zdGFydHNXaXRoKGxvd2VyV2QgKyAnLycpKSB7XG4gICAgICAgICAgICAvLyBGaWxlIGlzIHVuZGVyIHdvcmtpbmcgZGlyZWN0b3J5IC0gbWFudWFsbHkgY2FsY3VsYXRlIHJlbGF0aXZlIHBhdGhcbiAgICAgICAgICAgIC8vIFRoaXMgZW5zdXJlcyB3ZSBnZXQgYSByZWxhdGl2ZSBwYXRoIGV2ZW4gd2l0aCBkcml2ZSBsZXR0ZXIgY2FzaW5nIGlzc3Vlc1xuICAgICAgICAgICAgcmVsYXRpdmVGaWxlcGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnN1YnN0cmluZyhcbiAgICAgICAgICAgICAgbm9ybWFsaXplZFdvcmtpbmdEaXIubGVuZ3RoICsgMVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGxvd2VyUGF0aCA9PT0gbG93ZXJXZCkge1xuICAgICAgICAgICAgLy8gRmlsZSBJUyB0aGUgd29ya2luZyBkaXJlY3RvcnlcbiAgICAgICAgICAgIHJlbGF0aXZlRmlsZXBhdGggPSAnLic7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEZpbGUgaXMgb3V0c2lkZSB3b3JraW5nIGRpcmVjdG9yeSAtIHVzZSByZWxhdGl2ZSgpIGFuZCBzdHJpcCAuLi8gcHJlZml4ZXMgaWYgbmVlZGVkXG4gICAgICAgICAgICByZWxhdGl2ZUZpbGVwYXRoID0gcmVsYXRpdmUoXG4gICAgICAgICAgICAgIG5vcm1hbGl6ZWRXb3JraW5nRGlyLFxuICAgICAgICAgICAgICBub3JtYWxpemVkUGF0aFxuICAgICAgICAgICAgKS5yZXBsYWNlKC9cXFxcL2csICcvJyk7XG5cbiAgICAgICAgICAgIC8vIEhhbmRsZSBmaWxlcyBkaXNjb3ZlcmVkIG91dHNpZGUgdGhlIHdvcmtpbmcgZGlyZWN0b3J5XG4gICAgICAgICAgICAvLyBUaGVzZSBjb21lIGJhY2sgYXMgLi4vcGF0aC90by9maWxlLCBidXQgd2Ugd2FudCBqdXN0IHBhdGgvdG8vZmlsZVxuICAgICAgICAgICAgaWYgKHJlbGF0aXZlRmlsZXBhdGguc3RhcnRzV2l0aCgnLi4vJykpIHtcbiAgICAgICAgICAgICAgY29uc3QgYWxpYXNlZFJlbGF0aXZlUGF0aCA9XG4gICAgICAgICAgICAgICAgYXdhaXQgcmVzb2x2ZVdvcmtmbG93QWxpYXNSZWxhdGl2ZVBhdGgoYXJncy5wYXRoLCB3b3JraW5nRGlyKTtcbiAgICAgICAgICAgICAgaWYgKGFsaWFzZWRSZWxhdGl2ZVBhdGgpIHtcbiAgICAgICAgICAgICAgICByZWxhdGl2ZUZpbGVwYXRoID0gYWxpYXNlZFJlbGF0aXZlUGF0aDtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZWxhdGl2ZUZpbGVwYXRoID0gcmVsYXRpdmVGaWxlcGF0aFxuICAgICAgICAgICAgICAgICAgLnNwbGl0KCcvJylcbiAgICAgICAgICAgICAgICAgIC5maWx0ZXIoKHBhcnQpID0+IHBhcnQgIT09ICcuLicpXG4gICAgICAgICAgICAgICAgICAuam9pbignLycpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRmluYWwgc2FmZXR5IGNoZWNrIC0gZW5zdXJlIHdlIG5ldmVyIHBhc3MgYW4gYWJzb2x1dGUgcGF0aCB0byBTV0NcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICByZWxhdGl2ZUZpbGVwYXRoLmluY2x1ZGVzKCc6JykgfHxcbiAgICAgICAgICAgIHJlbGF0aXZlRmlsZXBhdGguc3RhcnRzV2l0aCgnLycpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dCBpZiBpdCBkb2VzLCB1c2UganVzdCB0aGUgZmlsZW5hbWUgYXMgbGFzdCByZXNvcnRcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIGBbRVJST1JdIHJlbGF0aXZlRmlsZXBhdGggaXMgc3RpbGwgYWJzb2x1dGU6ICR7cmVsYXRpdmVGaWxlcGF0aH1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmVsYXRpdmVGaWxlcGF0aCA9IG5vcm1hbGl6ZWRQYXRoLnNwbGl0KCcvJykucG9wKCkgfHwgJ3Vua25vd24udHMnO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHsgY29kZTogdHJhbnNmb3JtZWRDb2RlLCB3b3JrZmxvd01hbmlmZXN0IH0gPVxuICAgICAgICAgICAgYXdhaXQgYXBwbHlTd2NUcmFuc2Zvcm0oXG4gICAgICAgICAgICAgIHJlbGF0aXZlRmlsZXBhdGgsXG4gICAgICAgICAgICAgIG5vcm1hbGl6ZWRTb3VyY2UsXG4gICAgICAgICAgICAgIG9wdGlvbnMubW9kZSxcbiAgICAgICAgICAgICAgYXJncy5wYXRoLCAvLyBQYXNzIGFic29sdXRlIHBhdGggZm9yIG1vZHVsZSBzcGVjaWZpZXIgcmVzb2x1dGlvblxuICAgICAgICAgICAgICBwcm9qZWN0Um9vdFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGlmICghb3B0aW9ucy53b3JrZmxvd01hbmlmZXN0KSB7XG4gICAgICAgICAgICBvcHRpb25zLndvcmtmbG93TWFuaWZlc3QgPSB7fTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBvcHRpb25zLndvcmtmbG93TWFuaWZlc3Qud29ya2Zsb3dzID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgIG9wdGlvbnMud29ya2Zsb3dNYW5pZmVzdC53b3JrZmxvd3MgfHwge30sXG4gICAgICAgICAgICB3b3JrZmxvd01hbmlmZXN0LndvcmtmbG93c1xuICAgICAgICAgICk7XG4gICAgICAgICAgb3B0aW9ucy53b3JrZmxvd01hbmlmZXN0LnN0ZXBzID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgIG9wdGlvbnMud29ya2Zsb3dNYW5pZmVzdC5zdGVwcyB8fCB7fSxcbiAgICAgICAgICAgIHdvcmtmbG93TWFuaWZlc3Quc3RlcHNcbiAgICAgICAgICApO1xuICAgICAgICAgIG9wdGlvbnMud29ya2Zsb3dNYW5pZmVzdC5jbGFzc2VzID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgIG9wdGlvbnMud29ya2Zsb3dNYW5pZmVzdC5jbGFzc2VzIHx8IHt9LFxuICAgICAgICAgICAgd29ya2Zsb3dNYW5pZmVzdC5jbGFzc2VzXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb250ZW50czogdHJhbnNmb3JtZWRDb2RlLFxuICAgICAgICAgICAgbG9hZGVyLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID1cbiAgICAgICAgICAgIGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgYOKdjCBTV0MgdHJhbnNmb3JtIGVycm9yIGluICR7YXJncy5wYXRofTpgLFxuICAgICAgICAgICAgZXJyb3JNZXNzYWdlXG4gICAgICAgICAgKTtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZXJyb3JzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiBgU1dDIHRyYW5zZm9ybSBmYWlsZWQ6ICR7ZXJyb3JNZXNzYWdlfWAsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IHsgZmlsZTogYXJncy5wYXRoLCBsaW5lOiAwLCBjb2x1bW46IDAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNQcm9qZWN0TG9jYWxGaWxlKGZpbGVQYXRoOiBzdHJpbmcsIHByb2plY3RSb290OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKG5vcm1hbGl6ZVBhdGgoZmlsZVBhdGgpLmluY2x1ZGVzKCcvbm9kZV9tb2R1bGVzLycpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICByZXNvbHZlTW9kdWxlU3BlY2lmaWVyKGZpbGVQYXRoLCBwcm9qZWN0Um9vdCkubW9kdWxlU3BlY2lmaWVyID09PSB1bmRlZmluZWRcbiAgKTtcbn1cbiJdfQ==