@workflow/builders 5.0.0-beta.43 → 5.0.0-beta.46

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 (43) hide show
  1. package/README.md +1 -1
  2. package/dist/base-builder.d.ts +19 -2
  3. package/dist/base-builder.d.ts.map +1 -1
  4. package/dist/base-builder.js +77 -56
  5. package/dist/constants.d.ts +2 -2
  6. package/dist/constants.js +3 -3
  7. package/dist/fast-discovery.d.ts +1 -1
  8. package/dist/fast-discovery.js +1 -1
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -1
  12. package/dist/manifest-ids.d.ts +35 -0
  13. package/dist/manifest-ids.d.ts.map +1 -0
  14. package/dist/manifest-ids.js +69 -0
  15. package/dist/manifest-ids.test.d.ts +2 -0
  16. package/dist/manifest-ids.test.d.ts.map +1 -0
  17. package/dist/manifest-ids.test.js +86 -0
  18. package/dist/module-specifier.d.ts +1 -1
  19. package/dist/module-specifier.js +2 -2
  20. package/dist/node-module-esbuild-plugin.js +3 -3
  21. package/dist/optional-otel-api.d.ts +1 -1
  22. package/dist/optional-otel-api.js +2 -2
  23. package/dist/optional-typescript.js +2 -2
  24. package/dist/optional-ws-native.d.ts +1 -1
  25. package/dist/optional-ws-native.js +2 -2
  26. package/dist/step-source-registration.test.js +61 -1
  27. package/dist/swc-esbuild-plugin.d.ts +1 -1
  28. package/dist/swc-esbuild-plugin.d.ts.map +1 -1
  29. package/dist/swc-esbuild-plugin.js +14 -42
  30. package/dist/swc-esbuild-plugin.test.js +81 -1
  31. package/dist/types.d.ts +3 -3
  32. package/dist/types.js +1 -1
  33. package/dist/vercel-build-output-api.js +2 -2
  34. package/dist/workflow-bundle-boundary.test.d.ts +2 -0
  35. package/dist/workflow-bundle-boundary.test.d.ts.map +1 -0
  36. package/dist/workflow-bundle-boundary.test.js +78 -0
  37. package/dist/write-if-changed.d.ts +20 -0
  38. package/dist/write-if-changed.d.ts.map +1 -0
  39. package/dist/write-if-changed.js +44 -0
  40. package/dist/write-if-changed.test.d.ts +2 -0
  41. package/dist/write-if-changed.test.d.ts.map +1 -0
  42. package/dist/write-if-changed.test.js +186 -0
  43. package/package.json +4 -4
@@ -32,7 +32,7 @@ export class VercelBuildOutputAPIBuilder extends BaseBuilder {
32
32
  await this.createVcConfig(workflowsFuncDir, {
33
33
  handler: 'index.mjs',
34
34
  // Skip the source-map-support runtime shim when sourcemaps are
35
- // disabled it's a meaningful chunk of the function bundle and
35
+ // disabled: it's a meaningful chunk of the function bundle and
36
36
  // serves no purpose without maps.
37
37
  shouldAddSourcemapSupport: this.sourcemapsEnabled,
38
38
  maxDuration: 'max',
@@ -93,4 +93,4 @@ export class VercelBuildOutputAPIBuilder extends BaseBuilder {
93
93
  this.logBaseBuilderInfo('Webhook function available at /.well-known/workflow/v1/webhook/[token]');
94
94
  }
95
95
  }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyY2VsLWJ1aWxkLW91dHB1dC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdmVyY2VsLWJ1aWxkLW91dHB1dC1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsV0FBVztJQUMxRCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbEQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFFM0Usa0NBQWtDO1FBQ2xDLE1BQU0sS0FBSyxDQUFDLG9CQUFvQixFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkQsdUVBQXVFO1FBQ3ZFLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxXQUFXLENBQUMsRUFBRTtZQUNoRCxTQUFTLEVBQUUsSUFBSTtZQUNmLEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQyxDQUFDO1FBRUgsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDOUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUs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TUFBTSxFQUFFLG9EQUFvRDtTQUM3RCxDQUFDLENBQUM7UUFFSCwrREFBK0Q7UUFDL0QsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUU7WUFDeEMsT0FBTyxFQUFFLFdBQVc7WUFDcEIsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsdUJBQXVCLENBQUMsU0FBaUI7UUFDckQsMENBQTBDO1FBQzFDLE1BQU0saUJBQWlCLEdBQUc7WUFDeEIsT0FBTyxFQUFFLENBQUM7WUFDVixNQUFNLEVBQUU7Z0JBQ047b0JBQ0UsR0FBRyxFQUFFLDBEQUEwRDtvQkFDL0QsSUFBSSxFQUFFLDBDQUEwQztpQkFDakQ7YUFDRjtTQUNGLENBQUM7UUFFRixNQUFNLFNBQVMsQ0FDYixJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxFQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FDM0MsQ0FBQztRQUVGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywrQkFBK0IsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLDhEQUE4RCxDQUMvRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUNyQix3RUFBd0UsQ0FDekUsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvcHlGaWxlLCBta2Rpciwgcm0sIHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBCYXNlQnVpbGRlciB9IGZyb20gJy4vYmFzZS1idWlsZGVyLmpzJztcbmltcG9ydCB7IGdldFdvcmtmbG93UXVldWVUcmlnZ2VyIH0gZnJvbSAnLi9jb25zdGFudHMuanMnO1xuXG5leHBvcnQgY2xhc3MgVmVyY2VsQnVpbGRPdXRwdXRBUElCdWlsZGVyIGV4dGVuZHMgQmFzZUJ1aWxkZXIge1xuICBhc3luYyBidWlsZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBvdXRwdXREaXIgPSByZXNvbHZlKHRoaXMuY29uZmlnLndvcmtpbmdEaXIsICcudmVyY2VsL291dHB1dCcpO1xuICAgIGNvbnN0IGZ1bmN0aW9uc0RpciA9IGpvaW4ob3V0cHV0RGlyLCAnZnVuY3Rpb25zJyk7XG4gICAgY29uc3Qgd29ya2Zsb3dHZW5lcmF0ZWREaXIgPSBqb2luKGZ1bmN0aW9uc0RpciwgJy53ZWxsLWtub3duL3dvcmtmbG93L3YxJyk7XG5cbiAgICAvLyBFbnN1cmUgb3V0cHV0IGRpcmVjdG9yaWVzIGV4aXN0XG4gICAgYXdhaXQgbWtkaXIod29ya2Zsb3dHZW5lcmF0ZWREaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIC8vIEJ1aWxkIGNhY2hlcyBtYXkgc3RpbGwgY29udGFpbiB0aGUgcmV0aXJlZCBzdGFuZGFsb25lIHN0ZXAgZnVuY3Rpb24uXG4gICAgYXdhaXQgcm0oam9pbih3b3JrZmxvd0dlbmVyYXRlZERpciwgJ3N0ZXAuZnVuYycpLCB7XG4gICAgICByZWN1cnNpdmU6IHRydWUsXG4gICAgICBmb3JjZTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGlucHV0RmlsZXMgPSBhd2FpdCB0aGlzLmdldElucHV0RmlsZXMoKTtcbiAgICBjb25zdCB0c2NvbmZpZ1BhdGggPSBhd2FpdCB0aGlzLmZpbmRUc0NvbmZpZ1BhdGgoKTtcbiAgICAvLyBDcmVhdGUgY29tYmluZWQgYnVuZGxlIGluIGZsb3cuZnVuYy9cbiAgICB0aGlzLmxvZ0Jhc2VCdWlsZGVySW5mbyhcbiAgICAgICdDcmVhdGluZyBWZXJjZWwgQnVpbGQgT3V0cHV0IEFQSSBjb21iaW5lZCBmdW5jdGlvbidcbiAgICApO1xuICAgIGNvbnN0IHdvcmtmbG93c0Z1bmNEaXIgPSBqb2luKHdvcmtmbG93R2VuZXJhdGVkRGlyLCAnZmxvdy5mdW5jJyk7XG4gICAgYXdhaXQgbWtkaXIod29ya2Zsb3dzRnVuY0RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgICBjb25zdCB7IG1hbmlmZXN0IH0gPSBhd2FpdCB0aGlzLmNyZWF0ZUNvbWJpbmVkQnVuZGxlKHtcbiAgICAgIGlucHV0RmlsZXMsXG4gICAgICBzdGVwc091dGZpbGU6IGpvaW4od29ya2Zsb3dzRnVuY0RpciwgJ19fc3RlcF9yZWdpc3RyYXRpb25zLm1qcycpLFxuICAgICAgZmxvd091dGZpbGU6IGpvaW4od29ya2Zsb3dzRnVuY0RpciwgJ2luZGV4Lm1qcycpLFxuICAgICAgdHNjb25maWdQYXRoLFxuICAgICAgYnVuZGxlRmluYWxPdXRwdXQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgcGFja2FnZS5qc29uIGFuZCAudmMtY29uZmlnLmpzb24gZm9yIGNvbWJpbmVkIGZ1bmN0aW9uXG4gICAgYXdhaXQgdGhpcy5jcmVhdGVQYWNrYWdlSnNvbih3b3JrZmxvd3NGdW5jRGlyLCAnbW9kdWxlJyk7XG4gICAgYXdhaXQgdGhpcy5jcmVhdGVWY0NvbmZpZyh3b3JrZmxvd3NGdW5jRGlyLCB7XG4gICAgICBoYW5kbGVyOiAnaW5kZXgubWpzJyxcbiAgICAgIC8vIFNraXAgdGhlIHNvdXJjZS1tYXAtc3VwcG9ydCBydW50aW1lIHNoaW0gd2hlbiBzb3VyY2VtYXBzIGFyZVxuICAgICAgLy8gZGlzYWJsZWQg4oCUIGl0J3MgYSBtZWFuaW5nZnVsIGNodW5rIG9mIHRoZSBmdW5jdGlvbiBidW5kbGUgYW5kXG4gICAgICAvLyBzZXJ2ZXMgbm8gcHVycG9zZSB3aXRob3V0IG1hcHMuXG4gICAgICBzaG91bGRBZGRTb3VyY2VtYXBTdXBwb3J0OiB0aGlzLnNvdXJjZW1hcHNFbmFibGVkLFxuICAgICAgbWF4RHVyYXRpb246ICdtYXgnLFxuICAgICAgZXhwZXJpbWVudGFsVHJpZ2dlcnM6IFtnZXRXb3JrZmxvd1F1ZXVlVHJpZ2dlcigpXSxcbiAgICAgIHJ1bnRpbWU6IHRoaXMuY29uZmlnLnJ1bnRpbWUsXG4gICAgfSk7XG5cbiAgICBhd2FpdCB0aGlzLmJ1aWxkV2ViaG9va0Z1bmN0aW9uKHsgd29ya2Zsb3dHZW5lcmF0ZWREaXIgfSk7XG4gICAgYXdhaXQgdGhpcy5jcmVhdGVCdWlsZE91dHB1dENvbmZpZyhvdXRwdXREaXIpO1xuXG4gICAgLy8gR2VuZXJhdGUgdW5pZmllZCBtYW5pZmVzdFxuICAgIGNvbnN0IHdvcmtmbG93QnVuZGxlUGF0aCA9IGpvaW4oXG4gICAgICB3b3JrZmxvd0dlbmVyYXRlZERpcixcbiAgICAgICdmbG93LmZ1bmMvaW5kZXgubWpzJ1xuICAgICk7XG4gICAgY29uc3QgbWFuaWZlc3RKc29uID0gYXdhaXQgdGhpcy5jcmVhdGVNYW5pZmVzdCh7XG4gICAgICB3b3JrZmxvd0J1bmRsZVBhdGgsXG4gICAgICBtYW5pZmVzdERpcjogd29ya2Zsb3dHZW5lcmF0ZWREaXIsXG4gICAgICBtYW5pZmVzdCxcbiAgICB9KTtcblxuICAgIC8vIEV4cG9zZSBtYW5pZmVzdCBhcyBhIHN0YXRpYyBmaWxlIHdoZW4gV09SS0ZMT1dfUFVCTElDX01BTklGRVNUPTEuXG4gICAgLy8gVmVyY2VsIEJ1aWxkIE91dHB1dCBBUEkgc2VydmVzIHN0YXRpYyBmaWxlcyBmcm9tIC52ZXJjZWwvb3V0cHV0L3N0YXRpYy9cbiAgICBpZiAodGhpcy5zaG91bGRFeHBvc2VQdWJsaWNNYW5pZmVzdCAmJiBtYW5pZmVzdEpzb24pIHtcbiAgICAgIGNvbnN0IHN0YXRpY01hbmlmZXN0RGlyID0gam9pbihcbiAgICAgICAgb3V0cHV0RGlyLFxuICAgICAgICAnc3RhdGljLy53ZWxsLWtub3duL3dvcmtmbG93L3YxJ1xuICAgICAgKTtcbiAgICAgIGF3YWl0IG1rZGlyKHN0YXRpY01hbmlmZXN0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5WRVJDRUxfREVQTE9ZTUVOVF9JRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShqb2luKHN0YXRpY01hbmlmZXN0RGlyLCAnLmdpdGlnbm9yZScpLCAnKicpO1xuICAgICAgfVxuICAgICAgYXdhaXQgY29weUZpbGUoXG4gICAgICAgIGpvaW4od29ya2Zsb3dHZW5lcmF0ZWREaXIsICdtYW5pZmVzdC5qc29uJyksXG4gICAgICAgIGpvaW4oc3RhdGljTWFuaWZlc3REaXIsICdtYW5pZmVzdC5qc29uJylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5jcmVhdGVDbGllbnRMaWJyYXJ5KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGJ1aWxkV2ViaG9va0Z1bmN0aW9uKHtcbiAgICB3b3JrZmxvd0dlbmVyYXRlZERpcixcbiAgICBidW5kbGUgPSB0cnVlLFxuICB9OiB7XG4gICAgd29ya2Zsb3dHZW5lcmF0ZWREaXI6IHN0cmluZztcbiAgICBidW5kbGU/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5sb2dCYXNlQnVpbGRlckluZm8oXG4gICAgICAnQ3JlYXRpbmcgVmVyY2VsIEJ1aWxkIE91dHB1dCBBUEkgd2ViaG9vayBmdW5jdGlvbidcbiAgICApO1xuICAgIGNvbnN0IHdlYmhvb2tGdW5jRGlyID0gam9pbih3b3JrZmxvd0dlbmVyYXRlZERpciwgJ3dlYmhvb2svW3Rva2VuXS5mdW5jJyk7XG5cbiAgICAvLyBCdW5kbGUgdGhlIHdlYmhvb2sgcm91dGUgd2l0aCBkZXBlbmRlbmNpZXMgcmVzb2x2ZWRcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVdlYmhvb2tCdW5kbGUoe1xuICAgICAgb3V0ZmlsZTogam9pbih3ZWJob29rRnVuY0RpciwgJ2luZGV4Lm1qcycpLFxuICAgICAgYnVuZGxlLCAvLyBCdWlsZCBPdXRwdXQgQVBJIG5lZWRzIGJ1bmRsaW5nIChleGNlcHQgaW4gdGVzdHMpXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgcGFja2FnZS5qc29uIGFuZCAudmMtY29uZmlnLmpzb24gZm9yIHdlYmhvb2sgZnVuY3Rpb25cbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVBhY2thZ2VKc29uKHdlYmhvb2tGdW5jRGlyLCAnbW9kdWxlJyk7XG4gICAgYXdhaXQgdGhpcy5jcmVhdGVWY0NvbmZpZyh3ZWJob29rRnVuY0Rpciwge1xuICAgICAgaGFuZGxlcjogJ2luZGV4Lm1qcycsXG4gICAgICBzaG91bGRBZGRIZWxwZXJzOiBmYWxzZSxcbiAgICAgIHJ1bnRpbWU6IHRoaXMuY29uZmlnLnJ1bnRpbWUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUJ1aWxkT3V0cHV0Q29uZmlnKG91dHB1dERpcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gQ3JlYXRlIGNvbmZpZy5qc29uIGZvciBCdWlsZCBPdXRwdXQgQVBJXG4gICAgY29uc3QgYnVpbGRPdXRwdXRDb25maWcgPSB7XG4gICAgICB2ZXJzaW9uOiAzLFxuICAgICAgcm91dGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzcmM6ICdeXFxcXC9cXFxcLndlbGwta25vd25cXFxcL3dvcmtmbG93XFxcXC92MVxcXFwvd2ViaG9va1xcXFwvKFteXFxcXC9dKykkJyxcbiAgICAgICAgICBkZXN0OiAnLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL3dlYmhvb2svW3Rva2VuXScsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG5cbiAgICBhd2FpdCB3cml0ZUZpbGUoXG4gICAgICBqb2luKG91dHB1dERpciwgJ2NvbmZpZy5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeShidWlsZE91dHB1dENvbmZpZywgbnVsbCwgMilcbiAgICApO1xuXG4gICAgdGhpcy5sb2dCYXNlQnVpbGRlckluZm8oYEJ1aWxkIE91dHB1dCBBUEkgY3JlYXRlZCBhdCAke291dHB1dERpcn1gKTtcbiAgICB0aGlzLmxvZ0Jhc2VCdWlsZGVySW5mbyhcbiAgICAgICdDb21iaW5lZCBmdW5jdGlvbiBhdmFpbGFibGUgYXQgLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL2Zsb3cnXG4gICAgKTtcbiAgICB0aGlzLmxvZ0Jhc2VCdWlsZGVySW5mbyhcbiAgICAgICdXZWJob29rIGZ1bmN0aW9uIGF2YWlsYWJsZSBhdCAvLndlbGwta25vd24vd29ya2Zsb3cvdjEvd2ViaG9vay9bdG9rZW5dJ1xuICAgICk7XG4gIH1cbn1cbiJdfQ==
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyY2VsLWJ1aWxkLW91dHB1dC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdmVyY2VsLWJ1aWxkLW91dHB1dC1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsV0FBVztJQUMxRCxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbEQsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLHlCQUF5QixDQUFDLENBQUM7UUFFM0Usa0NBQWtDO1FBQ2xDLE1BQU0sS0FBSyxDQUFDLG9CQUFvQixFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkQsdUVBQXVFO1FBQ3ZFLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxXQUFXLENBQUMsRUFBRTtZQUNoRCxTQUFTLEVBQUUsSUFBSTtZQUNmLEtBQUssRUFBRSxJQUFJO1NBQ1osQ0FBQyxDQUFDO1FBRUgsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDOUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUs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TUFBTSxFQUFFLG9EQUFvRDtTQUM3RCxDQUFDLENBQUM7UUFFSCwrREFBK0Q7UUFDL0QsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUU7WUFDeEMsT0FBTyxFQUFFLFdBQVc7WUFDcEIsZ0JBQWdCLEVBQUUsS0FBSztZQUN2QixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxLQUFLLENBQUMsdUJBQXVCLENBQUMsU0FBaUI7UUFDckQsMENBQTBDO1FBQzFDLE1BQU0saUJBQWlCLEdBQUc7WUFDeEIsT0FBTyxFQUFFLENBQUM7WUFDVixNQUFNLEVBQUU7Z0JBQ047b0JBQ0UsR0FBRyxFQUFFLDBEQUEwRDtvQkFDL0QsSUFBSSxFQUFFLDBDQUEwQztpQkFDakQ7YUFDRjtTQUNGLENBQUM7UUFFRixNQUFNLFNBQVMsQ0FDYixJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxFQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FDM0MsQ0FBQztRQUVGLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywrQkFBK0IsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLDhEQUE4RCxDQUMvRCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGtCQUFrQixDQUNyQix3RUFBd0UsQ0FDekUsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvcHlGaWxlLCBta2Rpciwgcm0sIHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuaW1wb3J0IHsgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCc7XG5pbXBvcnQgeyBCYXNlQnVpbGRlciB9IGZyb20gJy4vYmFzZS1idWlsZGVyLmpzJztcbmltcG9ydCB7IGdldFdvcmtmbG93UXVldWVUcmlnZ2VyIH0gZnJvbSAnLi9jb25zdGFudHMuanMnO1xuXG5leHBvcnQgY2xhc3MgVmVyY2VsQnVpbGRPdXRwdXRBUElCdWlsZGVyIGV4dGVuZHMgQmFzZUJ1aWxkZXIge1xuICBhc3luYyBidWlsZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBvdXRwdXREaXIgPSByZXNvbHZlKHRoaXMuY29uZmlnLndvcmtpbmdEaXIsICcudmVyY2VsL291dHB1dCcpO1xuICAgIGNvbnN0IGZ1bmN0aW9uc0RpciA9IGpvaW4ob3V0cHV0RGlyLCAnZnVuY3Rpb25zJyk7XG4gICAgY29uc3Qgd29ya2Zsb3dHZW5lcmF0ZWREaXIgPSBqb2luKGZ1bmN0aW9uc0RpciwgJy53ZWxsLWtub3duL3dvcmtmbG93L3YxJyk7XG5cbiAgICAvLyBFbnN1cmUgb3V0cHV0IGRpcmVjdG9yaWVzIGV4aXN0XG4gICAgYXdhaXQgbWtkaXIod29ya2Zsb3dHZW5lcmF0ZWREaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIC8vIEJ1aWxkIGNhY2hlcyBtYXkgc3RpbGwgY29udGFpbiB0aGUgcmV0aXJlZCBzdGFuZGFsb25lIHN0ZXAgZnVuY3Rpb24uXG4gICAgYXdhaXQgcm0oam9pbih3b3JrZmxvd0dlbmVyYXRlZERpciwgJ3N0ZXAuZnVuYycpLCB7XG4gICAgICByZWN1cnNpdmU6IHRydWUsXG4gICAgICBmb3JjZTogdHJ1ZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGlucHV0RmlsZXMgPSBhd2FpdCB0aGlzLmdldElucHV0RmlsZXMoKTtcbiAgICBjb25zdCB0c2NvbmZpZ1BhdGggPSBhd2FpdCB0aGlzLmZpbmRUc0NvbmZpZ1BhdGgoKTtcbiAgICAvLyBDcmVhdGUgY29tYmluZWQgYnVuZGxlIGluIGZsb3cuZnVuYy9cbiAgICB0aGlzLmxvZ0Jhc2VCdWlsZGVySW5mbyhcbiAgICAgICdDcmVhdGluZyBWZXJjZWwgQnVpbGQgT3V0cHV0IEFQSSBjb21iaW5lZCBmdW5jdGlvbidcbiAgICApO1xuICAgIGNvbnN0IHdvcmtmbG93c0Z1bmNEaXIgPSBqb2luKHdvcmtmbG93R2VuZXJhdGVkRGlyLCAnZmxvdy5mdW5jJyk7XG4gICAgYXdhaXQgbWtkaXIod29ya2Zsb3dzRnVuY0RpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cbiAgICBjb25zdCB7IG1hbmlmZXN0IH0gPSBhd2FpdCB0aGlzLmNyZWF0ZUNvbWJpbmVkQnVuZGxlKHtcbiAgICAgIGlucHV0RmlsZXMsXG4gICAgICBzdGVwc091dGZpbGU6IGpvaW4od29ya2Zsb3dzRnVuY0RpciwgJ19fc3RlcF9yZWdpc3RyYXRpb25zLm1qcycpLFxuICAgICAgZmxvd091dGZpbGU6IGpvaW4od29ya2Zsb3dzRnVuY0RpciwgJ2luZGV4Lm1qcycpLFxuICAgICAgdHNjb25maWdQYXRoLFxuICAgICAgYnVuZGxlRmluYWxPdXRwdXQ6IHRydWUsXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgcGFja2FnZS5qc29uIGFuZCAudmMtY29uZmlnLmpzb24gZm9yIGNvbWJpbmVkIGZ1bmN0aW9uXG4gICAgYXdhaXQgdGhpcy5jcmVhdGVQYWNrYWdlSnNvbih3b3JrZmxvd3NGdW5jRGlyLCAnbW9kdWxlJyk7XG4gICAgYXdhaXQgdGhpcy5jcmVhdGVWY0NvbmZpZyh3b3JrZmxvd3NGdW5jRGlyLCB7XG4gICAgICBoYW5kbGVyOiAnaW5kZXgubWpzJyxcbiAgICAgIC8vIFNraXAgdGhlIHNvdXJjZS1tYXAtc3VwcG9ydCBydW50aW1lIHNoaW0gd2hlbiBzb3VyY2VtYXBzIGFyZVxuICAgICAgLy8gZGlzYWJsZWQ6IGl0J3MgYSBtZWFuaW5nZnVsIGNodW5rIG9mIHRoZSBmdW5jdGlvbiBidW5kbGUgYW5kXG4gICAgICAvLyBzZXJ2ZXMgbm8gcHVycG9zZSB3aXRob3V0IG1hcHMuXG4gICAgICBzaG91bGRBZGRTb3VyY2VtYXBTdXBwb3J0OiB0aGlzLnNvdXJjZW1hcHNFbmFibGVkLFxuICAgICAgbWF4RHVyYXRpb246ICdtYXgnLFxuICAgICAgZXhwZXJpbWVudGFsVHJpZ2dlcnM6IFtnZXRXb3JrZmxvd1F1ZXVlVHJpZ2dlcigpXSxcbiAgICAgIHJ1bnRpbWU6IHRoaXMuY29uZmlnLnJ1bnRpbWUsXG4gICAgfSk7XG5cbiAgICBhd2FpdCB0aGlzLmJ1aWxkV2ViaG9va0Z1bmN0aW9uKHsgd29ya2Zsb3dHZW5lcmF0ZWREaXIgfSk7XG4gICAgYXdhaXQgdGhpcy5jcmVhdGVCdWlsZE91dHB1dENvbmZpZyhvdXRwdXREaXIpO1xuXG4gICAgLy8gR2VuZXJhdGUgdW5pZmllZCBtYW5pZmVzdFxuICAgIGNvbnN0IHdvcmtmbG93QnVuZGxlUGF0aCA9IGpvaW4oXG4gICAgICB3b3JrZmxvd0dlbmVyYXRlZERpcixcbiAgICAgICdmbG93LmZ1bmMvaW5kZXgubWpzJ1xuICAgICk7XG4gICAgY29uc3QgbWFuaWZlc3RKc29uID0gYXdhaXQgdGhpcy5jcmVhdGVNYW5pZmVzdCh7XG4gICAgICB3b3JrZmxvd0J1bmRsZVBhdGgsXG4gICAgICBtYW5pZmVzdERpcjogd29ya2Zsb3dHZW5lcmF0ZWREaXIsXG4gICAgICBtYW5pZmVzdCxcbiAgICB9KTtcblxuICAgIC8vIEV4cG9zZSBtYW5pZmVzdCBhcyBhIHN0YXRpYyBmaWxlIHdoZW4gV09SS0ZMT1dfUFVCTElDX01BTklGRVNUPTEuXG4gICAgLy8gVmVyY2VsIEJ1aWxkIE91dHB1dCBBUEkgc2VydmVzIHN0YXRpYyBmaWxlcyBmcm9tIC52ZXJjZWwvb3V0cHV0L3N0YXRpYy9cbiAgICBpZiAodGhpcy5zaG91bGRFeHBvc2VQdWJsaWNNYW5pZmVzdCAmJiBtYW5pZmVzdEpzb24pIHtcbiAgICAgIGNvbnN0IHN0YXRpY01hbmlmZXN0RGlyID0gam9pbihcbiAgICAgICAgb3V0cHV0RGlyLFxuICAgICAgICAnc3RhdGljLy53ZWxsLWtub3duL3dvcmtmbG93L3YxJ1xuICAgICAgKTtcbiAgICAgIGF3YWl0IG1rZGlyKHN0YXRpY01hbmlmZXN0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5WRVJDRUxfREVQTE9ZTUVOVF9JRCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF3YWl0IHdyaXRlRmlsZShqb2luKHN0YXRpY01hbmlmZXN0RGlyLCAnLmdpdGlnbm9yZScpLCAnKicpO1xuICAgICAgfVxuICAgICAgYXdhaXQgY29weUZpbGUoXG4gICAgICAgIGpvaW4od29ya2Zsb3dHZW5lcmF0ZWREaXIsICdtYW5pZmVzdC5qc29uJyksXG4gICAgICAgIGpvaW4oc3RhdGljTWFuaWZlc3REaXIsICdtYW5pZmVzdC5qc29uJylcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5jcmVhdGVDbGllbnRMaWJyYXJ5KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGJ1aWxkV2ViaG9va0Z1bmN0aW9uKHtcbiAgICB3b3JrZmxvd0dlbmVyYXRlZERpcixcbiAgICBidW5kbGUgPSB0cnVlLFxuICB9OiB7XG4gICAgd29ya2Zsb3dHZW5lcmF0ZWREaXI6IHN0cmluZztcbiAgICBidW5kbGU/OiBib29sZWFuO1xuICB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5sb2dCYXNlQnVpbGRlckluZm8oXG4gICAgICAnQ3JlYXRpbmcgVmVyY2VsIEJ1aWxkIE91dHB1dCBBUEkgd2ViaG9vayBmdW5jdGlvbidcbiAgICApO1xuICAgIGNvbnN0IHdlYmhvb2tGdW5jRGlyID0gam9pbih3b3JrZmxvd0dlbmVyYXRlZERpciwgJ3dlYmhvb2svW3Rva2VuXS5mdW5jJyk7XG5cbiAgICAvLyBCdW5kbGUgdGhlIHdlYmhvb2sgcm91dGUgd2l0aCBkZXBlbmRlbmNpZXMgcmVzb2x2ZWRcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVdlYmhvb2tCdW5kbGUoe1xuICAgICAgb3V0ZmlsZTogam9pbih3ZWJob29rRnVuY0RpciwgJ2luZGV4Lm1qcycpLFxuICAgICAgYnVuZGxlLCAvLyBCdWlsZCBPdXRwdXQgQVBJIG5lZWRzIGJ1bmRsaW5nIChleGNlcHQgaW4gdGVzdHMpXG4gICAgfSk7XG5cbiAgICAvLyBDcmVhdGUgcGFja2FnZS5qc29uIGFuZCAudmMtY29uZmlnLmpzb24gZm9yIHdlYmhvb2sgZnVuY3Rpb25cbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVBhY2thZ2VKc29uKHdlYmhvb2tGdW5jRGlyLCAnbW9kdWxlJyk7XG4gICAgYXdhaXQgdGhpcy5jcmVhdGVWY0NvbmZpZyh3ZWJob29rRnVuY0Rpciwge1xuICAgICAgaGFuZGxlcjogJ2luZGV4Lm1qcycsXG4gICAgICBzaG91bGRBZGRIZWxwZXJzOiBmYWxzZSxcbiAgICAgIHJ1bnRpbWU6IHRoaXMuY29uZmlnLnJ1bnRpbWUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZUJ1aWxkT3V0cHV0Q29uZmlnKG91dHB1dERpcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gQ3JlYXRlIGNvbmZpZy5qc29uIGZvciBCdWlsZCBPdXRwdXQgQVBJXG4gICAgY29uc3QgYnVpbGRPdXRwdXRDb25maWcgPSB7XG4gICAgICB2ZXJzaW9uOiAzLFxuICAgICAgcm91dGVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBzcmM6ICdeXFxcXC9cXFxcLndlbGwta25vd25cXFxcL3dvcmtmbG93XFxcXC92MVxcXFwvd2ViaG9va1xcXFwvKFteXFxcXC9dKykkJyxcbiAgICAgICAgICBkZXN0OiAnLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL3dlYmhvb2svW3Rva2VuXScsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG5cbiAgICBhd2FpdCB3cml0ZUZpbGUoXG4gICAgICBqb2luKG91dHB1dERpciwgJ2NvbmZpZy5qc29uJyksXG4gICAgICBKU09OLnN0cmluZ2lmeShidWlsZE91dHB1dENvbmZpZywgbnVsbCwgMilcbiAgICApO1xuXG4gICAgdGhpcy5sb2dCYXNlQnVpbGRlckluZm8oYEJ1aWxkIE91dHB1dCBBUEkgY3JlYXRlZCBhdCAke291dHB1dERpcn1gKTtcbiAgICB0aGlzLmxvZ0Jhc2VCdWlsZGVySW5mbyhcbiAgICAgICdDb21iaW5lZCBmdW5jdGlvbiBhdmFpbGFibGUgYXQgLy53ZWxsLWtub3duL3dvcmtmbG93L3YxL2Zsb3cnXG4gICAgKTtcbiAgICB0aGlzLmxvZ0Jhc2VCdWlsZGVySW5mbyhcbiAgICAgICdXZWJob29rIGZ1bmN0aW9uIGF2YWlsYWJsZSBhdCAvLndlbGwta25vd24vd29ya2Zsb3cvdjEvd2ViaG9vay9bdG9rZW5dJ1xuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=workflow-bundle-boundary.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-bundle-boundary.test.d.ts","sourceRoot":"","sources":["../src/workflow-bundle-boundary.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,78 @@
1
+ import { mkdtempSync, rmSync, writeFileSync } from 'node:fs';
2
+ import { join, resolve } from 'node:path';
3
+ import { afterEach, describe, expect, it } from 'vitest';
4
+ import { BaseBuilder } from './base-builder.js';
5
+ class TestBuilder extends BaseBuilder {
6
+ async build() { }
7
+ createWorkflowBundle(inputFile, outfile, discoveredEntries) {
8
+ return this.createWorkflowsBundle({
9
+ inputFiles: [inputFile],
10
+ outfile,
11
+ bundleFinalOutput: false,
12
+ includeMetafile: true,
13
+ discoveredEntries,
14
+ });
15
+ }
16
+ }
17
+ describe('workflow bundle boundary', () => {
18
+ const repoRoot = resolve(import.meta.dirname, '../../..');
19
+ const outputDirs = [];
20
+ afterEach(() => {
21
+ for (const outputDir of outputDirs) {
22
+ rmSync(outputDir, { recursive: true, force: true });
23
+ }
24
+ });
25
+ async function getWorkflowBundleInputs(source) {
26
+ // Keep the fixture beneath this package so its workspace dependencies are
27
+ // resolved exactly as they are for a real consumer workflow.
28
+ const outputDir = mkdtempSync(join(import.meta.dirname, '.workflow-pruning-'));
29
+ outputDirs.push(outputDir);
30
+ const inputFile = join(outputDir, 'workflow.ts');
31
+ writeFileSync(inputFile, source);
32
+ const config = {
33
+ buildTarget: 'standalone',
34
+ workingDir: outputDir,
35
+ projectRoot: repoRoot,
36
+ moduleSpecifierRoot: repoRoot,
37
+ dirs: ['.'],
38
+ stepsBundlePath: join(outputDir, 'steps.js'),
39
+ workflowsBundlePath: join(outputDir, 'workflow.js'),
40
+ webhookBundlePath: join(outputDir, 'webhook.js'),
41
+ sourcemap: false,
42
+ };
43
+ const discoveredEntries = {
44
+ discoveredSteps: new Set(),
45
+ discoveredWorkflows: new Set([inputFile]),
46
+ discoveredSerdeFiles: new Set(),
47
+ };
48
+ const { interimBundleMetafile } = await new TestBuilder(config).createWorkflowBundle(inputFile, config.workflowsBundlePath, discoveredEntries);
49
+ expect(interimBundleMetafile).toBeDefined();
50
+ return Object.keys(interimBundleMetafile?.inputs ?? {}).map((input) => input.replaceAll('\\', '/'));
51
+ }
52
+ function expectNoZodInputs(inputs) {
53
+ expect(inputs.filter((input) => input.includes('/node_modules/zod/'))).toEqual([]);
54
+ }
55
+ it('does not bundle world schemas into a minimal workflow', async () => {
56
+ const inputs = await getWorkflowBundleInputs(`export async function minimal() { "use workflow"; return 1; }`);
57
+ expectNoZodInputs(inputs);
58
+ });
59
+ it('does not bundle world schemas for core workflow APIs', async () => {
60
+ const inputs = await getWorkflowBundleInputs(`
61
+ import { createHook, setAttributes } from '@workflow/core';
62
+
63
+ async function basicStep(value: number) {
64
+ "use step";
65
+ return value + 1;
66
+ }
67
+
68
+ export async function realisticWorkflow() {
69
+ "use workflow";
70
+ await setAttributes({ phase: 'started' });
71
+ const hook = createHook<number>();
72
+ return basicStep(await hook);
73
+ }
74
+ `);
75
+ expectNoZodInputs(inputs);
76
+ });
77
+ });
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctYnVuZGxlLWJvdW5kYXJ5LnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvd29ya2Zsb3ctYnVuZGxlLWJvdW5kYXJ5LnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzdELE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBMEIsTUFBTSxtQkFBbUIsQ0FBQztBQUd4RSxNQUFNLFdBQVksU0FBUSxXQUFXO0lBQ25DLEtBQUssQ0FBQyxLQUFLLEtBQW1CLENBQUM7SUFFL0Isb0JBQW9CLENBQ2xCLFNBQWlCLEVBQ2pCLE9BQWUsRUFDZixpQkFBb0M7UUFFcEMsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7WUFDaEMsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQ3ZCLE9BQU87WUFDUCxpQkFBaUIsRUFBRSxLQUFLO1lBQ3hCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLGlCQUFpQjtTQUNsQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFFRCxRQUFRLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO0lBQ3hDLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMxRCxNQUFNLFVBQVUsR0FBYSxFQUFFLENBQUM7SUFFaEMsU0FBUyxDQUFDLEdBQUcsRUFBRTtRQUNiLEtBQUssTUFBTSxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7WUFDbkMsTUFBTSxDQUFDLFNBQVMsRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0lBRUgsS0FBSyxVQUFVLHVCQUF1QixDQUFDLE1BQWM7UUFDbkQsMEVBQTBFO1FBQzFFLDZEQUE2RDtRQUM3RCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxDQUNoRCxDQUFDO1FBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMzQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ2pELGFBQWEsQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFakMsTUFBTSxNQUFNLEdBQXFCO1lBQy9CLFdBQVcsRUFBRSxZQUFZO1lBQ3pCLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLFdBQVcsRUFBRSxRQUFRO1lBQ3JCLG1CQUFtQixFQUFFLFFBQVE7WUFDN0IsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDO1lBQ1gsZUFBZSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDO1lBQzVDLG1CQUFtQixFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDO1lBQ25ELGlCQUFpQixFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDO1lBQ2hELFNBQVMsRUFBRSxLQUFLO1NBQ2pCLENBQUM7UUFDRixNQUFNLGlCQUFpQixHQUFzQjtZQUMzQyxlQUFlLEVBQUUsSUFBSSxHQUFHLEVBQUU7WUFDMUIsbUJBQW1CLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN6QyxvQkFBb0IsRUFBRSxJQUFJLEdBQUcsRUFBRTtTQUNoQyxDQUFDO1FBRUYsTUFBTSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsTUFBTSxJQUFJLFdBQVcsQ0FDckQsTUFBTSxDQUNQLENBQUMsb0JBQW9CLENBQ3BCLFNBQVMsRUFDVCxNQUFNLENBQUMsbUJBQW1CLEVBQzFCLGlCQUFpQixDQUNsQixDQUFDO1FBRUYsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDNUMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNwRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRCxTQUFTLGlCQUFpQixDQUFDLE1BQWdCO1FBQ3pDLE1BQU0sQ0FDSixNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FDL0QsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELEVBQUUsQ0FBQyx1REFBdUQsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNyRSxNQUFNLE1BQU0sR0FBRyxNQUFNLHVCQUF1QixDQUMxQywrREFBK0QsQ0FDaEUsQ0FBQztRQUVGLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHNEQUFzRCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3BFLE1BQU0sTUFBTSxHQUFHLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0tBYzVDLENBQUMsQ0FBQztRQUVILGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBta2R0ZW1wU3luYywgcm1TeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSAnbm9kZTpmcyc7XG5pbXBvcnQgeyBqb2luLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGFmdGVyRWFjaCwgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHsgQmFzZUJ1aWxkZXIsIHR5cGUgRGlzY292ZXJlZEVudHJpZXMgfSBmcm9tICcuL2Jhc2UtYnVpbGRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0YW5kYWxvbmVDb25maWcgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuY2xhc3MgVGVzdEJ1aWxkZXIgZXh0ZW5kcyBCYXNlQnVpbGRlciB7XG4gIGFzeW5jIGJ1aWxkKCk6IFByb21pc2U8dm9pZD4ge31cblxuICBjcmVhdGVXb3JrZmxvd0J1bmRsZShcbiAgICBpbnB1dEZpbGU6IHN0cmluZyxcbiAgICBvdXRmaWxlOiBzdHJpbmcsXG4gICAgZGlzY292ZXJlZEVudHJpZXM6IERpc2NvdmVyZWRFbnRyaWVzXG4gICkge1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZVdvcmtmbG93c0J1bmRsZSh7XG4gICAgICBpbnB1dEZpbGVzOiBbaW5wdXRGaWxlXSxcbiAgICAgIG91dGZpbGUsXG4gICAgICBidW5kbGVGaW5hbE91dHB1dDogZmFsc2UsXG4gICAgICBpbmNsdWRlTWV0YWZpbGU6IHRydWUsXG4gICAgICBkaXNjb3ZlcmVkRW50cmllcyxcbiAgICB9KTtcbiAgfVxufVxuXG5kZXNjcmliZSgnd29ya2Zsb3cgYnVuZGxlIGJvdW5kYXJ5JywgKCkgPT4ge1xuICBjb25zdCByZXBvUm9vdCA9IHJlc29sdmUoaW1wb3J0Lm1ldGEuZGlybmFtZSwgJy4uLy4uLy4uJyk7XG4gIGNvbnN0IG91dHB1dERpcnM6IHN0cmluZ1tdID0gW107XG5cbiAgYWZ0ZXJFYWNoKCgpID0+IHtcbiAgICBmb3IgKGNvbnN0IG91dHB1dERpciBvZiBvdXRwdXREaXJzKSB7XG4gICAgICBybVN5bmMob3V0cHV0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG4gICAgfVxuICB9KTtcblxuICBhc3luYyBmdW5jdGlvbiBnZXRXb3JrZmxvd0J1bmRsZUlucHV0cyhzb3VyY2U6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAvLyBLZWVwIHRoZSBmaXh0dXJlIGJlbmVhdGggdGhpcyBwYWNrYWdlIHNvIGl0cyB3b3Jrc3BhY2UgZGVwZW5kZW5jaWVzIGFyZVxuICAgIC8vIHJlc29sdmVkIGV4YWN0bHkgYXMgdGhleSBhcmUgZm9yIGEgcmVhbCBjb25zdW1lciB3b3JrZmxvdy5cbiAgICBjb25zdCBvdXRwdXREaXIgPSBta2R0ZW1wU3luYyhcbiAgICAgIGpvaW4oaW1wb3J0Lm1ldGEuZGlybmFtZSwgJy53b3JrZmxvdy1wcnVuaW5nLScpXG4gICAgKTtcbiAgICBvdXRwdXREaXJzLnB1c2gob3V0cHV0RGlyKTtcbiAgICBjb25zdCBpbnB1dEZpbGUgPSBqb2luKG91dHB1dERpciwgJ3dvcmtmbG93LnRzJyk7XG4gICAgd3JpdGVGaWxlU3luYyhpbnB1dEZpbGUsIHNvdXJjZSk7XG5cbiAgICBjb25zdCBjb25maWc6IFN0YW5kYWxvbmVDb25maWcgPSB7XG4gICAgICBidWlsZFRhcmdldDogJ3N0YW5kYWxvbmUnLFxuICAgICAgd29ya2luZ0Rpcjogb3V0cHV0RGlyLFxuICAgICAgcHJvamVjdFJvb3Q6IHJlcG9Sb290LFxuICAgICAgbW9kdWxlU3BlY2lmaWVyUm9vdDogcmVwb1Jvb3QsXG4gICAgICBkaXJzOiBbJy4nXSxcbiAgICAgIHN0ZXBzQnVuZGxlUGF0aDogam9pbihvdXRwdXREaXIsICdzdGVwcy5qcycpLFxuICAgICAgd29ya2Zsb3dzQnVuZGxlUGF0aDogam9pbihvdXRwdXREaXIsICd3b3JrZmxvdy5qcycpLFxuICAgICAgd2ViaG9va0J1bmRsZVBhdGg6IGpvaW4ob3V0cHV0RGlyLCAnd2ViaG9vay5qcycpLFxuICAgICAgc291cmNlbWFwOiBmYWxzZSxcbiAgICB9O1xuICAgIGNvbnN0IGRpc2NvdmVyZWRFbnRyaWVzOiBEaXNjb3ZlcmVkRW50cmllcyA9IHtcbiAgICAgIGRpc2NvdmVyZWRTdGVwczogbmV3IFNldCgpLFxuICAgICAgZGlzY292ZXJlZFdvcmtmbG93czogbmV3IFNldChbaW5wdXRGaWxlXSksXG4gICAgICBkaXNjb3ZlcmVkU2VyZGVGaWxlczogbmV3IFNldCgpLFxuICAgIH07XG5cbiAgICBjb25zdCB7IGludGVyaW1CdW5kbGVNZXRhZmlsZSB9ID0gYXdhaXQgbmV3IFRlc3RCdWlsZGVyKFxuICAgICAgY29uZmlnXG4gICAgKS5jcmVhdGVXb3JrZmxvd0J1bmRsZShcbiAgICAgIGlucHV0RmlsZSxcbiAgICAgIGNvbmZpZy53b3JrZmxvd3NCdW5kbGVQYXRoLFxuICAgICAgZGlzY292ZXJlZEVudHJpZXNcbiAgICApO1xuXG4gICAgZXhwZWN0KGludGVyaW1CdW5kbGVNZXRhZmlsZSkudG9CZURlZmluZWQoKTtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoaW50ZXJpbUJ1bmRsZU1ldGFmaWxlPy5pbnB1dHMgPz8ge30pLm1hcCgoaW5wdXQpID0+XG4gICAgICBpbnB1dC5yZXBsYWNlQWxsKCdcXFxcJywgJy8nKVxuICAgICk7XG4gIH1cblxuICBmdW5jdGlvbiBleHBlY3ROb1pvZElucHV0cyhpbnB1dHM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgZXhwZWN0KFxuICAgICAgaW5wdXRzLmZpbHRlcigoaW5wdXQpID0+IGlucHV0LmluY2x1ZGVzKCcvbm9kZV9tb2R1bGVzL3pvZC8nKSlcbiAgICApLnRvRXF1YWwoW10pO1xuICB9XG5cbiAgaXQoJ2RvZXMgbm90IGJ1bmRsZSB3b3JsZCBzY2hlbWFzIGludG8gYSBtaW5pbWFsIHdvcmtmbG93JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0cyA9IGF3YWl0IGdldFdvcmtmbG93QnVuZGxlSW5wdXRzKFxuICAgICAgYGV4cG9ydCBhc3luYyBmdW5jdGlvbiBtaW5pbWFsKCkgeyBcInVzZSB3b3JrZmxvd1wiOyByZXR1cm4gMTsgfWBcbiAgICApO1xuXG4gICAgZXhwZWN0Tm9ab2RJbnB1dHMoaW5wdXRzKTtcbiAgfSk7XG5cbiAgaXQoJ2RvZXMgbm90IGJ1bmRsZSB3b3JsZCBzY2hlbWFzIGZvciBjb3JlIHdvcmtmbG93IEFQSXMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXRzID0gYXdhaXQgZ2V0V29ya2Zsb3dCdW5kbGVJbnB1dHMoYFxuICAgICAgaW1wb3J0IHsgY3JlYXRlSG9vaywgc2V0QXR0cmlidXRlcyB9IGZyb20gJ0B3b3JrZmxvdy9jb3JlJztcblxuICAgICAgYXN5bmMgZnVuY3Rpb24gYmFzaWNTdGVwKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgXCJ1c2Ugc3RlcFwiO1xuICAgICAgICByZXR1cm4gdmFsdWUgKyAxO1xuICAgICAgfVxuXG4gICAgICBleHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhbGlzdGljV29ya2Zsb3coKSB7XG4gICAgICAgIFwidXNlIHdvcmtmbG93XCI7XG4gICAgICAgIGF3YWl0IHNldEF0dHJpYnV0ZXMoeyBwaGFzZTogJ3N0YXJ0ZWQnIH0pO1xuICAgICAgICBjb25zdCBob29rID0gY3JlYXRlSG9vazxudW1iZXI+KCk7XG4gICAgICAgIHJldHVybiBiYXNpY1N0ZXAoYXdhaXQgaG9vayk7XG4gICAgICB9XG4gICAgYCk7XG5cbiAgICBleHBlY3ROb1pvZElucHV0cyhpbnB1dHMpO1xuICB9KTtcbn0pO1xuIl19
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Reports whether `targetPath` already holds exactly `content`.
3
+ *
4
+ * Generated files are rewritten on every rebuild, and in dev most rebuilds
5
+ * produce byte-identical output. Rewriting anyway bumps the mtime (and, for
6
+ * the rename-based atomic write, the inode) of a file that lives inside the
7
+ * app directory the dev server watches, so the bundler sees a change and
8
+ * recompiles. Comparing first lets the caller skip the write entirely.
9
+ *
10
+ * Any read failure (missing file, permissions) reports `false`, so the caller
11
+ * falls back to writing.
12
+ */
13
+ export declare function hasSameContent(targetPath: string, content: string): Promise<boolean>;
14
+ /**
15
+ * `writeFile`, skipped when the file already holds `content`.
16
+ *
17
+ * Returns whether the file was actually written.
18
+ */
19
+ export declare function writeFileIfChanged(targetPath: string, content: string): Promise<boolean>;
20
+ //# sourceMappingURL=write-if-changed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-if-changed.d.ts","sourceRoot":"","sources":["../src/write-if-changed.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAgBlB;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAMlB"}
@@ -0,0 +1,44 @@
1
+ import { readFile, stat, writeFile } from 'node:fs/promises';
2
+ /**
3
+ * Reports whether `targetPath` already holds exactly `content`.
4
+ *
5
+ * Generated files are rewritten on every rebuild, and in dev most rebuilds
6
+ * produce byte-identical output. Rewriting anyway bumps the mtime (and, for
7
+ * the rename-based atomic write, the inode) of a file that lives inside the
8
+ * app directory the dev server watches, so the bundler sees a change and
9
+ * recompiles. Comparing first lets the caller skip the write entirely.
10
+ *
11
+ * Any read failure (missing file, permissions) reports `false`, so the caller
12
+ * falls back to writing.
13
+ */
14
+ export async function hasSameContent(targetPath, content) {
15
+ try {
16
+ // Compare bytes rather than decoded strings: utf-8 decoding is lossy, so
17
+ // two different byte sequences can decode to the same string and a real
18
+ // change would be skipped.
19
+ const expected = Buffer.from(content, 'utf8');
20
+ // Reject on size before reading the file, which for the generated bundle
21
+ // is the expensive half.
22
+ const { size } = await stat(targetPath);
23
+ if (size !== expected.byteLength) {
24
+ return false;
25
+ }
26
+ return Buffer.compare(await readFile(targetPath), expected) === 0;
27
+ }
28
+ catch {
29
+ return false;
30
+ }
31
+ }
32
+ /**
33
+ * `writeFile`, skipped when the file already holds `content`.
34
+ *
35
+ * Returns whether the file was actually written.
36
+ */
37
+ export async function writeFileIfChanged(targetPath, content) {
38
+ if (await hasSameContent(targetPath, content)) {
39
+ return false;
40
+ }
41
+ await writeFile(targetPath, content);
42
+ return true;
43
+ }
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtaWYtY2hhbmdlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy93cml0ZS1pZi1jaGFuZ2VkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTdEOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQ2xDLFVBQWtCLEVBQ2xCLE9BQWU7SUFFZixJQUFJLENBQUM7UUFDSCx5RUFBeUU7UUFDekUsd0VBQXdFO1FBQ3hFLDJCQUEyQjtRQUMzQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM5Qyx5RUFBeUU7UUFDekUseUJBQXlCO1FBQ3pCLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QyxJQUFJLElBQUksS0FBSyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakMsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGtCQUFrQixDQUN0QyxVQUFrQixFQUNsQixPQUFlO0lBRWYsSUFBSSxNQUFNLGNBQWMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUM5QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLFNBQVMsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDckMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVhZEZpbGUsIHN0YXQsIHdyaXRlRmlsZSB9IGZyb20gJ25vZGU6ZnMvcHJvbWlzZXMnO1xuXG4vKipcbiAqIFJlcG9ydHMgd2hldGhlciBgdGFyZ2V0UGF0aGAgYWxyZWFkeSBob2xkcyBleGFjdGx5IGBjb250ZW50YC5cbiAqXG4gKiBHZW5lcmF0ZWQgZmlsZXMgYXJlIHJld3JpdHRlbiBvbiBldmVyeSByZWJ1aWxkLCBhbmQgaW4gZGV2IG1vc3QgcmVidWlsZHNcbiAqIHByb2R1Y2UgYnl0ZS1pZGVudGljYWwgb3V0cHV0LiBSZXdyaXRpbmcgYW55d2F5IGJ1bXBzIHRoZSBtdGltZSAoYW5kLCBmb3JcbiAqIHRoZSByZW5hbWUtYmFzZWQgYXRvbWljIHdyaXRlLCB0aGUgaW5vZGUpIG9mIGEgZmlsZSB0aGF0IGxpdmVzIGluc2lkZSB0aGVcbiAqIGFwcCBkaXJlY3RvcnkgdGhlIGRldiBzZXJ2ZXIgd2F0Y2hlcywgc28gdGhlIGJ1bmRsZXIgc2VlcyBhIGNoYW5nZSBhbmRcbiAqIHJlY29tcGlsZXMuIENvbXBhcmluZyBmaXJzdCBsZXRzIHRoZSBjYWxsZXIgc2tpcCB0aGUgd3JpdGUgZW50aXJlbHkuXG4gKlxuICogQW55IHJlYWQgZmFpbHVyZSAobWlzc2luZyBmaWxlLCBwZXJtaXNzaW9ucykgcmVwb3J0cyBgZmFsc2VgLCBzbyB0aGUgY2FsbGVyXG4gKiBmYWxscyBiYWNrIHRvIHdyaXRpbmcuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBoYXNTYW1lQ29udGVudChcbiAgdGFyZ2V0UGF0aDogc3RyaW5nLFxuICBjb250ZW50OiBzdHJpbmdcbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICB0cnkge1xuICAgIC8vIENvbXBhcmUgYnl0ZXMgcmF0aGVyIHRoYW4gZGVjb2RlZCBzdHJpbmdzOiB1dGYtOCBkZWNvZGluZyBpcyBsb3NzeSwgc29cbiAgICAvLyB0d28gZGlmZmVyZW50IGJ5dGUgc2VxdWVuY2VzIGNhbiBkZWNvZGUgdG8gdGhlIHNhbWUgc3RyaW5nIGFuZCBhIHJlYWxcbiAgICAvLyBjaGFuZ2Ugd291bGQgYmUgc2tpcHBlZC5cbiAgICBjb25zdCBleHBlY3RlZCA9IEJ1ZmZlci5mcm9tKGNvbnRlbnQsICd1dGY4Jyk7XG4gICAgLy8gUmVqZWN0IG9uIHNpemUgYmVmb3JlIHJlYWRpbmcgdGhlIGZpbGUsIHdoaWNoIGZvciB0aGUgZ2VuZXJhdGVkIGJ1bmRsZVxuICAgIC8vIGlzIHRoZSBleHBlbnNpdmUgaGFsZi5cbiAgICBjb25zdCB7IHNpemUgfSA9IGF3YWl0IHN0YXQodGFyZ2V0UGF0aCk7XG4gICAgaWYgKHNpemUgIT09IGV4cGVjdGVkLmJ5dGVMZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIEJ1ZmZlci5jb21wYXJlKGF3YWl0IHJlYWRGaWxlKHRhcmdldFBhdGgpLCBleHBlY3RlZCkgPT09IDA7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIGB3cml0ZUZpbGVgLCBza2lwcGVkIHdoZW4gdGhlIGZpbGUgYWxyZWFkeSBob2xkcyBgY29udGVudGAuXG4gKlxuICogUmV0dXJucyB3aGV0aGVyIHRoZSBmaWxlIHdhcyBhY3R1YWxseSB3cml0dGVuLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd3JpdGVGaWxlSWZDaGFuZ2VkKFxuICB0YXJnZXRQYXRoOiBzdHJpbmcsXG4gIGNvbnRlbnQ6IHN0cmluZ1xuKTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGlmIChhd2FpdCBoYXNTYW1lQ29udGVudCh0YXJnZXRQYXRoLCBjb250ZW50KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBhd2FpdCB3cml0ZUZpbGUodGFyZ2V0UGF0aCwgY29udGVudCk7XG4gIHJldHVybiB0cnVlO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=write-if-changed.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-if-changed.test.d.ts","sourceRoot":"","sources":["../src/write-if-changed.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,186 @@
1
+ import { chmodSync, mkdtempSync, readdirSync, readFileSync, realpathSync, rmSync, statSync, writeFileSync, } from 'node:fs';
2
+ import { tmpdir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
5
+ import { BaseBuilder } from './base-builder.js';
6
+ import { hasSameContent, writeFileIfChanged } from './write-if-changed.js';
7
+ // Resolve symlinks in tmpdir to avoid macOS /var -> /private/var issues
8
+ const realTmpdir = realpathSync(tmpdir());
9
+ /** Minimal subclass exposing the protected `writeGeneratedFile()`. */
10
+ class TestBuilder extends BaseBuilder {
11
+ async build() {
12
+ // no-op
13
+ }
14
+ writeGeneratedFile(targetPath, content) {
15
+ return super.writeGeneratedFile(targetPath, content);
16
+ }
17
+ }
18
+ /**
19
+ * Stands in for a target whose consumers use the mtime of a generated file as
20
+ * a change signal, such as the Nitro dev handler.
21
+ */
22
+ class OptedOutBuilder extends TestBuilder {
23
+ get skipsUnchangedGeneratedWrites() {
24
+ return false;
25
+ }
26
+ }
27
+ function makeConfig(workingDir) {
28
+ return {
29
+ buildTarget: 'standalone',
30
+ workingDir,
31
+ dirs: [workingDir],
32
+ stepsBundlePath: join(workingDir, 'steps.js'),
33
+ workflowsBundlePath: join(workingDir, 'workflows.js'),
34
+ webhookBundlePath: join(workingDir, 'webhook.js'),
35
+ };
36
+ }
37
+ function createBuilder(workingDir) {
38
+ return new TestBuilder(makeConfig(workingDir));
39
+ }
40
+ function createOptedOutBuilder(workingDir) {
41
+ return new OptedOutBuilder(makeConfig(workingDir));
42
+ }
43
+ /**
44
+ * mtime resolution varies by filesystem, so compare the full stat identity
45
+ * (mtime in ns plus inode) rather than trusting a millisecond timestamp.
46
+ * `writeGeneratedFile` renames over the target, which changes the inode even
47
+ * when the mtime happens to land in the same tick.
48
+ */
49
+ function fileIdentity(path) {
50
+ const s = statSync(path, { bigint: true });
51
+ return `${s.mtimeNs}:${s.ino}`;
52
+ }
53
+ let testRoot;
54
+ beforeEach(() => {
55
+ testRoot = mkdtempSync(join(realTmpdir, 'write-if-changed-'));
56
+ });
57
+ afterEach(() => {
58
+ rmSync(testRoot, { recursive: true, force: true });
59
+ });
60
+ describe('hasSameContent', () => {
61
+ it('is false when the file does not exist', async () => {
62
+ await expect(hasSameContent(join(testRoot, 'missing.js'), 'hello')).resolves.toBe(false);
63
+ });
64
+ it('is true for byte-identical content', async () => {
65
+ const target = join(testRoot, 'a.js');
66
+ writeFileSync(target, 'export const a = 1;\n');
67
+ await expect(hasSameContent(target, 'export const a = 1;\n')).resolves.toBe(true);
68
+ });
69
+ it('is false when content differs at the same byte length', async () => {
70
+ const target = join(testRoot, 'a.js');
71
+ writeFileSync(target, 'aaaa');
72
+ await expect(hasSameContent(target, 'aaab')).resolves.toBe(false);
73
+ });
74
+ it('is false when only the length differs', async () => {
75
+ const target = join(testRoot, 'a.js');
76
+ writeFileSync(target, 'aaaa');
77
+ await expect(hasSameContent(target, 'aaaaa')).resolves.toBe(false);
78
+ });
79
+ it('compares utf-8 byte length, not code units', async () => {
80
+ const target = join(testRoot, 'a.js');
81
+ writeFileSync(target, '// é\u{1f600}\n', 'utf-8');
82
+ await expect(hasSameContent(target, '// é\u{1f600}\n')).resolves.toBe(true);
83
+ });
84
+ it('is false for byte-different content that decodes to the same string', async () => {
85
+ // An unpaired surrogate and U+FFFD both decode to the replacement
86
+ // character, so a utf-8 string comparison would call these equal.
87
+ const target = join(testRoot, 'a.js');
88
+ writeFileSync(target, Buffer.from([0x61, 0xf0, 0x90, 0x80]));
89
+ await expect(hasSameContent(target, Buffer.from([0x61, 0xef, 0xbf, 0xbd]).toString())).resolves.toBe(false);
90
+ });
91
+ it('is false when the path is a directory', async () => {
92
+ // Match the directory's own reported size so the check cannot pass by
93
+ // short-circuiting on length before it ever tries to read.
94
+ const sameSizeAsDir = 'x'.repeat(statSync(testRoot).size);
95
+ await expect(hasSameContent(testRoot, sameSizeAsDir)).resolves.toBe(false);
96
+ });
97
+ it('is false when the file cannot be read', async () => {
98
+ const target = join(testRoot, 'locked.js');
99
+ writeFileSync(target, 'secret');
100
+ chmodSync(target, 0o000);
101
+ try {
102
+ // Root ignores the mode bits, so only assert when the read really fails.
103
+ let readable = true;
104
+ try {
105
+ readFileSync(target, 'utf8');
106
+ }
107
+ catch {
108
+ readable = false;
109
+ }
110
+ if (readable) {
111
+ return;
112
+ }
113
+ await expect(hasSameContent(target, 'secret')).resolves.toBe(false);
114
+ }
115
+ finally {
116
+ chmodSync(target, 0o600);
117
+ }
118
+ });
119
+ });
120
+ describe('writeFileIfChanged', () => {
121
+ it('creates the file when it does not exist', async () => {
122
+ const target = join(testRoot, 'a.js');
123
+ await expect(writeFileIfChanged(target, 'hello')).resolves.toBe(true);
124
+ expect(readFileSync(target, 'utf8')).toBe('hello');
125
+ });
126
+ it('does not touch the file when content is unchanged', async () => {
127
+ const target = join(testRoot, 'a.js');
128
+ await writeFileIfChanged(target, 'hello');
129
+ const before = fileIdentity(target);
130
+ await expect(writeFileIfChanged(target, 'hello')).resolves.toBe(false);
131
+ expect(fileIdentity(target)).toBe(before);
132
+ });
133
+ it('rewrites the file when content changes', async () => {
134
+ const target = join(testRoot, 'a.js');
135
+ await writeFileIfChanged(target, 'hello');
136
+ await expect(writeFileIfChanged(target, 'goodbye')).resolves.toBe(true);
137
+ expect(readFileSync(target, 'utf8')).toBe('goodbye');
138
+ });
139
+ });
140
+ describe('writeGeneratedFile', () => {
141
+ // Regression test for the dev watcher thrash: the generated routes live
142
+ // inside the app directory the dev server watches, so a rewrite with
143
+ // identical bytes still invalidates the bundler and forces a recompile.
144
+ it('leaves the file untouched when the generated output is unchanged', async () => {
145
+ const builder = createBuilder(testRoot);
146
+ const target = join(testRoot, 'route.js');
147
+ await builder.writeGeneratedFile(target, 'export const GET = () => {};');
148
+ const before = fileIdentity(target);
149
+ await builder.writeGeneratedFile(target, 'export const GET = () => {};');
150
+ expect(fileIdentity(target)).toBe(before);
151
+ });
152
+ it('leaves no temp files behind when the write is skipped', async () => {
153
+ const builder = createBuilder(testRoot);
154
+ const target = join(testRoot, 'route.js');
155
+ await builder.writeGeneratedFile(target, 'same');
156
+ await builder.writeGeneratedFile(target, 'same');
157
+ expect(readdirSync(testRoot).filter((f) => f.endsWith('.tmp'))).toEqual([]);
158
+ });
159
+ it('still writes when the generated output changes', async () => {
160
+ const builder = createBuilder(testRoot);
161
+ const target = join(testRoot, 'route.js');
162
+ await builder.writeGeneratedFile(target, 'v1');
163
+ await builder.writeGeneratedFile(target, 'v2');
164
+ expect(readFileSync(target, 'utf8')).toBe('v2');
165
+ });
166
+ it('creates the file on first write', async () => {
167
+ const builder = createBuilder(testRoot);
168
+ const target = join(testRoot, 'route.js');
169
+ await builder.writeGeneratedFile(target, 'first');
170
+ expect(readFileSync(target, 'utf8')).toBe('first');
171
+ });
172
+ // The Nitro dev handler cache-busts its import of `steps.mjs` off the mtime
173
+ // of `workflows.mjs`, so that target opts out: skipping the redundant write
174
+ // would freeze the version key and serve stale step code. See
175
+ // `packages/nitro/src/builders.ts`.
176
+ it('still rewrites unchanged output when the target opts out', async () => {
177
+ const builder = createOptedOutBuilder(testRoot);
178
+ const target = join(testRoot, 'workflows.mjs');
179
+ await builder.writeGeneratedFile(target, 'export const a = 1;');
180
+ const before = fileIdentity(target);
181
+ await builder.writeGeneratedFile(target, 'export const a = 1;');
182
+ expect(fileIdentity(target)).not.toBe(before);
183
+ expect(readFileSync(target, 'utf8')).toBe('export const a = 1;');
184
+ });
185
+ });
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JpdGUtaWYtY2hhbmdlZC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dyaXRlLWlmLWNoYW5nZWQudGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFdBQVcsRUFDWCxXQUFXLEVBQ1gsWUFBWSxFQUNaLFlBQVksRUFDWixNQUFNLEVBQ04sUUFBUSxFQUNSLGFBQWEsR0FDZCxNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhELE9BQU8sRUFBRSxjQUFjLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUUzRSx3RUFBd0U7QUFDeEUsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFFMUMsc0VBQXNFO0FBQ3RFLE1BQU0sV0FBWSxTQUFRLFdBQVc7SUFDbkMsS0FBSyxDQUFDLEtBQUs7UUFDVCxRQUFRO0lBQ1YsQ0FBQztJQUVNLGtCQUFrQixDQUN2QixVQUFrQixFQUNsQixPQUFlO1FBRWYsT0FBTyxLQUFLLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Q0FDRjtBQUVEOzs7R0FHRztBQUNILE1BQU0sZUFBZ0IsU0FBUSxXQUFXO0lBQ3ZDLElBQXVCLDZCQUE2QjtRQUNsRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7Q0FDRjtBQUVELFNBQVMsVUFBVSxDQUFDLFVBQWtCO0lBQ3BDLE9BQU87UUFDTCxXQUFXLEVBQUUsWUFBWTtRQUN6QixVQUFVO1FBQ1YsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDO1FBQ2xCLGVBQWUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQztRQUM3QyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQztRQUNyRCxpQkFBaUIsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQztLQUNsRCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLFVBQWtCO0lBQ3ZDLE9BQU8sSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQUMsVUFBa0I7SUFDL0MsT0FBTyxJQUFJLGVBQWUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLFlBQVksQ0FBQyxJQUFZO0lBQ2hDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMzQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDakMsQ0FBQztBQUVELElBQUksUUFBZ0IsQ0FBQztBQUVyQixVQUFVLENBQUMsR0FBRyxFQUFFO0lBQ2QsUUFBUSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLG1CQUFtQixDQUFDLENBQUMsQ0FBQztBQUNoRSxDQUFDLENBQUMsQ0FBQztBQUVILFNBQVMsQ0FBQyxHQUFHLEVBQUU7SUFDYixNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUNyRCxDQUFDLENBQUMsQ0FBQztBQUVILFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLEVBQUU7SUFDOUIsRUFBRSxDQUFDLHVDQUF1QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3JELE1BQU0sTUFBTSxDQUNWLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUN0RCxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsb0NBQW9DLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0QyxhQUFhLENBQUMsTUFBTSxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFFL0MsTUFBTSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDekUsSUFBSSxDQUNMLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx1REFBdUQsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNyRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3RDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFOUIsTUFBTSxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEUsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDckQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0QyxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTlCLE1BQU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLDRDQUE0QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzFELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEMsYUFBYSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUVsRCxNQUFNLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHFFQUFxRSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ25GLGtFQUFrRTtRQUNsRSxrRUFBa0U7UUFDbEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0QyxhQUFhLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFN0QsTUFBTSxNQUFNLENBQ1YsY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUN6RSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdUNBQXVDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDckQsc0VBQXNFO1FBQ3RFLDJEQUEyRDtRQUMzRCxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUxRCxNQUFNLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyx1Q0FBdUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzNDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDaEMsU0FBUyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV6QixJQUFJLENBQUM7WUFDSCx5RUFBeUU7WUFDekUsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLElBQUksQ0FBQztnQkFDSCxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQy9CLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUNuQixDQUFDO1lBQ0QsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixPQUFPO1lBQ1QsQ0FBQztZQUNELE1BQU0sTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RFLENBQUM7Z0JBQVMsQ0FBQztZQUNULFNBQVMsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUM7QUFFSCxRQUFRLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO0lBQ2xDLEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN2RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRXRDLE1BQU0sTUFBTSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsbURBQW1ELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDakUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUN0QyxNQUFNLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMxQyxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEMsTUFBTSxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUV2RSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLHdDQUF3QyxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ3RELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDdEMsTUFBTSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFMUMsTUFBTSxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4RSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2RCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsUUFBUSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRTtJQUNsQyx3RUFBd0U7SUFDeEUscUVBQXFFO0lBQ3JFLHdFQUF3RTtJQUN4RSxFQUFFLENBQUMsa0VBQWtFLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDaEYsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFMUMsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLDhCQUE4QixDQUFDLENBQUM7UUFDekUsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXBDLE1BQU0sT0FBTyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO1FBRXpFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUMsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsdURBQXVELEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDckUsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFMUMsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELE1BQU0sT0FBTyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUVqRCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGdEQUFnRCxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQzlELE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTFDLE1BQU0sT0FBTyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMvQyxNQUFNLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFL0MsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDL0MsTUFBTSxPQUFPLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFMUMsTUFBTSxPQUFPLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRWxELE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FBQyxDQUFDO0lBRUgsNEVBQTRFO0lBQzVFLDRFQUE0RTtJQUM1RSw4REFBOEQ7SUFDOUQsb0NBQW9DO0lBQ3BDLEVBQUUsQ0FBQywwREFBMEQsRUFBRSxLQUFLLElBQUksRUFBRTtRQUN4RSxNQUFNLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRS9DLE1BQU0sT0FBTyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwQyxNQUFNLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUVoRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQ25FLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjaG1vZFN5bmMsXG4gIG1rZHRlbXBTeW5jLFxuICByZWFkZGlyU3luYyxcbiAgcmVhZEZpbGVTeW5jLFxuICByZWFscGF0aFN5bmMsXG4gIHJtU3luYyxcbiAgc3RhdFN5bmMsXG4gIHdyaXRlRmlsZVN5bmMsXG59IGZyb20gJ25vZGU6ZnMnO1xuaW1wb3J0IHsgdG1wZGlyIH0gZnJvbSAnbm9kZTpvcyc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGFmdGVyRWFjaCwgYmVmb3JlRWFjaCwgZGVzY3JpYmUsIGV4cGVjdCwgaXQgfSBmcm9tICd2aXRlc3QnO1xuaW1wb3J0IHsgQmFzZUJ1aWxkZXIgfSBmcm9tICcuL2Jhc2UtYnVpbGRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0YW5kYWxvbmVDb25maWcgfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IGhhc1NhbWVDb250ZW50LCB3cml0ZUZpbGVJZkNoYW5nZWQgfSBmcm9tICcuL3dyaXRlLWlmLWNoYW5nZWQuanMnO1xuXG4vLyBSZXNvbHZlIHN5bWxpbmtzIGluIHRtcGRpciB0byBhdm9pZCBtYWNPUyAvdmFyIC0+IC9wcml2YXRlL3ZhciBpc3N1ZXNcbmNvbnN0IHJlYWxUbXBkaXIgPSByZWFscGF0aFN5bmModG1wZGlyKCkpO1xuXG4vKiogTWluaW1hbCBzdWJjbGFzcyBleHBvc2luZyB0aGUgcHJvdGVjdGVkIGB3cml0ZUdlbmVyYXRlZEZpbGUoKWAuICovXG5jbGFzcyBUZXN0QnVpbGRlciBleHRlbmRzIEJhc2VCdWlsZGVyIHtcbiAgYXN5bmMgYnVpbGQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gbm8tb3BcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZUdlbmVyYXRlZEZpbGUoXG4gICAgdGFyZ2V0UGF0aDogc3RyaW5nLFxuICAgIGNvbnRlbnQ6IHN0cmluZ1xuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gc3VwZXIud3JpdGVHZW5lcmF0ZWRGaWxlKHRhcmdldFBhdGgsIGNvbnRlbnQpO1xuICB9XG59XG5cbi8qKlxuICogU3RhbmRzIGluIGZvciBhIHRhcmdldCB3aG9zZSBjb25zdW1lcnMgdXNlIHRoZSBtdGltZSBvZiBhIGdlbmVyYXRlZCBmaWxlIGFzXG4gKiBhIGNoYW5nZSBzaWduYWwsIHN1Y2ggYXMgdGhlIE5pdHJvIGRldiBoYW5kbGVyLlxuICovXG5jbGFzcyBPcHRlZE91dEJ1aWxkZXIgZXh0ZW5kcyBUZXN0QnVpbGRlciB7XG4gIHByb3RlY3RlZCBvdmVycmlkZSBnZXQgc2tpcHNVbmNoYW5nZWRHZW5lcmF0ZWRXcml0ZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIG1ha2VDb25maWcod29ya2luZ0Rpcjogc3RyaW5nKTogU3RhbmRhbG9uZUNvbmZpZyB7XG4gIHJldHVybiB7XG4gICAgYnVpbGRUYXJnZXQ6ICdzdGFuZGFsb25lJyxcbiAgICB3b3JraW5nRGlyLFxuICAgIGRpcnM6IFt3b3JraW5nRGlyXSxcbiAgICBzdGVwc0J1bmRsZVBhdGg6IGpvaW4od29ya2luZ0RpciwgJ3N0ZXBzLmpzJyksXG4gICAgd29ya2Zsb3dzQnVuZGxlUGF0aDogam9pbih3b3JraW5nRGlyLCAnd29ya2Zsb3dzLmpzJyksXG4gICAgd2ViaG9va0J1bmRsZVBhdGg6IGpvaW4od29ya2luZ0RpciwgJ3dlYmhvb2suanMnKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQnVpbGRlcih3b3JraW5nRGlyOiBzdHJpbmcpOiBUZXN0QnVpbGRlciB7XG4gIHJldHVybiBuZXcgVGVzdEJ1aWxkZXIobWFrZUNvbmZpZyh3b3JraW5nRGlyKSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU9wdGVkT3V0QnVpbGRlcih3b3JraW5nRGlyOiBzdHJpbmcpOiBPcHRlZE91dEJ1aWxkZXIge1xuICByZXR1cm4gbmV3IE9wdGVkT3V0QnVpbGRlcihtYWtlQ29uZmlnKHdvcmtpbmdEaXIpKTtcbn1cblxuLyoqXG4gKiBtdGltZSByZXNvbHV0aW9uIHZhcmllcyBieSBmaWxlc3lzdGVtLCBzbyBjb21wYXJlIHRoZSBmdWxsIHN0YXQgaWRlbnRpdHlcbiAqIChtdGltZSBpbiBucyBwbHVzIGlub2RlKSByYXRoZXIgdGhhbiB0cnVzdGluZyBhIG1pbGxpc2Vjb25kIHRpbWVzdGFtcC5cbiAqIGB3cml0ZUdlbmVyYXRlZEZpbGVgIHJlbmFtZXMgb3ZlciB0aGUgdGFyZ2V0LCB3aGljaCBjaGFuZ2VzIHRoZSBpbm9kZSBldmVuXG4gKiB3aGVuIHRoZSBtdGltZSBoYXBwZW5zIHRvIGxhbmQgaW4gdGhlIHNhbWUgdGljay5cbiAqL1xuZnVuY3Rpb24gZmlsZUlkZW50aXR5KHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHMgPSBzdGF0U3luYyhwYXRoLCB7IGJpZ2ludDogdHJ1ZSB9KTtcbiAgcmV0dXJuIGAke3MubXRpbWVOc306JHtzLmlub31gO1xufVxuXG5sZXQgdGVzdFJvb3Q6IHN0cmluZztcblxuYmVmb3JlRWFjaCgoKSA9PiB7XG4gIHRlc3RSb290ID0gbWtkdGVtcFN5bmMoam9pbihyZWFsVG1wZGlyLCAnd3JpdGUtaWYtY2hhbmdlZC0nKSk7XG59KTtcblxuYWZ0ZXJFYWNoKCgpID0+IHtcbiAgcm1TeW5jKHRlc3RSb290LCB7IHJlY3Vyc2l2ZTogdHJ1ZSwgZm9yY2U6IHRydWUgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2hhc1NhbWVDb250ZW50JywgKCkgPT4ge1xuICBpdCgnaXMgZmFsc2Ugd2hlbiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCcsIGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBleHBlY3QoXG4gICAgICBoYXNTYW1lQ29udGVudChqb2luKHRlc3RSb290LCAnbWlzc2luZy5qcycpLCAnaGVsbG8nKVxuICAgICkucmVzb2x2ZXMudG9CZShmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdpcyB0cnVlIGZvciBieXRlLWlkZW50aWNhbCBjb250ZW50JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IGpvaW4odGVzdFJvb3QsICdhLmpzJyk7XG4gICAgd3JpdGVGaWxlU3luYyh0YXJnZXQsICdleHBvcnQgY29uc3QgYSA9IDE7XFxuJyk7XG5cbiAgICBhd2FpdCBleHBlY3QoaGFzU2FtZUNvbnRlbnQodGFyZ2V0LCAnZXhwb3J0IGNvbnN0IGEgPSAxO1xcbicpKS5yZXNvbHZlcy50b0JlKFxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH0pO1xuXG4gIGl0KCdpcyBmYWxzZSB3aGVuIGNvbnRlbnQgZGlmZmVycyBhdCB0aGUgc2FtZSBieXRlIGxlbmd0aCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSBqb2luKHRlc3RSb290LCAnYS5qcycpO1xuICAgIHdyaXRlRmlsZVN5bmModGFyZ2V0LCAnYWFhYScpO1xuXG4gICAgYXdhaXQgZXhwZWN0KGhhc1NhbWVDb250ZW50KHRhcmdldCwgJ2FhYWInKSkucmVzb2x2ZXMudG9CZShmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdpcyBmYWxzZSB3aGVuIG9ubHkgdGhlIGxlbmd0aCBkaWZmZXJzJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IGpvaW4odGVzdFJvb3QsICdhLmpzJyk7XG4gICAgd3JpdGVGaWxlU3luYyh0YXJnZXQsICdhYWFhJyk7XG5cbiAgICBhd2FpdCBleHBlY3QoaGFzU2FtZUNvbnRlbnQodGFyZ2V0LCAnYWFhYWEnKSkucmVzb2x2ZXMudG9CZShmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdjb21wYXJlcyB1dGYtOCBieXRlIGxlbmd0aCwgbm90IGNvZGUgdW5pdHMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gam9pbih0ZXN0Um9vdCwgJ2EuanMnKTtcbiAgICB3cml0ZUZpbGVTeW5jKHRhcmdldCwgJy8vIMOpXFx1ezFmNjAwfVxcbicsICd1dGYtOCcpO1xuXG4gICAgYXdhaXQgZXhwZWN0KGhhc1NhbWVDb250ZW50KHRhcmdldCwgJy8vIMOpXFx1ezFmNjAwfVxcbicpKS5yZXNvbHZlcy50b0JlKHRydWUpO1xuICB9KTtcblxuICBpdCgnaXMgZmFsc2UgZm9yIGJ5dGUtZGlmZmVyZW50IGNvbnRlbnQgdGhhdCBkZWNvZGVzIHRvIHRoZSBzYW1lIHN0cmluZycsIGFzeW5jICgpID0+IHtcbiAgICAvLyBBbiB1bnBhaXJlZCBzdXJyb2dhdGUgYW5kIFUrRkZGRCBib3RoIGRlY29kZSB0byB0aGUgcmVwbGFjZW1lbnRcbiAgICAvLyBjaGFyYWN0ZXIsIHNvIGEgdXRmLTggc3RyaW5nIGNvbXBhcmlzb24gd291bGQgY2FsbCB0aGVzZSBlcXVhbC5cbiAgICBjb25zdCB0YXJnZXQgPSBqb2luKHRlc3RSb290LCAnYS5qcycpO1xuICAgIHdyaXRlRmlsZVN5bmModGFyZ2V0LCBCdWZmZXIuZnJvbShbMHg2MSwgMHhmMCwgMHg5MCwgMHg4MF0pKTtcblxuICAgIGF3YWl0IGV4cGVjdChcbiAgICAgIGhhc1NhbWVDb250ZW50KHRhcmdldCwgQnVmZmVyLmZyb20oWzB4NjEsIDB4ZWYsIDB4YmYsIDB4YmRdKS50b1N0cmluZygpKVxuICAgICkucmVzb2x2ZXMudG9CZShmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdpcyBmYWxzZSB3aGVuIHRoZSBwYXRoIGlzIGEgZGlyZWN0b3J5JywgYXN5bmMgKCkgPT4ge1xuICAgIC8vIE1hdGNoIHRoZSBkaXJlY3RvcnkncyBvd24gcmVwb3J0ZWQgc2l6ZSBzbyB0aGUgY2hlY2sgY2Fubm90IHBhc3MgYnlcbiAgICAvLyBzaG9ydC1jaXJjdWl0aW5nIG9uIGxlbmd0aCBiZWZvcmUgaXQgZXZlciB0cmllcyB0byByZWFkLlxuICAgIGNvbnN0IHNhbWVTaXplQXNEaXIgPSAneCcucmVwZWF0KHN0YXRTeW5jKHRlc3RSb290KS5zaXplKTtcblxuICAgIGF3YWl0IGV4cGVjdChoYXNTYW1lQ29udGVudCh0ZXN0Um9vdCwgc2FtZVNpemVBc0RpcikpLnJlc29sdmVzLnRvQmUoZmFsc2UpO1xuICB9KTtcblxuICBpdCgnaXMgZmFsc2Ugd2hlbiB0aGUgZmlsZSBjYW5ub3QgYmUgcmVhZCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSBqb2luKHRlc3RSb290LCAnbG9ja2VkLmpzJyk7XG4gICAgd3JpdGVGaWxlU3luYyh0YXJnZXQsICdzZWNyZXQnKTtcbiAgICBjaG1vZFN5bmModGFyZ2V0LCAwbzAwMCk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gUm9vdCBpZ25vcmVzIHRoZSBtb2RlIGJpdHMsIHNvIG9ubHkgYXNzZXJ0IHdoZW4gdGhlIHJlYWQgcmVhbGx5IGZhaWxzLlxuICAgICAgbGV0IHJlYWRhYmxlID0gdHJ1ZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlYWRGaWxlU3luYyh0YXJnZXQsICd1dGY4Jyk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmVhZGFibGUgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZWFkYWJsZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhd2FpdCBleHBlY3QoaGFzU2FtZUNvbnRlbnQodGFyZ2V0LCAnc2VjcmV0JykpLnJlc29sdmVzLnRvQmUoZmFsc2UpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBjaG1vZFN5bmModGFyZ2V0LCAwbzYwMCk7XG4gICAgfVxuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnd3JpdGVGaWxlSWZDaGFuZ2VkJywgKCkgPT4ge1xuICBpdCgnY3JlYXRlcyB0aGUgZmlsZSB3aGVuIGl0IGRvZXMgbm90IGV4aXN0JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IGpvaW4odGVzdFJvb3QsICdhLmpzJyk7XG5cbiAgICBhd2FpdCBleHBlY3Qod3JpdGVGaWxlSWZDaGFuZ2VkKHRhcmdldCwgJ2hlbGxvJykpLnJlc29sdmVzLnRvQmUodHJ1ZSk7XG4gICAgZXhwZWN0KHJlYWRGaWxlU3luYyh0YXJnZXQsICd1dGY4JykpLnRvQmUoJ2hlbGxvJyk7XG4gIH0pO1xuXG4gIGl0KCdkb2VzIG5vdCB0b3VjaCB0aGUgZmlsZSB3aGVuIGNvbnRlbnQgaXMgdW5jaGFuZ2VkJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IGpvaW4odGVzdFJvb3QsICdhLmpzJyk7XG4gICAgYXdhaXQgd3JpdGVGaWxlSWZDaGFuZ2VkKHRhcmdldCwgJ2hlbGxvJyk7XG4gICAgY29uc3QgYmVmb3JlID0gZmlsZUlkZW50aXR5KHRhcmdldCk7XG5cbiAgICBhd2FpdCBleHBlY3Qod3JpdGVGaWxlSWZDaGFuZ2VkKHRhcmdldCwgJ2hlbGxvJykpLnJlc29sdmVzLnRvQmUoZmFsc2UpO1xuXG4gICAgZXhwZWN0KGZpbGVJZGVudGl0eSh0YXJnZXQpKS50b0JlKGJlZm9yZSk7XG4gIH0pO1xuXG4gIGl0KCdyZXdyaXRlcyB0aGUgZmlsZSB3aGVuIGNvbnRlbnQgY2hhbmdlcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0YXJnZXQgPSBqb2luKHRlc3RSb290LCAnYS5qcycpO1xuICAgIGF3YWl0IHdyaXRlRmlsZUlmQ2hhbmdlZCh0YXJnZXQsICdoZWxsbycpO1xuXG4gICAgYXdhaXQgZXhwZWN0KHdyaXRlRmlsZUlmQ2hhbmdlZCh0YXJnZXQsICdnb29kYnllJykpLnJlc29sdmVzLnRvQmUodHJ1ZSk7XG4gICAgZXhwZWN0KHJlYWRGaWxlU3luYyh0YXJnZXQsICd1dGY4JykpLnRvQmUoJ2dvb2RieWUnKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3dyaXRlR2VuZXJhdGVkRmlsZScsICgpID0+IHtcbiAgLy8gUmVncmVzc2lvbiB0ZXN0IGZvciB0aGUgZGV2IHdhdGNoZXIgdGhyYXNoOiB0aGUgZ2VuZXJhdGVkIHJvdXRlcyBsaXZlXG4gIC8vIGluc2lkZSB0aGUgYXBwIGRpcmVjdG9yeSB0aGUgZGV2IHNlcnZlciB3YXRjaGVzLCBzbyBhIHJld3JpdGUgd2l0aFxuICAvLyBpZGVudGljYWwgYnl0ZXMgc3RpbGwgaW52YWxpZGF0ZXMgdGhlIGJ1bmRsZXIgYW5kIGZvcmNlcyBhIHJlY29tcGlsZS5cbiAgaXQoJ2xlYXZlcyB0aGUgZmlsZSB1bnRvdWNoZWQgd2hlbiB0aGUgZ2VuZXJhdGVkIG91dHB1dCBpcyB1bmNoYW5nZWQnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYnVpbGRlciA9IGNyZWF0ZUJ1aWxkZXIodGVzdFJvb3QpO1xuICAgIGNvbnN0IHRhcmdldCA9IGpvaW4odGVzdFJvb3QsICdyb3V0ZS5qcycpO1xuXG4gICAgYXdhaXQgYnVpbGRlci53cml0ZUdlbmVyYXRlZEZpbGUodGFyZ2V0LCAnZXhwb3J0IGNvbnN0IEdFVCA9ICgpID0+IHt9OycpO1xuICAgIGNvbnN0IGJlZm9yZSA9IGZpbGVJZGVudGl0eSh0YXJnZXQpO1xuXG4gICAgYXdhaXQgYnVpbGRlci53cml0ZUdlbmVyYXRlZEZpbGUodGFyZ2V0LCAnZXhwb3J0IGNvbnN0IEdFVCA9ICgpID0+IHt9OycpO1xuXG4gICAgZXhwZWN0KGZpbGVJZGVudGl0eSh0YXJnZXQpKS50b0JlKGJlZm9yZSk7XG4gIH0pO1xuXG4gIGl0KCdsZWF2ZXMgbm8gdGVtcCBmaWxlcyBiZWhpbmQgd2hlbiB0aGUgd3JpdGUgaXMgc2tpcHBlZCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQnVpbGRlcih0ZXN0Um9vdCk7XG4gICAgY29uc3QgdGFyZ2V0ID0gam9pbih0ZXN0Um9vdCwgJ3JvdXRlLmpzJyk7XG5cbiAgICBhd2FpdCBidWlsZGVyLndyaXRlR2VuZXJhdGVkRmlsZSh0YXJnZXQsICdzYW1lJyk7XG4gICAgYXdhaXQgYnVpbGRlci53cml0ZUdlbmVyYXRlZEZpbGUodGFyZ2V0LCAnc2FtZScpO1xuXG4gICAgZXhwZWN0KHJlYWRkaXJTeW5jKHRlc3RSb290KS5maWx0ZXIoKGYpID0+IGYuZW5kc1dpdGgoJy50bXAnKSkpLnRvRXF1YWwoW10pO1xuICB9KTtcblxuICBpdCgnc3RpbGwgd3JpdGVzIHdoZW4gdGhlIGdlbmVyYXRlZCBvdXRwdXQgY2hhbmdlcycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlQnVpbGRlcih0ZXN0Um9vdCk7XG4gICAgY29uc3QgdGFyZ2V0ID0gam9pbih0ZXN0Um9vdCwgJ3JvdXRlLmpzJyk7XG5cbiAgICBhd2FpdCBidWlsZGVyLndyaXRlR2VuZXJhdGVkRmlsZSh0YXJnZXQsICd2MScpO1xuICAgIGF3YWl0IGJ1aWxkZXIud3JpdGVHZW5lcmF0ZWRGaWxlKHRhcmdldCwgJ3YyJyk7XG5cbiAgICBleHBlY3QocmVhZEZpbGVTeW5jKHRhcmdldCwgJ3V0ZjgnKSkudG9CZSgndjInKTtcbiAgfSk7XG5cbiAgaXQoJ2NyZWF0ZXMgdGhlIGZpbGUgb24gZmlyc3Qgd3JpdGUnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYnVpbGRlciA9IGNyZWF0ZUJ1aWxkZXIodGVzdFJvb3QpO1xuICAgIGNvbnN0IHRhcmdldCA9IGpvaW4odGVzdFJvb3QsICdyb3V0ZS5qcycpO1xuXG4gICAgYXdhaXQgYnVpbGRlci53cml0ZUdlbmVyYXRlZEZpbGUodGFyZ2V0LCAnZmlyc3QnKTtcblxuICAgIGV4cGVjdChyZWFkRmlsZVN5bmModGFyZ2V0LCAndXRmOCcpKS50b0JlKCdmaXJzdCcpO1xuICB9KTtcblxuICAvLyBUaGUgTml0cm8gZGV2IGhhbmRsZXIgY2FjaGUtYnVzdHMgaXRzIGltcG9ydCBvZiBgc3RlcHMubWpzYCBvZmYgdGhlIG10aW1lXG4gIC8vIG9mIGB3b3JrZmxvd3MubWpzYCwgc28gdGhhdCB0YXJnZXQgb3B0cyBvdXQ6IHNraXBwaW5nIHRoZSByZWR1bmRhbnQgd3JpdGVcbiAgLy8gd291bGQgZnJlZXplIHRoZSB2ZXJzaW9uIGtleSBhbmQgc2VydmUgc3RhbGUgc3RlcCBjb2RlLiBTZWVcbiAgLy8gYHBhY2thZ2VzL25pdHJvL3NyYy9idWlsZGVycy50c2AuXG4gIGl0KCdzdGlsbCByZXdyaXRlcyB1bmNoYW5nZWQgb3V0cHV0IHdoZW4gdGhlIHRhcmdldCBvcHRzIG91dCcsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBidWlsZGVyID0gY3JlYXRlT3B0ZWRPdXRCdWlsZGVyKHRlc3RSb290KTtcbiAgICBjb25zdCB0YXJnZXQgPSBqb2luKHRlc3RSb290LCAnd29ya2Zsb3dzLm1qcycpO1xuXG4gICAgYXdhaXQgYnVpbGRlci53cml0ZUdlbmVyYXRlZEZpbGUodGFyZ2V0LCAnZXhwb3J0IGNvbnN0IGEgPSAxOycpO1xuICAgIGNvbnN0IGJlZm9yZSA9IGZpbGVJZGVudGl0eSh0YXJnZXQpO1xuXG4gICAgYXdhaXQgYnVpbGRlci53cml0ZUdlbmVyYXRlZEZpbGUodGFyZ2V0LCAnZXhwb3J0IGNvbnN0IGEgPSAxOycpO1xuXG4gICAgZXhwZWN0KGZpbGVJZGVudGl0eSh0YXJnZXQpKS5ub3QudG9CZShiZWZvcmUpO1xuICAgIGV4cGVjdChyZWFkRmlsZVN5bmModGFyZ2V0LCAndXRmOCcpKS50b0JlKCdleHBvcnQgY29uc3QgYSA9IDE7Jyk7XG4gIH0pO1xufSk7XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workflow/builders",
3
- "version": "5.0.0-beta.43",
3
+ "version": "5.0.0-beta.46",
4
4
  "description": "Shared builder infrastructure for Workflow SDK",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -41,9 +41,9 @@
41
41
  "find-up": "7.0.0",
42
42
  "json5": "2.2.3",
43
43
  "tinyglobby": "0.2.17",
44
- "@workflow/core": "5.0.0-beta.43",
45
- "@workflow/errors": "5.0.0-beta.17",
46
- "@workflow/utils": "5.0.0-beta.8",
44
+ "@workflow/core": "5.0.0-beta.46",
45
+ "@workflow/errors": "5.0.0-beta.18",
46
+ "@workflow/utils": "5.0.0-beta.9",
47
47
  "@workflow/swc-plugin": "5.0.0-beta.5"
48
48
  },
49
49
  "scripts": {