@workflow/core 4.4.0 → 4.6.0

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 (78) hide show
  1. package/dist/capabilities.d.ts +22 -1
  2. package/dist/capabilities.d.ts.map +1 -1
  3. package/dist/capabilities.js +52 -4
  4. package/dist/classify-error.d.ts +15 -0
  5. package/dist/classify-error.d.ts.map +1 -1
  6. package/dist/classify-error.js +47 -3
  7. package/dist/create-hook.d.ts +39 -0
  8. package/dist/create-hook.d.ts.map +1 -1
  9. package/dist/create-hook.js +1 -1
  10. package/dist/events-consumer.d.ts +9 -0
  11. package/dist/events-consumer.d.ts.map +1 -1
  12. package/dist/events-consumer.js +56 -18
  13. package/dist/global.d.ts +2 -0
  14. package/dist/global.d.ts.map +1 -1
  15. package/dist/global.js +1 -1
  16. package/dist/logger.d.ts +6 -0
  17. package/dist/logger.d.ts.map +1 -1
  18. package/dist/logger.js +48 -2
  19. package/dist/private.d.ts +31 -0
  20. package/dist/private.d.ts.map +1 -1
  21. package/dist/private.js +13 -1
  22. package/dist/runtime/constants.d.ts.map +1 -1
  23. package/dist/runtime/constants.js +14 -8
  24. package/dist/runtime/get-port-lazy.d.ts +15 -0
  25. package/dist/runtime/get-port-lazy.d.ts.map +1 -0
  26. package/dist/runtime/get-port-lazy.js +63 -0
  27. package/dist/runtime/helpers.d.ts +4 -2
  28. package/dist/runtime/helpers.d.ts.map +1 -1
  29. package/dist/runtime/helpers.js +6 -7
  30. package/dist/runtime/resume-hook.d.ts.map +1 -1
  31. package/dist/runtime/resume-hook.js +23 -12
  32. package/dist/runtime/start.d.ts +11 -1
  33. package/dist/runtime/start.d.ts.map +1 -1
  34. package/dist/runtime/start.js +92 -33
  35. package/dist/runtime/step-handler.d.ts.map +1 -1
  36. package/dist/runtime/step-handler.js +32 -20
  37. package/dist/runtime/suspension-handler.d.ts.map +1 -1
  38. package/dist/runtime/suspension-handler.js +81 -40
  39. package/dist/runtime/wait-until.d.ts +18 -0
  40. package/dist/runtime/wait-until.d.ts.map +1 -0
  41. package/dist/runtime/wait-until.js +42 -0
  42. package/dist/runtime.d.ts +3 -1
  43. package/dist/runtime.d.ts.map +1 -1
  44. package/dist/runtime.js +27 -7
  45. package/dist/serialization.d.ts +113 -3
  46. package/dist/serialization.d.ts.map +1 -1
  47. package/dist/serialization.js +381 -19
  48. package/dist/step/writable-stream.d.ts.map +1 -1
  49. package/dist/step/writable-stream.js +6 -3
  50. package/dist/step-hydration-cache.d.ts +148 -0
  51. package/dist/step-hydration-cache.d.ts.map +1 -0
  52. package/dist/step-hydration-cache.js +171 -0
  53. package/dist/step.d.ts.map +1 -1
  54. package/dist/step.js +18 -2
  55. package/dist/symbols.d.ts +1 -0
  56. package/dist/symbols.d.ts.map +1 -1
  57. package/dist/symbols.js +2 -1
  58. package/dist/util.d.ts +0 -5
  59. package/dist/util.d.ts.map +1 -1
  60. package/dist/util.js +1 -15
  61. package/dist/version.d.ts +1 -1
  62. package/dist/version.js +2 -2
  63. package/dist/vm/script-cache.d.ts +28 -0
  64. package/dist/vm/script-cache.d.ts.map +1 -0
  65. package/dist/vm/script-cache.js +140 -0
  66. package/dist/workflow/hook.d.ts.map +1 -1
  67. package/dist/workflow/hook.js +92 -3
  68. package/dist/workflow.d.ts +10 -1
  69. package/dist/workflow.d.ts.map +1 -1
  70. package/dist/workflow.js +37 -6
  71. package/docs/api-reference/create-hook.mdx +32 -0
  72. package/docs/api-reference/create-webhook.mdx +1 -0
  73. package/docs/foundations/hooks.mdx +29 -0
  74. package/docs/foundations/streaming.mdx +7 -1
  75. package/docs/foundations/versioning.mdx +1 -1
  76. package/docs/how-it-works/encryption.mdx +2 -2
  77. package/docs/how-it-works/event-sourcing.mdx +2 -2
  78. package/package.json +9 -5
@@ -1 +1 @@
1
- {"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,IAAI,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,SAAS,GACjB,uBAAuB,GACvB,uBAAuB,GACvB,uBAAuB,CAAC;AAE5B;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;gBAEd,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,UAAU;IAwEzE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB;CAGvD;AAED,wBAAgB,OAAO,IAAI,KAAK,CAE/B"}
1
+ {"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,IAAI,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,SAAS,GACjB,uBAAuB,GACvB,uBAAuB,GACvB,uBAAuB,CAAC;AAE5B;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;gBAEd,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,UAAU;IAwEzE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB;CAGvD;AAED,wBAAgB,OAAO,IAAI,KAAK,CAE/B"}
package/dist/global.js CHANGED
@@ -92,4 +92,4 @@ export class WorkflowSuspension extends Error {
92
92
  export function ENOTSUP() {
93
93
  throw new Error('Not supported in workflow functions');
94
94
  }
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dsb2JhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFtQzVDOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLEtBQUs7SUFDM0MsS0FBSyxDQUFjO0lBQ25CLFVBQVUsQ0FBb0I7SUFDOUIsU0FBUyxDQUFTO0lBQ2xCLFNBQVMsQ0FBUztJQUNsQixTQUFTLENBQVM7SUFDbEIsaUJBQWlCLENBQVM7SUFFMUIsWUFBWSxVQUFrQyxFQUFFLE1BQXlCO1FBQ3ZFLGlEQUFpRDtRQUNqRCxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFdkMsc0NBQXNDO1FBQ3RDLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNsQixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU07Z0JBQUUsU0FBUyxFQUFFLENBQUM7aUJBQ2pDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxJQUFJLENBQUMsUUFBUTtvQkFBRSxpQkFBaUIsRUFBRSxDQUFDOztvQkFDbEMsU0FBUyxFQUFFLENBQUM7WUFDbkIsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTTtnQkFBRSxTQUFTLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBRUQsMEJBQTBCO1FBQzFCLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztRQUMzQixJQUFJLFNBQVMsR0FBRyxDQUFDLEVB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U0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFjO1FBQ3RCLE9BQU8sS0FBSyxZQUFZLGtCQUFrQixDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSxPQUFPO0lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztBQUN6RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGx1cmFsaXplIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzJztcbmltcG9ydCB0eXBlIHsgU2VyaWFsaXphYmxlIH0gZnJvbSAnLi9zY2hlbWFzLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBTdGVwSW52b2NhdGlvblF1ZXVlSXRlbSB7XG4gIHR5cGU6ICdzdGVwJztcbiAgY29ycmVsYXRpb25JZDogc3RyaW5nO1xuICBzdGVwTmFtZTogc3RyaW5nO1xuICBhcmdzOiBTZXJpYWxpemFibGVbXTtcbiAgY2xvc3VyZVZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBTZXJpYWxpemFibGU+O1xuICB0aGlzVmFsPzogU2VyaWFsaXphYmxlO1xuICBoYXNDcmVhdGVkRXZlbnQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhvb2tJbnZvY2F0aW9uUXVldWVJdGVtIHtcbiAgdHlwZTogJ2hvb2snO1xuICBjb3JyZWxhdGlvbklkOiBzdHJpbmc7XG4gIHRva2VuOiBzdHJpbmc7XG4gIG1ldGFkYXRhPzogU2VyaWFsaXphYmxlO1xuICBoYXNDcmVhdGVkRXZlbnQ/OiBib29sZWFuO1xuICBkaXNwb3NlZD86IGJvb2xlYW47XG4gIGlzV2ViaG9vaz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2FpdEludm9jYXRpb25RdWV1ZUl0ZW0ge1xuICB0eXBlOiAnd2FpdCc7XG4gIGNvcnJlbGF0aW9uSWQ6IHN0cmluZztcbiAgcmVzdW1lQXQ6IERhdGU7XG4gIGhhc0NyZWF0ZWRFdmVudD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFF1ZXVlSXRlbSA9XG4gIHwgU3RlcEludm9jYXRpb25RdWV1ZUl0ZW1cbiAgfCBIb29rSW52b2NhdGlvblF1ZXVlSXRlbVxuICB8IFdhaXRJbnZvY2F0aW9uUXVldWVJdGVtO1xuXG4vKipcbiAqIEFuIGVycm9yIHRoYXQgaXMgdGhyb3duIHdoZW4gb25lIG9yIG1vcmUgb3BlcmF0aW9ucyAoc3RlcHMvaG9va3MvZXRjLikgYXJlIGNhbGxlZCBidXQgZG9cbiAqIG5vdCB5ZXQgaGF2ZSBjb3JyZXNwb25kaW5nIGVudHJpZXMgaW4gdGhlIGV2ZW50IGxvZy4gVGhlIHdvcmtmbG93XG4gKiBkaXNwYXRjaGVyIHdpbGwgY2F0Y2ggdGhpcyBlcnJvciBhbmQgcHVzaCB0aGUgb3BlcmF0aW9uc1xuICogb250byB0aGUgcXVldWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBXb3JrZmxvd1N1c3BlbnNpb24gZXh0ZW5kcyBFcnJvciB7XG4gIHN0ZXBzOiBRdWV1ZUl0ZW1bXTtcbiAgZ2xvYmFsVGhpczogdHlwZW9mIGdsb2JhbFRoaXM7XG4gIHN0ZXBDb3VudDogbnVtYmVyO1xuICBob29rQ291bnQ6IG51bWJlcjtcbiAgd2FpdENvdW50OiBudW1iZXI7XG4gIGhvb2tEaXNwb3NlZENvdW50OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Ioc3RlcHNJbnB1dDogTWFwPHN0cmluZywgUXVldWVJdGVtPiwgZ2xvYmFsOiB0eXBlb2YgZ2xvYmFsVGhpcykge1xuICAgIC8vIENvbnZlcnQgTWFwIHRvIGFycmF5IGZvciBpdGVyYXRpb24gYW5kIHN0b3JhZ2VcbiAgICBjb25zdCBzdGVwcyA9IFsuLi5zdGVwc0lucHV0LnZhbHVlcygpXTtcblxuICAgIC8vIFNpbmdsZS1wYXNzIGNvdW50aW5nIGZvciBlZmZpY2llbmN5XG4gICAgbGV0IHN0ZXBDb3VudCA9IDA7XG4gICAgbGV0IGhvb2tDb3VudCA9IDA7XG4gICAgbGV0IHdhaXRDb3VudCA9IDA7XG4gICAgbGV0IGhvb2tEaXNwb3NlZENvdW50ID0gMDtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygc3RlcHMpIHtcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdzdGVwJykgc3RlcENvdW50Kys7XG4gICAgICBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdob29rJykge1xuICAgICAgICBpZiAoaXRlbS5kaXNwb3NlZCkgaG9va0Rpc3Bvc2VkQ291bnQrKztcbiAgICAgICAgZWxzZSBob29rQ291bnQrKztcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAnd2FpdCcpIHdhaXRDb3VudCsrO1xuICAgIH1cblxuICAgIC8vIEJ1aWxkIGRlc2NyaXB0aW9uIHBhcnRzXG4gICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHN0ZXBDb3VudCA+IDApIHtcbiAgICAgIHBhcnRzLnB1c2goYCR7c3RlcENvdW50fSAke3BsdXJhbGl6ZSgnc3RlcCcsICdzdGVwcycsIHN0ZXBDb3VudCl9YCk7XG4gICAgfVxuICAgIGlmIChob29rQ291bnQgPiAwKSB7XG4gICAgICBwYXJ0cy5wdXNoKGAke2hvb2tDb3VudH0gJHtwbHVyYWxpemUoJ2hvb2snLCAnaG9va3MnLCBob29rQ291bnQpfWApO1xuICAgIH1cbiAgICBpZiAod2FpdENvdW50ID4gMCkge1xuICAgICAgcGFydHMucHVzaChgJHt3YWl0Q291bnR9ICR7cGx1cmFsaXplKCd3YWl0JywgJ3dhaXRzJywgd2FpdENvdW50KX1gKTtcbiAgICB9XG4gICAgaWYgKGhvb2tEaXNwb3NlZENvdW50ID4gMCkge1xuICAgICAgcGFydHMucHVzaChcbiAgICAgICAgYCR7aG9va0Rpc3Bvc2VkQ291bnR9IGhvb2sgJHtwbHVyYWxpemUoJ2Rpc3Bvc2FsJywgJ2Rpc3Bvc2FscycsIGhvb2tEaXNwb3NlZENvdW50KX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSB2ZXJiIChoYXMvaGF2ZSkgYW5kIGFjdGlvbiAocnVuL2NyZWF0ZWQvcmVjZWl2ZWQpXG4gICAgY29uc3QgdG90YWxDb3VudCA9IHN0ZXBDb3VudCArIGhvb2tDb3VudCArIHdhaXRDb3VudCArIGhvb2tEaXNwb3NlZENvdW50O1xuICAgIGNvbnN0IGhhc09ySGF2ZSA9IHBsdXJhbGl6ZSgnaGFzJywgJ2hhdmUnLCB0b3RhbENvdW50KTtcbiAgICAvLyBQaWNrIGFjdGlvbiB2ZXJiOiB1c2UgXCJwcm9jZXNzZWRcIiB3aGVuIG1peGVkIHR5cGVzIGFyZSBwcmVzZW50XG4gICAgY29uc3QgdHlwZUNvdW50ID1cbiAgICAgIChzdGVwQ291bnQgPiAwID8gMSA6IDApICtcbiAgICAgIChob29rQ291bnQgPiAwID8gMSA6IDApICtcbiAgICAgICh3YWl0Q291bnQgPiAwID8gMSA6IDApICtcbiAgICAgIChob29rRGlzcG9zZWRDb3VudCA+IDAgPyAxIDogMCk7XG4gICAgbGV0IGFjdGlvbjogc3RyaW5nO1xuICAgIGlmICh0eXBlQ291bnQgPiAxKSB7XG4gICAgICBhY3Rpb24gPSAncHJvY2Vzc2VkJztcbiAgICB9IGVsc2UgaWYgKHN0ZXBDb3VudCA+IDApIHtcbiAgICAgIGFjdGlvbiA9ICdydW4nO1xuICAgIH0gZWxzZSBpZiAoaG9va0NvdW50ID4gMCkge1xuICAgICAgYWN0aW9uID0gJ2NyZWF0ZWQnO1xuICAgIH0gZWxzZSBpZiAod2FpdENvdW50ID4gMCkge1xuICAgICAgYWN0aW9uID0gJ2NyZWF0ZWQnO1xuICAgIH0gZWxzZSBpZiAoaG9va0Rpc3Bvc2VkQ291bnQgPiAwKSB7XG4gICAgICBhY3Rpb24gPSAncHJvY2Vzc2VkJztcbiAgICB9IGVsc2Uge1xuICAgICAgYWN0aW9uID0gJ3JlY2VpdmVkJztcbiAgICB9XG5cbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9XG4gICAgICBwYXJ0cy5sZW5ndGggPiAwXG4gICAgICAgID8gYCR7cGFydHMuam9pbignIGFuZCAnKX0gJHtoYXNPckhhdmV9IG5vdCBiZWVuICR7YWN0aW9ufSB5ZXRgXG4gICAgICAgIDogJzAgc3RlcHMgaGF2ZSBub3QgYmVlbiBydW4geWV0JzsgLy8gRGVmYXVsdCBjYXNlIGZvciBlbXB0eSBhcnJheVxuICAgIHN1cGVyKGRlc2NyaXB0aW9uKTtcbiAgICB0aGlzLm5hbWUgPSAnV29ya2Zsb3dTdXNwZW5zaW9uJztcbiAgICB0aGlzLnN0ZXBzID0gc3RlcHM7XG4gICAgdGhpcy5nbG9iYWxUaGlzID0gZ2xvYmFsO1xuICAgIHRoaXMuc3RlcENvdW50ID0gc3RlcENvdW50O1xuICAgIHRoaXMuaG9va0NvdW50ID0gaG9va0NvdW50O1xuICAgIHRoaXMud2FpdENvdW50ID0gd2FpdENvdW50O1xuICAgIHRoaXMuaG9va0Rpc3Bvc2VkQ291bnQgPSBob29rRGlzcG9zZWRDb3VudDtcbiAgfVxuXG4gIHN0YXRpYyBpcyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFdvcmtmbG93U3VzcGVuc2lvbiB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgV29ya2Zsb3dTdXNwZW5zaW9uO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFTk9UU1VQKCk6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIGluIHdvcmtmbG93IGZ1bmN0aW9ucycpO1xufVxuIl19
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dsb2JhbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFxQzVDOzs7OztHQUtHO0FBQ0gsTUFBTSxPQUFPLGtCQUFtQixTQUFRLEtBQUs7SUFDM0MsS0FBSyxDQUFjO0lBQ25CLFVBQVUsQ0FBb0I7SUFDOUIsU0FBUyxDQUFTO0lBQ2xCLFNBQVMsQ0FBUztJQUNsQixTQUFTLENBQVM7SUFDbEIsaUJBQWlCLENBQVM7SUFFMUIsWUFBWSxVQUFrQyxFQUFFLE1BQXlCO1FBQ3ZFLGlEQUFpRDtRQUNqRCxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFFdkMsc0NBQXNDO1FBQ3RDLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNsQixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO1FBQzFCLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDekIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU07Z0JBQUUsU0FBUyxFQUFFLENBQUM7aUJBQ2pDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxJQUFJLENBQUMsUUFBUTtvQkFBRSxpQkFBaUIsRUFBRSxDQUFDOztvQkFDbEMsU0FBUyxFQUFFLENBQUM7WUFDbkIsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTTtnQkFBRSxTQUFTLEVBQUUsQ0FBQztRQUMvQyxDQUFDO1FBRUQsMEJBQTBCO1FBQzFCLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztRQUMzQixJQUFJLFNBQVMsR0FBRyxDQUFDLEVB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U0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztJQUM3QyxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFjO1FBQ3RCLE9BQU8sS0FBSyxZQUFZLGtCQUFrQixDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQUVELE1BQU0sVUFBVSxPQUFPO0lBQ3JCLE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztBQUN6RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcGx1cmFsaXplIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzJztcbmltcG9ydCB0eXBlIHsgU2VyaWFsaXphYmxlIH0gZnJvbSAnLi9zY2hlbWFzLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBTdGVwSW52b2NhdGlvblF1ZXVlSXRlbSB7XG4gIHR5cGU6ICdzdGVwJztcbiAgY29ycmVsYXRpb25JZDogc3RyaW5nO1xuICBzdGVwTmFtZTogc3RyaW5nO1xuICBhcmdzOiBTZXJpYWxpemFibGVbXTtcbiAgY2xvc3VyZVZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBTZXJpYWxpemFibGU+O1xuICB0aGlzVmFsPzogU2VyaWFsaXphYmxlO1xuICBoYXNDcmVhdGVkRXZlbnQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEhvb2tJbnZvY2F0aW9uUXVldWVJdGVtIHtcbiAgdHlwZTogJ2hvb2snO1xuICBjb3JyZWxhdGlvbklkOiBzdHJpbmc7XG4gIHRva2VuOiBzdHJpbmc7XG4gIG1ldGFkYXRhPzogU2VyaWFsaXphYmxlO1xuICBoYXNDcmVhdGVkRXZlbnQ/OiBib29sZWFuO1xuICAvKiogV2hldGhlciB0aGUgd29ya2Zsb3cgaXMgYXdhaXRpbmcgYGhvb2suZ2V0Q29uZmxpY3QoKWAgZm9yIHRoaXMgaG9vayAqL1xuICBoYXNDb25mbGljdEF3YWl0ZXI/OiBib29sZWFuO1xuICBkaXNwb3NlZD86IGJvb2xlYW47XG4gIGlzV2ViaG9vaz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2FpdEludm9jYXRpb25RdWV1ZUl0ZW0ge1xuICB0eXBlOiAnd2FpdCc7XG4gIGNvcnJlbGF0aW9uSWQ6IHN0cmluZztcbiAgcmVzdW1lQXQ6IERhdGU7XG4gIGhhc0NyZWF0ZWRFdmVudD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFF1ZXVlSXRlbSA9XG4gIHwgU3RlcEludm9jYXRpb25RdWV1ZUl0ZW1cbiAgfCBIb29rSW52b2NhdGlvblF1ZXVlSXRlbVxuICB8IFdhaXRJbnZvY2F0aW9uUXVldWVJdGVtO1xuXG4vKipcbiAqIEFuIGVycm9yIHRoYXQgaXMgdGhyb3duIHdoZW4gb25lIG9yIG1vcmUgb3BlcmF0aW9ucyAoc3RlcHMvaG9va3MvZXRjLikgYXJlIGNhbGxlZCBidXQgZG9cbiAqIG5vdCB5ZXQgaGF2ZSBjb3JyZXNwb25kaW5nIGVudHJpZXMgaW4gdGhlIGV2ZW50IGxvZy4gVGhlIHdvcmtmbG93XG4gKiBkaXNwYXRjaGVyIHdpbGwgY2F0Y2ggdGhpcyBlcnJvciBhbmQgcHVzaCB0aGUgb3BlcmF0aW9uc1xuICogb250byB0aGUgcXVldWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBXb3JrZmxvd1N1c3BlbnNpb24gZXh0ZW5kcyBFcnJvciB7XG4gIHN0ZXBzOiBRdWV1ZUl0ZW1bXTtcbiAgZ2xvYmFsVGhpczogdHlwZW9mIGdsb2JhbFRoaXM7XG4gIHN0ZXBDb3VudDogbnVtYmVyO1xuICBob29rQ291bnQ6IG51bWJlcjtcbiAgd2FpdENvdW50OiBudW1iZXI7XG4gIGhvb2tEaXNwb3NlZENvdW50OiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3Ioc3RlcHNJbnB1dDogTWFwPHN0cmluZywgUXVldWVJdGVtPiwgZ2xvYmFsOiB0eXBlb2YgZ2xvYmFsVGhpcykge1xuICAgIC8vIENvbnZlcnQgTWFwIHRvIGFycmF5IGZvciBpdGVyYXRpb24gYW5kIHN0b3JhZ2VcbiAgICBjb25zdCBzdGVwcyA9IFsuLi5zdGVwc0lucHV0LnZhbHVlcygpXTtcblxuICAgIC8vIFNpbmdsZS1wYXNzIGNvdW50aW5nIGZvciBlZmZpY2llbmN5XG4gICAgbGV0IHN0ZXBDb3VudCA9IDA7XG4gICAgbGV0IGhvb2tDb3VudCA9IDA7XG4gICAgbGV0IHdhaXRDb3VudCA9IDA7XG4gICAgbGV0IGhvb2tEaXNwb3NlZENvdW50ID0gMDtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygc3RlcHMpIHtcbiAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdzdGVwJykgc3RlcENvdW50Kys7XG4gICAgICBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdob29rJykge1xuICAgICAgICBpZiAoaXRlbS5kaXNwb3NlZCkgaG9va0Rpc3Bvc2VkQ291bnQrKztcbiAgICAgICAgZWxzZSBob29rQ291bnQrKztcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSAnd2FpdCcpIHdhaXRDb3VudCsrO1xuICAgIH1cblxuICAgIC8vIEJ1aWxkIGRlc2NyaXB0aW9uIHBhcnRzXG4gICAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHN0ZXBDb3VudCA+IDApIHtcbiAgICAgIHBhcnRzLnB1c2goYCR7c3RlcENvdW50fSAke3BsdXJhbGl6ZSgnc3RlcCcsICdzdGVwcycsIHN0ZXBDb3VudCl9YCk7XG4gICAgfVxuICAgIGlmIChob29rQ291bnQgPiAwKSB7XG4gICAgICBwYXJ0cy5wdXNoKGAke2hvb2tDb3VudH0gJHtwbHVyYWxpemUoJ2hvb2snLCAnaG9va3MnLCBob29rQ291bnQpfWApO1xuICAgIH1cbiAgICBpZiAod2FpdENvdW50ID4gMCkge1xuICAgICAgcGFydHMucHVzaChgJHt3YWl0Q291bnR9ICR7cGx1cmFsaXplKCd3YWl0JywgJ3dhaXRzJywgd2FpdENvdW50KX1gKTtcbiAgICB9XG4gICAgaWYgKGhvb2tEaXNwb3NlZENvdW50ID4gMCkge1xuICAgICAgcGFydHMucHVzaChcbiAgICAgICAgYCR7aG9va0Rpc3Bvc2VkQ291bnR9IGhvb2sgJHtwbHVyYWxpemUoJ2Rpc3Bvc2FsJywgJ2Rpc3Bvc2FscycsIGhvb2tEaXNwb3NlZENvdW50KX1gXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIERldGVybWluZSB2ZXJiIChoYXMvaGF2ZSkgYW5kIGFjdGlvbiAocnVuL2NyZWF0ZWQvcmVjZWl2ZWQpXG4gICAgY29uc3QgdG90YWxDb3VudCA9IHN0ZXBDb3VudCArIGhvb2tDb3VudCArIHdhaXRDb3VudCArIGhvb2tEaXNwb3NlZENvdW50O1xuICAgIGNvbnN0IGhhc09ySGF2ZSA9IHBsdXJhbGl6ZSgnaGFzJywgJ2hhdmUnLCB0b3RhbENvdW50KTtcbiAgICAvLyBQaWNrIGFjdGlvbiB2ZXJiOiB1c2UgXCJwcm9jZXNzZWRcIiB3aGVuIG1peGVkIHR5cGVzIGFyZSBwcmVzZW50XG4gICAgY29uc3QgdHlwZUNvdW50ID1cbiAgICAgIChzdGVwQ291bnQgPiAwID8gMSA6IDApICtcbiAgICAgIChob29rQ291bnQgPiAwID8gMSA6IDApICtcbiAgICAgICh3YWl0Q291bnQgPiAwID8gMSA6IDApICtcbiAgICAgIChob29rRGlzcG9zZWRDb3VudCA+IDAgPyAxIDogMCk7XG4gICAgbGV0IGFjdGlvbjogc3RyaW5nO1xuICAgIGlmICh0eXBlQ291bnQgPiAxKSB7XG4gICAgICBhY3Rpb24gPSAncHJvY2Vzc2VkJztcbiAgICB9IGVsc2UgaWYgKHN0ZXBDb3VudCA+IDApIHtcbiAgICAgIGFjdGlvbiA9ICdydW4nO1xuICAgIH0gZWxzZSBpZiAoaG9va0NvdW50ID4gMCkge1xuICAgICAgYWN0aW9uID0gJ2NyZWF0ZWQnO1xuICAgIH0gZWxzZSBpZiAod2FpdENvdW50ID4gMCkge1xuICAgICAgYWN0aW9uID0gJ2NyZWF0ZWQnO1xuICAgIH0gZWxzZSBpZiAoaG9va0Rpc3Bvc2VkQ291bnQgPiAwKSB7XG4gICAgICBhY3Rpb24gPSAncHJvY2Vzc2VkJztcbiAgICB9IGVsc2Uge1xuICAgICAgYWN0aW9uID0gJ3JlY2VpdmVkJztcbiAgICB9XG5cbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9XG4gICAgICBwYXJ0cy5sZW5ndGggPiAwXG4gICAgICAgID8gYCR7cGFydHMuam9pbignIGFuZCAnKX0gJHtoYXNPckhhdmV9IG5vdCBiZWVuICR7YWN0aW9ufSB5ZXRgXG4gICAgICAgIDogJzAgc3RlcHMgaGF2ZSBub3QgYmVlbiBydW4geWV0JzsgLy8gRGVmYXVsdCBjYXNlIGZvciBlbXB0eSBhcnJheVxuICAgIHN1cGVyKGRlc2NyaXB0aW9uKTtcbiAgICB0aGlzLm5hbWUgPSAnV29ya2Zsb3dTdXNwZW5zaW9uJztcbiAgICB0aGlzLnN0ZXBzID0gc3RlcHM7XG4gICAgdGhpcy5nbG9iYWxUaGlzID0gZ2xvYmFsO1xuICAgIHRoaXMuc3RlcENvdW50ID0gc3RlcENvdW50O1xuICAgIHRoaXMuaG9va0NvdW50ID0gaG9va0NvdW50O1xuICAgIHRoaXMud2FpdENvdW50ID0gd2FpdENvdW50O1xuICAgIHRoaXMuaG9va0Rpc3Bvc2VkQ291bnQgPSBob29rRGlzcG9zZWRDb3VudDtcbiAgfVxuXG4gIHN0YXRpYyBpcyh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFdvcmtmbG93U3VzcGVuc2lvbiB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgV29ya2Zsb3dTdXNwZW5zaW9uO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFTk9UU1VQKCk6IG5ldmVyIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdOb3Qgc3VwcG9ydGVkIGluIHdvcmtmbG93IGZ1bmN0aW9ucycpO1xufVxuIl19
package/dist/logger.d.ts CHANGED
@@ -28,4 +28,10 @@ export declare const adapterLogger: {
28
28
  warn: (message: string, metadata?: Record<string, any>) => void;
29
29
  error: (message: string, metadata?: Record<string, any>) => void;
30
30
  };
31
+ export declare const buildLogger: {
32
+ debug: (message: string, metadata?: Record<string, any>) => void;
33
+ info: (message: string, metadata?: Record<string, any>) => void;
34
+ warn: (message: string, metadata?: Record<string, any>) => void;
35
+ error: (message: string, metadata?: Record<string, any>) => void;
36
+ };
31
37
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAyCA,eAAO,MAAM,UAAU;qBAhCF,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;qBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAgCb,CAAC;AAC/C,eAAO,MAAM,aAAa;qBAjCL,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;qBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAiCP,CAAC;AACrD,eAAO,MAAM,aAAa;qBAlCL,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;qBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAkCP,CAAC;AACrD,eAAO,MAAM,YAAY;qBAnCJ,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;qBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAmCT,CAAC;AACnD,eAAO,MAAM,aAAa;qBApCL,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;qBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAoCP,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAuGA,eAAO,MAAM,UAAU;qBAtDF,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;qBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAsDb,CAAC;AAC/C,eAAO,MAAM,aAAa;qBAvDL,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;qBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAuDP,CAAC;AACrD,eAAO,MAAM,aAAa;qBAxDL,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;qBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAwDP,CAAC;AACrD,eAAO,MAAM,YAAY;qBAzDJ,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;qBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAyDT,CAAC;AACnD,eAAO,MAAM,aAAa;qBA1DL,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;qBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CA0DP,CAAC;AACrD,eAAO,MAAM,WAAW;qBA3DH,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;oBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;qBAAtC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CA6DzD,CAAC"}
package/dist/logger.js CHANGED
@@ -1,9 +1,35 @@
1
1
  import debug from 'debug';
2
2
  import { getActiveSpan } from './telemetry.js';
3
- function createLogger(namespace) {
3
+ /**
4
+ * Lightweight `DEBUG=` pattern matcher used for loggers that pin an explicit
5
+ * debug namespace (e.g. the build logger). Evaluated lazily against
6
+ * `process.env.DEBUG` on every call so tests and tooling can toggle the env
7
+ * var at runtime.
8
+ */
9
+ function matchesDebugNamespace(namespace, patternList) {
10
+ if (!patternList) {
11
+ return false;
12
+ }
13
+ let enabled = false;
14
+ for (const rawPattern of patternList.split(',')) {
15
+ const pattern = rawPattern.trim();
16
+ if (!pattern) {
17
+ continue;
18
+ }
19
+ const isNegated = pattern.startsWith('-');
20
+ const candidate = isNegated ? pattern.slice(1) : pattern;
21
+ const regex = new RegExp(`^${candidate.replace(/[|\\{}()[\]^$+?.]/g, '\\$&').replace(/\*/g, '.*')}$`);
22
+ if (regex.test(namespace)) {
23
+ enabled = !isNegated;
24
+ }
25
+ }
26
+ return enabled;
27
+ }
28
+ function createLogger(namespace, options = {}) {
4
29
  const baseDebug = debug(`workflow:${namespace}`);
5
30
  const logger = (level) => {
6
31
  const levelDebug = baseDebug.extend(level);
32
+ const debugNamespace = options.debugNamespace;
7
33
  return (message, metadata) => {
8
34
  // Always output error/warn to console so users see critical issues
9
35
  // debug/info only output when DEBUG env var is set
@@ -13,6 +39,23 @@ function createLogger(namespace) {
13
39
  else if (level === 'warn') {
14
40
  console.warn(`[Workflow] ${message}`, metadata ?? '');
15
41
  }
42
+ // Loggers pinned to an explicit debug namespace (e.g. the build logger)
43
+ // route through console.debug, gated by a lightweight DEBUG matcher that
44
+ // is evaluated lazily so the namespace can be toggled at runtime.
45
+ if (debugNamespace) {
46
+ const debugEnabled = matchesDebugNamespace(debugNamespace, process.env.DEBUG);
47
+ if (debugEnabled) {
48
+ console.debug(`[${debugNamespace}] ${message}`, metadata ?? '');
49
+ getActiveSpan()
50
+ .then((span) => {
51
+ span?.addEvent(`${level}.${namespace}`, { message, ...metadata });
52
+ })
53
+ .catch(() => {
54
+ // Silently ignore telemetry errors
55
+ });
56
+ }
57
+ return;
58
+ }
16
59
  // Also log to debug library for verbose output when DEBUG is enabled
17
60
  levelDebug(message, metadata);
18
61
  if (levelDebug.enabled) {
@@ -38,4 +81,7 @@ export const runtimeLogger = createLogger('runtime');
38
81
  export const webhookLogger = createLogger('webhook');
39
82
  export const eventsLogger = createLogger('events');
40
83
  export const adapterLogger = createLogger('adapter');
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9DLFNBQVMsWUFBWSxDQUFDLFNBQWlCO0lBQ3JDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxZQUFZLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFFakQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTtRQUMvQixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTNDLE9BQU8sQ0FBQyxPQUFlLEVBQUUsUUFBOEIsRUFBRSxFQUFFO1lBQ3pELG1FQUFtRTtZQUNuRSxtREFBbUQ7WUFDbkQsSUFBSSxLQUFLLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQ3RCLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxPQUFPLEVBQUUsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7WUFDekQsQ0FBQztpQkFBTSxJQUFJLEtBQUssS0FBSyxNQUFNLEVBQUUsQ0FBQztnQkFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLE9BQU8sRUFBRSxFQUFFLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBRUQscUVBQXFFO1lBQ3JFLFVBQVUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7WUFFOUIsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3ZCLGFBQWEsRUFBRTtxQkFDWixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDYixJQUFJLEVBQUUsUUFBUSxDQUFDLEdBQUcsS0FBSyxJQUFJLFNBQVMsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQztnQkFDcEUsQ0FBQyxDQUFDO3FCQUNELEtBQUssQ0FBQyxHQUFHLEVBQUU7b0JBQ1YsbUNBQW1DO2dCQUNyQyxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDSCxDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRixPQUFPO1FBQ0wsS0FBSyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDdEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDcEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDcEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUM7S0FDdkIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQy9DLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDckQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHsgZ2V0QWN0aXZlU3BhbiB9IGZyb20gJy4vdGVsZW1ldHJ5LmpzJztcblxuZnVuY3Rpb24gY3JlYXRlTG9nZ2VyKG5hbWVzcGFjZTogc3RyaW5nKSB7XG4gIGNvbnN0IGJhc2VEZWJ1ZyA9IGRlYnVnKGB3b3JrZmxvdzoke25hbWVzcGFjZX1gKTtcblxuICBjb25zdCBsb2dnZXIgPSAobGV2ZWw6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGxldmVsRGVidWcgPSBiYXNlRGVidWcuZXh0ZW5kKGxldmVsKTtcblxuICAgIHJldHVybiAobWVzc2FnZTogc3RyaW5nLCBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IHtcbiAgICAgIC8vIEFsd2F5cyBvdXRwdXQgZXJyb3Ivd2FybiB0byBjb25zb2xlIHNvIHVzZXJzIHNlZSBjcml0aWNhbCBpc3N1ZXNcbiAgICAgIC8vIGRlYnVnL2luZm8gb25seSBvdXRwdXQgd2hlbiBERUJVRyBlbnYgdmFyIGlzIHNldFxuICAgICAgaWYgKGxldmVsID09PSAnZXJyb3InKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFtXb3JrZmxvd10gJHttZXNzYWdlfWAsIG1ldGFkYXRhID8/ICcnKTtcbiAgICAgIH0gZWxzZSBpZiAobGV2ZWwgPT09ICd3YXJuJykge1xuICAgICAgICBjb25zb2xlLndhcm4oYFtXb3JrZmxvd10gJHttZXNzYWdlfWAsIG1ldGFkYXRhID8/ICcnKTtcbiAgICAgIH1cblxuICAgICAgLy8gQWxzbyBsb2cgdG8gZGVidWcgbGlicmFyeSBmb3IgdmVyYm9zZSBvdXRwdXQgd2hlbiBERUJVRyBpcyBlbmFibGVkXG4gICAgICBsZXZlbERlYnVnKG1lc3NhZ2UsIG1ldGFkYXRhKTtcblxuICAgICAgaWYgKGxldmVsRGVidWcuZW5hYmxlZCkge1xuICAgICAgICBnZXRBY3RpdmVTcGFuKClcbiAgICAgICAgICAudGhlbigoc3BhbikgPT4ge1xuICAgICAgICAgICAgc3Bhbj8uYWRkRXZlbnQoYCR7bGV2ZWx9LiR7bmFtZXNwYWNlfWAsIHsgbWVzc2FnZSwgLi4ubWV0YWRhdGEgfSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgLy8gU2lsZW50bHkgaWdub3JlIHRlbGVtZXRyeSBlcnJvcnNcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgZGVidWc6IGxvZ2dlcignZGVidWcnKSxcbiAgICBpbmZvOiBsb2dnZXIoJ2luZm8nKSxcbiAgICB3YXJuOiBsb2dnZXIoJ3dhcm4nKSxcbiAgICBlcnJvcjogbG9nZ2VyKCdlcnJvcicpLFxuICB9O1xufVxuXG5leHBvcnQgY29uc3Qgc3RlcExvZ2dlciA9IGNyZWF0ZUxvZ2dlcignc3RlcCcpO1xuZXhwb3J0IGNvbnN0IHJ1bnRpbWVMb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ3J1bnRpbWUnKTtcbmV4cG9ydCBjb25zdCB3ZWJob29rTG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCd3ZWJob29rJyk7XG5leHBvcnQgY29uc3QgZXZlbnRzTG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdldmVudHMnKTtcbmV4cG9ydCBjb25zdCBhZGFwdGVyTG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdhZGFwdGVyJyk7XG4iXX0=
84
+ export const buildLogger = createLogger('build', {
85
+ debugNamespace: 'workflow:build',
86
+ });
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTS9DOzs7OztHQUtHO0FBQ0gsU0FBUyxxQkFBcUIsQ0FDNUIsU0FBaUIsRUFDakIsV0FBK0I7SUFFL0IsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2pCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNwQixLQUFLLE1BQU0sVUFBVSxJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNoRCxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsU0FBUztRQUNYLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1FBQ3pELE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUN0QixJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUM1RSxDQUFDO1FBRUYsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIs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USxDQUFDLENBQUM7QUFDbkQsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNyRCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLE9BQU8sRUFBRTtJQUMvQyxjQUFjLEVBQUUsZ0JBQWdCO0NBQ2pDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBnZXRBY3RpdmVTcGFuIH0gZnJvbSAnLi90ZWxlbWV0cnkuanMnO1xuXG50eXBlIExvZ2dlck9wdGlvbnMgPSB7XG4gIGRlYnVnTmFtZXNwYWNlPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBMaWdodHdlaWdodCBgREVCVUc9YCBwYXR0ZXJuIG1hdGNoZXIgdXNlZCBmb3IgbG9nZ2VycyB0aGF0IHBpbiBhbiBleHBsaWNpdFxuICogZGVidWcgbmFtZXNwYWNlIChlLmcuIHRoZSBidWlsZCBsb2dnZXIpLiBFdmFsdWF0ZWQgbGF6aWx5IGFnYWluc3RcbiAqIGBwcm9jZXNzLmVudi5ERUJVR2Agb24gZXZlcnkgY2FsbCBzbyB0ZXN0cyBhbmQgdG9vbGluZyBjYW4gdG9nZ2xlIHRoZSBlbnZcbiAqIHZhciBhdCBydW50aW1lLlxuICovXG5mdW5jdGlvbiBtYXRjaGVzRGVidWdOYW1lc3BhY2UoXG4gIG5hbWVzcGFjZTogc3RyaW5nLFxuICBwYXR0ZXJuTGlzdDogc3RyaW5nIHwgdW5kZWZpbmVkXG4pOiBib29sZWFuIHtcbiAgaWYgKCFwYXR0ZXJuTGlzdCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGxldCBlbmFibGVkID0gZmFsc2U7XG4gIGZvciAoY29uc3QgcmF3UGF0dGVybiBvZiBwYXR0ZXJuTGlzdC5zcGxpdCgnLCcpKSB7XG4gICAgY29uc3QgcGF0dGVybiA9IHJhd1BhdHRlcm4udHJpbSgpO1xuICAgIGlmICghcGF0dGVybikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgaXNOZWdhdGVkID0gcGF0dGVybi5zdGFydHNXaXRoKCctJyk7XG4gICAgY29uc3QgY2FuZGlkYXRlID0gaXNOZWdhdGVkID8gcGF0dGVybi5zbGljZSgxKSA6IHBhdHRlcm47XG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKFxuICAgICAgYF4ke2NhbmRpZGF0ZS5yZXBsYWNlKC9bfFxcXFx7fSgpW1xcXV4kKz8uXS9nLCAnXFxcXCQmJykucmVwbGFjZSgvXFwqL2csICcuKicpfSRgXG4gICAgKTtcblxuICAgIGlmIChyZWdleC50ZXN0KG5hbWVzcGFjZSkpIHtcbiAgICAgIGVuYWJsZWQgPSAhaXNOZWdhdGVkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlbmFibGVkO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dnZXIobmFtZXNwYWNlOiBzdHJpbmcsIG9wdGlvbnM6IExvZ2dlck9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBiYXNlRGVidWcgPSBkZWJ1Zyhgd29ya2Zsb3c6JHtuYW1lc3BhY2V9YCk7XG5cbiAgY29uc3QgbG9nZ2VyID0gKGxldmVsOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBsZXZlbERlYnVnID0gYmFzZURlYnVnLmV4dGVuZChsZXZlbCk7XG4gICAgY29uc3QgZGVidWdOYW1lc3BhY2UgPSBvcHRpb25zLmRlYnVnTmFtZXNwYWNlO1xuXG4gICAgcmV0dXJuIChtZXNzYWdlOiBzdHJpbmcsIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgLy8gQWx3YXlzIG91dHB1dCBlcnJvci93YXJuIHRvIGNvbnNvbGUgc28gdXNlcnMgc2VlIGNyaXRpY2FsIGlzc3Vlc1xuICAgICAgLy8gZGVidWcvaW5mbyBvbmx5IG91dHB1dCB3aGVuIERFQlVHIGVudiB2YXIgaXMgc2V0XG4gICAgICBpZiAobGV2ZWwgPT09ICdlcnJvcicpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgW1dvcmtmbG93XSAke21lc3NhZ2V9YCwgbWV0YWRhdGEgPz8gJycpO1xuICAgICAgfSBlbHNlIGlmIChsZXZlbCA9PT0gJ3dhcm4nKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihgW1dvcmtmbG93XSAke21lc3NhZ2V9YCwgbWV0YWRhdGEgPz8gJycpO1xuICAgICAgfVxuXG4gICAgICAvLyBMb2dnZXJzIHBpbm5lZCB0byBhbiBleHBsaWNpdCBkZWJ1ZyBuYW1lc3BhY2UgKGUuZy4gdGhlIGJ1aWxkIGxvZ2dlcilcbiAgICAgIC8vIHJvdXRlIHRocm91Z2ggY29uc29sZS5kZWJ1ZywgZ2F0ZWQgYnkgYSBsaWdodHdlaWdodCBERUJVRyBtYXRjaGVyIHRoYXRcbiAgICAgIC8vIGlzIGV2YWx1YXRlZCBsYXppbHkgc28gdGhlIG5hbWVzcGFjZSBjYW4gYmUgdG9nZ2xlZCBhdCBydW50aW1lLlxuICAgICAgaWYgKGRlYnVnTmFtZXNwYWNlKSB7XG4gICAgICAgIGNvbnN0IGRlYnVnRW5hYmxlZCA9IG1hdGNoZXNEZWJ1Z05hbWVzcGFjZShcbiAgICAgICAgICBkZWJ1Z05hbWVzcGFjZSxcbiAgICAgICAgICBwcm9jZXNzLmVudi5ERUJVR1xuICAgICAgICApO1xuXG4gICAgICAgIGlmIChkZWJ1Z0VuYWJsZWQpIHtcbiAgICAgICAgICBjb25zb2xlLmRlYnVnKGBbJHtkZWJ1Z05hbWVzcGFjZX1dICR7bWVzc2FnZX1gLCBtZXRhZGF0YSA/PyAnJyk7XG4gICAgICAgICAgZ2V0QWN0aXZlU3BhbigpXG4gICAgICAgICAgICAudGhlbigoc3BhbikgPT4ge1xuICAgICAgICAgICAgICBzcGFuPy5hZGRFdmVudChgJHtsZXZlbH0uJHtuYW1lc3BhY2V9YCwgeyBtZXNzYWdlLCAuLi5tZXRhZGF0YSB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICAvLyBTaWxlbnRseSBpZ25vcmUgdGVsZW1ldHJ5IGVycm9yc1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBBbHNvIGxvZyB0byBkZWJ1ZyBsaWJyYXJ5IGZvciB2ZXJib3NlIG91dHB1dCB3aGVuIERFQlVHIGlzIGVuYWJsZWRcbiAgICAgIGxldmVsRGVidWcobWVzc2FnZSwgbWV0YWRhdGEpO1xuXG4gICAgICBpZiAobGV2ZWxEZWJ1Zy5lbmFibGVkKSB7XG4gICAgICAgIGdldEFjdGl2ZVNwYW4oKVxuICAgICAgICAgIC50aGVuKChzcGFuKSA9PiB7XG4gICAgICAgICAgICBzcGFuPy5hZGRFdmVudChgJHtsZXZlbH0uJHtuYW1lc3BhY2V9YCwgeyBtZXNzYWdlLCAuLi5tZXRhZGF0YSB9KTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBTaWxlbnRseSBpZ25vcmUgdGVsZW1ldHJ5IGVycm9yc1xuICAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBkZWJ1ZzogbG9nZ2VyKCdkZWJ1ZycpLFxuICAgIGluZm86IGxvZ2dlcignaW5mbycpLFxuICAgIHdhcm46IGxvZ2dlcignd2FybicpLFxuICAgIGVycm9yOiBsb2dnZXIoJ2Vycm9yJyksXG4gIH07XG59XG5cbmV4cG9ydCBjb25zdCBzdGVwTG9nZ2VyID0gY3JlYXRlTG9nZ2VyKCdzdGVwJyk7XG5leHBvcnQgY29uc3QgcnVudGltZUxvZ2dlciA9IGNyZWF0ZUxvZ2dlcigncnVudGltZScpO1xuZXhwb3J0IGNvbnN0IHdlYmhvb2tMb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ3dlYmhvb2snKTtcbmV4cG9ydCBjb25zdCBldmVudHNMb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ2V2ZW50cycpO1xuZXhwb3J0IGNvbnN0IGFkYXB0ZXJMb2dnZXIgPSBjcmVhdGVMb2dnZXIoJ2FkYXB0ZXInKTtcbmV4cG9ydCBjb25zdCBidWlsZExvZ2dlciA9IGNyZWF0ZUxvZ2dlcignYnVpbGQnLCB7XG4gIGRlYnVnTmFtZXNwYWNlOiAnd29ya2Zsb3c6YnVpbGQnLFxufSk7XG4iXX0=
package/dist/private.d.ts CHANGED
@@ -5,6 +5,7 @@ import type { CryptoKey } from './encryption.js';
5
5
  import type { EventsConsumer } from './events-consumer.js';
6
6
  import type { QueueItem } from './global.js';
7
7
  import type { Serializable } from './schemas.js';
8
+ import type { StepHydrationCache } from './step-hydration-cache.js';
8
9
  export type StepFunction<Args extends Serializable[] = any[], Result extends Serializable | unknown = unknown> = ((...args: Args) => Promise<Result>) & {
9
10
  maxRetries?: number;
10
11
  stepId?: string;
@@ -81,6 +82,24 @@ export interface WorkflowOrchestratorContext {
81
82
  * that do not initialize it degrade gracefully to the previous behavior.
82
83
  */
83
84
  pendingDeliveryBarriers?: Map<number, DeliveryBarrierEntry>;
85
+ /**
86
+ * Per-run memoization cache for hydrated step return values, keyed by the
87
+ * `step_completed` event id. Owned by the inline replay loop in `runtime.ts`
88
+ * and threaded through each `runWorkflow` call so it survives across replay
89
+ * iterations of the SAME run (a fresh context is created each iteration) but
90
+ * never leaks across unrelated runs.
91
+ *
92
+ * On replay K of a sequential N-step workflow, the step consumer would
93
+ * otherwise re-decrypt and re-parse the results of all K already-completed
94
+ * steps — O(N²) across an invocation. This cache makes a completed step's
95
+ * result available in O(1) on subsequent replays. Only primitive results are
96
+ * memoized, so a shared reference can never let one replay's mutation leak
97
+ * into the next; see `step-hydration-cache.ts` for the full rationale.
98
+ *
99
+ * Optional so contexts that do not initialize it (test harnesses) degrade
100
+ * gracefully to re-hydrating every replay — identical to previous behavior.
101
+ */
102
+ stepHydrationCache?: StepHydrationCache;
84
103
  }
85
104
  /** The kind of branch-deciding delivery a barrier represents. */
86
105
  export type DeliveryKind = 'hook' | 'wait';
@@ -129,6 +148,18 @@ export declare function registerDeliveryBarrier(ctx: WorkflowOrchestratorContext
129
148
  * if > 0, wait for promiseQueue → repeat. This handles the multi-round
130
149
  * delivery pattern where each hook payload delivery cycle appends new
131
150
  * async work to the promiseQueue.
151
+ *
152
+ * The initial `setTimeout(0)` macrotask is load-bearing and must NOT be
153
+ * downgraded to a microtask (`queueMicrotask`/`Promise.resolve().then`).
154
+ * `pendingDeliveries` only guards the host-side hydration window; between a
155
+ * delivery's `resolve()` and the workflow VM body running its continuation to
156
+ * register the next subscriber, `pendingDeliveries` is already 0 even though
157
+ * the VM is mid-reaction. Node does not guarantee a microtask scheduled in
158
+ * the host context settles after the cross-VM promise chain (resolve in host
159
+ * → workflow code in VM → subscribe back in host); the macrotask boundary
160
+ * gives that chain time to run, so the suspension does not preempt a sibling
161
+ * delivery still in flight. Empirically, replacing it with `queueMicrotask`
162
+ * breaks hook/sleep `Promise.race` ordering (CorruptedEventLogError).
132
163
  */
133
164
  export declare function scheduleWhenIdle(ctx: WorkflowOrchestratorContext, fn: () => void): void;
134
165
  //# sourceMappingURL=private.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"private.d.ts","sourceRoot":"","sources":["../src/private.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,MAAM,YAAY,CACtB,IAAI,SAAS,YAAY,EAAE,GAAG,GAAG,EAAE,EACnC,MAAM,SAAS,YAAY,GAAG,OAAO,GAAG,OAAO,IAC7C,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAsEF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,QAGxE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAoBxE;AAED;;;GAGG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B;;;OAGG;IACH,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzC,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACxC,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,uBAAuB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;CAC7D;AAED,iEAAiE;AACjE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C,UAAU,oBAAoB;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,gEAAgE;IAChE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,2BAA2B,EAChC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,gBAAgB,EAAE,SAAS,YAAY,EAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,2BAA2B,EAChC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,IAAI,EAAE,YAAY,GACjB,eAAe,CA6BjB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,2BAA2B,EAChC,EAAE,EAAE,MAAM,IAAI,GACb,IAAI,CAYN"}
1
+ {"version":3,"file":"private.d.ts","sourceRoot":"","sources":["../src/private.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,MAAM,YAAY,CACtB,IAAI,SAAS,YAAY,EAAE,GAAG,GAAG,EAAE,EACnC,MAAM,SAAS,YAAY,GAAG,OAAO,GAAG,OAAO,IAC7C,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAsEF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,QAGxE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAoBxE;AAED;;;GAGG;AACH,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAEtE,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,SAAS,GAAG,SAAS,CAAC;IACrC,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,cAAc,EAAE,cAAc,CAAC;IAC/B;;;OAGG;IACH,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzC,eAAe,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACxC,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B;;;;;;OAMG;IACH,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,uBAAuB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC5D;;;;;;;;;;;;;;;;OAgBG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAED,iEAAiE;AACjE,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3C,UAAU,oBAAoB;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,gEAAgE;IAChE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,2BAA2B,EAChC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,gBAAgB,EAAE,SAAS,YAAY,EAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,aAAa,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,2BAA2B,EAChC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,IAAI,EAAE,YAAY,GACjB,eAAe,CA6BjB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,2BAA2B,EAChC,EAAE,EAAE,MAAM,IAAI,GACb,IAAI,CAYN"}
package/dist/private.js CHANGED
@@ -157,6 +157,18 @@ export function registerDeliveryBarrier(ctx, eventIndex, kind) {
157
157
  * if > 0, wait for promiseQueue → repeat. This handles the multi-round
158
158
  * delivery pattern where each hook payload delivery cycle appends new
159
159
  * async work to the promiseQueue.
160
+ *
161
+ * The initial `setTimeout(0)` macrotask is load-bearing and must NOT be
162
+ * downgraded to a microtask (`queueMicrotask`/`Promise.resolve().then`).
163
+ * `pendingDeliveries` only guards the host-side hydration window; between a
164
+ * delivery's `resolve()` and the workflow VM body running its continuation to
165
+ * register the next subscriber, `pendingDeliveries` is already 0 even though
166
+ * the VM is mid-reaction. Node does not guarantee a microtask scheduled in
167
+ * the host context settles after the cross-VM promise chain (resolve in host
168
+ * → workflow code in VM → subscribe back in host); the macrotask boundary
169
+ * gives that chain time to run, so the suspension does not preempt a sibling
170
+ * delivery still in flight. Empirically, replacing it with `queueMicrotask`
171
+ * breaks hook/sleep `Promise.race` ordering (CorruptedEventLogError).
160
172
  */
161
173
  export function scheduleWhenIdle(ctx, fn) {
162
174
  const check = () => {
@@ -172,4 +184,4 @@ export function scheduleWhenIdle(ctx, fn) {
172
184
  };
173
185
  setTimeout(check, 0);
174
186
  }
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcml2YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBY2hELE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBRXpFLE1BQU0sYUFBYSxHQUVmLFVBQVUsQ0FBQztBQUVmLHdEQUF3RDtBQUN4RCxNQUFNLGVBQWUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLElBQUksR0FBRyxFQUduRSxDQUFDLENBQUM7QUFFTCxNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ2pDLGlDQUFpQztJQUNqQyx5QkFBeUI7SUFDekIseUJBQXlCO0NBQzFCLENBQUMsQ0FBQztBQUVILFNBQVMsd0JBQXdCLENBQUMsTUFBYztJQUM5QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQzlDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBRTVDLE1BQU0sUUFBUSxHQUFHLENBQUMsZUFBdUIsRUFBRSxFQUFFO1FBQzNDLElBQUksZUFBZSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ25DLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FB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Q3ZCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFV0aWxzIHVzZWQgYnkgdGhlIGJ1bmRsZXIgd2hlbiB0cmFuc2Zvcm1pbmcgY29kZVxuICovXG5cbmltcG9ydCB7IHdpdGhSZXNvbHZlcnMgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBDcnlwdG9LZXkgfSBmcm9tICcuL2VuY3J5cHRpb24uanMnO1xuaW1wb3J0IHR5cGUgeyBFdmVudHNDb25zdW1lciB9IGZyb20gJy4vZXZlbnRzLWNvbnN1bWVyLmpzJztcbmltcG9ydCB0eXBlIHsgUXVldWVJdGVtIH0gZnJvbSAnLi9nbG9iYWwuanMnO1xuaW1wb3J0IHR5cGUgeyBTZXJpYWxpemFibGUgfSBmcm9tICcuL3NjaGVtYXMuanMnO1xuXG5leHBvcnQgdHlwZSBTdGVwRnVuY3Rpb248XG4gIEFyZ3MgZXh0ZW5kcyBTZXJpYWxpemFibGVbXSA9IGFueVtdLFxuICBSZXN1bHQgZXh0ZW5kcyBTZXJpYWxpemFibGUgfCB1bmtub3duID0gdW5rbm93bixcbj4gPSAoKC4uLmFyZ3M6IEFyZ3MpID0+IFByb21pc2U8UmVzdWx0PikgJiB7XG4gIG1heFJldHJpZXM/OiBudW1iZXI7XG4gIHN0ZXBJZD86IHN0cmluZztcbn07XG5cbmNvbnN0IFJlZ2lzdGVyZWRTdGVwc0tleSA9IFN5bWJvbC5mb3IoJ0B3b3JrZmxvdy9jb3JlLy9yZWdpc3RlcmVkU3RlcHMnKTtcblxuY29uc3QgZ2xvYmFsU3ltYm9sczogdHlwZW9mIGdsb2JhbFRoaXMgJiB7XG4gIFtSZWdpc3RlcmVkU3RlcHNLZXldPzogTWFwPHN0cmluZywgU3RlcEZ1bmN0aW9uPjtcbn0gPSBnbG9iYWxUaGlzO1xuXG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQXNzaWduSW5FeHByZXNzaW9uczogL1xuY29uc3QgcmVnaXN0ZXJlZFN0ZXBzID0gKGdsb2JhbFN5bWJvbHNbUmVnaXN0ZXJlZFN0ZXBzS2V5XSA/Pz0gbmV3IE1hcDxcbiAgc3RyaW5nLFxuICBTdGVwRnVuY3Rpb25cbj4oKSk7XG5cbmNvbnN0IEJVSUxUSU5fU1RFUF9OQU1FUyA9IG5ldyBTZXQoW1xuICAnX19idWlsdGluX3Jlc3BvbnNlX2FycmF5X2J1ZmZlcicsXG4gICdfX2J1aWx0aW5fcmVzcG9uc2VfanNvbicsXG4gICdfX2J1aWx0aW5fcmVzcG9uc2VfdGV4dCcsXG5dKTtcblxuZnVuY3Rpb24gZ2V0U3RlcElkQWxpYXNDYW5kaWRhdGVzKHN0ZXBJZDogc3RyaW5nKTogc3RyaW5nW10ge1xuICBjb25zdCBwYXJ0cyA9IHN0ZXBJZC5zcGxpdCgnLy8nKTtcbiAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMyB8fCBwYXJ0c1swXSAhPT0gJ3N0ZXAnKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgbW9kdWxlUGF0aCA9IHBhcnRzWzFdO1xuICBjb25zdCBmbk5hbWUgPSBwYXJ0c1syXTtcbiAgY29uc3QgbW9kdWxlUGF0aEFsaWFzZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBjb25zdCBhZGRBbGlhcyA9IChhbGlhc01vZHVsZVBhdGg6IHN0cmluZykgPT4ge1xuICAgIGlmIChhbGlhc01vZHVsZVBhdGggIT09IG1vZHVsZVBhdGgpIHtcbiAgICAgIG1vZHVsZVBhdGhBbGlhc2VzLmFkZChhbGlhc01vZHVsZVBhdGgpO1xuICAgIH1cbiAgfTtcblxuICBpZiAobW9kdWxlUGF0aC5zdGFydHNXaXRoKCcuL3dvcmtmbG93cy8nKSkge1xuICAgIGNvbnN0IHdvcmtmbG93UmVsYXRpdmVQYXRoID0gbW9kdWxlUGF0aC5zbGljZSgnLi8nLmxlbmd0aCk7XG4gICAgYWRkQWxpYXMoYC4vZXhhbXBsZS8ke3dvcmtmbG93UmVsYXRpdmVQYXRofWApO1xuICAgIGFkZEFsaWFzKGAuL3NyYy8ke3dvcmtmbG93UmVsYXRpdmVQYXRofWApO1xuICB9IGVsc2UgaWYgKG1vZHVsZVBhdGguc3RhcnRzV2l0aCgnLi9leGFtcGxlL3dvcmtmbG93cy8nKSkge1xuICAgIGNvbnN0IHdvcmtmbG93UmVsYXRpdmVQYXRoID0gbW9kdWxlUGF0aC5zbGljZSgnLi9leGFtcGxlLycubGVuZ3RoKTtcbiAgICBhZGRBbGlhcyhgLi8ke3dvcmtmbG93UmVsYXRpdmVQYXRofWApO1xuICAgIGFkZEFsaWFzKGAuL3NyYy8ke3dvcmtmbG93UmVsYXRpdmVQYXRofWApO1xuICB9IGVsc2UgaWYgKG1vZHVsZVBhdGguc3RhcnRzV2l0aCgnLi9zcmMvd29ya2Zsb3dzLycpKSB7XG4gICAgY29uc3Qgd29ya2Zsb3dSZWxhdGl2ZVBhdGggPSBtb2R1bGVQYXRoLnNsaWNlKCcuL3NyYy8nLmxlbmd0aCk7XG4gICAgYWRkQWxpYXMoYC4vJHt3b3JrZmxvd1JlbGF0aXZlUGF0aH1gKTtcbiAgICBhZGRBbGlhcyhgLi9leGFtcGxlLyR7d29ya2Zsb3dSZWxhdGl2ZVBhdGh9YCk7XG4gIH1cblxuICByZXR1cm4gQXJyYXkuZnJvbShcbiAgICBtb2R1bGVQYXRoQWxpYXNlcyxcbiAgICAoYWxpYXNNb2R1bGVQYXRoKSA9PiBgc3RlcC8vJHthbGlhc01vZHVsZVBhdGh9Ly8ke2ZuTmFtZX1gXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldEJ1aWx0aW5SZXNwb25zZVN0ZXBBbGlhcyhzdGVwSWQ6IHN0cmluZyk6IFN0ZXBGdW5jdGlvbiB8IHVuZGVmaW5lZCB7XG4gIGlmICghQlVJTFRJTl9TVEVQX05BTUVTLmhhcyhzdGVwSWQpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGZvciAoY29uc3QgW3JlZ2lzdGVyZWRTdGVwSWQsIHN0ZXBGbl0gb2YgcmVnaXN0ZXJlZFN0ZXBzLmVudHJpZXMoKSkge1xuICAgIGlmIChyZWdpc3RlcmVkU3RlcElkLmVuZHNXaXRoKGAvLyR7c3RlcElkfWApKSB7XG4gICAgICByZXR1cm4gc3RlcEZuO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVnaXN0ZXIgYSBzdGVwIGZ1bmN0aW9uIHRvIGJlIHNlcnZlZCBpbiB0aGUgc2VydmVyIGJ1bmRsZS5cbiAqIEFsc28gc2V0cyB0aGUgc3RlcElkIHByb3BlcnR5IG9uIHRoZSBmdW5jdGlvbiBmb3Igc2VyaWFsaXphdGlvbiBzdXBwb3J0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJTdGVwRnVuY3Rpb24oc3RlcElkOiBzdHJpbmcsIHN0ZXBGbjogU3RlcEZ1bmN0aW9uKSB7XG4gIHJlZ2lzdGVyZWRTdGVwcy5zZXQoc3RlcElkLCBzdGVwRm4pO1xuICBzdGVwRm4uc3RlcElkID0gc3RlcElkO1xufVxuXG4vKipcbiAqIEZpbmQgYSByZWdpc3RlcmVkIHN0ZXAgZnVuY3Rpb24gYnkgbmFtZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RlcEZ1bmN0aW9uKHN0ZXBJZDogc3RyaW5nKTogU3RlcEZ1bmN0aW9uIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGlyZWN0TWF0Y2ggPSByZWdpc3RlcmVkU3RlcHMuZ2V0KHN0ZXBJZCk7XG4gIGlmIChkaXJlY3RNYXRjaCkge1xuICAgIHJldHVybiBkaXJlY3RNYXRjaDtcbiAgfVxuXG4gIC8vIFN1cHBvcnQgZXF1aXZhbGVudCB3b3JrZmxvdyBwYXRoIGFsaWFzZXMgaW4gbWl4ZWQgc3ltbGluayBlbnZpcm9ubWVudHMuXG4gIGZvciAoY29uc3QgYWxpYXNTdGVwSWQgb2YgZ2V0U3RlcElkQWxpYXNDYW5kaWRhdGVzKHN0ZXBJZCkpIHtcbiAgICBjb25zdCBhbGlhc01hdGNoID0gcmVnaXN0ZXJlZFN0ZXBzLmdldChhbGlhc1N0ZXBJZCk7XG4gICAgaWYgKGFsaWFzTWF0Y2gpIHtcbiAgICAgIHJldHVybiBhbGlhc01hdGNoO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGJ1aWx0aW5BbGlhc01hdGNoID0gZ2V0QnVpbHRpblJlc3BvbnNlU3RlcEFsaWFzKHN0ZXBJZCk7XG4gIGlmIChidWlsdGluQWxpYXNNYXRjaCkge1xuICAgIHJldHVybiBidWlsdGluQWxpYXNNYXRjaDtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogR2V0IGNsb3N1cmUgdmFyaWFibGVzIGZvciB0aGUgY3VycmVudCBzdGVwIGZ1bmN0aW9uXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IHsgX19wcml2YXRlX2dldENsb3N1cmVWYXJzIH0gZnJvbSAnLi9zdGVwL2dldC1jbG9zdXJlLXZhcnMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtmbG93T3JjaGVzdHJhdG9yQ29udGV4dCB7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIGVuY3J5cHRpb25LZXk6IENyeXB0b0tleSB8IHVuZGVmaW5lZDtcbiAgZ2xvYmFsVGhpczogdHlwZW9mIGdsb2JhbFRoaXM7XG4gIGV2ZW50c0NvbnN1bWVyOiBFdmVudHNDb25zdW1lcjtcbiAgLyoqXG4gICAqIE1hcCBvZiBwZW5kaW5nIGludm9jYXRpb25zIGtleWVkIGJ5IGNvcnJlbGF0aW9uSWQuXG4gICAqIFVzaW5nIE1hcCBpbnN0ZWFkIG9mIEFycmF5IGZvciBPKDEpIGxvb2t1cC9kZWxldGUgb3BlcmF0aW9ucy5cbiAgICovXG4gIGludm9jYXRpb25zUXVldWU6IE1hcDxzdHJpbmcsIFF1ZXVlSXRlbT47XG4gIG9uV29ya2Zsb3dFcnJvcjogKGVycm9yOiBFcnJvcikgPT4gdm9pZDtcbiAgZ2VuZXJhdGVVbGlkOiAoKSA9PiBzdHJpbmc7XG4gIGdlbmVyYXRlTmFub2lkOiAoKSA9PiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTZXF1ZW50aWFsIHByb21pc2UgcXVldWUgdGhhdCBlbnN1cmVzIGFsbCBldmVudC1kcml2ZW4gcHJvbWlzZSByZXNvbHV0aW9uc1xuICAgKiAoc3RlcCByZXN1bHRzLCBob29rIHBheWxvYWRzLCBmYWlsdXJlcywgc3VzcGVuc2lvbnMpIGhhcHBlbiBpbiBldmVudCBsb2dcbiAgICogb3JkZXIuIEV2ZXJ5IHJlc29sdmUsIHJlamVjdCwgb3Igd29ya2Zsb3cgZXJyb3IgaXMgY2hhaW5lZCB0aHJvdWdoIHRoaXNcbiAgICogcXVldWUgc28gdGhhdCBldmVuIGlmIGluZGl2aWR1YWwgb3BlcmF0aW9ucyB0YWtlIHZhcmlhYmxlIHRpbWUgKGUuZy4sXG4gICAqIGFzeW5jIGRlY3J5cHRpb24pLCBwcm9taXNlcyByZXNvbHZlIGRldGVybWluaXN0aWNhbGx5LlxuICAgKi9cbiAgcHJvbWlzZVF1ZXVlOiBQcm9taXNlPHZvaWQ+O1xuICAvKipcbiAgICogQ291bnRlciBvZiBpbi1mbGlnaHQgYXN5bmMgZGF0YSBkZWxpdmVyeSBvcGVyYXRpb25zIChzdGVwIHJlc3VsdFxuICAgKiBoeWRyYXRpb24sIGhvb2sgcGF5bG9hZCBoeWRyYXRpb24pLiBTdXNwZW5zaW9ucyBtdXN0IHdhaXQgZm9yIHRoaXNcbiAgICogdG8gcmVhY2ggMCBiZWZvcmUgZmlyaW5nLCB0byBhdm9pZCBwcmVlbXB0aW5nIGRhdGEgZGVsaXZlcnkuXG4gICAqL1xuICBwZW5kaW5nRGVsaXZlcmllczogbnVtYmVyO1xuICAvKipcbiAgICogT3JkZXJlZCByZWdpc3RyeSBvZiBpbi1mbGlnaHQgXCJicmFuY2gtZGVjaWRpbmdcIiBkZWxpdmVyaWVzIOKAlCB0aGVcbiAgICogcmVzb2x1dGlvbnMgYSB3b3JrZmxvdyB0eXBpY2FsbHkgYFByb21pc2UucmFjZWBzIG9uOiBidWZmZXJlZCBob29rXG4gICAqIHBheWxvYWRzIChgaG9va19yZWNlaXZlZGApIGFuZCB3YWl0IGNvbXBsZXRpb25zIChgd2FpdF9jb21wbGV0ZWRgKS5cbiAgICogS2V5ZWQgYnkgdGhlIGRlbGl2ZXJ5J3MgcG9zaXRpb24gKGluZGV4KSBpbiB0aGUgY29uc3VtZWQgZXZlbnQgbG9nLlxuICAgKlxuICAgKiBUaGUgcHJvYmxlbTogYSBidWZmZXJlZCBob29rIHBheWxvYWQgaXMgb2JzZXJ2ZWQgdmlhIHRoZSBhc3luYyBob29rXG4gICAqIGl0ZXJhdG9yIChgeWllbGQgYXdhaXQgdGhpc2ApLCBjb3N0aW5nIGV4dHJhIG1pY3JvdGFzayBob3BzLCB3aGlsZSBhXG4gICAqIGB3YWl0X2NvbXBsZXRlZGAgcmVzb2x2ZXMgd2l0aCBmZXdlciBob3BzIOKAlCBhbmQgYSByZXVzZWQgc2xlZXAgY2FuXG4gICAqIHJlc29sdmUgaW4gYW4gZW50aXJlbHkgZWFybGllciBsb29wIGl0ZXJhdGlvbi4gRWl0aGVyIHdheSwgdGhlXG4gICAqIHJlc29sdXRpb24gdGhhdCB0aGUgY29tbWl0dGVkIGV2ZW50IGxvZyBvcmRlcmVkIGZpcnN0IGNhbiBsb3NlIGFcbiAgICogYFByb21pc2UucmFjZWAgdG8gYSBmYXN0ZXItIG9yIGFscmVhZHktcmVzb2x2ZWQgY29tcGV0aXRvciwgZGl2ZXJnaW5nXG4gICAqIGZyb20gdGhlIGxvZyBhbmQgc3VyZmFjaW5nIGFzIGBSZXBsYXlEaXZlcmdlbmNlRXJyb3JgLlxuICAgKlxuICAgKiBUaGUgZml4IGlzIGEgc3RyaWN0LCBkZXRlcm1pbmlzdGljIGRlbGl2ZXJ5IG9yZGVyIGFuY2hvcmVkIG9uXG4gICAqIGV2ZW50LWxvZyBwb3NpdGlvbjogYSBkZWxpdmVyeSBkb2VzIG5vdCByZXNvbHZlIHRvIHRoZSB3b3JrZmxvdyB1bnRpbFxuICAgKiBldmVyeSBlYXJsaWVyLWluLWxvZyBkZWxpdmVyeSBvZiB0aGUgT1BQT1NJVEUga2luZCBoYXMgYmVlbiBkZWxpdmVyZWQuXG4gICAqIChPcHBvc2l0ZSBraW5kIG9ubHk6IHNlcXVlbnRpYWwgc2FtZS1raW5kIGhvb2sgcGF5bG9hZHMgbXVzdCBub3QgYmxvY2tcbiAgICogb25lIGFub3RoZXIsIGFuZCBhIHdhaXQgbmVlZCBub3Qgd2FpdCBiZWhpbmQgYSBsYXRlciB3YWl0LikgQmVjYXVzZSB0aGVcbiAgICogZ2F0ZSBpcyBcInRoZSBlYXJsaWVyIGRlbGl2ZXJ5IHJlc29sdmVkXCIsIG5vdCBcIndvbiBhIHRpbWluZyByYWNlXCIsIHRoZVxuICAgKiBvdXRjb21lIGlzIGluZGVwZW5kZW50IG9mIG1pY3JvdGFzayBob3BzLCBoeWRyYXRpb24vZGVjcnlwdGlvbiB0aW1lLFxuICAgKiBhbmQgYFByb21pc2UucmFjZWAgYXJndW1lbnQgb3JkZXIuXG4gICAqXG4gICAqIEluZGV4IGlzIHVzZWQgcmF0aGVyIHRoYW4gdGhlIGBldmVudElkYCBzdHJpbmcgYmVjYXVzZSBgZXZlbnRJZGAgaXMgYW5cbiAgICogb3BhcXVlLCB3b3JsZC1hc3NpZ25lZCB2YWx1ZSBub3QgZ3VhcmFudGVlZCB0byBzb3J0IGluIGNyZWF0aW9uIG9yZGVyXG4gICAqIChvbmx5IHRoZSBidW5kbGVkIFVMSUQgd29ybGRzIGhhcHBlbiB0bykuXG4gICAqXG4gICAqIE9wdGlvbmFsIHNvIG9sZGVyL291dC1vZi10cmVlIGNvbnRleHRzIChhbmQgbGlnaHR3ZWlnaHQgdGVzdCBoYXJuZXNzZXMpXG4gICAqIHRoYXQgZG8gbm90IGluaXRpYWxpemUgaXQgZGVncmFkZSBncmFjZWZ1bGx5IHRvIHRoZSBwcmV2aW91cyBiZWhhdmlvci5cbiAgICovXG4gIHBlbmRpbmdEZWxpdmVyeUJhcnJpZXJzPzogTWFwPG51bWJlciwgRGVsaXZlcnlCYXJyaWVyRW50cnk+O1xufVxuXG4vKiogVGhlIGtpbmQgb2YgYnJhbmNoLWRlY2lkaW5nIGRlbGl2ZXJ5IGEgYmFycmllciByZXByZXNlbnRzLiAqL1xuZXhwb3J0IHR5cGUgRGVsaXZlcnlLaW5kID0gJ2hvb2snIHwgJ3dhaXQnO1xuXG5pbnRlcmZhY2UgRGVsaXZlcnlCYXJyaWVyRW50cnkge1xuICBraW5kOiBEZWxpdmVyeUtpbmQ7XG4gIC8qKiBSZXNvbHZlcyBvbmNlIHRoaXMgZGVsaXZlcnkgaGFzIHJlc29sdmVkIHRvIHRoZSB3b3JrZmxvdy4gKi9cbiAgZGVsaXZlcmVkOiBQcm9taXNlPHZvaWQ+O1xufVxuXG4vKipcbiAqIEF3YWl0cywgaW4gc3RyaWN0IGV2ZW50LWxvZyBvcmRlciwgZXZlcnkgc3RpbGwtcmVnaXN0ZXJlZCBkZWxpdmVyeSB3aG9zZVxuICogaW5kZXggaXMgZWFybGllciB0aGFuIGBldmVudEluZGV4YCBBTkQgd2hvc2Uga2luZCBpcyBpbiBgZGVmZXJCZWhpbmRLaW5kc2AsXG4gKiBzbyB0aGF0IHRoaXMgcmVzb2x1dGlvbiBpcyBoYW5kZWQgdG8gdGhlIHdvcmtmbG93IG9ubHkgYWZ0ZXIgYWxsIHJlbGV2YW50XG4gKiBlYXJsaWVyLWluLWxvZyBkZWxpdmVyaWVzIGhhdmUgYmVlbi4gVGhpcyBpcyB3aGF0IGtlZXBzIGEgYFByb21pc2UucmFjZWBcbiAqIGRldGVybWluaXN0aWMgYW5kIGFsaWduZWQgd2l0aCB0aGUgY29tbWl0dGVkIGV2ZW50IGxvZywgaW5kZXBlbmRlbnQgb2ZcbiAqIG1pY3JvdGFzay1ob3AgY291bnRzLCBoeWRyYXRpb24gdGltZSwgb3IgcmFjZS1hcmd1bWVudCBvcmRlci5cbiAqXG4gKiBgZGVmZXJCZWhpbmRLaW5kc2AgaXMgdGhlIG9wcG9zaXRlIGtpbmQocyk6IGEgaG9vayBkZWZlcnMgYmVoaW5kIGVhcmxpZXJcbiAqIFdBSVRTIChub3QgZWFybGllciBob29rcyDigJQgdGhvc2UgYXJlIHNlcXVlbnRpYWwgc2FtZS1lbnRpdHkgcGF5bG9hZHMpLCBhXG4gKiB3YWl0IGRlZmVycyBiZWhpbmQgZWFybGllciBIT09LUy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGF3YWl0RWFybGllckRlbGl2ZXJpZXMoXG4gIGN0eDogV29ya2Zsb3dPcmNoZXN0cmF0b3JDb250ZXh0LFxuICBldmVudEluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIGRlZmVyQmVoaW5kS2luZHM6IHJlYWRvbmx5IERlbGl2ZXJ5S2luZFtdXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgLy8gRGVmZW5zaXZlOiB0b2xlcmF0ZSBjb250ZXh0cyB0aGF0IHByZWRhdGUgdGhpcyBmaWVsZCAodGVzdCBoYXJuZXNzZXMpLlxuICBpZiAoXG4gICAgZXZlbnRJbmRleCA9PT0gdW5kZWZpbmVkIHx8XG4gICAgIWN0eC5wZW5kaW5nRGVsaXZlcnlCYXJyaWVycyB8fFxuICAgIGN0eC5wZW5kaW5nRGVsaXZlcnlCYXJyaWVycy5zaXplID09PSAwXG4gICkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBlYXJsaWVyOiBQcm9taXNlPHZvaWQ+W10gPSBbXTtcbiAgZm9yIChjb25zdCBbaW5kZXgsIGVudHJ5XSBvZiBjdHgucGVuZGluZ0RlbGl2ZXJ5QmFycmllcnMpIHtcbiAgICBpZiAoaW5kZXggPCBldmVudEluZGV4ICYmIGRlZmVyQmVoaW5kS2luZHMuaW5jbHVkZXMoZW50cnkua2luZCkpIHtcbiAgICAgIGVhcmxpZXIucHVzaChlbnRyeS5kZWxpdmVyZWQpO1xuICAgIH1cbiAgfVxuICBpZiAoZWFybGllci5sZW5ndGggPiAwKSB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoZWFybGllcik7XG4gIH1cbn1cblxuLyoqIEhhbmRsZSBmb3IgYSByZWdpc3RlcmVkIGJyYW5jaC1kZWNpZGluZyBkZWxpdmVyeSBiYXJyaWVyLiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWxpdmVyeUJhcnJpZXIge1xuICAvKipcbiAgICogTWFyayB0aGlzIGRlbGl2ZXJ5IGFzIGRlbGl2ZXJlZCB0byB0aGUgd29ya2Zsb3cuIFJlc29sdmVzIGl0c1xuICAgKiBgZGVsaXZlcmVkYCBwcm9taXNlIHNvIGFueSBsYXRlci1pbi1sb2cgb3Bwb3NpdGUta2luZCBkZWxpdmVyeSBnYXRlZCBvblxuICAgKiBpdCAodmlhIHtAbGluayBhd2FpdEVhcmxpZXJEZWxpdmVyaWVzfSkgbWF5IHByb2NlZWQsIGFuZCByZW1vdmVzIGl0IGZyb21cbiAgICogdGhlIHJlZ2lzdHJ5LiBJZGVtcG90ZW50LlxuICAgKi9cbiAgbWFya0RlbGl2ZXJlZDogKCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBSZWdpc3RlciBhIGJyYW5jaC1kZWNpZGluZyBkZWxpdmVyeSBhdCBpdHMgZXZlbnQtbG9nIGluZGV4IHNvIHRoYXQgbGF0ZXJcbiAqIG9wcG9zaXRlLWtpbmQgZGVsaXZlcmllcyBjYW4gYmUgb3JkZXJlZCBzdHJpY3RseSBhZnRlciBpdC4gUmV0dXJucyBhbiBpbmVydFxuICogaGFuZGxlIHdoZW4gYHBlbmRpbmdEZWxpdmVyeUJhcnJpZXJzYCBpcyBub3QgaW5pdGlhbGl6ZWQuXG4gKlxuICogVG8gZ3VhcmFudGVlIGEgbGF0ZXIgZGVsaXZlcnkgZ2F0ZWQgb24gdGhpcyBvbmUgY2FuIG5ldmVyIGhhbmcgd2hlbiB0aGlzXG4gKiBkZWxpdmVyeSBpcyBhYmFuZG9uZWQgKHRoZSB3b3JrZmxvdyB0b29rIGEgZGlmZmVyZW50IGJyYW5jaCBvciBpc1xuICogc3VzcGVuZGluZyBhbmQgbmV2ZXIgb2JzZXJ2ZXMgaXQpLCB0aGUgYmFycmllciBhdXRvLXJlc29sdmVzIGF0IGlkbGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckRlbGl2ZXJ5QmFycmllcihcbiAgY3R4OiBXb3JrZmxvd09yY2hlc3RyYXRvckNvbnRleHQsXG4gIGV2ZW50SW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAga2luZDogRGVsaXZlcnlLaW5kXG4pOiBEZWxpdmVyeUJhcnJpZXIge1xuICBjb25zdCBiYXJyaWVycyA9IGN0eC5wZW5kaW5nRGVsaXZlcnlCYXJyaWVycztcbiAgaWYgKCFiYXJyaWVycyB8fCBldmVudEluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyBtYXJrRGVsaXZlcmVkOiAoKSA9PiB7fSB9O1xuICB9XG5cbiAgbGV0IGRvbmUgPSBmYWxzZTtcbiAgY29uc3QgeyBwcm9taXNlLCByZXNvbHZlIH0gPSB3aXRoUmVzb2x2ZXJzPHZvaWQ+KCk7XG4gIGNvbnN0IGVudHJ5OiBEZWxpdmVyeUJhcnJpZXJFbnRyeSA9IHsga2luZCwgZGVsaXZlcmVkOiBwcm9taXNlIH07XG4gIGJhcnJpZXJzLnNldChldmVudEluZGV4LCBlbnRyeSk7XG5cbiAgY29uc3QgZmluaXNoID0gKCkgPT4ge1xuICAgIGlmIChkb25lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGRvbmUgPSB0cnVlO1xuICAgIGlmIChiYXJyaWVycy5nZXQoZXZlbnRJbmRleCkgPT09IGVudHJ5KSB7XG4gICAgICBiYXJyaWVycy5kZWxldGUoZXZlbnRJbmRleCk7XG4gICAgfVxuICAgIHJlc29sdmUoKTtcbiAgfTtcblxuICAvLyBTYWZldHkgbmV0OiBpZiB0aGlzIGRlbGl2ZXJ5IGlzIG5ldmVyIGRlbGl2ZXJlZCB0byB0aGUgd29ya2Zsb3cgKGl0c1xuICAvLyBicmFuY2ggd2FzIG5vdCB0YWtlbiAvIHRoZSBydW4gaXMgc3VzcGVuZGluZyksIHJlc29sdmUgYXQgaWRsZSBzbyBhXG4gIC8vIGxhdGVyIG9wcG9zaXRlLWtpbmQgZGVsaXZlcnkgZ2F0ZWQgb24gaXQgY2Fubm90IGRlYWRsb2NrIGFuZCB0aGVcbiAgLy8gcmVnaXN0cnkgY2Fubm90IGxlYWsgYW4gZW50cnkgcGVyIGFiYW5kb25lZCBkZWxpdmVyeS5cbiAgc2NoZWR1bGVXaGVuSWRsZShjdHgsIGZpbmlzaCk7XG5cbiAgcmV0dXJuIHsgbWFya0RlbGl2ZXJlZDogZmluaXNoIH07XG59XG5cbi8qKlxuICogU2NoZWR1bGUgYSBjYWxsYmFjayB0byBmaXJlIG9ubHkgYWZ0ZXIgYWxsIHBlbmRpbmcgZGF0YSBkZWxpdmVyaWVzXG4gKiAoc3RlcCByZXN1bHRzLCBob29rIHBheWxvYWRzKSBhbmQgYXN5bmMgZGVzZXJpYWxpemF0aW9uIGhhdmUgY29tcGxldGVkLlxuICogVXNlcyBhIHBvbGxpbmcgbG9vcDogc2V0VGltZW91dCgwKSDihpIgY2hlY2sgcGVuZGluZ0RlbGl2ZXJpZXMg4oaSXG4gKiBpZiA+IDAsIHdhaXQgZm9yIHByb21pc2VRdWV1ZSDihpIgcmVwZWF0LiBUaGlzIGhhbmRsZXMgdGhlIG11bHRpLXJvdW5kXG4gKiBkZWxpdmVyeSBwYXR0ZXJuIHdoZXJlIGVhY2ggaG9vayBwYXlsb2FkIGRlbGl2ZXJ5IGN5Y2xlIGFwcGVuZHMgbmV3XG4gKiBhc3luYyB3b3JrIHRvIHRoZSBwcm9taXNlUXVldWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY2hlZHVsZVdoZW5JZGxlKFxuICBjdHg6IFdvcmtmbG93T3JjaGVzdHJhdG9yQ29udGV4dCxcbiAgZm46ICgpID0+IHZvaWRcbik6IHZvaWQge1xuICBjb25zdCBjaGVjayA9ICgpID0+IHtcbiAgICBpZiAoY3R4LnBlbmRpbmdEZWxpdmVyaWVzID4gMCkge1xuICAgICAgLy8gU3RpbGwgZGVsaXZlcmluZyBkYXRhIOKAlCB3YWl0IGZvciBxdWV1ZSB0byBkcmFpbiwgdGhlbiByZS1jaGVja1xuICAgICAgY3R4LnByb21pc2VRdWV1ZS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0VGltZW91dChjaGVjaywgMCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm4oKTtcbiAgICB9XG4gIH07XG4gIHNldFRpbWVvdXQoY2hlY2ssIDApO1xufVxuIl19
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcml2YXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBZWhELE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBRXpFLE1BQU0sYUFBYSxHQUVmLFVBQVUsQ0FBQztBQUVmLHdEQUF3RDtBQUN4RCxNQUFNLGVBQWUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLElBQUksR0FBRyxFQUduRSxDQUFDLENBQUM7QUFFTCxNQUFNLGtCQUFrQixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ2pDLGlDQUFpQztJQUNqQyx5QkFBeUI7SUFDekIseUJBQXlCO0NBQzFCLENBQUMsQ0FBQztBQUVILFNBQVMsd0JBQXdCLENBQUMsTUFBYztJQUM5QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQzlDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBRTVDLE1BQU0sUUFBUSxHQUFHLENBQUMsZUFBdUIsRUFBRSxFQUFFO1FBQzNDLElBQUksZUFBZSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ25DLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FB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LENBQUMsQ0FBQztBQUN2QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVdGlscyB1c2VkIGJ5IHRoZSBidW5kbGVyIHdoZW4gdHJhbnNmb3JtaW5nIGNvZGVcbiAqL1xuXG5pbXBvcnQgeyB3aXRoUmVzb2x2ZXJzIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzJztcbmltcG9ydCB0eXBlIHsgQ3J5cHRvS2V5IH0gZnJvbSAnLi9lbmNyeXB0aW9uLmpzJztcbmltcG9ydCB0eXBlIHsgRXZlbnRzQ29uc3VtZXIgfSBmcm9tICcuL2V2ZW50cy1jb25zdW1lci5qcyc7XG5pbXBvcnQgdHlwZSB7IFF1ZXVlSXRlbSB9IGZyb20gJy4vZ2xvYmFsLmpzJztcbmltcG9ydCB0eXBlIHsgU2VyaWFsaXphYmxlIH0gZnJvbSAnLi9zY2hlbWFzLmpzJztcbmltcG9ydCB0eXBlIHsgU3RlcEh5ZHJhdGlvbkNhY2hlIH0gZnJvbSAnLi9zdGVwLWh5ZHJhdGlvbi1jYWNoZS5qcyc7XG5cbmV4cG9ydCB0eXBlIFN0ZXBGdW5jdGlvbjxcbiAgQXJncyBleHRlbmRzIFNlcmlhbGl6YWJsZVtdID0gYW55W10sXG4gIFJlc3VsdCBleHRlbmRzIFNlcmlhbGl6YWJsZSB8IHVua25vd24gPSB1bmtub3duLFxuPiA9ICgoLi4uYXJnczogQXJncykgPT4gUHJvbWlzZTxSZXN1bHQ+KSAmIHtcbiAgbWF4UmV0cmllcz86IG51bWJlcjtcbiAgc3RlcElkPzogc3RyaW5nO1xufTtcblxuY29uc3QgUmVnaXN0ZXJlZFN0ZXBzS2V5ID0gU3ltYm9sLmZvcignQHdvcmtmbG93L2NvcmUvL3JlZ2lzdGVyZWRTdGVwcycpO1xuXG5jb25zdCBnbG9iYWxTeW1ib2xzOiB0eXBlb2YgZ2xvYmFsVGhpcyAmIHtcbiAgW1JlZ2lzdGVyZWRTdGVwc0tleV0/OiBNYXA8c3RyaW5nLCBTdGVwRnVuY3Rpb24+O1xufSA9IGdsb2JhbFRoaXM7XG5cbi8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9Bc3NpZ25JbkV4cHJlc3Npb25zOiAvXG5jb25zdCByZWdpc3RlcmVkU3RlcHMgPSAoZ2xvYmFsU3ltYm9sc1tSZWdpc3RlcmVkU3RlcHNLZXldID8/PSBuZXcgTWFwPFxuICBzdHJpbmcsXG4gIFN0ZXBGdW5jdGlvblxuPigpKTtcblxuY29uc3QgQlVJTFRJTl9TVEVQX05BTUVTID0gbmV3IFNldChbXG4gICdfX2J1aWx0aW5fcmVzcG9uc2VfYXJyYXlfYnVmZmVyJyxcbiAgJ19fYnVpbHRpbl9yZXNwb25zZV9qc29uJyxcbiAgJ19fYnVpbHRpbl9yZXNwb25zZV90ZXh0Jyxcbl0pO1xuXG5mdW5jdGlvbiBnZXRTdGVwSWRBbGlhc0NhbmRpZGF0ZXMoc3RlcElkOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHBhcnRzID0gc3RlcElkLnNwbGl0KCcvLycpO1xuICBpZiAocGFydHMubGVuZ3RoICE9PSAzIHx8IHBhcnRzWzBdICE9PSAnc3RlcCcpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBtb2R1bGVQYXRoID0gcGFydHNbMV07XG4gIGNvbnN0IGZuTmFtZSA9IHBhcnRzWzJdO1xuICBjb25zdCBtb2R1bGVQYXRoQWxpYXNlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIGNvbnN0IGFkZEFsaWFzID0gKGFsaWFzTW9kdWxlUGF0aDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGFsaWFzTW9kdWxlUGF0aCAhPT0gbW9kdWxlUGF0aCkge1xuICAgICAgbW9kdWxlUGF0aEFsaWFzZXMuYWRkKGFsaWFzTW9kdWxlUGF0aCk7XG4gICAgfVxuICB9O1xuXG4gIGlmIChtb2R1bGVQYXRoLnN0YXJ0c1dpdGgoJy4vd29ya2Zsb3dzLycpKSB7XG4gICAgY29uc3Qgd29ya2Zsb3dSZWxhdGl2ZVBhdGggPSBtb2R1bGVQYXRoLnNsaWNlKCcuLycubGVuZ3RoKTtcbiAgICBhZGRBbGlhcyhgLi9leGFtcGxlLyR7d29ya2Zsb3dSZWxhdGl2ZVBhdGh9YCk7XG4gICAgYWRkQWxpYXMoYC4vc3JjLyR7d29ya2Zsb3dSZWxhdGl2ZVBhdGh9YCk7XG4gIH0gZWxzZSBpZiAobW9kdWxlUGF0aC5zdGFydHNXaXRoKCcuL2V4YW1wbGUvd29ya2Zsb3dzLycpKSB7XG4gICAgY29uc3Qgd29ya2Zsb3dSZWxhdGl2ZVBhdGggPSBtb2R1bGVQYXRoLnNsaWNlKCcuL2V4YW1wbGUvJy5sZW5ndGgpO1xuICAgIGFkZEFsaWFzKGAuLyR7d29ya2Zsb3dSZWxhdGl2ZVBhdGh9YCk7XG4gICAgYWRkQWxpYXMoYC4vc3JjLyR7d29ya2Zsb3dSZWxhdGl2ZVBhdGh9YCk7XG4gIH0gZWxzZSBpZiAobW9kdWxlUGF0aC5zdGFydHNXaXRoKCcuL3NyYy93b3JrZmxvd3MvJykpIHtcbiAgICBjb25zdCB3b3JrZmxvd1JlbGF0aXZlUGF0aCA9IG1vZHVsZVBhdGguc2xpY2UoJy4vc3JjLycubGVuZ3RoKTtcbiAgICBhZGRBbGlhcyhgLi8ke3dvcmtmbG93UmVsYXRpdmVQYXRofWApO1xuICAgIGFkZEFsaWFzKGAuL2V4YW1wbGUvJHt3b3JrZmxvd1JlbGF0aXZlUGF0aH1gKTtcbiAgfVxuXG4gIHJldHVybiBBcnJheS5mcm9tKFxuICAgIG1vZHVsZVBhdGhBbGlhc2VzLFxuICAgIChhbGlhc01vZHVsZVBhdGgpID0+IGBzdGVwLy8ke2FsaWFzTW9kdWxlUGF0aH0vLyR7Zm5OYW1lfWBcbiAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0QnVpbHRpblJlc3BvbnNlU3RlcEFsaWFzKHN0ZXBJZDogc3RyaW5nKTogU3RlcEZ1bmN0aW9uIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFCVUlMVElOX1NURVBfTkFNRVMuaGFzKHN0ZXBJZCkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgZm9yIChjb25zdCBbcmVnaXN0ZXJlZFN0ZXBJZCwgc3RlcEZuXSBvZiByZWdpc3RlcmVkU3RlcHMuZW50cmllcygpKSB7XG4gICAgaWYgKHJlZ2lzdGVyZWRTdGVwSWQuZW5kc1dpdGgoYC8vJHtzdGVwSWR9YCkpIHtcbiAgICAgIHJldHVybiBzdGVwRm47XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBSZWdpc3RlciBhIHN0ZXAgZnVuY3Rpb24gdG8gYmUgc2VydmVkIGluIHRoZSBzZXJ2ZXIgYnVuZGxlLlxuICogQWxzbyBzZXRzIHRoZSBzdGVwSWQgcHJvcGVydHkgb24gdGhlIGZ1bmN0aW9uIGZvciBzZXJpYWxpemF0aW9uIHN1cHBvcnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3RlclN0ZXBGdW5jdGlvbihzdGVwSWQ6IHN0cmluZywgc3RlcEZuOiBTdGVwRnVuY3Rpb24pIHtcbiAgcmVnaXN0ZXJlZFN0ZXBzLnNldChzdGVwSWQsIHN0ZXBGbik7XG4gIHN0ZXBGbi5zdGVwSWQgPSBzdGVwSWQ7XG59XG5cbi8qKlxuICogRmluZCBhIHJlZ2lzdGVyZWQgc3RlcCBmdW5jdGlvbiBieSBuYW1lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGVwRnVuY3Rpb24oc3RlcElkOiBzdHJpbmcpOiBTdGVwRnVuY3Rpb24gfCB1bmRlZmluZWQge1xuICBjb25zdCBkaXJlY3RNYXRjaCA9IHJlZ2lzdGVyZWRTdGVwcy5nZXQoc3RlcElkKTtcbiAgaWYgKGRpcmVjdE1hdGNoKSB7XG4gICAgcmV0dXJuIGRpcmVjdE1hdGNoO1xuICB9XG5cbiAgLy8gU3VwcG9ydCBlcXVpdmFsZW50IHdvcmtmbG93IHBhdGggYWxpYXNlcyBpbiBtaXhlZCBzeW1saW5rIGVudmlyb25tZW50cy5cbiAgZm9yIChjb25zdCBhbGlhc1N0ZXBJZCBvZiBnZXRTdGVwSWRBbGlhc0NhbmRpZGF0ZXMoc3RlcElkKSkge1xuICAgIGNvbnN0IGFsaWFzTWF0Y2ggPSByZWdpc3RlcmVkU3RlcHMuZ2V0KGFsaWFzU3RlcElkKTtcbiAgICBpZiAoYWxpYXNNYXRjaCkge1xuICAgICAgcmV0dXJuIGFsaWFzTWF0Y2g7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYnVpbHRpbkFsaWFzTWF0Y2ggPSBnZXRCdWlsdGluUmVzcG9uc2VTdGVwQWxpYXMoc3RlcElkKTtcbiAgaWYgKGJ1aWx0aW5BbGlhc01hdGNoKSB7XG4gICAgcmV0dXJuIGJ1aWx0aW5BbGlhc01hdGNoO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBHZXQgY2xvc3VyZSB2YXJpYWJsZXMgZm9yIHRoZSBjdXJyZW50IHN0ZXAgZnVuY3Rpb25cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgeyBfX3ByaXZhdGVfZ2V0Q2xvc3VyZVZhcnMgfSBmcm9tICcuL3N0ZXAvZ2V0LWNsb3N1cmUtdmFycy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2Zsb3dPcmNoZXN0cmF0b3JDb250ZXh0IHtcbiAgcnVuSWQ6IHN0cmluZztcbiAgZW5jcnlwdGlvbktleTogQ3J5cHRvS2V5IHwgdW5kZWZpbmVkO1xuICBnbG9iYWxUaGlzOiB0eXBlb2YgZ2xvYmFsVGhpcztcbiAgZXZlbnRzQ29uc3VtZXI6IEV2ZW50c0NvbnN1bWVyO1xuICAvKipcbiAgICogTWFwIG9mIHBlbmRpbmcgaW52b2NhdGlvbnMga2V5ZWQgYnkgY29ycmVsYXRpb25JZC5cbiAgICogVXNpbmcgTWFwIGluc3RlYWQgb2YgQXJyYXkgZm9yIE8oMSkgbG9va3VwL2RlbGV0ZSBvcGVyYXRpb25zLlxuICAgKi9cbiAgaW52b2NhdGlvbnNRdWV1ZTogTWFwPHN0cmluZywgUXVldWVJdGVtPjtcbiAgb25Xb3JrZmxvd0Vycm9yOiAoZXJyb3I6IEVycm9yKSA9PiB2b2lkO1xuICBnZW5lcmF0ZVVsaWQ6ICgpID0+IHN0cmluZztcbiAgZ2VuZXJhdGVOYW5vaWQ6ICgpID0+IHN0cmluZztcbiAgLyoqXG4gICAqIFNlcXVlbnRpYWwgcHJvbWlzZSBxdWV1ZSB0aGF0IGVuc3VyZXMgYWxsIGV2ZW50LWRyaXZlbiBwcm9taXNlIHJlc29sdXRpb25zXG4gICAqIChzdGVwIHJlc3VsdHMsIGhvb2sgcGF5bG9hZHMsIGZhaWx1cmVzLCBzdXNwZW5zaW9ucykgaGFwcGVuIGluIGV2ZW50IGxvZ1xuICAgKiBvcmRlci4gRXZlcnkgcmVzb2x2ZSwgcmVqZWN0LCBvciB3b3JrZmxvdyBlcnJvciBpcyBjaGFpbmVkIHRocm91Z2ggdGhpc1xuICAgKiBxdWV1ZSBzbyB0aGF0IGV2ZW4gaWYgaW5kaXZpZHVhbCBvcGVyYXRpb25zIHRha2UgdmFyaWFibGUgdGltZSAoZS5nLixcbiAgICogYXN5bmMgZGVjcnlwdGlvbiksIHByb21pc2VzIHJlc29sdmUgZGV0ZXJtaW5pc3RpY2FsbHkuXG4gICAqL1xuICBwcm9taXNlUXVldWU6IFByb21pc2U8dm9pZD47XG4gIC8qKlxuICAgKiBDb3VudGVyIG9mIGluLWZsaWdodCBhc3luYyBkYXRhIGRlbGl2ZXJ5IG9wZXJhdGlvbnMgKHN0ZXAgcmVzdWx0XG4gICAqIGh5ZHJhdGlvbiwgaG9vayBwYXlsb2FkIGh5ZHJhdGlvbikuIFN1c3BlbnNpb25zIG11c3Qgd2FpdCBmb3IgdGhpc1xuICAgKiB0byByZWFjaCAwIGJlZm9yZSBmaXJpbmcsIHRvIGF2b2lkIHByZWVtcHRpbmcgZGF0YSBkZWxpdmVyeS5cbiAgICovXG4gIHBlbmRpbmdEZWxpdmVyaWVzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBPcmRlcmVkIHJlZ2lzdHJ5IG9mIGluLWZsaWdodCBcImJyYW5jaC1kZWNpZGluZ1wiIGRlbGl2ZXJpZXMg4oCUIHRoZVxuICAgKiByZXNvbHV0aW9ucyBhIHdvcmtmbG93IHR5cGljYWxseSBgUHJvbWlzZS5yYWNlYHMgb246IGJ1ZmZlcmVkIGhvb2tcbiAgICogcGF5bG9hZHMgKGBob29rX3JlY2VpdmVkYCkgYW5kIHdhaXQgY29tcGxldGlvbnMgKGB3YWl0X2NvbXBsZXRlZGApLlxuICAgKiBLZXllZCBieSB0aGUgZGVsaXZlcnkncyBwb3NpdGlvbiAoaW5kZXgpIGluIHRoZSBjb25zdW1lZCBldmVudCBsb2cuXG4gICAqXG4gICAqIFRoZSBwcm9ibGVtOiBhIGJ1ZmZlcmVkIGhvb2sgcGF5bG9hZCBpcyBvYnNlcnZlZCB2aWEgdGhlIGFzeW5jIGhvb2tcbiAgICogaXRlcmF0b3IgKGB5aWVsZCBhd2FpdCB0aGlzYCksIGNvc3RpbmcgZXh0cmEgbWljcm90YXNrIGhvcHMsIHdoaWxlIGFcbiAgICogYHdhaXRfY29tcGxldGVkYCByZXNvbHZlcyB3aXRoIGZld2VyIGhvcHMg4oCUIGFuZCBhIHJldXNlZCBzbGVlcCBjYW5cbiAgICogcmVzb2x2ZSBpbiBhbiBlbnRpcmVseSBlYXJsaWVyIGxvb3AgaXRlcmF0aW9uLiBFaXRoZXIgd2F5LCB0aGVcbiAgICogcmVzb2x1dGlvbiB0aGF0IHRoZSBjb21taXR0ZWQgZXZlbnQgbG9nIG9yZGVyZWQgZmlyc3QgY2FuIGxvc2UgYVxuICAgKiBgUHJvbWlzZS5yYWNlYCB0byBhIGZhc3Rlci0gb3IgYWxyZWFkeS1yZXNvbHZlZCBjb21wZXRpdG9yLCBkaXZlcmdpbmdcbiAgICogZnJvbSB0aGUgbG9nIGFuZCBzdXJmYWNpbmcgYXMgYFJlcGxheURpdmVyZ2VuY2VFcnJvcmAuXG4gICAqXG4gICAqIFRoZSBmaXggaXMgYSBzdHJpY3QsIGRldGVybWluaXN0aWMgZGVsaXZlcnkgb3JkZXIgYW5jaG9yZWQgb25cbiAgICogZXZlbnQtbG9nIHBvc2l0aW9uOiBhIGRlbGl2ZXJ5IGRvZXMgbm90IHJlc29sdmUgdG8gdGhlIHdvcmtmbG93IHVudGlsXG4gICAqIGV2ZXJ5IGVhcmxpZXItaW4tbG9nIGRlbGl2ZXJ5IG9mIHRoZSBPUFBPU0lURSBraW5kIGhhcyBiZWVuIGRlbGl2ZXJlZC5cbiAgICogKE9wcG9zaXRlIGtpbmQgb25seTogc2VxdWVudGlhbCBzYW1lLWtpbmQgaG9vayBwYXlsb2FkcyBtdXN0IG5vdCBibG9ja1xuICAgKiBvbmUgYW5vdGhlciwgYW5kIGEgd2FpdCBuZWVkIG5vdCB3YWl0IGJlaGluZCBhIGxhdGVyIHdhaXQuKSBCZWNhdXNlIHRoZVxuICAgKiBnYXRlIGlzIFwidGhlIGVhcmxpZXIgZGVsaXZlcnkgcmVzb2x2ZWRcIiwgbm90IFwid29uIGEgdGltaW5nIHJhY2VcIiwgdGhlXG4gICAqIG91dGNvbWUgaXMgaW5kZXBlbmRlbnQgb2YgbWljcm90YXNrIGhvcHMsIGh5ZHJhdGlvbi9kZWNyeXB0aW9uIHRpbWUsXG4gICAqIGFuZCBgUHJvbWlzZS5yYWNlYCBhcmd1bWVudCBvcmRlci5cbiAgICpcbiAgICogSW5kZXggaXMgdXNlZCByYXRoZXIgdGhhbiB0aGUgYGV2ZW50SWRgIHN0cmluZyBiZWNhdXNlIGBldmVudElkYCBpcyBhblxuICAgKiBvcGFxdWUsIHdvcmxkLWFzc2lnbmVkIHZhbHVlIG5vdCBndWFyYW50ZWVkIHRvIHNvcnQgaW4gY3JlYXRpb24gb3JkZXJcbiAgICogKG9ubHkgdGhlIGJ1bmRsZWQgVUxJRCB3b3JsZHMgaGFwcGVuIHRvKS5cbiAgICpcbiAgICogT3B0aW9uYWwgc28gb2xkZXIvb3V0LW9mLXRyZWUgY29udGV4dHMgKGFuZCBsaWdodHdlaWdodCB0ZXN0IGhhcm5lc3NlcylcbiAgICogdGhhdCBkbyBub3QgaW5pdGlhbGl6ZSBpdCBkZWdyYWRlIGdyYWNlZnVsbHkgdG8gdGhlIHByZXZpb3VzIGJlaGF2aW9yLlxuICAgKi9cbiAgcGVuZGluZ0RlbGl2ZXJ5QmFycmllcnM/OiBNYXA8bnVtYmVyLCBEZWxpdmVyeUJhcnJpZXJFbnRyeT47XG4gIC8qKlxuICAgKiBQZXItcnVuIG1lbW9pemF0aW9uIGNhY2hlIGZvciBoeWRyYXRlZCBzdGVwIHJldHVybiB2YWx1ZXMsIGtleWVkIGJ5IHRoZVxuICAgKiBgc3RlcF9jb21wbGV0ZWRgIGV2ZW50IGlkLiBPd25lZCBieSB0aGUgaW5saW5lIHJlcGxheSBsb29wIGluIGBydW50aW1lLnRzYFxuICAgKiBhbmQgdGhyZWFkZWQgdGhyb3VnaCBlYWNoIGBydW5Xb3JrZmxvd2AgY2FsbCBzbyBpdCBzdXJ2aXZlcyBhY3Jvc3MgcmVwbGF5XG4gICAqIGl0ZXJhdGlvbnMgb2YgdGhlIFNBTUUgcnVuIChhIGZyZXNoIGNvbnRleHQgaXMgY3JlYXRlZCBlYWNoIGl0ZXJhdGlvbikgYnV0XG4gICAqIG5ldmVyIGxlYWtzIGFjcm9zcyB1bnJlbGF0ZWQgcnVucy5cbiAgICpcbiAgICogT24gcmVwbGF5IEsgb2YgYSBzZXF1ZW50aWFsIE4tc3RlcCB3b3JrZmxvdywgdGhlIHN0ZXAgY29uc3VtZXIgd291bGRcbiAgICogb3RoZXJ3aXNlIHJlLWRlY3J5cHQgYW5kIHJlLXBhcnNlIHRoZSByZXN1bHRzIG9mIGFsbCBLIGFscmVhZHktY29tcGxldGVkXG4gICAqIHN0ZXBzIOKAlCBPKE7CsikgYWNyb3NzIGFuIGludm9jYXRpb24uIFRoaXMgY2FjaGUgbWFrZXMgYSBjb21wbGV0ZWQgc3RlcCdzXG4gICAqIHJlc3VsdCBhdmFpbGFibGUgaW4gTygxKSBvbiBzdWJzZXF1ZW50IHJlcGxheXMuIE9ubHkgcHJpbWl0aXZlIHJlc3VsdHMgYXJlXG4gICAqIG1lbW9pemVkLCBzbyBhIHNoYXJlZCByZWZlcmVuY2UgY2FuIG5ldmVyIGxldCBvbmUgcmVwbGF5J3MgbXV0YXRpb24gbGVha1xuICAgKiBpbnRvIHRoZSBuZXh0OyBzZWUgYHN0ZXAtaHlkcmF0aW9uLWNhY2hlLnRzYCBmb3IgdGhlIGZ1bGwgcmF0aW9uYWxlLlxuICAgKlxuICAgKiBPcHRpb25hbCBzbyBjb250ZXh0cyB0aGF0IGRvIG5vdCBpbml0aWFsaXplIGl0ICh0ZXN0IGhhcm5lc3NlcykgZGVncmFkZVxuICAgKiBncmFjZWZ1bGx5IHRvIHJlLWh5ZHJhdGluZyBldmVyeSByZXBsYXkg4oCUIGlkZW50aWNhbCB0byBwcmV2aW91cyBiZWhhdmlvci5cbiAgICovXG4gIHN0ZXBIeWRyYXRpb25DYWNoZT86IFN0ZXBIeWRyYXRpb25DYWNoZTtcbn1cblxuLyoqIFRoZSBraW5kIG9mIGJyYW5jaC1kZWNpZGluZyBkZWxpdmVyeSBhIGJhcnJpZXIgcmVwcmVzZW50cy4gKi9cbmV4cG9ydCB0eXBlIERlbGl2ZXJ5S2luZCA9ICdob29rJyB8ICd3YWl0JztcblxuaW50ZXJmYWNlIERlbGl2ZXJ5QmFycmllckVudHJ5IHtcbiAga2luZDogRGVsaXZlcnlLaW5kO1xuICAvKiogUmVzb2x2ZXMgb25jZSB0aGlzIGRlbGl2ZXJ5IGhhcyByZXNvbHZlZCB0byB0aGUgd29ya2Zsb3cuICovXG4gIGRlbGl2ZXJlZDogUHJvbWlzZTx2b2lkPjtcbn1cblxuLyoqXG4gKiBBd2FpdHMsIGluIHN0cmljdCBldmVudC1sb2cgb3JkZXIsIGV2ZXJ5IHN0aWxsLXJlZ2lzdGVyZWQgZGVsaXZlcnkgd2hvc2VcbiAqIGluZGV4IGlzIGVhcmxpZXIgdGhhbiBgZXZlbnRJbmRleGAgQU5EIHdob3NlIGtpbmQgaXMgaW4gYGRlZmVyQmVoaW5kS2luZHNgLFxuICogc28gdGhhdCB0aGlzIHJlc29sdXRpb24gaXMgaGFuZGVkIHRvIHRoZSB3b3JrZmxvdyBvbmx5IGFmdGVyIGFsbCByZWxldmFudFxuICogZWFybGllci1pbi1sb2cgZGVsaXZlcmllcyBoYXZlIGJlZW4uIFRoaXMgaXMgd2hhdCBrZWVwcyBhIGBQcm9taXNlLnJhY2VgXG4gKiBkZXRlcm1pbmlzdGljIGFuZCBhbGlnbmVkIHdpdGggdGhlIGNvbW1pdHRlZCBldmVudCBsb2csIGluZGVwZW5kZW50IG9mXG4gKiBtaWNyb3Rhc2staG9wIGNvdW50cywgaHlkcmF0aW9uIHRpbWUsIG9yIHJhY2UtYXJndW1lbnQgb3JkZXIuXG4gKlxuICogYGRlZmVyQmVoaW5kS2luZHNgIGlzIHRoZSBvcHBvc2l0ZSBraW5kKHMpOiBhIGhvb2sgZGVmZXJzIGJlaGluZCBlYXJsaWVyXG4gKiBXQUlUUyAobm90IGVhcmxpZXIgaG9va3Mg4oCUIHRob3NlIGFyZSBzZXF1ZW50aWFsIHNhbWUtZW50aXR5IHBheWxvYWRzKSwgYVxuICogd2FpdCBkZWZlcnMgYmVoaW5kIGVhcmxpZXIgSE9PS1MuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhd2FpdEVhcmxpZXJEZWxpdmVyaWVzKFxuICBjdHg6IFdvcmtmbG93T3JjaGVzdHJhdG9yQ29udGV4dCxcbiAgZXZlbnRJbmRleDogbnVtYmVyIHwgdW5kZWZpbmVkLFxuICBkZWZlckJlaGluZEtpbmRzOiByZWFkb25seSBEZWxpdmVyeUtpbmRbXVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIERlZmVuc2l2ZTogdG9sZXJhdGUgY29udGV4dHMgdGhhdCBwcmVkYXRlIHRoaXMgZmllbGQgKHRlc3QgaGFybmVzc2VzKS5cbiAgaWYgKFxuICAgIGV2ZW50SW5kZXggPT09IHVuZGVmaW5lZCB8fFxuICAgICFjdHgucGVuZGluZ0RlbGl2ZXJ5QmFycmllcnMgfHxcbiAgICBjdHgucGVuZGluZ0RlbGl2ZXJ5QmFycmllcnMuc2l6ZSA9PT0gMFxuICApIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgZWFybGllcjogUHJvbWlzZTx2b2lkPltdID0gW107XG4gIGZvciAoY29uc3QgW2luZGV4LCBlbnRyeV0gb2YgY3R4LnBlbmRpbmdEZWxpdmVyeUJhcnJpZXJzKSB7XG4gICAgaWYgKGluZGV4IDwgZXZlbnRJbmRleCAmJiBkZWZlckJlaGluZEtpbmRzLmluY2x1ZGVzKGVudHJ5LmtpbmQpKSB7XG4gICAgICBlYXJsaWVyLnB1c2goZW50cnkuZGVsaXZlcmVkKTtcbiAgICB9XG4gIH1cbiAgaWYgKGVhcmxpZXIubGVuZ3RoID4gMCkge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKGVhcmxpZXIpO1xuICB9XG59XG5cbi8qKiBIYW5kbGUgZm9yIGEgcmVnaXN0ZXJlZCBicmFuY2gtZGVjaWRpbmcgZGVsaXZlcnkgYmFycmllci4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVsaXZlcnlCYXJyaWVyIHtcbiAgLyoqXG4gICAqIE1hcmsgdGhpcyBkZWxpdmVyeSBhcyBkZWxpdmVyZWQgdG8gdGhlIHdvcmtmbG93LiBSZXNvbHZlcyBpdHNcbiAgICogYGRlbGl2ZXJlZGAgcHJvbWlzZSBzbyBhbnkgbGF0ZXItaW4tbG9nIG9wcG9zaXRlLWtpbmQgZGVsaXZlcnkgZ2F0ZWQgb25cbiAgICogaXQgKHZpYSB7QGxpbmsgYXdhaXRFYXJsaWVyRGVsaXZlcmllc30pIG1heSBwcm9jZWVkLCBhbmQgcmVtb3ZlcyBpdCBmcm9tXG4gICAqIHRoZSByZWdpc3RyeS4gSWRlbXBvdGVudC5cbiAgICovXG4gIG1hcmtEZWxpdmVyZWQ6ICgpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogUmVnaXN0ZXIgYSBicmFuY2gtZGVjaWRpbmcgZGVsaXZlcnkgYXQgaXRzIGV2ZW50LWxvZyBpbmRleCBzbyB0aGF0IGxhdGVyXG4gKiBvcHBvc2l0ZS1raW5kIGRlbGl2ZXJpZXMgY2FuIGJlIG9yZGVyZWQgc3RyaWN0bHkgYWZ0ZXIgaXQuIFJldHVybnMgYW4gaW5lcnRcbiAqIGhhbmRsZSB3aGVuIGBwZW5kaW5nRGVsaXZlcnlCYXJyaWVyc2AgaXMgbm90IGluaXRpYWxpemVkLlxuICpcbiAqIFRvIGd1YXJhbnRlZSBhIGxhdGVyIGRlbGl2ZXJ5IGdhdGVkIG9uIHRoaXMgb25lIGNhbiBuZXZlciBoYW5nIHdoZW4gdGhpc1xuICogZGVsaXZlcnkgaXMgYWJhbmRvbmVkICh0aGUgd29ya2Zsb3cgdG9vayBhIGRpZmZlcmVudCBicmFuY2ggb3IgaXNcbiAqIHN1c3BlbmRpbmcgYW5kIG5ldmVyIG9ic2VydmVzIGl0KSwgdGhlIGJhcnJpZXIgYXV0by1yZXNvbHZlcyBhdCBpZGxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWxpdmVyeUJhcnJpZXIoXG4gIGN0eDogV29ya2Zsb3dPcmNoZXN0cmF0b3JDb250ZXh0LFxuICBldmVudEluZGV4OiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIGtpbmQ6IERlbGl2ZXJ5S2luZFxuKTogRGVsaXZlcnlCYXJyaWVyIHtcbiAgY29uc3QgYmFycmllcnMgPSBjdHgucGVuZGluZ0RlbGl2ZXJ5QmFycmllcnM7XG4gIGlmICghYmFycmllcnMgfHwgZXZlbnRJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgbWFya0RlbGl2ZXJlZDogKCkgPT4ge30gfTtcbiAgfVxuXG4gIGxldCBkb25lID0gZmFsc2U7XG4gIGNvbnN0IHsgcHJvbWlzZSwgcmVzb2x2ZSB9ID0gd2l0aFJlc29sdmVyczx2b2lkPigpO1xuICBjb25zdCBlbnRyeTogRGVsaXZlcnlCYXJyaWVyRW50cnkgPSB7IGtpbmQsIGRlbGl2ZXJlZDogcHJvbWlzZSB9O1xuICBiYXJyaWVycy5zZXQoZXZlbnRJbmRleCwgZW50cnkpO1xuXG4gIGNvbnN0IGZpbmlzaCA9ICgpID0+IHtcbiAgICBpZiAoZG9uZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkb25lID0gdHJ1ZTtcbiAgICBpZiAoYmFycmllcnMuZ2V0KGV2ZW50SW5kZXgpID09PSBlbnRyeSkge1xuICAgICAgYmFycmllcnMuZGVsZXRlKGV2ZW50SW5kZXgpO1xuICAgIH1cbiAgICByZXNvbHZlKCk7XG4gIH07XG5cbiAgLy8gU2FmZXR5IG5ldDogaWYgdGhpcyBkZWxpdmVyeSBpcyBuZXZlciBkZWxpdmVyZWQgdG8gdGhlIHdvcmtmbG93IChpdHNcbiAgLy8gYnJhbmNoIHdhcyBub3QgdGFrZW4gLyB0aGUgcnVuIGlzIHN1c3BlbmRpbmcpLCByZXNvbHZlIGF0IGlkbGUgc28gYVxuICAvLyBsYXRlciBvcHBvc2l0ZS1raW5kIGRlbGl2ZXJ5IGdhdGVkIG9uIGl0IGNhbm5vdCBkZWFkbG9jayBhbmQgdGhlXG4gIC8vIHJlZ2lzdHJ5IGNhbm5vdCBsZWFrIGFuIGVudHJ5IHBlciBhYmFuZG9uZWQgZGVsaXZlcnkuXG4gIHNjaGVkdWxlV2hlbklkbGUoY3R4LCBmaW5pc2gpO1xuXG4gIHJldHVybiB7IG1hcmtEZWxpdmVyZWQ6IGZpbmlzaCB9O1xufVxuXG4vKipcbiAqIFNjaGVkdWxlIGEgY2FsbGJhY2sgdG8gZmlyZSBvbmx5IGFmdGVyIGFsbCBwZW5kaW5nIGRhdGEgZGVsaXZlcmllc1xuICogKHN0ZXAgcmVzdWx0cywgaG9vayBwYXlsb2FkcykgYW5kIGFzeW5jIGRlc2VyaWFsaXphdGlvbiBoYXZlIGNvbXBsZXRlZC5cbiAqIFVzZXMgYSBwb2xsaW5nIGxvb3A6IHNldFRpbWVvdXQoMCkg4oaSIGNoZWNrIHBlbmRpbmdEZWxpdmVyaWVzIOKGklxuICogaWYgPiAwLCB3YWl0IGZvciBwcm9taXNlUXVldWUg4oaSIHJlcGVhdC4gVGhpcyBoYW5kbGVzIHRoZSBtdWx0aS1yb3VuZFxuICogZGVsaXZlcnkgcGF0dGVybiB3aGVyZSBlYWNoIGhvb2sgcGF5bG9hZCBkZWxpdmVyeSBjeWNsZSBhcHBlbmRzIG5ld1xuICogYXN5bmMgd29yayB0byB0aGUgcHJvbWlzZVF1ZXVlLlxuICpcbiAqIFRoZSBpbml0aWFsIGBzZXRUaW1lb3V0KDApYCBtYWNyb3Rhc2sgaXMgbG9hZC1iZWFyaW5nIGFuZCBtdXN0IE5PVCBiZVxuICogZG93bmdyYWRlZCB0byBhIG1pY3JvdGFzayAoYHF1ZXVlTWljcm90YXNrYC9gUHJvbWlzZS5yZXNvbHZlKCkudGhlbmApLlxuICogYHBlbmRpbmdEZWxpdmVyaWVzYCBvbmx5IGd1YXJkcyB0aGUgaG9zdC1zaWRlIGh5ZHJhdGlvbiB3aW5kb3c7IGJldHdlZW4gYVxuICogZGVsaXZlcnkncyBgcmVzb2x2ZSgpYCBhbmQgdGhlIHdvcmtmbG93IFZNIGJvZHkgcnVubmluZyBpdHMgY29udGludWF0aW9uIHRvXG4gKiByZWdpc3RlciB0aGUgbmV4dCBzdWJzY3JpYmVyLCBgcGVuZGluZ0RlbGl2ZXJpZXNgIGlzIGFscmVhZHkgMCBldmVuIHRob3VnaFxuICogdGhlIFZNIGlzIG1pZC1yZWFjdGlvbi4gTm9kZSBkb2VzIG5vdCBndWFyYW50ZWUgYSBtaWNyb3Rhc2sgc2NoZWR1bGVkIGluXG4gKiB0aGUgaG9zdCBjb250ZXh0IHNldHRsZXMgYWZ0ZXIgdGhlIGNyb3NzLVZNIHByb21pc2UgY2hhaW4gKHJlc29sdmUgaW4gaG9zdFxuICog4oaSIHdvcmtmbG93IGNvZGUgaW4gVk0g4oaSIHN1YnNjcmliZSBiYWNrIGluIGhvc3QpOyB0aGUgbWFjcm90YXNrIGJvdW5kYXJ5XG4gKiBnaXZlcyB0aGF0IGNoYWluIHRpbWUgdG8gcnVuLCBzbyB0aGUgc3VzcGVuc2lvbiBkb2VzIG5vdCBwcmVlbXB0IGEgc2libGluZ1xuICogZGVsaXZlcnkgc3RpbGwgaW4gZmxpZ2h0LiBFbXBpcmljYWxseSwgcmVwbGFjaW5nIGl0IHdpdGggYHF1ZXVlTWljcm90YXNrYFxuICogYnJlYWtzIGhvb2svc2xlZXAgYFByb21pc2UucmFjZWAgb3JkZXJpbmcgKENvcnJ1cHRlZEV2ZW50TG9nRXJyb3IpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2NoZWR1bGVXaGVuSWRsZShcbiAgY3R4OiBXb3JrZmxvd09yY2hlc3RyYXRvckNvbnRleHQsXG4gIGZuOiAoKSA9PiB2b2lkXG4pOiB2b2lkIHtcbiAgY29uc3QgY2hlY2sgPSAoKSA9PiB7XG4gICAgaWYgKGN0eC5wZW5kaW5nRGVsaXZlcmllcyA+IDApIHtcbiAgICAgIC8vIFN0aWxsIGRlbGl2ZXJpbmcgZGF0YSDigJQgd2FpdCBmb3IgcXVldWUgdG8gZHJhaW4sIHRoZW4gcmUtY2hlY2tcbiAgICAgIGN0eC5wcm9taXNlUXVldWUudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoY2hlY2ssIDApO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZuKCk7XG4gICAgfVxuICB9O1xuICBzZXRUaW1lb3V0KGNoZWNrLCAwKTtcbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/runtime/constants.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,oBAAoB,KAAK,CAAC;AASvC,eAAO,MAAM,iBAAiB,SAAU,CAAC;AAMzC,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAK5C,eAAO,MAAM,6BAA6B,IAAI,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/runtime/constants.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,oBAAoB,KAAK,CAAC;AASvC,eAAO,MAAM,iBAAiB,SAAU,CAAC;AAMzC,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAK5C,eAAO,MAAM,6BAA6B,IAAI,CAAC"}
@@ -3,13 +3,19 @@
3
3
  // max visibility window (24 hours) so that our handler-side failure path
4
4
  // reliably executes before VQS expires the message.
5
5
  //
6
- // VQS retry schedule (with retryAfterSeconds: 5):
7
- // Attempts 1–32: linear backoff at 5s each → 32 × 5s = 160s (~2.7 min)
8
- // Attempts 33+: exponential backoff: 60s × 2^(attempt-32),
9
- // capped at 7,200s (2h), floored at retryAfterSeconds
10
- //
11
- // At 48 attempts the total elapsed time is approximately 20 hours, which is
12
- // safely under the 24-hour message visibility limit.
6
+ // The effective wall-clock survival depends on the per-redelivery backoff: the
7
+ // `retry-after` the handler returns (see world-vercel
8
+ // `getHandlerErrorRetryAfterSeconds`) fed through VQS `calculateBackoffDelay`.
9
+ // VQS uses our value for the first 32 attempts (clamped to [5s, 900s]) then
10
+ // applies its own exponential growth — every hop hard-capped at the SQS limit
11
+ // of 900s. With the backoff ramping toward that 900s ceiling (reached by
12
+ // ~delivery 11), 48 attempts span roughly 9–10 hours of wall-clock (~35,000s),
13
+ // comfortably under the 24-hour message-visibility limit so the failure path
14
+ // runs before the message expires. (A flatter, low-capped backoff exhausts the
15
+ // budget in only a few hours, failing otherwise-healthy runs during a transient
16
+ // backend outage; conversely, spanning the full 24h window would require a
17
+ // substantially higher cap here, not a higher per-hop ceiling — VQS clamps
18
+ // every hop at 900s.)
13
19
  export const MAX_QUEUE_DELIVERIES = 48;
14
20
  // Maximum time allowed for a single workflow replay execution (in ms).
15
21
  // If a replay exceeds this duration, the process exits so the queue can retry.
@@ -28,4 +34,4 @@ export const REPLAY_TIMEOUT_MAX_RETRIES = 3;
28
34
  // rather than an invalid persisted history. Queue bounded recovery replays
29
35
  // before recording terminal corruption for a run that cannot replay.
30
36
  export const REPLAY_DIVERGENCE_MAX_RETRIES = 3;
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3J1bnRpbWUvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRFQUE0RTtBQUM1RSw0RUFBNEU7QUFDNUUseUVBQXlFO0FBQ3pFLG9EQUFvRDtBQUNwRCxFQUFFO0FBQ0Ysa0RBQWtEO0FBQ2xELDJFQUEyRTtBQUMzRSwrREFBK0Q7QUFDL0Qsd0VBQXdFO0FBQ3hFLEVBQUU7QUFDRiw0RUFBNEU7QUFDNUUscURBQXFEO0FBQ3JELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztBQUV2Qyx1RUFBdUU7QUFDdkUsK0VBQStFO0FBQy9FLG1FQUFtRTtBQUNuRSw0RUFBNEU7QUFDNUUsc0JBQXNCO0FBQ3RCLG9GQUFvRjtBQUNwRixpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDO0FBRXpDLDhFQUE4RTtBQUM5RSx5RUFBeUU7QUFDekUsNkVBQTZFO0FBQzdFLG1EQUFtRDtBQUNuRCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLENBQUM7QUFFNUMsMkVBQTJFO0FBQzNFLDJFQUEyRTtBQUMzRSxxRUFBcUU7QUFDckUsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTWF4aW11bSBudW1iZXIgb2YgcXVldWUgZGVsaXZlcnkgYXR0ZW1wdHMgYmVmb3JlIHRoZSBoYW5kbGVyIGdpdmVzIHVwIGFuZFxuLy8gZ3JhY2VmdWxseSBmYWlscyB0aGUgcnVuL3N0ZXAuIFRoaXMgbXVzdCBiZSBib3VuZGVkIHVuZGVyIHRoZSBWUVMgbWVzc2FnZVxuLy8gbWF4IHZpc2liaWxpdHkgd2luZG93ICgyNCBob3Vycykgc28gdGhhdCBvdXIgaGFuZGxlci1zaWRlIGZhaWx1cmUgcGF0aFxuLy8gcmVsaWFibHkgZXhlY3V0ZXMgYmVmb3JlIFZRUyBleHBpcmVzIHRoZSBtZXNzYWdlLlxuLy9cbi8vIFZRUyByZXRyeSBzY2hlZHVsZSAod2l0aCByZXRyeUFmdGVyU2Vjb25kczogNSk6XG4vLyAgIEF0dGVtcHRzIDHigJMzMjogIGxpbmVhciBiYWNrb2ZmIGF0IDVzIGVhY2ggIOKGkiAzMiDDlyA1cyA9IDE2MHMgKH4yLjcgbWluKVxuLy8gICBBdHRlbXB0cyAzMys6ICAgZXhwb25lbnRpYWwgYmFja29mZjogNjBzIMOXIDJeKGF0dGVtcHQtMzIpLFxuLy8gICAgICAgICAgICAgICAgICAgY2FwcGVkIGF0IDcsMjAwcyAoMmgpLCBmbG9vcmVkIGF0IHJldHJ5QWZ0ZXJTZWNvbmRzXG4vL1xuLy8gQXQgNDggYXR0ZW1wdHMgdGhlIHRvdGFsIGVsYXBzZWQgdGltZSBpcyBhcHByb3hpbWF0ZWx5IDIwIGhvdXJzLCB3aGljaCBpc1xuLy8gc2FmZWx5IHVuZGVyIHRoZSAyNC1ob3VyIG1lc3NhZ2UgdmlzaWJpbGl0eSBsaW1pdC5cbmV4cG9ydCBjb25zdCBNQVhfUVVFVUVfREVMSVZFUklFUyA9IDQ4O1xuXG4vLyBNYXhpbXVtIHRpbWUgYWxsb3dlZCBmb3IgYSBzaW5nbGUgd29ya2Zsb3cgcmVwbGF5IGV4ZWN1dGlvbiAoaW4gbXMpLlxuLy8gSWYgYSByZXBsYXkgZXhjZWVkcyB0aGlzIGR1cmF0aW9uLCB0aGUgcHJvY2VzcyBleGl0cyBzbyB0aGUgcXVldWUgY2FuIHJldHJ5LlxuLy8gVGhpcyBtdXN0IGJlIGxvd2VyIHRoYW4gdGhlIGZ1bmN0aW9uJ3MgbWF4RHVyYXRpb24gdG8gZW5zdXJlIHRoZVxuLy8gdGltZW91dCBoYW5kbGVyIGhhcyB0aW1lIHRvIHBvc3QgdGhlIHJ1bl9mYWlsZWQgZXZlbnQgYmVmb3JlIHRoZSBwbGF0Zm9ybVxuLy8ga2lsbHMgdGhlIGZ1bmN0aW9uLlxuLy8gTm90ZSB0aGF0IG9uIGhvYmJ5IHBsYW4sIHRoZSBtYXhEdXJhdGlvbiBpcyA2MHMsIHNvIHRoaXMgYmFycmllciB3aWxsIG5vdCBiZSBoaXQsXG4vLyBhbmQgdGhlIHF1ZXVlIHdpbGwgcmUtdHJ5IHVudGlsIHRoZSB2aXNpYmlsaXR5IHdpbmRvdyBleHBpcmVzLlxuZXhwb3J0IGNvbnN0IFJFUExBWV9USU1FT1VUX01TID0gMjQwXzAwMDtcblxuLy8gTnVtYmVyIG9mIHF1ZXVlIGRlbGl2ZXJ5IGF0dGVtcHRzIHRvIGFsbG93IGJlZm9yZSBwZXJtYW5lbnRseSBmYWlsaW5nIGEgcnVuXG4vLyBkdWUgdG8gYSByZXBsYXkgdGltZW91dC4gT24gYXR0ZW1wdHMgMSB0aHJvdWdoIHRoaXMgdmFsdWUsIHRoZSB0aW1lb3V0XG4vLyBoYW5kbGVyIGV4aXRzIHdpdGhvdXQgd3JpdGluZyBydW5fZmFpbGVkIHNvIHRoZSBxdWV1ZSByZXRyaWVzIHRoZSBtZXNzYWdlLlxuLy8gT24gdGhlIG5leHQgYXR0ZW1wdCB0aGUgcnVuIGlzIG1hcmtlZCBhcyBmYWlsZWQuXG5leHBvcnQgY29uc3QgUkVQTEFZX1RJTUVPVVRfTUFYX1JFVFJJRVMgPSAzO1xuXG4vLyBBIHJlcGxheS1jb25zdW1lciBtaXNtYXRjaCBjYW4gYmUgY2F1c2VkIGJ5IGEgdHJhbnNpZW50IGRpdmVyZ2VudCByZXBsYXlcbi8vIHJhdGhlciB0aGFuIGFuIGludmFsaWQgcGVyc2lzdGVkIGhpc3RvcnkuIFF1ZXVlIGJvdW5kZWQgcmVjb3ZlcnkgcmVwbGF5c1xuLy8gYmVmb3JlIHJlY29yZGluZyB0ZXJtaW5hbCBjb3JydXB0aW9uIGZvciBhIHJ1biB0aGF0IGNhbm5vdCByZXBsYXkuXG5leHBvcnQgY29uc3QgUkVQTEFZX0RJVkVSR0VOQ0VfTUFYX1JFVFJJRVMgPSAzO1xuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3J1bnRpbWUvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDRFQUE0RTtBQUM1RSw0RUFBNEU7QUFDNUUseUVBQXlFO0FBQ3pFLG9EQUFvRDtBQUNwRCxFQUFFO0FBQ0YsK0VBQStFO0FBQy9FLHNEQUFzRDtBQUN0RCwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUM5RSx5RUFBeUU7QUFDekUsK0VBQStFO0FBQy9FLDZFQUE2RTtBQUM3RSwrRUFBK0U7QUFDL0UsZ0ZBQWdGO0FBQ2hGLDJFQUEyRTtBQUMzRSwyRUFBMkU7QUFDM0Usc0JBQXNCO0FBQ3RCLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEVBQUUsQ0FBQztBQUV2Qyx1RUFBdUU7QUFDdkUsK0VBQStFO0FBQy9FLG1FQUFtRTtBQUNuRSw0RUFBNEU7QUFDNUUsc0JBQXNCO0FBQ3RCLG9GQUFvRjtBQUNwRixpRUFBaUU7QUFDakUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsT0FBTyxDQUFDO0FBRXpDLDhFQUE4RTtBQUM5RSx5RUFBeUU7QUFDekUsNkVBQTZFO0FBQzdFLG1EQUFtRDtBQUNuRCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxDQUFDLENBQUM7QUFFNUMsMkVBQTJFO0FBQzNFLDJFQUEyRTtBQUMzRSxxRUFBcUU7QUFDckUsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTWF4aW11bSBudW1iZXIgb2YgcXVldWUgZGVsaXZlcnkgYXR0ZW1wdHMgYmVmb3JlIHRoZSBoYW5kbGVyIGdpdmVzIHVwIGFuZFxuLy8gZ3JhY2VmdWxseSBmYWlscyB0aGUgcnVuL3N0ZXAuIFRoaXMgbXVzdCBiZSBib3VuZGVkIHVuZGVyIHRoZSBWUVMgbWVzc2FnZVxuLy8gbWF4IHZpc2liaWxpdHkgd2luZG93ICgyNCBob3Vycykgc28gdGhhdCBvdXIgaGFuZGxlci1zaWRlIGZhaWx1cmUgcGF0aFxuLy8gcmVsaWFibHkgZXhlY3V0ZXMgYmVmb3JlIFZRUyBleHBpcmVzIHRoZSBtZXNzYWdlLlxuLy9cbi8vIFRoZSBlZmZlY3RpdmUgd2FsbC1jbG9jayBzdXJ2aXZhbCBkZXBlbmRzIG9uIHRoZSBwZXItcmVkZWxpdmVyeSBiYWNrb2ZmOiB0aGVcbi8vIGByZXRyeS1hZnRlcmAgdGhlIGhhbmRsZXIgcmV0dXJucyAoc2VlIHdvcmxkLXZlcmNlbFxuLy8gYGdldEhhbmRsZXJFcnJvclJldHJ5QWZ0ZXJTZWNvbmRzYCkgZmVkIHRocm91Z2ggVlFTIGBjYWxjdWxhdGVCYWNrb2ZmRGVsYXlgLlxuLy8gVlFTIHVzZXMgb3VyIHZhbHVlIGZvciB0aGUgZmlyc3QgMzIgYXR0ZW1wdHMgKGNsYW1wZWQgdG8gWzVzLCA5MDBzXSkgdGhlblxuLy8gYXBwbGllcyBpdHMgb3duIGV4cG9uZW50aWFsIGdyb3d0aCDigJQgZXZlcnkgaG9wIGhhcmQtY2FwcGVkIGF0IHRoZSBTUVMgbGltaXRcbi8vIG9mIDkwMHMuIFdpdGggdGhlIGJhY2tvZmYgcmFtcGluZyB0b3dhcmQgdGhhdCA5MDBzIGNlaWxpbmcgKHJlYWNoZWQgYnlcbi8vIH5kZWxpdmVyeSAxMSksIDQ4IGF0dGVtcHRzIHNwYW4gcm91Z2hseSA54oCTMTAgaG91cnMgb2Ygd2FsbC1jbG9jayAofjM1LDAwMHMpLFxuLy8gY29tZm9ydGFibHkgdW5kZXIgdGhlIDI0LWhvdXIgbWVzc2FnZS12aXNpYmlsaXR5IGxpbWl0IHNvIHRoZSBmYWlsdXJlIHBhdGhcbi8vIHJ1bnMgYmVmb3JlIHRoZSBtZXNzYWdlIGV4cGlyZXMuIChBIGZsYXR0ZXIsIGxvdy1jYXBwZWQgYmFja29mZiBleGhhdXN0cyB0aGVcbi8vIGJ1ZGdldCBpbiBvbmx5IGEgZmV3IGhvdXJzLCBmYWlsaW5nIG90aGVyd2lzZS1oZWFsdGh5IHJ1bnMgZHVyaW5nIGEgdHJhbnNpZW50XG4vLyBiYWNrZW5kIG91dGFnZTsgY29udmVyc2VseSwgc3Bhbm5pbmcgdGhlIGZ1bGwgMjRoIHdpbmRvdyB3b3VsZCByZXF1aXJlIGFcbi8vIHN1YnN0YW50aWFsbHkgaGlnaGVyIGNhcCBoZXJlLCBub3QgYSBoaWdoZXIgcGVyLWhvcCBjZWlsaW5nIOKAlCBWUVMgY2xhbXBzXG4vLyBldmVyeSBob3AgYXQgOTAwcy4pXG5leHBvcnQgY29uc3QgTUFYX1FVRVVFX0RFTElWRVJJRVMgPSA0ODtcblxuLy8gTWF4aW11bSB0aW1lIGFsbG93ZWQgZm9yIGEgc2luZ2xlIHdvcmtmbG93IHJlcGxheSBleGVjdXRpb24gKGluIG1zKS5cbi8vIElmIGEgcmVwbGF5IGV4Y2VlZHMgdGhpcyBkdXJhdGlvbiwgdGhlIHByb2Nlc3MgZXhpdHMgc28gdGhlIHF1ZXVlIGNhbiByZXRyeS5cbi8vIFRoaXMgbXVzdCBiZSBsb3dlciB0aGFuIHRoZSBmdW5jdGlvbidzIG1heER1cmF0aW9uIHRvIGVuc3VyZSB0aGVcbi8vIHRpbWVvdXQgaGFuZGxlciBoYXMgdGltZSB0byBwb3N0IHRoZSBydW5fZmFpbGVkIGV2ZW50IGJlZm9yZSB0aGUgcGxhdGZvcm1cbi8vIGtpbGxzIHRoZSBmdW5jdGlvbi5cbi8vIE5vdGUgdGhhdCBvbiBob2JieSBwbGFuLCB0aGUgbWF4RHVyYXRpb24gaXMgNjBzLCBzbyB0aGlzIGJhcnJpZXIgd2lsbCBub3QgYmUgaGl0LFxuLy8gYW5kIHRoZSBxdWV1ZSB3aWxsIHJlLXRyeSB1bnRpbCB0aGUgdmlzaWJpbGl0eSB3aW5kb3cgZXhwaXJlcy5cbmV4cG9ydCBjb25zdCBSRVBMQVlfVElNRU9VVF9NUyA9IDI0MF8wMDA7XG5cbi8vIE51bWJlciBvZiBxdWV1ZSBkZWxpdmVyeSBhdHRlbXB0cyB0byBhbGxvdyBiZWZvcmUgcGVybWFuZW50bHkgZmFpbGluZyBhIHJ1blxuLy8gZHVlIHRvIGEgcmVwbGF5IHRpbWVvdXQuIE9uIGF0dGVtcHRzIDEgdGhyb3VnaCB0aGlzIHZhbHVlLCB0aGUgdGltZW91dFxuLy8gaGFuZGxlciBleGl0cyB3aXRob3V0IHdyaXRpbmcgcnVuX2ZhaWxlZCBzbyB0aGUgcXVldWUgcmV0cmllcyB0aGUgbWVzc2FnZS5cbi8vIE9uIHRoZSBuZXh0IGF0dGVtcHQgdGhlIHJ1biBpcyBtYXJrZWQgYXMgZmFpbGVkLlxuZXhwb3J0IGNvbnN0IFJFUExBWV9USU1FT1VUX01BWF9SRVRSSUVTID0gMztcblxuLy8gQSByZXBsYXktY29uc3VtZXIgbWlzbWF0Y2ggY2FuIGJlIGNhdXNlZCBieSBhIHRyYW5zaWVudCBkaXZlcmdlbnQgcmVwbGF5XG4vLyByYXRoZXIgdGhhbiBhbiBpbnZhbGlkIHBlcnNpc3RlZCBoaXN0b3J5LiBRdWV1ZSBib3VuZGVkIHJlY292ZXJ5IHJlcGxheXNcbi8vIGJlZm9yZSByZWNvcmRpbmcgdGVybWluYWwgY29ycnVwdGlvbiBmb3IgYSBydW4gdGhhdCBjYW5ub3QgcmVwbGF5LlxuZXhwb3J0IGNvbnN0IFJFUExBWV9ESVZFUkdFTkNFX01BWF9SRVRSSUVTID0gMztcbiJdfQ==
@@ -0,0 +1,15 @@
1
+ export declare function getPortLazy(): Promise<number | undefined>;
2
+ /**
3
+ * Resets the per-process port cache. Intended for tests; not used on the hot
4
+ * path. Callers must let any in-flight lookup settle (await the pending
5
+ * `getPortLazy()` call) before resetting: clearing `_inFlight` here does not
6
+ * cancel an already-scheduled resolution, so a late `.then` could otherwise
7
+ * repopulate `_cachedPort` after the reset and bleed into the next test.
8
+ */
9
+ export declare function resetPortCacheForTesting(): void;
10
+ /**
11
+ * Installs a fake port resolver and clears the cache. Test-only seam used to
12
+ * exercise the caching contract deterministically without touching the OS.
13
+ */
14
+ export declare function setPortResolverForTesting(fn: () => Promise<number | undefined>): void;
15
+ //# sourceMappingURL=get-port-lazy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-port-lazy.d.ts","sourceRoot":"","sources":["../../src/runtime/get-port-lazy.ts"],"names":[],"mappings":"AAmBA,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAwB/D;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,IAAI,IAAI,CAI/C;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,EAAE,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GACpC,IAAI,CAIN"}
@@ -0,0 +1,63 @@
1
+ import { getPort } from '@workflow/utils/get-port';
2
+ // Per-process cache of the resolved port. The workflow dev server listens on a
3
+ // stable port for the lifetime of the process, but `getPort()` rediscovers it
4
+ // on every call by querying the OS for the process's listening sockets — on
5
+ // macOS that shells out to `lsof` (~60ms), which the runtime pays on EVERY
6
+ // workflow replay (the non-Vercel branch of `runWorkflow`). Since the port does
7
+ // not change within a process, resolve it once and reuse it. `_inFlight`
8
+ // dedupes concurrent first calls so discovery never runs more than once.
9
+ //
10
+ // The first concrete port is pinned for the lifetime of the process — there is
11
+ // no per-call re-resolution. This is safe because the runtime only runs inside
12
+ // the already-listening dev-server process, and `getPort()` -> `getAllPorts()`
13
+ // returns a deterministic order, so repeated calls would resolve the same port
14
+ // anyway.
15
+ let _getPort = getPort;
16
+ let _cachedPort;
17
+ let _inFlight;
18
+ export async function getPortLazy() {
19
+ // Fast path: already resolved a concrete port for this process.
20
+ if (_cachedPort !== undefined) {
21
+ return _cachedPort;
22
+ }
23
+ // A discovery is already running — share it rather than starting a second.
24
+ if (_inFlight) {
25
+ return _inFlight;
26
+ }
27
+ _inFlight = _getPort()
28
+ .then((port) => {
29
+ // Only cache a concrete port. A transient `undefined` (e.g. the server is
30
+ // not listening yet on the very first replay) must not poison the cache —
31
+ // leaving it unset lets the next call retry discovery.
32
+ if (typeof port === 'number') {
33
+ _cachedPort = port;
34
+ }
35
+ return port;
36
+ })
37
+ .finally(() => {
38
+ _inFlight = undefined;
39
+ });
40
+ return _inFlight;
41
+ }
42
+ /**
43
+ * Resets the per-process port cache. Intended for tests; not used on the hot
44
+ * path. Callers must let any in-flight lookup settle (await the pending
45
+ * `getPortLazy()` call) before resetting: clearing `_inFlight` here does not
46
+ * cancel an already-scheduled resolution, so a late `.then` could otherwise
47
+ * repopulate `_cachedPort` after the reset and bleed into the next test.
48
+ */
49
+ export function resetPortCacheForTesting() {
50
+ _getPort = getPort;
51
+ _cachedPort = undefined;
52
+ _inFlight = undefined;
53
+ }
54
+ /**
55
+ * Installs a fake port resolver and clears the cache. Test-only seam used to
56
+ * exercise the caching contract deterministically without touching the OS.
57
+ */
58
+ export function setPortResolverForTesting(fn) {
59
+ _getPort = fn;
60
+ _cachedPort = undefined;
61
+ _inFlight = undefined;
62
+ }
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBvcnQtbGF6eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW50aW1lL2dldC1wb3J0LWxhenkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRW5ELCtFQUErRTtBQUMvRSw4RUFBOEU7QUFDOUUsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSxnRkFBZ0Y7QUFDaEYseUVBQXlFO0FBQ3pFLHlFQUF5RTtBQUN6RSxFQUFFO0FBQ0YsK0VBQStFO0FBQy9FLCtFQUErRTtBQUMvRSwrRUFBK0U7QUFDL0UsK0VBQStFO0FBQy9FLFVBQVU7QUFDVixJQUFJLFFBQVEsR0FBc0MsT0FBTyxDQUFDO0FBQzFELElBQUksV0FBK0IsQ0FBQztBQUNwQyxJQUFJLFNBQWtELENBQUM7QUFFdkQsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXO0lBQy9CLGdFQUFnRTtJQUNoRSxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM5QixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBQ0QsMkVBQTJFO0lBQzNFLElBQUksU0FBUyxFQUFFLENBQUM7UUFDZCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsU0FBUyxHQUFHLFFBQVEsRUFBRTtTQUNuQixJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNiLDBFQUEwRTtRQUMxRSwwRUFBMEU7UUFDMUUsdURBQXVEO1FBQ3ZELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDN0IsV0FBVyxHQUFHLElBQUksQ0FBQztRQUNyQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7U0FDRCxPQUFPLENBQUMsR0FBRyxFQUFFO1FBQ1osU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUN4QixDQUFDLENBQUMsQ0FBQztJQUNMLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCO0lBQ3RDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDbkIsV0FBVyxHQUFHLFNBQVMsQ0FBQztJQUN4QixTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQ3hCLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQ3ZDLEVBQXFDO0lBRXJDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDZCxXQUFXLEdBQUcsU0FBUyxDQUFDO0lBQ3hCLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldFBvcnQgfSBmcm9tICdAd29ya2Zsb3cvdXRpbHMvZ2V0LXBvcnQnO1xuXG4vLyBQZXItcHJvY2VzcyBjYWNoZSBvZiB0aGUgcmVzb2x2ZWQgcG9ydC4gVGhlIHdvcmtmbG93IGRldiBzZXJ2ZXIgbGlzdGVucyBvbiBhXG4vLyBzdGFibGUgcG9ydCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBwcm9jZXNzLCBidXQgYGdldFBvcnQoKWAgcmVkaXNjb3ZlcnMgaXRcbi8vIG9uIGV2ZXJ5IGNhbGwgYnkgcXVlcnlpbmcgdGhlIE9TIGZvciB0aGUgcHJvY2VzcydzIGxpc3RlbmluZyBzb2NrZXRzIOKAlCBvblxuLy8gbWFjT1MgdGhhdCBzaGVsbHMgb3V0IHRvIGBsc29mYCAofjYwbXMpLCB3aGljaCB0aGUgcnVudGltZSBwYXlzIG9uIEVWRVJZXG4vLyB3b3JrZmxvdyByZXBsYXkgKHRoZSBub24tVmVyY2VsIGJyYW5jaCBvZiBgcnVuV29ya2Zsb3dgKS4gU2luY2UgdGhlIHBvcnQgZG9lc1xuLy8gbm90IGNoYW5nZSB3aXRoaW4gYSBwcm9jZXNzLCByZXNvbHZlIGl0IG9uY2UgYW5kIHJldXNlIGl0LiBgX2luRmxpZ2h0YFxuLy8gZGVkdXBlcyBjb25jdXJyZW50IGZpcnN0IGNhbGxzIHNvIGRpc2NvdmVyeSBuZXZlciBydW5zIG1vcmUgdGhhbiBvbmNlLlxuLy9cbi8vIFRoZSBmaXJzdCBjb25jcmV0ZSBwb3J0IGlzIHBpbm5lZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBwcm9jZXNzIOKAlCB0aGVyZSBpc1xuLy8gbm8gcGVyLWNhbGwgcmUtcmVzb2x1dGlvbi4gVGhpcyBpcyBzYWZlIGJlY2F1c2UgdGhlIHJ1bnRpbWUgb25seSBydW5zIGluc2lkZVxuLy8gdGhlIGFscmVhZHktbGlzdGVuaW5nIGRldi1zZXJ2ZXIgcHJvY2VzcywgYW5kIGBnZXRQb3J0KClgIC0+IGBnZXRBbGxQb3J0cygpYFxuLy8gcmV0dXJucyBhIGRldGVybWluaXN0aWMgb3JkZXIsIHNvIHJlcGVhdGVkIGNhbGxzIHdvdWxkIHJlc29sdmUgdGhlIHNhbWUgcG9ydFxuLy8gYW55d2F5LlxubGV0IF9nZXRQb3J0OiAoKSA9PiBQcm9taXNlPG51bWJlciB8IHVuZGVmaW5lZD4gPSBnZXRQb3J0O1xubGV0IF9jYWNoZWRQb3J0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG5sZXQgX2luRmxpZ2h0OiBQcm9taXNlPG51bWJlciB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQb3J0TGF6eSgpOiBQcm9taXNlPG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICAvLyBGYXN0IHBhdGg6IGFscmVhZHkgcmVzb2x2ZWQgYSBjb25jcmV0ZSBwb3J0IGZvciB0aGlzIHByb2Nlc3MuXG4gIGlmIChfY2FjaGVkUG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIF9jYWNoZWRQb3J0O1xuICB9XG4gIC8vIEEgZGlzY292ZXJ5IGlzIGFscmVhZHkgcnVubmluZyDigJQgc2hhcmUgaXQgcmF0aGVyIHRoYW4gc3RhcnRpbmcgYSBzZWNvbmQuXG4gIGlmIChfaW5GbGlnaHQpIHtcbiAgICByZXR1cm4gX2luRmxpZ2h0O1xuICB9XG5cbiAgX2luRmxpZ2h0ID0gX2dldFBvcnQoKVxuICAgIC50aGVuKChwb3J0KSA9PiB7XG4gICAgICAvLyBPbmx5IGNhY2hlIGEgY29uY3JldGUgcG9ydC4gQSB0cmFuc2llbnQgYHVuZGVmaW5lZGAgKGUuZy4gdGhlIHNlcnZlciBpc1xuICAgICAgLy8gbm90IGxpc3RlbmluZyB5ZXQgb24gdGhlIHZlcnkgZmlyc3QgcmVwbGF5KSBtdXN0IG5vdCBwb2lzb24gdGhlIGNhY2hlIOKAlFxuICAgICAgLy8gbGVhdmluZyBpdCB1bnNldCBsZXRzIHRoZSBuZXh0IGNhbGwgcmV0cnkgZGlzY292ZXJ5LlxuICAgICAgaWYgKHR5cGVvZiBwb3J0ID09PSAnbnVtYmVyJykge1xuICAgICAgICBfY2FjaGVkUG9ydCA9IHBvcnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcG9ydDtcbiAgICB9KVxuICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgIF9pbkZsaWdodCA9IHVuZGVmaW5lZDtcbiAgICB9KTtcbiAgcmV0dXJuIF9pbkZsaWdodDtcbn1cblxuLyoqXG4gKiBSZXNldHMgdGhlIHBlci1wcm9jZXNzIHBvcnQgY2FjaGUuIEludGVuZGVkIGZvciB0ZXN0czsgbm90IHVzZWQgb24gdGhlIGhvdFxuICogcGF0aC4gQ2FsbGVycyBtdXN0IGxldCBhbnkgaW4tZmxpZ2h0IGxvb2t1cCBzZXR0bGUgKGF3YWl0IHRoZSBwZW5kaW5nXG4gKiBgZ2V0UG9ydExhenkoKWAgY2FsbCkgYmVmb3JlIHJlc2V0dGluZzogY2xlYXJpbmcgYF9pbkZsaWdodGAgaGVyZSBkb2VzIG5vdFxuICogY2FuY2VsIGFuIGFscmVhZHktc2NoZWR1bGVkIHJlc29sdXRpb24sIHNvIGEgbGF0ZSBgLnRoZW5gIGNvdWxkIG90aGVyd2lzZVxuICogcmVwb3B1bGF0ZSBgX2NhY2hlZFBvcnRgIGFmdGVyIHRoZSByZXNldCBhbmQgYmxlZWQgaW50byB0aGUgbmV4dCB0ZXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRQb3J0Q2FjaGVGb3JUZXN0aW5nKCk6IHZvaWQge1xuICBfZ2V0UG9ydCA9IGdldFBvcnQ7XG4gIF9jYWNoZWRQb3J0ID0gdW5kZWZpbmVkO1xuICBfaW5GbGlnaHQgPSB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogSW5zdGFsbHMgYSBmYWtlIHBvcnQgcmVzb2x2ZXIgYW5kIGNsZWFycyB0aGUgY2FjaGUuIFRlc3Qtb25seSBzZWFtIHVzZWQgdG9cbiAqIGV4ZXJjaXNlIHRoZSBjYWNoaW5nIGNvbnRyYWN0IGRldGVybWluaXN0aWNhbGx5IHdpdGhvdXQgdG91Y2hpbmcgdGhlIE9TLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UG9ydFJlc29sdmVyRm9yVGVzdGluZyhcbiAgZm46ICgpID0+IFByb21pc2U8bnVtYmVyIHwgdW5kZWZpbmVkPlxuKTogdm9pZCB7XG4gIF9nZXRQb3J0ID0gZm47XG4gIF9jYWNoZWRQb3J0ID0gdW5kZWZpbmVkO1xuICBfaW5GbGlnaHQgPSB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -4,7 +4,7 @@ import type { Event, HealthCheckPayload, ValidQueueName, World } from '@workflow
4
4
  * Ensures the workflow name only contains safe characters before
5
5
  * interpolating it into the queue name string.
6
6
  */
7
- export declare function getWorkflowQueueName(workflowName: string): ValidQueueName;
7
+ export declare function getWorkflowQueueName(workflowName: string, namespace?: string): ValidQueueName;
8
8
  /**
9
9
  * Result of a health check operation.
10
10
  */
@@ -45,7 +45,9 @@ export interface HealthCheckOptions {
45
45
  /** Deployment ID to send the health check to. Falls back to process.env.VERCEL_DEPLOYMENT_ID. */
46
46
  deploymentId?: string;
47
47
  }
48
- export declare function healthCheck(world: World, endpoint: HealthCheckEndpoint, options?: HealthCheckOptions): Promise<HealthCheckResult>;
48
+ export declare function healthCheck(world: World, endpoint: HealthCheckEndpoint, options?: HealthCheckOptions & {
49
+ namespace?: string;
50
+ }): Promise<HealthCheckResult>;
49
51
  export interface LoadedWorkflowRunEvents {
50
52
  events: Event[];
51
53
  cursor: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/runtime/helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,KAAK,EACL,kBAAkB,EAClB,cAAc,EACd,KAAK,EACN,MAAM,iBAAiB,CAAC;AAwBzB;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,CAOzE;AAWD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,GACf,kBAAkB,GAAG,SAAS,CAMhC;AAWD;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,kBAAkB,EAC/B,QAAQ,EAAE,UAAU,GAAG,MAAM,EAC7B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iGAAiG;IACjG,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA6LD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CA2D5B;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AA0DD;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,uBAAuB,CAAC,CAoGlC;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAG7E;AAYD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,EAC5C,gBAAgB,CAAC,EAAE,MAAM,GACxB,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAoCrC;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,KAAK,EACZ,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,iBA0BxC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IAAE,WAAW,CAAC,EAAE,IAAI,CAAA;CAAE;;cAS/D"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/runtime/helpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,KAAK,EACL,kBAAkB,EAClB,cAAc,EACd,KAAK,EACN,MAAM,iBAAiB,CAAC;AA0BzB;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,cAAc,CAWhB;AAWD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,GACf,kBAAkB,GAAG,SAAS,CAMhC;AAWD;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,kBAAkB,EAC/B,QAAQ,EAAE,UAAU,GAAG,MAAM,EAC7B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,kBAAkB;IACjC,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iGAAiG;IACjG,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AA6LD,wBAAsB,WAAW,CAC/B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,CAAC,EAAE,kBAAkB,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD,OAAO,CAAC,iBAAiB,CAAC,CAyD5B;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AA0DD;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,uBAAuB,CAAC,CAoGlC;AAED;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAG7E;AAYD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,EAC5C,gBAAgB,CAAC,EAAE,MAAM,GACxB,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAoCrC;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,KAAK,EACZ,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,iBA0BxC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IAAE,WAAW,CAAC,EAAE,IAAI,CAAA;CAAE;;cAS/D"}