@workflow/utils 4.1.3 → 4.1.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"get-port.d.ts","sourceRoot":"","sources":["../src/get-port.ts"],"names":[],"mappings":"AAgPA;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAyBrD;AAED;;;GAGG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG3D;AAMD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAiCD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAqC7B"}
1
+ {"version":3,"file":"get-port.d.ts","sourceRoot":"","sources":["../src/get-port.ts"],"names":[],"mappings":"AAiPA;;;GAGG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAyBrD;AAED;;;GAGG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAG3D;AAMD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAiCD;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAqC7B"}
package/dist/get-port.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { execFile } from 'node:child_process';
2
2
  import { readdir, readFile, readlink } from 'node:fs/promises';
3
3
  import { promisify } from 'node:util';
4
+ import { WORKFLOW_ROUTE_BASE } from './workflow-routes.js';
4
5
  const execFileAsync = promisify(execFile);
5
6
  /**
6
7
  * Parses a port string and returns it if valid (0-65535), otherwise undefined.
@@ -237,7 +238,7 @@ export async function getPort() {
237
238
  }
238
239
  // Configuration for HTTP probing
239
240
  const PROBE_TIMEOUT_MS = 500;
240
- const PROBE_ENDPOINT = '/.well-known/workflow/v1/flow?__health';
241
+ const PROBE_ENDPOINT = `${WORKFLOW_ROUTE_BASE}/flow?__health`;
241
242
  /**
242
243
  * Probes a port to check if it's serving the workflow HTTP server.
243
244
  * Uses HEAD request to minimize overhead.
@@ -300,4 +301,4 @@ export async function getWorkflowPort(options) {
300
301
  }
301
302
  return ports[0];
302
303
  }
303
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ2V0LXBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFFdEMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRTFDOztHQUVHO0FBQ0gsU0FBUyxTQUFTLENBQUMsS0FBYSxFQUFFLEtBQUssR0FBRyxFQUFFO0lBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDdEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELG1GQUFtRjtBQUNuRixnR0FBZ0c7QUFDaEcscUdBQXFHO0FBQ3JHLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBYSxFQUFFLEdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFXMUMsU0FBUyxnQkFBZ0I7SUFDdkIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsRUFFN0IsQ0FBQztJQUNkLE1BQU0sT0FBTyxHQUFHLE1BQU0sRUFBRSxLQUFLLENBQUM7SUFFOUIs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LENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxxRUFBcUU7SUFDckUsNEJBQTRCO0lBQzVCLDhDQUE4QztJQUM5QyxrQ0FBa0M7SUFDbEMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxhQUFhLEVBQUUsQ0FBQztRQUMzQyxPQUFPLENBQUMsS0FBSyxDQUNYLCtEQUErRCxFQUMvRCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ1QsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY0ZpbGUgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgcmVhZGRpciwgcmVhZEZpbGUsIHJlYWRsaW5rIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICdub2RlOnV0aWwnO1xuXG5jb25zdCBleGVjRmlsZUFzeW5jID0gcHJvbWlzaWZ5KGV4ZWNGaWxlKTtcblxuLyoqXG4gKiBQYXJzZXMgYSBwb3J0IHN0cmluZyBhbmQgcmV0dXJucyBpdCBpZiB2YWxpZCAoMC02NTUzNSksIG90aGVyd2lzZSB1bmRlZmluZWQuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlUG9ydCh2YWx1ZTogc3RyaW5nLCByYWRpeCA9IDEwKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcG9ydCA9IHBhcnNlSW50KHZhbHVlLCByYWRpeCk7XG4gIGlmICghTnVtYmVyLmlzTmFOKHBvcnQpICYmIHBvcnQgPj0gMCAmJiBwb3J0IDw9IDY1NTM1KSB7XG4gICAgcmV0dXJuIHBvcnQ7XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLy8gTk9URTogV2UgYnVpbGQgL3Byb2MgcGF0aHMgZHluYW1pY2FsbHkgdG8gcHJldmVudCBAdmVyY2VsL25mdCBmcm9tIHRyYWNpbmcgdGhlbS5cbi8vIE5GVCdzIHN0YXRpYyBhbmFseXNpcyB0cmllcyB0byBidW5kbGUgYW55IGZpbGUgcGF0aCBsaXRlcmFsIGl0IGZpbmRzIChlLmcuLCAnL3Byb2MvbmV0L3RjcCcpLlxuLy8gU2luY2UgL3Byb2MgaXMgYSB2aXJ0dWFsIExpbnV4IGZpbGVzeXN0ZW0sIHRoaXMgY2F1c2VzIGJ1aWxkIGZhaWx1cmVzIGluIEBzdmVsdGVqcy9hZGFwdGVyLXZlcmNlbC5cbmNvbnN0IGpvaW4gPSAoYXJyOiBzdHJpbmdbXSwgc2VwOiBzdHJpbmcpID0+IGFyci5qb2luKHNlcCk7XG5jb25zdCBQUk9DX1JPT1QgPSBqb2luKFsnJywgJ3Byb2MnXSwgJy8nKTtcblxuaW50ZXJmYWNlIExpYnV2VGNwSGFuZGxlIHtcbiAgdHlwZT86IHN0cmluZztcbiAgaXNfYWN0aXZlPzogYm9vbGVhbjtcbiAgbG9jYWxFbmRwb2ludD86IHtcbiAgICBwb3J0PzogbnVtYmVyO1xuICB9O1xuICByZW1vdGVFbmRwb2ludD86IHVua25vd247XG59XG5cbmZ1bmN0aW9uIGdldFJlcG9ydGVkUG9ydHMoKTogbnVtYmVyW10ge1xuICBjb25zdCByZXBvcnQgPSBwcm9jZXNzLnJlcG9ydD8uZ2V0UmVwb3J0Py4oKSBhc1xuICAgIHwgeyBsaWJ1dj86IExpYnV2VGNwSGFuZGxlW10gfVxuICAgIHwgdW5kZWZpbmVkO1xuICBjb25zdCBoYW5kbGVzID0gcmVwb3J0Py5saWJ1djtcblxuICBpZiAoIWhhbmRsZXMpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBwb3J0czogbnVtYmVyW10gPSBbXTtcbiAgY29uc3Qgc2VlbiA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuXG4gIGZvciAoY29uc3QgaGFuZGxlIG9mIGhhbmRsZXMpIHtcbiAgICBpZiAoXG4gICAgICBoYW5kbGUudHlwZSAhPT0gJ3RjcCcgfHxcbiAgICAgIGhhbmRsZS5pc19hY3RpdmUgIT09IHRydWUgfHxcbiAgICAgIGhhbmRsZS5yZW1vdGVFbmRwb2ludCAhPT0gbnVsbFxuICAgICkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgcG9ydCA9IHBhcnNlUG9ydChTdHJpbmcoaGFuZGxlLmxvY2FsRW5kcG9pbnQ/LnBvcnQpKTtcbiAgICBpZiAocG9ydCAhPT0gdW5kZWZpbmVkICYmICFzZWVuLmhhcyhwb3J0KSkge1xuICAgICAgcG9ydHMucHVzaChwb3J0KTtcbiAgICAgIHNlZW4uYWRkKHBvcnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwb3J0cztcbn1cblxuLyoqXG4gKiBHZXRzIEFMTCBsaXN0ZW5pbmcgcG9ydHMgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3Mgb24gTGludXggYnkgcmVhZGluZyAvcHJvYyBmaWxlc3lzdGVtLlxuICogUmV0dXJucyBwb3J0cyBpbiBvcmRlciBvZiBmaWxlIGRlc2NyaXB0b3IgKGRldGVybWluaXN0aWMgb3JkZXJpbmcpLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRMaW51eFBvcnRzKHBpZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICBjb25zdCBsaXN0ZW5TdGF0ZSA9ICcwQSc7IC8vIFRDUCBMSVNURU4gc3RhdGUgaW4gL3Byb2MvbmV0L3RjcFxuICBjb25zdCB0Y3BGaWxlcyA9IFtgJHtQUk9DX1JPT1R9L25ldC90Y3BgLCBgJHtQUk9DX1JPT1R9L25ldC90Y3A2YF0gYXMgY29uc3Q7XG5cbiAgLy8gU3RlcCAxOiBHZXQgc29ja2V0IGlub2RlcyBmcm9tIC9wcm9jLzxwaWQ+L2ZkLyBpbiBvcmRlclxuICAvLyBXZSBwcmVzZXJ2ZSBvcmRlciB0byBtYWludGFpbiBkZXRlcm1pbmlzdGljIGJlaGF2aW9yXG4gIC8vIFVzZSBib3RoIGFycmF5IChmb3Igb3JkZXIpIGFuZCBTZXQgKGZvciBPKDEpIGxvb2t1cClcbiAgY29uc3Qgc29ja2V0SW5vZGVzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBzb2NrZXRJbm9kZXNTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgZmRQYXRoID0gYCR7UFJPQ19ST09UfS8ke3BpZH0vZmRgO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZmRzID0gYXdhaXQgcmVhZGRpcihmZFBhdGgpO1xuICAgIC8vIFNvcnQgRkRzIG51bWVyaWNhbGx5IHRvIGVuc3VyZSBkZXRlcm1pbmlzdGljIG9yZGVyIChGRHMgYXJlIGFsd2F5cyBudW1lcmljIHN0cmluZ3MpXG4gICAgY29uc3Qgc29ydGVkRmRzID0gZmRzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgIGNvbnN0IG51bUEgPSBOdW1iZXIucGFyc2VJbnQoYSwgMTApO1xuICAgICAgY29uc3QgbnVtQiA9IE51bWJlci5wYXJzZUludChiLCAxMCk7XG4gICAgICByZXR1cm4gbnVtQSAtIG51bUI7XG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgc29ydGVkRmRzLm1hcChhc3luYyAoZmQpID0+IHtcbiAgICAgICAgY29uc3QgbGluayA9IGF3YWl0IHJlYWRsaW5rKGAke2ZkUGF0aH0vJHtmZH1gKTtcbiAgICAgICAgLy8gU29ja2V0IGxpbmtzIGxvb2sgbGlrZTogc29ja2V0OlsxMjM0NV1cbiAgICAgICAgY29uc3QgbWF0Y2ggPSBsaW5rLm1hdGNoKC9ec29ja2V0OlxcWyhcXGQrKVxcXSQvKTtcbiAgICAgICAgcmV0dXJuIG1hdGNoPy5bMV0gPz8gbnVsbDtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGZvciAoY29uc3QgcmVzdWx0IG9mIHJlc3VsdHMpIHtcbiAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSAnZnVsZmlsbGVkJyAmJiByZXN1bHQudmFsdWUpIHtcbiAgICAgICAgc29ja2V0SW5vZGVzLnB1c2gocmVzdWx0LnZhbHVlKTtcbiAgICAgICAgc29ja2V0SW5vZGVzU2V0LmFkZChyZXN1bHQudmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCB7XG4gICAgLy8gUHJvY2VzcyBtaWdodCBub3QgZXhpc3Qgb3Igbm8gcGVybWlzc2lvblxuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGlmIChzb2NrZXRJbm9kZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLy8gU3RlcCAyOiBSZWFkIC9wcm9jL25ldC90Y3AgYW5kIC9wcm9jL25ldC90Y3A2IHRvIGZpbmQgbGlzdGVuaW5nIHNvY2tldHNcbiAgLy8gRm9ybWF0OiBzbCBsb2NhbF9hZGRyZXNzIHJlbV9hZGRyZXNzIHN0IC4uLiBpbm9kZVxuICAvLyBsb2NhbF9hZGRyZXNzIGlzIGhleCBJUDpwb3J0LCBzdD0wQSBtZWFucyBMSVNURU5cbiAgY29uc3QgaW5vZGVUb1BvcnQgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuXG4gIGZvciAoY29uc3QgdGNwRmlsZSBvZiB0Y3BGaWxlcykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVhZEZpbGUodGNwRmlsZSwgJ3V0ZjgnKTtcbiAgICAgIGNvbnN0IGxpbmVzID0gY29udGVudC5zcGxpdCgnXFxuJykuc2xpY2UoMSk7IC8vIFNraXAgaGVhZGVyXG5cbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICBpZiAoIWxpbmUudHJpbSgpKSBjb250aW51ZTsgLy8gU2tpcCBlbXB0eSBsaW5lc1xuXG4gICAgICAgIGNvbnN0IHBhcnRzID0gbGluZS50cmltKCkuc3BsaXQoL1xccysvKTtcbiAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA8IDEwKSBjb250aW51ZTtcblxuICAgICAgICBjb25zdCBsb2NhbEFkZHIgPSBwYXJ0c1sxXTsgLy8gZS5nLiwgXCIwMDAwMDAwMDowQkI4XCIgKDAuMC4wLjA6MzAwMClcbiAgICAgICAgY29uc3Qgc3RhdGUgPSBwYXJ0c1szXTsgLy8gXCIwQVwiID0gTElTVEVOXG4gICAgICAgIGNvbnN0IGlub2RlID0gcGFydHNbOV07XG5cbiAgICAgICAgaWYgKCFsb2NhbEFkZHIgfHwgc3RhdGUgIT09IGxpc3RlblN0YXRlIHx8ICFpbm9kZSkgY29udGludWU7XG4gICAgICAgIGlmICghc29ja2V0SW5vZGVzU2V0Lmhhcyhpbm9kZSkpIGNvbnRpbnVlO1xuXG4gICAgICAgIC8vIEV4dHJhY3QgcG9ydCBmcm9tIGhleCBmb3JtYXQgKGUuZy4sIFwiMEJCOFwiIC0+IDMwMDApXG4gICAgICAgIGNvbnN0IGNvbG9uSW5kZXggPSBsb2NhbEFkZHIuaW5kZXhPZignOicpO1xuICAgICAgICBpZiAoY29sb25JbmRleCA9PT0gLTEpIGNvbnRpbnVlO1xuXG4gICAgICAgIGNvbnN0IHBvcnRIZXggPSBsb2NhbEFkZHIuc2xpY2UoY29sb25JbmRleCArIDEpO1xuICAgICAgICBpZiAoIXBvcnRIZXgpIGNvbnRpbnVlO1xuXG4gICAgICAgIGNvbnN0IHBvcnQgPSBwYXJzZVBvcnQocG9ydEhleCwgMTYpO1xuICAgICAgICBpZiAocG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaW5vZGVUb1BvcnQuc2V0KGlub2RlLCBwb3J0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2gge31cbiAgfVxuXG4gIC8vIFJldHVybiBhbGwgcG9ydHMgaW4gc29ja2V0IGlub2RlIG9yZGVyIChkZXRlcm1pbmlzdGljKVxuICBjb25zdCBwb3J0czogbnVtYmVyW10gPSBbXTtcbiAgZm9yIChjb25zdCBpbm9kZSBvZiBzb2NrZXRJbm9kZXMpIHtcbiAgICBjb25zdCBwb3J0ID0gaW5vZGVUb1BvcnQuZ2V0KGlub2RlKTtcbiAgICBpZiAocG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwb3J0cy5wdXNoKHBvcnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwb3J0cztcbn1cblxuLyoqXG4gKiBHZXRzIEFMTCBsaXN0ZW5pbmcgcG9ydHMgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3Mgb24gbWFjT1MgdXNpbmcgbHNvZi5cbiAqIFJldHVybnMgcG9ydHMgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyIGluIGxzb2Ygb3V0cHV0LlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXREYXJ3aW5Qb3J0cyhwaWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7IHN0ZG91dCB9ID0gYXdhaXQgZXhlY0ZpbGVBc3luYygnbHNvZicsIFtcbiAgICAgICctYScsXG4gICAgICAnLWknLFxuICAgICAgJy1QJyxcbiAgICAgICctbicsXG4gICAgICAnLXAnLFxuICAgICAgcGlkLnRvU3RyaW5nKCksXG4gICAgXSk7XG5cbiAgICBjb25zdCBwb3J0czogbnVtYmVyW10gPSBbXTtcbiAgICBjb25zdCBsaW5lcyA9IHN0ZG91dC5zcGxpdCgnXFxuJyk7XG5cbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgIGlmIChsaW5lLmluY2x1ZGVzKCdMSVNURU4nKSkge1xuICAgICAgICAvLyBDb2x1bW4gOSAoMC1pbmRleGVkOiA4KSBjb250YWlucyB0aGUgYWRkcmVzcyBsaWtlIFwiKjozMDAwXCIgb3IgXCIxMjcuMC4wLjE6MzAwMFwiXG4gICAgICAgIGNvbnN0IHBhcnRzID0gbGluZS50cmltKCkuc3BsaXQoL1xccysvKTtcbiAgICAgICAgY29uc3QgYWRkciA9IHBhcnRzWzhdO1xuICAgICAgICBpZiAoYWRkcikge1xuICAgICAgICAgIGNvbnN0IGNvbG9uSW5kZXggPSBhZGRyLmxhc3RJbmRleE9mKCc6Jyk7XG4gICAgICAgICAgaWYgKGNvbG9uSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICBjb25zdCBwb3J0ID0gcGFyc2VQb3J0KGFkZHIuc2xpY2UoY29sb25JbmRleCArIDEpKTtcbiAgICAgICAgICAgIGlmIChwb3J0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgcG9ydHMucHVzaChwb3J0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcG9ydHM7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG4vKipcbiAqIEdldHMgQUxMIGxpc3RlbmluZyBwb3J0cyBmb3IgdGhlIGN1cnJlbnQgcHJvY2VzcyBvbiBXaW5kb3dzIHVzaW5nIG5ldHN0YXQuXG4gKiBSZXR1cm5zIHBvcnRzIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhciBpbiBuZXRzdGF0IG91dHB1dC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0V2luZG93c1BvcnRzKHBpZDogbnVtYmVyKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHsgc3Rkb3V0IH0gPSBhd2FpdCBleGVjRmlsZUFzeW5jKCdjbWQnLCBbXG4gICAgICAnL2MnLFxuICAgICAgYG5ldHN0YXQgLWFubyB8IGZpbmRzdHIgJHtwaWR9IHwgZmluZHN0ciBMSVNURU5JTkdgLFxuICAgIF0pO1xuXG4gICAgY29uc3QgcG9ydHM6IG51bWJlcltdID0gW107XG4gICAgY29uc3QgdHJpbW1lZE91dHB1dCA9IHN0ZG91dC50cmltKCk7XG5cbiAgICBpZiAodHJpbW1lZE91dHB1dCkge1xuICAgICAgY29uc3QgbGluZXMgPSB0cmltbWVkT3V0cHV0LnNwbGl0KCdcXG4nKTtcbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgICAvLyBFeHRyYWN0IHBvcnQgZnJvbSB0aGUgbG9jYWwgYWRkcmVzcyBjb2x1bW5cbiAgICAgICAgLy8gTWF0Y2hlcyBib3RoIElQdjQgKGUuZy4sIFwiMTI3LjAuMC4xOjMwMDBcIikgYW5kIElQdjYgYnJhY2tldCBub3RhdGlvbiAoZS5nLiwgXCJbOjoxXTozMDAwXCIpXG4gICAgICAgIGNvbnN0IG1hdGNoID0gbGluZVxuICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAubWF0Y2goL15cXHMqVENQXFxzKyg/OlxcW1tcXGRhLWY6XStcXF18W1xcZC5dKyk6KFxcZCspXFxzKy9pKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgY29uc3QgcG9ydCA9IHBhcnNlUG9ydChtYXRjaFsxXSk7XG4gICAgICAgICAgaWYgKHBvcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcG9ydHMucHVzaChwb3J0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcG9ydHM7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBbXTtcbiAgfVxufVxuXG4vKipcbiAqIEdldHMgYWxsIGxpc3RlbmluZyBwb3J0cyBmb3IgdGhlIGN1cnJlbnQgcHJvY2Vzcy5cbiAqIEByZXR1cm5zIEFycmF5IG9mIHBvcnQgbnVtYmVycyB0aGUgcHJvY2VzcyBpcyBsaXN0ZW5pbmcgb24sIGluIGRldGVybWluaXN0aWMgb3JkZXIuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBbGxQb3J0cygpOiBQcm9taXNlPG51bWJlcltdPiB7XG4gIGNvbnN0IHsgcGlkLCBwbGF0Zm9ybSB9ID0gcHJvY2VzcztcblxuICB0cnkge1xuICAgIGNvbnN0IHJlcG9ydGVkUG9ydHMgPSBnZXRSZXBvcnRlZFBvcnRzKCk7XG4gICAgaWYgKHJlcG9ydGVkUG9ydHMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHJlcG9ydGVkUG9ydHM7XG4gICAgfVxuXG4gICAgc3dpdGNoIChwbGF0Zm9ybSkge1xuICAgICAgY2FzZSAnbGludXgnOlxuICAgICAgICByZXR1cm4gYXdhaXQgZ2V0TGludXhQb3J0cyhwaWQpO1xuICAgICAgY2FzZSAnZGFyd2luJzpcbiAgICAgICAgcmV0dXJuIGF3YWl0IGdldERhcndpblBvcnRzKHBpZCk7XG4gICAgICBjYXNlICd3aW4zMic6XG4gICAgICAgIHJldHVybiBhd2FpdCBnZXRXaW5kb3dzUG9ydHMocGlkKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKCdbZ2V0QWxsUG9ydHNdIERldGVjdGlvbiBmYWlsZWQ6JywgZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBwb3J0IG51bWJlciB0aGF0IHRoZSBwcm9jZXNzIGlzIGxpc3RlbmluZyBvbi5cbiAqIEByZXR1cm5zIFRoZSBwb3J0IG51bWJlciB0aGF0IHRoZSBwcm9jZXNzIGlzIGxpc3RlbmluZyBvbiwgb3IgdW5kZWZpbmVkIGlmIHRoZSBwcm9jZXNzIGlzIG5vdCBsaXN0ZW5pbmcgb24gYW55IHBvcnQuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQb3J0KCk6IFByb21pc2U8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHBvcnRzID0gYXdhaXQgZ2V0QWxsUG9ydHMoKTtcbiAgcmV0dXJuIHBvcnRzWzBdO1xufVxuXG4vLyBDb25maWd1cmF0aW9uIGZvciBIVFRQIHByb2JpbmdcbmNvbnN0IFBST0JFX1RJTUVPVVRfTVMgPSA1MDA7XG5jb25zdCBQUk9CRV9FTkRQT0lOVCA9ICcvLndlbGwta25vd24vd29ya2Zsb3cvdjEvZmxvdz9fX2hlYWx0aCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvYmVPcHRpb25zIHtcbiAgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gIHRpbWVvdXQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUHJvYmVzIGEgcG9ydCB0byBjaGVjayBpZiBpdCdzIHNlcnZpbmcgdGhlIHdvcmtmbG93IEhUVFAgc2VydmVyLlxuICogVXNlcyBIRUFEIHJlcXVlc3QgdG8gbWluaW1pemUgb3ZlcmhlYWQuXG4gKlxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgcG9ydCByZXNwb25kcyB3aXRoIGEgMjAwIHN0YXR1cyBmcm9tIHRoZSBoZWFsdGggY2hlY2sgZW5kcG9pbnRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcHJvYmVQb3J0KFxuICBwb3J0OiBudW1iZXIsXG4gIG9wdGlvbnM6IFByb2JlT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgY29uc3QgeyBlbmRwb2ludCA9IFBST0JFX0VORFBPSU5ULCB0aW1lb3V0ID0gUFJPQkVfVElNRU9VVF9NUyB9ID0gb3B0aW9ucztcblxuICBjb25zdCBjb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoKSwgdGltZW91dCk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKGBodHRwOi8vbG9jYWxob3N0OiR7cG9ydH0ke2VuZHBvaW50fWAsIHtcbiAgICAgIG1ldGhvZDogJ0hFQUQnLFxuICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICB9KTtcblxuICAgIC8vIFRoZSB3b3JrZmxvdyBoZWFsdGggZW5kcG9pbnQgcmV0dXJucyAyMDAgZm9yIGhlYWx0aHlcbiAgICByZXR1cm4gcmVzcG9uc2Uuc3RhdHVzID09PSAyMDA7XG4gIH0gY2F0Y2gge1xuICAgIC8vIENvbm5lY3Rpb24gcmVmdXNlZCwgdGltZW91dCwgb3Igb3RoZXIgZXJyb3JcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZmluYWxseSB7XG4gICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIHRoZSB3b3JrZmxvdyBzZXJ2ZXIgcG9ydCBieSBwcm9iaW5nIGFsbCBsaXN0ZW5pbmcgcG9ydHMuXG4gKiBUaGlzIGlzIG1vcmUgcmVsaWFibGUgdGhhbiBnZXRQb3J0KCkgd2hlbiBvdGhlciBzZXJ2aWNlcyAobGlrZSBOb2RlLmpzIGluc3BlY3RvcilcbiAqIG1heSBhbHNvIGJlIGxpc3RlbmluZyBvbiBwb3J0cy5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHByb2JpbmdcbiAqIEByZXR1cm5zIFRoZSBwb3J0IG51bWJlciBvZiB0aGUgd29ya2Zsb3cgc2VydmVyLCBvciB1bmRlZmluZWQgaWYgbm90IGZvdW5kXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRXb3JrZmxvd1BvcnQoXG4gIG9wdGlvbnM/OiBQcm9iZU9wdGlvbnNcbik6IFByb21pc2U8bnVtYmVyIHwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHBvcnRzID0gYXdhaXQgZ2V0QWxsUG9ydHMoKTtcblxuICBpZiAocG9ydHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChwb3J0cy5sZW5ndGggPT09IDEpIHtcbiAgICAvLyBPbmx5IG9uZSBwb3J0LCBubyBuZWVkIHRvIHByb2JlXG4gICAgcmV0dXJuIHBvcnRzWzBdO1xuICB9XG5cbiAgLy8gUHJvYmUgYWxsIHBvcnRzIGluIHBhcmFsbGVsXG4gIGNvbnN0IHByb2JlUmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIHBvcnRzLm1hcChhc3luYyAocG9ydCkgPT4gKHtcbiAgICAgIHBvcnQsXG4gICAgICBpc1dvcmtmbG93OiBhd2FpdCBwcm9iZVBvcnQocG9ydCwgb3B0aW9ucyksXG4gICAgfSkpXG4gICk7XG5cbiAgLy8gUmV0dXJuIGZpcnN0IHBvcnQgdGhhdCByZXNwb25kZWQgYXMgd29ya2Zsb3cgc2VydmVyXG4gIGNvbnN0IHdvcmtmbG93UG9ydCA9IHByb2JlUmVzdWx0cy5maW5kKChyKSA9PiByLmlzV29ya2Zsb3cpO1xuICBpZiAod29ya2Zsb3dQb3J0KSB7XG4gICAgcmV0dXJuIHdvcmtmbG93UG9ydC5wb3J0O1xuICB9XG5cbiAgLy8gRmFsbGJhY2sgdG8gZmlyc3QgcG9ydCBpZiBwcm9iaW5nIGRvZXNuJ3QgaWRlbnRpZnkgd29ya2Zsb3cgc2VydmVyXG4gIC8vIFRoaXMgaGFuZGxlcyBjYXNlcyB3aGVyZTpcbiAgLy8gLSBTZXJ2ZXIgaGFzbid0IHN0YXJ0ZWQgd29ya2Zsb3cgcm91dGVzIHlldFxuICAvLyAtIE5ldHdvcmsgaXNzdWVzIGR1cmluZyBwcm9iaW5nXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgIGNvbnNvbGUuZGVidWcoXG4gICAgICAnW2dldFdvcmtmbG93UG9ydF0gUHJvYmluZyBmYWlsZWQsIGZhbGxpbmcgYmFjayB0byBmaXJzdCBwb3J0OicsXG4gICAgICBwb3J0c1swXVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHBvcnRzWzBdO1xufVxuIl19
304
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZ2V0LXBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFM0QsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBRTFDOztHQUVHO0FBQ0gsU0FBUyxTQUFTLENBQUMsS0FBYSxFQUFFLEtBQUssR0FBRyxFQUFFO0lBQzFDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDdEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVELG1GQUFtRjtBQUNuRixnR0FBZ0c7QUFDaEcscUdBQXFHO0FBQ3JHLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBYSxFQUFFLEdBQVcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFXMUMsU0FBUyxnQkFBZ0I7SUFDdkIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsRUFFN0IsQ0FBQztJ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LFVBQVUsQ0FBQyxDQUFDO0lBQzVELElBQUksWUFBWSxFQUFFLENBQUM7UUFDakIsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxxRUFBcUU7SUFDckUsNEJBQTRCO0lBQzVCLDhDQUE4QztJQUM5QyxrQ0FBa0M7SUFDbEMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxhQUFhLEVBQUUsQ0FBQztRQUMzQyxPQUFPLENBQUMsS0FBSyxDQUNYLCtEQUErRCxFQUMvRCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ1QsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlY0ZpbGUgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHsgcmVhZGRpciwgcmVhZEZpbGUsIHJlYWRsaW5rIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcyc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICdub2RlOnV0aWwnO1xuaW1wb3J0IHsgV09SS0ZMT1dfUk9VVEVfQkFTRSB9IGZyb20gJy4vd29ya2Zsb3ctcm91dGVzLmpzJztcblxuY29uc3QgZXhlY0ZpbGVBc3luYyA9IHByb21pc2lmeShleGVjRmlsZSk7XG5cbi8qKlxuICogUGFyc2VzIGEgcG9ydCBzdHJpbmcgYW5kIHJldHVybnMgaXQgaWYgdmFsaWQgKDAtNjU1MzUpLCBvdGhlcndpc2UgdW5kZWZpbmVkLlxuICovXG5mdW5jdGlvbiBwYXJzZVBvcnQodmFsdWU6IHN0cmluZywgcmFkaXggPSAxMCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHBvcnQgPSBwYXJzZUludCh2YWx1ZSwgcmFkaXgpO1xuICBpZiAoIU51bWJlci5pc05hTihwb3J0KSAmJiBwb3J0ID49IDAgJiYgcG9ydCA8PSA2NTUzNSkge1xuICAgIHJldHVybiBwb3J0O1xuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8vIE5PVEU6IFdlIGJ1aWxkIC9wcm9jIHBhdGhzIGR5bmFtaWNhbGx5IHRvIHByZXZlbnQgQHZlcmNlbC9uZnQgZnJvbSB0cmFjaW5nIHRoZW0uXG4vLyBORlQncyBzdGF0aWMgYW5hbHlzaXMgdHJpZXMgdG8gYnVuZGxlIGFueSBmaWxlIHBhdGggbGl0ZXJhbCBpdCBmaW5kcyAoZS5nLiwgJy9wcm9jL25ldC90Y3AnKS5cbi8vIFNpbmNlIC9wcm9jIGlzIGEgdmlydHVhbCBMaW51eCBmaWxlc3lzdGVtLCB0aGlzIGNhdXNlcyBidWlsZCBmYWlsdXJlcyBpbiBAc3ZlbHRlanMvYWRhcHRlci12ZXJjZWwuXG5jb25zdCBqb2luID0gKGFycjogc3RyaW5nW10sIHNlcDogc3RyaW5nKSA9PiBhcnIuam9pbihzZXApO1xuY29uc3QgUFJPQ19ST09UID0gam9pbihbJycsICdwcm9jJ10sICcvJyk7XG5cbmludGVyZmFjZSBMaWJ1dlRjcEhhbmRsZSB7XG4gIHR5cGU/OiBzdHJpbmc7XG4gIGlzX2FjdGl2ZT86IGJvb2xlYW47XG4gIGxvY2FsRW5kcG9pbnQ/OiB7XG4gICAgcG9ydD86IG51bWJlcjtcbiAgfTtcbiAgcmVtb3RlRW5kcG9pbnQ/OiB1bmtub3duO1xufVxuXG5mdW5jdGlvbiBnZXRSZXBvcnRlZFBvcnRzKCk6IG51bWJlcltdIHtcbiAgY29uc3QgcmVwb3J0ID0gcHJvY2Vzcy5yZXBvcnQ/LmdldFJlcG9ydD8uKCkgYXNcbiAgICB8IHsgbGlidXY/OiBMaWJ1dlRjcEhhbmRsZVtdIH1cbiAgICB8IHVuZGVmaW5lZDtcbiAgY29uc3QgaGFuZGxlcyA9IHJlcG9ydD8ubGlidXY7XG5cbiAgaWYgKCFoYW5kbGVzKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgY29uc3QgcG9ydHM6IG51bWJlcltdID0gW107XG4gIGNvbnN0IHNlZW4gPSBuZXcgU2V0PG51bWJlcj4oKTtcblxuICBmb3IgKGNvbnN0IGhhbmRsZSBvZiBoYW5kbGVzKSB7XG4gICAgaWYgKFxuICAgICAgaGFuZGxlLnR5cGUgIT09ICd0Y3AnIHx8XG4gICAgICBoYW5kbGUuaXNfYWN0aXZlICE9PSB0cnVlIHx8XG4gICAgICBoYW5kbGUucmVtb3RlRW5kcG9pbnQgIT09IG51bGxcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHBvcnQgPSBwYXJzZVBvcnQoU3RyaW5nKGhhbmRsZS5sb2NhbEVuZHBvaW50Py5wb3J0KSk7XG4gICAgaWYgKHBvcnQgIT09IHVuZGVmaW5lZCAmJiAhc2Vlbi5oYXMocG9ydCkpIHtcbiAgICAgIHBvcnRzLnB1c2gocG9ydCk7XG4gICAgICBzZWVuLmFkZChwb3J0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcG9ydHM7XG59XG5cbi8qKlxuICogR2V0cyBBTEwgbGlzdGVuaW5nIHBvcnRzIGZvciB0aGUgY3VycmVudCBwcm9jZXNzIG9uIExpbnV4IGJ5IHJlYWRpbmcgL3Byb2MgZmlsZXN5c3RlbS5cbiAqIFJldHVybnMgcG9ydHMgaW4gb3JkZXIgb2YgZmlsZSBkZXNjcmlwdG9yIChkZXRlcm1pbmlzdGljIG9yZGVyaW5nKS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0TGludXhQb3J0cyhwaWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgY29uc3QgbGlzdGVuU3RhdGUgPSAnMEEnOyAvLyBUQ1AgTElTVEVOIHN0YXRlIGluIC9wcm9jL25ldC90Y3BcbiAgY29uc3QgdGNwRmlsZXMgPSBbYCR7UFJPQ19ST09UfS9uZXQvdGNwYCwgYCR7UFJPQ19ST09UfS9uZXQvdGNwNmBdIGFzIGNvbnN0O1xuXG4gIC8vIFN0ZXAgMTogR2V0IHNvY2tldCBpbm9kZXMgZnJvbSAvcHJvYy88cGlkPi9mZC8gaW4gb3JkZXJcbiAgLy8gV2UgcHJlc2VydmUgb3JkZXIgdG8gbWFpbnRhaW4gZGV0ZXJtaW5pc3RpYyBiZWhhdmlvclxuICAvLyBVc2UgYm90aCBhcnJheSAoZm9yIG9yZGVyKSBhbmQgU2V0IChmb3IgTygxKSBsb29rdXApXG4gIGNvbnN0IHNvY2tldElub2Rlczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qgc29ja2V0SW5vZGVzU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGNvbnN0IGZkUGF0aCA9IGAke1BST0NfUk9PVH0vJHtwaWR9L2ZkYDtcblxuICB0cnkge1xuICAgIGNvbnN0IGZkcyA9IGF3YWl0IHJlYWRkaXIoZmRQYXRoKTtcbiAgICAvLyBTb3J0IEZEcyBudW1lcmljYWxseSB0byBlbnN1cmUgZGV0ZXJtaW5pc3RpYyBvcmRlciAoRkRzIGFyZSBhbHdheXMgbnVtZXJpYyBzdHJpbmdzKVxuICAgIGNvbnN0IHNvcnRlZEZkcyA9IGZkcy5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBjb25zdCBudW1BID0gTnVtYmVyLnBhcnNlSW50KGEsIDEwKTtcbiAgICAgIGNvbnN0IG51bUIgPSBOdW1iZXIucGFyc2VJbnQoYiwgMTApO1xuICAgICAgcmV0dXJuIG51bUEgLSBudW1CO1xuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIHNvcnRlZEZkcy5tYXAoYXN5bmMgKGZkKSA9PiB7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBhd2FpdCByZWFkbGluayhgJHtmZFBhdGh9LyR7ZmR9YCk7XG4gICAgICAgIC8vIFNvY2tldCBsaW5rcyBsb29rIGxpa2U6IHNvY2tldDpbMTIzNDVdXG4gICAgICAgIGNvbnN0IG1hdGNoID0gbGluay5tYXRjaCgvXnNvY2tldDpcXFsoXFxkKylcXF0kLyk7XG4gICAgICAgIHJldHVybiBtYXRjaD8uWzFdID8/IG51bGw7XG4gICAgICB9KVxuICAgICk7XG5cbiAgICBmb3IgKGNvbnN0IHJlc3VsdCBvZiByZXN1bHRzKSB7XG4gICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ2Z1bGZpbGxlZCcgJiYgcmVzdWx0LnZhbHVlKSB7XG4gICAgICAgIHNvY2tldElub2Rlcy5wdXNoKHJlc3VsdC52YWx1ZSk7XG4gICAgICAgIHNvY2tldElub2Rlc1NldC5hZGQocmVzdWx0LnZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIC8vIFByb2Nlc3MgbWlnaHQgbm90IGV4aXN0IG9yIG5vIHBlcm1pc3Npb25cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBpZiAoc29ja2V0SW5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIC8vIFN0ZXAgMjogUmVhZCAvcHJvYy9uZXQvdGNwIGFuZCAvcHJvYy9uZXQvdGNwNiB0byBmaW5kIGxpc3RlbmluZyBzb2NrZXRzXG4gIC8vIEZvcm1hdDogc2wgbG9jYWxfYWRkcmVzcyByZW1fYWRkcmVzcyBzdCAuLi4gaW5vZGVcbiAgLy8gbG9jYWxfYWRkcmVzcyBpcyBoZXggSVA6cG9ydCwgc3Q9MEEgbWVhbnMgTElTVEVOXG4gIGNvbnN0IGlub2RlVG9Qb3J0ID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcblxuICBmb3IgKGNvbnN0IHRjcEZpbGUgb2YgdGNwRmlsZXMpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IHJlYWRGaWxlKHRjcEZpbGUsICd1dGY4Jyk7XG4gICAgICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpLnNsaWNlKDEpOyAvLyBTa2lwIGhlYWRlclxuXG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgaWYgKCFsaW5lLnRyaW0oKSkgY29udGludWU7IC8vIFNraXAgZW1wdHkgbGluZXNcblxuICAgICAgICBjb25zdCBwYXJ0cyA9IGxpbmUudHJpbSgpLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPCAxMCkgY29udGludWU7XG5cbiAgICAgICAgY29uc3QgbG9jYWxBZGRyID0gcGFydHNbMV07IC8vIGUuZy4sIFwiMDAwMDAwMDA6MEJCOFwiICgwLjAuMC4wOjMwMDApXG4gICAgICAgIGNvbnN0IHN0YXRlID0gcGFydHNbM107IC8vIFwiMEFcIiA9IExJU1RFTlxuICAgICAgICBjb25zdCBpbm9kZSA9IHBhcnRzWzldO1xuXG4gICAgICAgIGlmICghbG9jYWxBZGRyIHx8IHN0YXRlICE9PSBsaXN0ZW5TdGF0ZSB8fCAhaW5vZGUpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIXNvY2tldElub2Rlc1NldC5oYXMoaW5vZGUpKSBjb250aW51ZTtcblxuICAgICAgICAvLyBFeHRyYWN0IHBvcnQgZnJvbSBoZXggZm9ybWF0IChlLmcuLCBcIjBCQjhcIiAtPiAzMDAwKVxuICAgICAgICBjb25zdCBjb2xvbkluZGV4ID0gbG9jYWxBZGRyLmluZGV4T2YoJzonKTtcbiAgICAgICAgaWYgKGNvbG9uSW5kZXggPT09IC0xKSBjb250aW51ZTtcblxuICAgICAgICBjb25zdCBwb3J0SGV4ID0gbG9jYWxBZGRyLnNsaWNlKGNvbG9uSW5kZXggKyAxKTtcbiAgICAgICAgaWYgKCFwb3J0SGV4KSBjb250aW51ZTtcblxuICAgICAgICBjb25zdCBwb3J0ID0gcGFyc2VQb3J0KHBvcnRIZXgsIDE2KTtcbiAgICAgICAgaWYgKHBvcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGlub2RlVG9Qb3J0LnNldChpbm9kZSwgcG9ydCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIHt9XG4gIH1cblxuICAvLyBSZXR1cm4gYWxsIHBvcnRzIGluIHNvY2tldCBpbm9kZSBvcmRlciAoZGV0ZXJtaW5pc3RpYylcbiAgY29uc3QgcG9ydHM6IG51bWJlcltdID0gW107XG4gIGZvciAoY29uc3QgaW5vZGUgb2Ygc29ja2V0SW5vZGVzKSB7XG4gICAgY29uc3QgcG9ydCA9IGlub2RlVG9Qb3J0LmdldChpbm9kZSk7XG4gICAgaWYgKHBvcnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcG9ydHMucHVzaChwb3J0KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcG9ydHM7XG59XG5cbi8qKlxuICogR2V0cyBBTEwgbGlzdGVuaW5nIHBvcnRzIGZvciB0aGUgY3VycmVudCBwcm9jZXNzIG9uIG1hY09TIHVzaW5nIGxzb2YuXG4gKiBSZXR1cm5zIHBvcnRzIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhciBpbiBsc29mIG91dHB1dC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0RGFyd2luUG9ydHMocGlkOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcltdPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgeyBzdGRvdXQgfSA9IGF3YWl0IGV4ZWNGaWxlQXN5bmMoJ2xzb2YnLCBbXG4gICAgICAnLWEnLFxuICAgICAgJy1pJyxcbiAgICAgICctUCcsXG4gICAgICAnLW4nLFxuICAgICAgJy1wJyxcbiAgICAgIHBpZC50b1N0cmluZygpLFxuICAgIF0pO1xuXG4gICAgY29uc3QgcG9ydHM6IG51bWJlcltdID0gW107XG4gICAgY29uc3QgbGluZXMgPSBzdGRvdXQuc3BsaXQoJ1xcbicpO1xuXG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICBpZiAobGluZS5pbmNsdWRlcygnTElTVEVOJykpIHtcbiAgICAgICAgLy8gQ29sdW1uIDkgKDAtaW5kZXhlZDogOCkgY29udGFpbnMgdGhlIGFkZHJlc3MgbGlrZSBcIio6MzAwMFwiIG9yIFwiMTI3LjAuMC4xOjMwMDBcIlxuICAgICAgICBjb25zdCBwYXJ0cyA9IGxpbmUudHJpbSgpLnNwbGl0KC9cXHMrLyk7XG4gICAgICAgIGNvbnN0IGFkZHIgPSBwYXJ0c1s4XTtcbiAgICAgICAgaWYgKGFkZHIpIHtcbiAgICAgICAgICBjb25zdCBjb2xvbkluZGV4ID0gYWRkci5sYXN0SW5kZXhPZignOicpO1xuICAgICAgICAgIGlmIChjb2xvbkluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgY29uc3QgcG9ydCA9IHBhcnNlUG9ydChhZGRyLnNsaWNlKGNvbG9uSW5kZXggKyAxKSk7XG4gICAgICAgICAgICBpZiAocG9ydCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgIHBvcnRzLnB1c2gocG9ydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvcnRzO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW107XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIEFMTCBsaXN0ZW5pbmcgcG9ydHMgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3Mgb24gV2luZG93cyB1c2luZyBuZXRzdGF0LlxuICogUmV0dXJucyBwb3J0cyBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4gbmV0c3RhdCBvdXRwdXQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldFdpbmRvd3NQb3J0cyhwaWQ6IG51bWJlcik6IFByb21pc2U8bnVtYmVyW10+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7IHN0ZG91dCB9ID0gYXdhaXQgZXhlY0ZpbGVBc3luYygnY21kJywgW1xuICAgICAgJy9jJyxcbiAgICAgIGBuZXRzdGF0IC1hbm8gfCBmaW5kc3RyICR7cGlkfSB8IGZpbmRzdHIgTElTVEVOSU5HYCxcbiAgICBdKTtcblxuICAgIGNvbnN0IHBvcnRzOiBudW1iZXJbXSA9IFtdO1xuICAgIGNvbnN0IHRyaW1tZWRPdXRwdXQgPSBzdGRvdXQudHJpbSgpO1xuXG4gICAgaWYgKHRyaW1tZWRPdXRwdXQpIHtcbiAgICAgIGNvbnN0IGxpbmVzID0gdHJpbW1lZE91dHB1dC5zcGxpdCgnXFxuJyk7XG4gICAgICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgLy8gRXh0cmFjdCBwb3J0IGZyb20gdGhlIGxvY2FsIGFkZHJlc3MgY29sdW1uXG4gICAgICAgIC8vIE1hdGNoZXMgYm90aCBJUHY0IChlLmcuLCBcIjEyNy4wLjAuMTozMDAwXCIpIGFuZCBJUHY2IGJyYWNrZXQgbm90YXRpb24gKGUuZy4sIFwiWzo6MV06MzAwMFwiKVxuICAgICAgICBjb25zdCBtYXRjaCA9IGxpbmVcbiAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgLm1hdGNoKC9eXFxzKlRDUFxccysoPzpcXFtbXFxkYS1mOl0rXFxdfFtcXGQuXSspOihcXGQrKVxccysvaSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIGNvbnN0IHBvcnQgPSBwYXJzZVBvcnQobWF0Y2hbMV0pO1xuICAgICAgICAgIGlmIChwb3J0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBvcnRzLnB1c2gocG9ydCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvcnRzO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gW107XG4gIH1cbn1cblxuLyoqXG4gKiBHZXRzIGFsbCBsaXN0ZW5pbmcgcG9ydHMgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MuXG4gKiBAcmV0dXJucyBBcnJheSBvZiBwb3J0IG51bWJlcnMgdGhlIHByb2Nlc3MgaXMgbGlzdGVuaW5nIG9uLCBpbiBkZXRlcm1pbmlzdGljIG9yZGVyLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QWxsUG9ydHMoKTogUHJvbWlzZTxudW1iZXJbXT4ge1xuICBjb25zdCB7IHBpZCwgcGxhdGZvcm0gfSA9IHByb2Nlc3M7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXBvcnRlZFBvcnRzID0gZ2V0UmVwb3J0ZWRQb3J0cygpO1xuICAgIGlmIChyZXBvcnRlZFBvcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHJldHVybiByZXBvcnRlZFBvcnRzO1xuICAgIH1cblxuICAgIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICAgIGNhc2UgJ2xpbnV4JzpcbiAgICAgICAgcmV0dXJuIGF3YWl0IGdldExpbnV4UG9ydHMocGlkKTtcbiAgICAgIGNhc2UgJ2Rhcndpbic6XG4gICAgICAgIHJldHVybiBhd2FpdCBnZXREYXJ3aW5Qb3J0cyhwaWQpO1xuICAgICAgY2FzZSAnd2luMzInOlxuICAgICAgICByZXR1cm4gYXdhaXQgZ2V0V2luZG93c1BvcnRzKHBpZCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ2RldmVsb3BtZW50Jykge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW2dldEFsbFBvcnRzXSBEZXRlY3Rpb24gZmFpbGVkOicsIGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG5cbi8qKlxuICogR2V0cyB0aGUgcG9ydCBudW1iZXIgdGhhdCB0aGUgcHJvY2VzcyBpcyBsaXN0ZW5pbmcgb24uXG4gKiBAcmV0dXJucyBUaGUgcG9ydCBudW1iZXIgdGhhdCB0aGUgcHJvY2VzcyBpcyBsaXN0ZW5pbmcgb24sIG9yIHVuZGVmaW5lZCBpZiB0aGUgcHJvY2VzcyBpcyBub3QgbGlzdGVuaW5nIG9uIGFueSBwb3J0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UG9ydCgpOiBQcm9taXNlPG51bWJlciB8IHVuZGVmaW5lZD4ge1xuICBjb25zdCBwb3J0cyA9IGF3YWl0IGdldEFsbFBvcnRzKCk7XG4gIHJldHVybiBwb3J0c1swXTtcbn1cblxuLy8gQ29uZmlndXJhdGlvbiBmb3IgSFRUUCBwcm9iaW5nXG5jb25zdCBQUk9CRV9USU1FT1VUX01TID0gNTAwO1xuY29uc3QgUFJPQkVfRU5EUE9JTlQgPSBgJHtXT1JLRkxPV19ST1VURV9CQVNFfS9mbG93P19faGVhbHRoYDtcblxuZXhwb3J0IGludGVyZmFjZSBQcm9iZU9wdGlvbnMge1xuICBlbmRwb2ludD86IHN0cmluZztcbiAgdGltZW91dD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQcm9iZXMgYSBwb3J0IHRvIGNoZWNrIGlmIGl0J3Mgc2VydmluZyB0aGUgd29ya2Zsb3cgSFRUUCBzZXJ2ZXIuXG4gKiBVc2VzIEhFQUQgcmVxdWVzdCB0byBtaW5pbWl6ZSBvdmVyaGVhZC5cbiAqXG4gKiBAcmV0dXJucyB0cnVlIGlmIHRoZSBwb3J0IHJlc3BvbmRzIHdpdGggYSAyMDAgc3RhdHVzIGZyb20gdGhlIGhlYWx0aCBjaGVjayBlbmRwb2ludFxuICovXG5hc3luYyBmdW5jdGlvbiBwcm9iZVBvcnQoXG4gIHBvcnQ6IG51bWJlcixcbiAgb3B0aW9uczogUHJvYmVPcHRpb25zID0ge31cbik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICBjb25zdCB7IGVuZHBvaW50ID0gUFJPQkVfRU5EUE9JTlQsIHRpbWVvdXQgPSBQUk9CRV9USU1FT1VUX01TIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydCgpLCB0aW1lb3V0KTtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYGh0dHA6Ly9sb2NhbGhvc3Q6JHtwb3J0fSR7ZW5kcG9pbnR9YCwge1xuICAgICAgbWV0aG9kOiAnSEVBRCcsXG4gICAgICBzaWduYWw6IGNvbnRyb2xsZXIuc2lnbmFsLFxuICAgIH0pO1xuXG4gICAgLy8gVGhlIHdvcmtmbG93IGhlYWx0aCBlbmRwb2ludCByZXR1cm5zIDIwMCBmb3IgaGVhbHRoeVxuICAgIHJldHVybiByZXNwb25zZS5zdGF0dXMgPT09IDIwMDtcbiAgfSBjYXRjaCB7XG4gICAgLy8gQ29ubmVjdGlvbiByZWZ1c2VkLCB0aW1lb3V0LCBvciBvdGhlciBlcnJvclxuICAgIHJldHVybiBmYWxzZTtcbiAgfSBmaW5hbGx5IHtcbiAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgfVxufVxuXG4vKipcbiAqIEdldHMgdGhlIHdvcmtmbG93IHNlcnZlciBwb3J0IGJ5IHByb2JpbmcgYWxsIGxpc3RlbmluZyBwb3J0cy5cbiAqIFRoaXMgaXMgbW9yZSByZWxpYWJsZSB0aGFuIGdldFBvcnQoKSB3aGVuIG90aGVyIHNlcnZpY2VzIChsaWtlIE5vZGUuanMgaW5zcGVjdG9yKVxuICogbWF5IGFsc28gYmUgbGlzdGVuaW5nIG9uIHBvcnRzLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgcHJvYmluZ1xuICogQHJldHVybnMgVGhlIHBvcnQgbnVtYmVyIG9mIHRoZSB3b3JrZmxvdyBzZXJ2ZXIsIG9yIHVuZGVmaW5lZCBpZiBub3QgZm91bmRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFdvcmtmbG93UG9ydChcbiAgb3B0aW9ucz86IFByb2JlT3B0aW9uc1xuKTogUHJvbWlzZTxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgY29uc3QgcG9ydHMgPSBhd2FpdCBnZXRBbGxQb3J0cygpO1xuXG4gIGlmIChwb3J0cy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKHBvcnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIC8vIE9ubHkgb25lIHBvcnQsIG5vIG5lZWQgdG8gcHJvYmVcbiAgICByZXR1cm4gcG9ydHNbMF07XG4gIH1cblxuICAvLyBQcm9iZSBhbGwgcG9ydHMgaW4gcGFyYWxsZWxcbiAgY29uc3QgcHJvYmVSZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgcG9ydHMubWFwKGFzeW5jIChwb3J0KSA9PiAoe1xuICAgICAgcG9ydCxcbiAgICAgIGlzV29ya2Zsb3c6IGF3YWl0IHByb2JlUG9ydChwb3J0LCBvcHRpb25zKSxcbiAgICB9KSlcbiAgKTtcblxuICAvLyBSZXR1cm4gZmlyc3QgcG9ydCB0aGF0IHJlc3BvbmRlZCBhcyB3b3JrZmxvdyBzZXJ2ZXJcbiAgY29uc3Qgd29ya2Zsb3dQb3J0ID0gcHJvYmVSZXN1bHRzLmZpbmQoKHIpID0+IHIuaXNXb3JrZmxvdyk7XG4gIGlmICh3b3JrZmxvd1BvcnQpIHtcbiAgICByZXR1cm4gd29ya2Zsb3dQb3J0LnBvcnQ7XG4gIH1cblxuICAvLyBGYWxsYmFjayB0byBmaXJzdCBwb3J0IGlmIHByb2JpbmcgZG9lc24ndCBpZGVudGlmeSB3b3JrZmxvdyBzZXJ2ZXJcbiAgLy8gVGhpcyBoYW5kbGVzIGNhc2VzIHdoZXJlOlxuICAvLyAtIFNlcnZlciBoYXNuJ3Qgc3RhcnRlZCB3b3JrZmxvdyByb3V0ZXMgeWV0XG4gIC8vIC0gTmV0d29yayBpc3N1ZXMgZHVyaW5nIHByb2JpbmdcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgY29uc29sZS5kZWJ1ZyhcbiAgICAgICdbZ2V0V29ya2Zsb3dQb3J0XSBQcm9iaW5nIGZhaWxlZCwgZmFsbGluZyBiYWNrIHRvIGZpcnN0IHBvcnQ6JyxcbiAgICAgIHBvcnRzWzBdXG4gICAgKTtcbiAgfVxuICByZXR1cm4gcG9ydHNbMF07XG59XG4iXX0=
package/dist/index.d.ts CHANGED
@@ -2,5 +2,6 @@ export { pluralize } from './pluralize.js';
2
2
  export { parseClassName, parseStepName, parseWorkflowName, } from './parse-name.js';
3
3
  export { once, type PromiseWithResolvers, withResolvers } from './promise.js';
4
4
  export { parseDurationToDate } from './time.js';
5
+ export { createWorkflowBaseUrl, createWorkflowHealthEndpoint, createWorkflowUrl, setWorkflowBasePath, type WorkflowUrlRoute, WORKFLOW_ROUTE_BASE, } from './workflow-routes.js';
5
6
  export { isVercelWorldTarget, resolveWorkflowTargetWorld, usesVercelWorld, } from './world-target.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,KAAK,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,KAAK,oBAAoB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,gBAAgB,EACrB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -2,5 +2,6 @@ export { pluralize } from './pluralize.js';
2
2
  export { parseClassName, parseStepName, parseWorkflowName, } from './parse-name.js';
3
3
  export { once, withResolvers } from './promise.js';
4
4
  export { parseDurationToDate } from './time.js';
5
+ export { createWorkflowBaseUrl, createWorkflowHealthEndpoint, createWorkflowUrl, setWorkflowBasePath, WORKFLOW_ROUTE_BASE, } from './workflow-routes.js';
5
6
  export { isVercelWorldTarget, resolveWorkflowTargetWorld, usesVercelWorld, } from './world-target.js';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxjQUFjLEVBQ2QsYUFBYSxFQUNiLGlCQUFpQixHQUNsQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxJQUFJLEVBQTZCLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEQsT0FBTyxFQUNMLG1CQUFtQixFQUNuQiwwQkFBMEIsRUFDMUIsZUFBZSxHQUNoQixNQUFNLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgcGx1cmFsaXplIH0gZnJvbSAnLi9wbHVyYWxpemUuanMnO1xuZXhwb3J0IHtcbiAgcGFyc2VDbGFzc05hbWUsXG4gIHBhcnNlU3RlcE5hbWUsXG4gIHBhcnNlV29ya2Zsb3dOYW1lLFxufSBmcm9tICcuL3BhcnNlLW5hbWUuanMnO1xuZXhwb3J0IHsgb25jZSwgdHlwZSBQcm9taXNlV2l0aFJlc29sdmVycywgd2l0aFJlc29sdmVycyB9IGZyb20gJy4vcHJvbWlzZS5qcyc7XG5leHBvcnQgeyBwYXJzZUR1cmF0aW9uVG9EYXRlIH0gZnJvbSAnLi90aW1lLmpzJztcbmV4cG9ydCB7XG4gIGlzVmVyY2VsV29ybGRUYXJnZXQsXG4gIHJlc29sdmVXb3JrZmxvd1RhcmdldFdvcmxkLFxuICB1c2VzVmVyY2VsV29ybGQsXG59IGZyb20gJy4vd29ybGQtdGFyZ2V0LmpzJztcbiJdfQ==
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxjQUFjLEVBQ2QsYUFBYSxFQUNiLGlCQUFpQixHQUNsQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxJQUFJLEVBQTZCLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDaEQsT0FBTyxFQUNMLHFCQUFxQixFQUNyQiw0QkFBNEIsRUFDNUIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUVuQixtQkFBbUIsR0FDcEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLDBCQUEwQixFQUMxQixlQUFlLEdBQ2hCLE1BQU0sbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBwbHVyYWxpemUgfSBmcm9tICcuL3BsdXJhbGl6ZS5qcyc7XG5leHBvcnQge1xuICBwYXJzZUNsYXNzTmFtZSxcbiAgcGFyc2VTdGVwTmFtZSxcbiAgcGFyc2VXb3JrZmxvd05hbWUsXG59IGZyb20gJy4vcGFyc2UtbmFtZS5qcyc7XG5leHBvcnQgeyBvbmNlLCB0eXBlIFByb21pc2VXaXRoUmVzb2x2ZXJzLCB3aXRoUmVzb2x2ZXJzIH0gZnJvbSAnLi9wcm9taXNlLmpzJztcbmV4cG9ydCB7IHBhcnNlRHVyYXRpb25Ub0RhdGUgfSBmcm9tICcuL3RpbWUuanMnO1xuZXhwb3J0IHtcbiAgY3JlYXRlV29ya2Zsb3dCYXNlVXJsLFxuICBjcmVhdGVXb3JrZmxvd0hlYWx0aEVuZHBvaW50LFxuICBjcmVhdGVXb3JrZmxvd1VybCxcbiAgc2V0V29ya2Zsb3dCYXNlUGF0aCxcbiAgdHlwZSBXb3JrZmxvd1VybFJvdXRlLFxuICBXT1JLRkxPV19ST1VURV9CQVNFLFxufSBmcm9tICcuL3dvcmtmbG93LXJvdXRlcy5qcyc7XG5leHBvcnQge1xuICBpc1ZlcmNlbFdvcmxkVGFyZ2V0LFxuICByZXNvbHZlV29ya2Zsb3dUYXJnZXRXb3JsZCxcbiAgdXNlc1ZlcmNlbFdvcmxkLFxufSBmcm9tICcuL3dvcmxkLXRhcmdldC5qcyc7XG4iXX0=
@@ -0,0 +1,16 @@
1
+ export declare const WORKFLOW_ROUTE_BASE = "/.well-known/workflow/v1";
2
+ export declare function setWorkflowBasePath(basePath: string | undefined): void;
3
+ export declare function createWorkflowBaseUrl(origin: string): string;
4
+ export type WorkflowUrlRoute = {
5
+ type: 'flow' | 'step';
6
+ } | {
7
+ type: 'manifest';
8
+ } | {
9
+ type: 'webhook';
10
+ token: string;
11
+ } | {
12
+ type: 'health';
13
+ };
14
+ export declare function createWorkflowUrl(baseUrl: string, route: WorkflowUrlRoute): string;
15
+ export declare function createWorkflowHealthEndpoint(): string;
16
+ //# sourceMappingURL=workflow-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-routes.d.ts","sourceRoot":"","sources":["../src/workflow-routes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,6BAA6B,CAAC;AAK9D,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAEtE;AAMD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEvB,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,gBAAgB,GACtB,MAAM,CAMR;AAkBD,wBAAgB,4BAA4B,IAAI,MAAM,CAErD"}
@@ -0,0 +1,39 @@
1
+ export const WORKFLOW_ROUTE_BASE = '/.well-known/workflow/v1';
2
+ const BASE_PATH_SYMBOL = Symbol.for('@workflow/core/basePath');
3
+ const globalConfig = globalThis;
4
+ export function setWorkflowBasePath(basePath) {
5
+ globalConfig[BASE_PATH_SYMBOL] = basePath ?? '';
6
+ }
7
+ function getWorkflowBasePath() {
8
+ return globalConfig[BASE_PATH_SYMBOL] ?? '';
9
+ }
10
+ export function createWorkflowBaseUrl(origin) {
11
+ new URL(origin);
12
+ return `${origin.replace(/[?#].*$/, '').replace(/\/+$/, '')}${getWorkflowBasePath()}`;
13
+ }
14
+ export function createWorkflowUrl(baseUrl, route) {
15
+ const url = new URL(baseUrl);
16
+ url.pathname = `${url.pathname.replace(/\/+$/, '')}${WORKFLOW_ROUTE_BASE}/${getWorkflowRouteEndpoint(route)}`;
17
+ url.search = route.type === 'health' ? '__health' : '';
18
+ url.hash = '';
19
+ return url.toString();
20
+ }
21
+ function getWorkflowRouteEndpoint(route) {
22
+ switch (route.type) {
23
+ case 'flow':
24
+ case 'health':
25
+ return 'flow';
26
+ case 'step':
27
+ return 'step';
28
+ case 'manifest':
29
+ return 'manifest.json';
30
+ case 'webhook':
31
+ return `webhook/${encodeURIComponent(route.token)}`;
32
+ }
33
+ const exhaustive = route;
34
+ return exhaustive;
35
+ }
36
+ export function createWorkflowHealthEndpoint() {
37
+ return `${getWorkflowBasePath()}${WORKFLOW_ROUTE_BASE}/flow?__health`;
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Zsb3ctcm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3dvcmtmbG93LXJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRywwQkFBMEIsQ0FBQztBQUM5RCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUMvRCxNQUFNLFlBQVksR0FBRyxVQUNlLENBQUM7QUFFckMsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFFBQTRCO0lBQzlELFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLFFBQVEsSUFBSSxFQUFFLENBQUM7QUFDbEQsQ0FBQztBQUVELFNBQVMsbUJBQW1CO0lBQzFCLE9BQU8sWUFBWSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO0FBQzlDLENBQUM7QUFFRCxNQUFNLFVBQVUscUJBQXFCLENBQUMsTUFBYztJQUNsRCxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNoQixPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsR0FBRyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7QUFDeEYsQ0FBQztBQVFELE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsT0FBZSxFQUNmLEtBQXVCO0lBRXZCLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLEdBQUcsQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEdBQUcsbUJBQW1CLElBQUksd0JBQXdCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUM5RyxHQUFHLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN2RCxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNkLE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3hCLENBQUM7QUFFRCxTQUFTLHdCQUF3QixDQUFDLEtBQXVCO0lBQ3ZELFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25CLEtBQUssTUFBTSxDQUFDO1FBQ1osS0FBSyxRQUFRO1lBQ1gsT0FBTyxNQUFNLENBQUM7UUFDaEIsS0FBSyxNQUFNO1lBQ1QsT0FBTyxNQUFNLENBQUM7UUFDaEIsS0FBSyxVQUFVO1lBQ2IsT0FBTyxlQUFlLENBQUM7UUFDekIsS0FBSyxTQUFTO1lBQ1osT0FBTyxXQUFXLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBVSxLQUFLLENBQUM7SUFDaEMsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEI7SUFDMUMsT0FBTyxHQUFHLG1CQUFtQixFQUFFLEdBQUcsbUJBQW1CLGdCQUFnQixDQUFDO0FBQ3hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgV09SS0ZMT1dfUk9VVEVfQkFTRSA9ICcvLndlbGwta25vd24vd29ya2Zsb3cvdjEnO1xuY29uc3QgQkFTRV9QQVRIX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0B3b3JrZmxvdy9jb3JlL2Jhc2VQYXRoJyk7XG5jb25zdCBnbG9iYWxDb25maWcgPSBnbG9iYWxUaGlzIGFzIHR5cGVvZiBnbG9iYWxUaGlzICZcbiAgUmVjb3JkPHN5bWJvbCwgc3RyaW5nIHwgdW5kZWZpbmVkPjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFdvcmtmbG93QmFzZVBhdGgoYmFzZVBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICBnbG9iYWxDb25maWdbQkFTRV9QQVRIX1NZTUJPTF0gPSBiYXNlUGF0aCA/PyAnJztcbn1cblxuZnVuY3Rpb24gZ2V0V29ya2Zsb3dCYXNlUGF0aCgpOiBzdHJpbmcge1xuICByZXR1cm4gZ2xvYmFsQ29uZmlnW0JBU0VfUEFUSF9TWU1CT0xdID8/ICcnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV29ya2Zsb3dCYXNlVXJsKG9yaWdpbjogc3RyaW5nKTogc3RyaW5nIHtcbiAgbmV3IFVSTChvcmlnaW4pO1xuICByZXR1cm4gYCR7b3JpZ2luLnJlcGxhY2UoL1s/I10uKiQvLCAnJykucmVwbGFjZSgvXFwvKyQvLCAnJyl9JHtnZXRXb3JrZmxvd0Jhc2VQYXRoKCl9YDtcbn1cblxuZXhwb3J0IHR5cGUgV29ya2Zsb3dVcmxSb3V0ZSA9XG4gIHwgeyB0eXBlOiAnZmxvdycgfCAnc3RlcCcgfVxuICB8IHsgdHlwZTogJ21hbmlmZXN0JyB9XG4gIHwgeyB0eXBlOiAnd2ViaG9vayc7IHRva2VuOiBzdHJpbmcgfVxuICB8IHsgdHlwZTogJ2hlYWx0aCcgfTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVdvcmtmbG93VXJsKFxuICBiYXNlVXJsOiBzdHJpbmcsXG4gIHJvdXRlOiBXb3JrZmxvd1VybFJvdXRlXG4pOiBzdHJpbmcge1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKGJhc2VVcmwpO1xuICB1cmwucGF0aG5hbWUgPSBgJHt1cmwucGF0aG5hbWUucmVwbGFjZSgvXFwvKyQvLCAnJyl9JHtXT1JLRkxPV19ST1VURV9CQVNFfS8ke2dldFdvcmtmbG93Um91dGVFbmRwb2ludChyb3V0ZSl9YDtcbiAgdXJsLnNlYXJjaCA9IHJvdXRlLnR5cGUgPT09ICdoZWFsdGgnID8gJ19faGVhbHRoJyA6ICcnO1xuICB1cmwuaGFzaCA9ICcnO1xuICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG59XG5cbmZ1bmN0aW9uIGdldFdvcmtmbG93Um91dGVFbmRwb2ludChyb3V0ZTogV29ya2Zsb3dVcmxSb3V0ZSk6IHN0cmluZyB7XG4gIHN3aXRjaCAocm91dGUudHlwZSkge1xuICAgIGNhc2UgJ2Zsb3cnOlxuICAgIGNhc2UgJ2hlYWx0aCc6XG4gICAgICByZXR1cm4gJ2Zsb3cnO1xuICAgIGNhc2UgJ3N0ZXAnOlxuICAgICAgcmV0dXJuICdzdGVwJztcbiAgICBjYXNlICdtYW5pZmVzdCc6XG4gICAgICByZXR1cm4gJ21hbmlmZXN0Lmpzb24nO1xuICAgIGNhc2UgJ3dlYmhvb2snOlxuICAgICAgcmV0dXJuIGB3ZWJob29rLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHJvdXRlLnRva2VuKX1gO1xuICB9XG4gIGNvbnN0IGV4aGF1c3RpdmU6IG5ldmVyID0gcm91dGU7XG4gIHJldHVybiBleGhhdXN0aXZlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlV29ya2Zsb3dIZWFsdGhFbmRwb2ludCgpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7Z2V0V29ya2Zsb3dCYXNlUGF0aCgpfSR7V09SS0ZMT1dfUk9VVEVfQkFTRX0vZmxvdz9fX2hlYWx0aGA7XG59XG4iXX0=
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@workflow/utils",
3
3
  "description": "Utility functions for Workflow SDK",
4
- "version": "4.1.3",
4
+ "version": "4.1.4",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "files": [
@@ -37,7 +37,7 @@
37
37
  "devDependencies": {
38
38
  "@types/ms": "2.1.0",
39
39
  "@types/node": "22.19.0",
40
- "vitest": "^4.0.18",
40
+ "vitest": "^4.1.10",
41
41
  "@workflow/tsconfig": "4.0.1"
42
42
  },
43
43
  "dependencies": {