@pipeline-builder/pipeline-core 3.4.69 → 3.4.70

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 (62) hide show
  1. package/README.md +62 -33
  2. package/lib/config/app-config.d.ts +1 -1
  3. package/lib/config/app-config.js +20 -25
  4. package/lib/config/billing-config.d.ts +1 -1
  5. package/lib/config/billing-config.js +2 -5
  6. package/lib/config/config-types.d.ts +1 -1
  7. package/lib/config/config-types.js +2 -3
  8. package/lib/config/infrastructure-config.d.ts +1 -1
  9. package/lib/config/infrastructure-config.js +25 -38
  10. package/lib/config/server-config.d.ts +1 -1
  11. package/lib/config/server-config.js +12 -19
  12. package/lib/core/artifact-manager.js +3 -6
  13. package/lib/core/id-generator.js +4 -8
  14. package/lib/core/metadata-builder.d.ts +4 -4
  15. package/lib/core/metadata-builder.js +32 -44
  16. package/lib/core/network-types.d.ts +2 -2
  17. package/lib/core/network-types.js +2 -3
  18. package/lib/core/network.d.ts +3 -3
  19. package/lib/core/network.js +18 -20
  20. package/lib/core/pipeline-helpers.d.ts +3 -3
  21. package/lib/core/pipeline-helpers.js +73 -79
  22. package/lib/core/pipeline-types.d.ts +2 -2
  23. package/lib/core/pipeline-types.js +5 -11
  24. package/lib/core/role-types.js +2 -3
  25. package/lib/core/role.d.ts +3 -3
  26. package/lib/core/role.js +24 -25
  27. package/lib/core/security-group-types.js +2 -3
  28. package/lib/core/security-group.d.ts +3 -3
  29. package/lib/core/security-group.js +8 -9
  30. package/lib/handlers/plugin-lookup-handler.d.ts +1 -1
  31. package/lib/handlers/plugin-lookup-handler.js +18 -56
  32. package/lib/index.d.ts +17 -17
  33. package/lib/index.js +28 -71
  34. package/lib/pipeline/pipeline-builder.d.ts +5 -5
  35. package/lib/pipeline/pipeline-builder.js +73 -110
  36. package/lib/pipeline/pipeline-configuration.d.ts +5 -5
  37. package/lib/pipeline/pipeline-configuration.js +15 -19
  38. package/lib/pipeline/plugin-lookup.d.ts +3 -3
  39. package/lib/pipeline/plugin-lookup.js +32 -31
  40. package/lib/pipeline/source-builder.d.ts +2 -2
  41. package/lib/pipeline/source-builder.js +27 -29
  42. package/lib/pipeline/source-types.d.ts +1 -1
  43. package/lib/pipeline/source-types.js +2 -3
  44. package/lib/pipeline/stage-builder.d.ts +5 -5
  45. package/lib/pipeline/stage-builder.js +9 -9
  46. package/lib/pipeline/step-types.d.ts +4 -4
  47. package/lib/pipeline/step-types.js +2 -3
  48. package/lib/template/cache.d.ts +1 -1
  49. package/lib/template/cache.js +5 -9
  50. package/lib/template/evaluator.d.ts +1 -1
  51. package/lib/template/evaluator.js +11 -16
  52. package/lib/template/index.d.ts +9 -9
  53. package/lib/template/index.js +31 -56
  54. package/lib/template/metrics.js +6 -10
  55. package/lib/template/plugin-resolver.js +5 -9
  56. package/lib/template/tokenizer.js +13 -19
  57. package/lib/template/topo-sort.js +2 -5
  58. package/lib/template/validate.d.ts +1 -1
  59. package/lib/template/validate.js +20 -25
  60. package/lib/template/walker.d.ts +1 -1
  61. package/lib/template/walker.js +6 -10
  62. package/package.json +20 -14
@@ -1,15 +1,10 @@
1
- "use strict";
2
1
  // Copyright 2026 Pipeline Builder Contributors
3
2
  // SPDX-License-Identifier: Apache-2.0
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.allowedScopeRoots = allowedScopeRoots;
6
- exports.validateTemplates = validateTemplates;
7
- exports.detectCycles = detectCycles;
8
- const api_core_1 = require("@pipeline-builder/api-core");
9
- const evaluator_1 = require("./evaluator");
10
- const tokenizer_1 = require("./tokenizer");
11
- const topo_sort_1 = require("./topo-sort");
12
- const walker_1 = require("./walker");
3
+ import { ErrorCode } from '@pipeline-builder/api-core';
4
+ import { dependencies } from './evaluator.js';
5
+ import { TokenizerError, tokenize } from './tokenizer.js';
6
+ import { topoSort } from './topo-sort.js';
7
+ import { visitStrings, walkAndBind } from './walker.js';
13
8
  /**
14
9
  * Build a predicate that accepts a template path when its root is in the
15
10
  * given allow-list. Used by the validator to check that every `{{ path }}`
@@ -19,7 +14,7 @@ const walker_1 = require("./walker");
19
14
  * existence here because metadata / vars keys are user-provided per pipeline
20
15
  * and not known at plugin upload time.
21
16
  */
22
- function allowedScopeRoots(roots) {
17
+ export function allowedScopeRoots(roots) {
23
18
  const allowed = new Set(roots);
24
19
  return (path) => {
25
20
  const root = path[0];
@@ -35,21 +30,21 @@ function allowedScopeRoots(roots) {
35
30
  * `isKnownPath` (the scope-shape predicate). Template text is parsed
36
31
  * fresh; use a TokenCache externally if repeated parsing is a concern.
37
32
  */
38
- function validateTemplates(doc, isTemplatable, isKnownPath) {
33
+ export function validateTemplates(doc, isTemplatable, isKnownPath) {
39
34
  const errors = [];
40
35
  const entries = [];
41
36
  // Pass 1: parse every templatable field, collecting parse errors instead
42
37
  // of throwing on the first one.
43
- (0, walker_1.visitStrings)(doc, isTemplatable, (field, source) => {
38
+ visitStrings(doc, isTemplatable, (field, source) => {
44
39
  try {
45
- entries.push({ field, tokens: (0, tokenizer_1.tokenize)(source) });
40
+ entries.push({ field, tokens: tokenize(source) });
46
41
  }
47
42
  catch (err) {
48
- if (err instanceof tokenizer_1.TokenizerError) {
49
- errors.push({ field, line: err.pos.line, col: err.pos.col, code: api_core_1.ErrorCode.TEMPLATE_PARSE_ERROR, message: err.message });
43
+ if (err instanceof TokenizerError) {
44
+ errors.push({ field, line: err.pos.line, col: err.pos.col, code: ErrorCode.TEMPLATE_PARSE_ERROR, message: err.message });
50
45
  }
51
46
  else {
52
- errors.push({ field, code: api_core_1.ErrorCode.TEMPLATE_PARSE_ERROR, message: String(err) });
47
+ errors.push({ field, code: ErrorCode.TEMPLATE_PARSE_ERROR, message: String(err) });
53
48
  }
54
49
  }
55
50
  });
@@ -59,11 +54,11 @@ function validateTemplates(doc, isTemplatable, isKnownPath) {
59
54
  if (tok.kind !== 'expr')
60
55
  continue;
61
56
  if (tok.path[0] === 'secrets') {
62
- errors.push(mkErr(field, tok.pos, api_core_1.ErrorCode.TEMPLATE_SECRETS_RESERVED, '\'secrets\' is a reserved scope — use the plugin\'s \'secrets:\' field instead', tok.path.join('.')));
57
+ errors.push(mkErr(field, tok.pos, ErrorCode.TEMPLATE_SECRETS_RESERVED, '\'secrets\' is a reserved scope — use the plugin\'s \'secrets:\' field instead', tok.path.join('.')));
63
58
  continue;
64
59
  }
65
60
  if (!isKnownPath(tok.path)) {
66
- errors.push(mkErr(field, tok.pos, api_core_1.ErrorCode.TEMPLATE_UNKNOWN_PATH, `Template references unknown scope root '${tok.path[0]}'`, tok.path.join('.')));
61
+ errors.push(mkErr(field, tok.pos, ErrorCode.TEMPLATE_UNKNOWN_PATH, `Template references unknown scope root '${tok.path[0]}'`, tok.path.join('.')));
67
62
  }
68
63
  }
69
64
  }
@@ -78,18 +73,18 @@ function validateTemplates(doc, isTemplatable, isKnownPath) {
78
73
  * path `metadata.env`; a template `{{ metadata.region }}` in that field
79
74
  * declares a dependency on `metadata.region`.
80
75
  */
81
- function detectCycles(doc, isTemplatable, fieldToScopePath) {
76
+ export function detectCycles(doc, isTemplatable, fieldToScopePath) {
82
77
  const nodes = [];
83
- for (const entry of (0, walker_1.walkAndBind)(doc, isTemplatable)) {
78
+ for (const entry of walkAndBind(doc, isTemplatable)) {
84
79
  const key = fieldToScopePath(entry.field);
85
80
  if (!key)
86
81
  continue;
87
- nodes.push({ key, deps: (0, evaluator_1.dependencies)(entry.tokens) });
82
+ nodes.push({ key, deps: dependencies(entry.tokens) });
88
83
  }
89
- const { cycles } = (0, topo_sort_1.topoSort)(nodes);
84
+ const { cycles } = topoSort(nodes);
90
85
  return cycles.map(c => ({
91
86
  field: c[0],
92
- code: api_core_1.ErrorCode.TEMPLATE_CYCLE,
87
+ code: ErrorCode.TEMPLATE_CYCLE,
93
88
  message: `Template cycle detected: ${c.join(' -> ')}`,
94
89
  cycle: c,
95
90
  }));
@@ -98,4 +93,4 @@ function detectCycles(doc, isTemplatable, fieldToScopePath) {
98
93
  function mkErr(field, pos, code, message, path) {
99
94
  return { field, line: pos.line, col: pos.col, code, message, ...(path && { path }) };
100
95
  }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvdmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtDQUErQztBQUMvQyxzQ0FBc0M7O0FBZ0N0Qyw4Q0FNQztBQVdELDhDQXlDQztBQVdELG9DQWtCQztBQXJIRCx5REFBdUQ7QUFDdkQsMkNBQTJDO0FBQzNDLDJDQUE4RTtBQUM5RSwyQ0FBdUM7QUFDdkMscUNBQXFFO0FBaUJyRTs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLEtBQWU7SUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLGlCQUFpQixDQUMvQixHQUFNLEVBQ04sYUFBNkIsRUFDN0IsV0FBd0M7SUFFeEMsTUFBTSxNQUFNLEdBQW9CLEVBQUUsQ0FBQztJQUNuQyxNQUFNLE9BQU8sR0FBeUMsRUFBRSxDQUFDO0lBRXpELHlFQUF5RTtJQUN6RSxnQ0FBZ0M7SUFDaEMsSUFBQSxxQkFBWSxFQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDakQsSUFBSSxDQUFDO1lBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBQSxvQkFBUSxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksR0FB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S0FDVCxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRCwrRUFBK0U7QUFFL0UsU0FBUyxLQUFLLENBQ1osS0FBYSxFQUNiLEdBQW1CLEVBQ25CLElBQWUsRUFDZixPQUFlLEVBQ2YsSUFBYTtJQUViLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ3ZGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgRXJyb3JDb2RlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgZGVwZW5kZW5jaWVzIH0gZnJvbSAnLi9ldmFsdWF0b3InO1xuaW1wb3J0IHsgU291cmNlUG9zaXRpb24sIFRva2VuLCBUb2tlbml6ZXJFcnJvciwgdG9rZW5pemUgfSBmcm9tICcuL3Rva2VuaXplcic7XG5pbXBvcnQgeyB0b3BvU29ydCB9IGZyb20gJy4vdG9wby1zb3J0JztcbmltcG9ydCB7IEZpZWxkUHJlZGljYXRlLCB2aXNpdFN0cmluZ3MsIHdhbGtBbmRCaW5kIH0gZnJvbSAnLi93YWxrZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlRXJyb3Ige1xuICBmaWVsZDogc3RyaW5nO1xuICBsaW5lPzogbnVtYmVyO1xuICBjb2w/OiBudW1iZXI7XG4gIGNvZGU6IEVycm9yQ29kZTtcbiAgbWVzc2FnZTogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuICBjeWNsZT86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25SZXN1bHQge1xuICB2YWxpZDogYm9vbGVhbjtcbiAgZXJyb3JzOiBUZW1wbGF0ZUVycm9yW107XG59XG5cbi8qKlxuICogQnVpbGQgYSBwcmVkaWNhdGUgdGhhdCBhY2NlcHRzIGEgdGVtcGxhdGUgcGF0aCB3aGVuIGl0cyByb290IGlzIGluIHRoZVxuICogZ2l2ZW4gYWxsb3ctbGlzdC4gVXNlZCBieSB0aGUgdmFsaWRhdG9yIHRvIGNoZWNrIHRoYXQgZXZlcnkgYHt7IHBhdGggfX1gXG4gKiByZXNvbHZlcyB0byBhIGtub3duIHNjb3BlIHJvb3QgKGBwaXBlbGluZWAsIGBwbHVnaW5gLCBgZW52YCwg4oCmKS5cbiAqXG4gKiBPbmx5IHRoZSByb290IHNlZ21lbnQgaXMgY2hlY2tlZCDigJQgd2UgZG9uJ3QgZW5mb3JjZSBleGFjdCBuZXN0ZWQta2V5XG4gKiBleGlzdGVuY2UgaGVyZSBiZWNhdXNlIG1ldGFkYXRhIC8gdmFycyBrZXlzIGFyZSB1c2VyLXByb3ZpZGVkIHBlciBwaXBlbGluZVxuICogYW5kIG5vdCBrbm93biBhdCBwbHVnaW4gdXBsb2FkIHRpbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhbGxvd2VkU2NvcGVSb290cyhyb290czogc3RyaW5nW10pOiAocGF0aDogc3RyaW5nW10pID0+IGJvb2xlYW4ge1xuICBjb25zdCBhbGxvd2VkID0gbmV3IFNldChyb290cyk7XG4gIHJldHVybiAocGF0aCkgPT4ge1xuICAgIGNvbnN0IHJvb3QgPSBwYXRoWzBdO1xuICAgIHJldHVybiAhIXJvb3QgJiYgYWxsb3dlZC5oYXMocm9vdCk7XG4gIH07XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYWxsIHRlbXBsYXRlIHRva2VucyBpbiBhIGRvY3VtZW50IGhhdmUgd2VsbC1mb3JtZWQgcGF0aHMgYW5kXG4gKiBwb2ludCBhdCBhbGxvd2VkIHNjb3BlIHJvb3RzLiBSZXR1cm5zIGFsbCBlcnJvcnMgZm91bmQg4oCUIGRvZXMgTk9UIHN0b3BcbiAqIG9uIGZpcnN0LlxuICpcbiAqIENhbGxlciBzdXBwbGllcyBgaXNUZW1wbGF0YWJsZWAgKHRoZSBzY2hlbWEgYWxsb3ctbGlzdCkgYW5kXG4gKiBgaXNLbm93blBhdGhgICh0aGUgc2NvcGUtc2hhcGUgcHJlZGljYXRlKS4gVGVtcGxhdGUgdGV4dCBpcyBwYXJzZWRcbiAqIGZyZXNoOyB1c2UgYSBUb2tlbkNhY2hlIGV4dGVybmFsbHkgaWYgcmVwZWF0ZWQgcGFyc2luZyBpcyBhIGNvbmNlcm4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVRlbXBsYXRlczxUIGV4dGVuZHMgb2JqZWN0PihcbiAgZG9jOiBULFxuICBpc1RlbXBsYXRhYmxlOiBGaWVsZFByZWRpY2F0ZSxcbiAgaXNLbm93blBhdGg6IChwYXRoOiBzdHJpbmdbXSkgPT4gYm9vbGVhbixcbik6IFZhbGlkYXRpb25SZXN1bHQge1xuICBjb25zdCBlcnJvcnM6IFRlbXBsYXRlRXJyb3JbXSA9IFtdO1xuICBjb25zdCBlbnRyaWVzOiB7IGZpZWxkOiBzdHJpbmc7IHRva2VuczogVG9rZW5bXSB9W10gPSBbXTtcblxuICAvLyBQYXNzIDE6IHBhcnNlIGV2ZXJ5IHRlbXBsYXRhYmxlIGZpZWxkLCBjb2xsZWN0aW5nIHBhcnNlIGVycm9ycyBpbnN0ZWFkXG4gIC8vIG9mIHRocm93aW5nIG9uIHRoZSBmaXJzdCBvbmUuXG4gIHZpc2l0U3RyaW5ncyhkb2MsIGlzVGVtcGxhdGFibGUsIChmaWVsZCwgc291cmNlKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGVudHJpZXMucHVzaCh7IGZpZWxkLCB0b2tlbnM6IHRva2VuaXplKHNvdXJjZSkgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgVG9rZW5pemVyRXJyb3IpIHtcbiAgICAgICAgZXJyb3JzLnB1c2goeyBmaWVsZCwgbGluZTogZXJyLnBvcy5saW5lLCBjb2w6IGVyci5wb3MuY29sLCBjb2RlOiBFcnJvckNvZGUuVEVNUExBVEVfUEFSU0VfRVJST1IsIG1lc3NhZ2U6IGVyci5tZXNzYWdlIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyb3JzLnB1c2goeyBmaWVsZCwgY29kZTogRXJyb3JDb2RlLlRFTVBMQVRFX1BBUlNFX0VSUk9SLCBtZXNzYWdlOiBTdHJpbmcoZXJyKSB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIC8vIFBhc3MgMjogdmFsaWRhdGUgZWFjaCBleHByJ3MgcGF0aCBpcyBzaGFwZS1hbGxvd2VkIGFuZCBub3QgcmVzZXJ2ZWRcbiAgZm9yIChjb25zdCB7IGZpZWxkLCB0b2tlbnMgfSBvZiBlbnRyaWVzKSB7XG4gICAgZm9yIChjb25zdCB0b2sgb2YgdG9rZW5zKSB7XG4gICAgICBpZiAodG9rLmtpbmQgIT09ICdleHByJykgY29udGludWU7XG4gICAgICBpZiAodG9rLnBhdGhbMF0gPT09ICdzZWNyZXRzJykge1xuICAgICAgICBlcnJvcnMucHVzaChta0VycihmaWVsZCwgdG9rLnBvcywgRXJyb3JDb2RlLlRFTVBMQVRFX1NFQ1JFVFNfUkVTRVJWRUQsXG4gICAgICAgICAgJ1xcJ3NlY3JldHNcXCcgaXMgYSByZXNlcnZlZCBzY29wZSDigJQgdXNlIHRoZSBwbHVnaW5cXCdzIFxcJ3NlY3JldHM6XFwnIGZpZWxkIGluc3RlYWQnLFxuICAgICAgICAgIHRvay5wYXRoLmpvaW4oJy4nKSkpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNLbm93blBhdGgodG9rLnBhdGgpKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKG1rRXJyKGZpZWxkLCB0b2sucG9zLCBFcnJvckNvZGUuVEVNUExBVEVfVU5LTk9XTl9QQVRILFxuICAgICAgICAgIGBUZW1wbGF0ZSByZWZlcmVuY2VzIHVua25vd24gc2NvcGUgcm9vdCAnJHt0b2sucGF0aFswXX0nYCxcbiAgICAgICAgICB0b2sucGF0aC5qb2luKCcuJykpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4geyB2YWxpZDogZXJyb3JzLmxlbmd0aCA9PT0gMCwgZXJyb3JzIH07XG59XG5cbi8qKlxuICogRGV0ZWN0IGN5Y2xlcyBpbiBhIHNlbGYtcmVmZXJlbmNpbmcgZG9jdW1lbnQuIENhbGxlciBzdXBwbGllcyB0aGVcbiAqIHRlbXBsYXRhYmxlIHByZWRpY2F0ZSBhbmQgYSBmdW5jdGlvbiB0byBleHRyYWN0IHRoZSBzY29wZS1wYXRoIHRoYXRcbiAqIGVhY2ggdGVtcGxhdGUgZmllbGQgd3JpdGVzIHRvIChzYW1lIHZhbHVlIHVzZWQgYXMgYSBrZXkgaW4gZGVwcykuXG4gKlxuICogRXhhbXBsZSBmb3IgcGlwZWxpbmUuanNvbjogdGhlIGZpZWxkIGBtZXRhZGF0YS5lbnZgIHdyaXRlcyB0byBzY29wZVxuICogcGF0aCBgbWV0YWRhdGEuZW52YDsgYSB0ZW1wbGF0ZSBge3sgbWV0YWRhdGEucmVnaW9uIH19YCBpbiB0aGF0IGZpZWxkXG4gKiBkZWNsYXJlcyBhIGRlcGVuZGVuY3kgb24gYG1ldGFkYXRhLnJlZ2lvbmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RDeWNsZXM8VCBleHRlbmRzIG9iamVjdD4oXG4gIGRvYzogVCxcbiAgaXNUZW1wbGF0YWJsZTogRmllbGRQcmVkaWNhdGUsXG4gIGZpZWxkVG9TY29wZVBhdGg6IChmaWVsZDogc3RyaW5nKSA9PiBzdHJpbmcgfCBudWxsLFxuKTogVGVtcGxhdGVFcnJvcltdIHtcbiAgY29uc3Qgbm9kZXMgPSBbXTtcbiAgZm9yIChjb25zdCBlbnRyeSBvZiB3YWxrQW5kQmluZChkb2MsIGlzVGVtcGxhdGFibGUpKSB7XG4gICAgY29uc3Qga2V5ID0gZmllbGRUb1Njb3BlUGF0aChlbnRyeS5maWVsZCk7XG4gICAgaWYgKCFrZXkpIGNvbnRpbnVlO1xuICAgIG5vZGVzLnB1c2goeyBrZXksIGRlcHM6IGRlcGVuZGVuY2llcyhlbnRyeS50b2tlbnMpIH0pO1xuICB9XG4gIGNvbnN0IHsgY3ljbGVzIH0gPSB0b3BvU29ydChub2Rlcyk7XG4gIHJldHVybiBjeWNsZXMubWFwKGMgPT4gKHtcbiAgICBmaWVsZDogY1swXSEsXG4gICAgY29kZTogRXJyb3JDb2RlLlRFTVBMQVRFX0NZQ0xFLFxuICAgIG1lc3NhZ2U6IGBUZW1wbGF0ZSBjeWNsZSBkZXRlY3RlZDogJHtjLmpvaW4oJyAtPiAnKX1gLFxuICAgIGN5Y2xlOiBjLFxuICB9KSk7XG59XG5cbi8vIC0tIGhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuZnVuY3Rpb24gbWtFcnIoXG4gIGZpZWxkOiBzdHJpbmcsXG4gIHBvczogU291cmNlUG9zaXRpb24sXG4gIGNvZGU6IEVycm9yQ29kZSxcbiAgbWVzc2FnZTogc3RyaW5nLFxuICBwYXRoPzogc3RyaW5nLFxuKTogVGVtcGxhdGVFcnJvciB7XG4gIHJldHVybiB7IGZpZWxkLCBsaW5lOiBwb3MubGluZSwgY29sOiBwb3MuY29sLCBjb2RlLCBtZXNzYWdlLCAuLi4ocGF0aCAmJiB7IHBhdGggfSkgfTtcbn1cblxuIl19
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVtcGxhdGUvdmFsaWRhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0NBQStDO0FBQy9DLHNDQUFzQztBQUV0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBbUMsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxQyxPQUFPLEVBQXVCLFlBQVksRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFpQjdFOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxVQUFVLGlCQUFpQixDQUFDLEtBQWU7SUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FDL0IsR0FBTSxFQUNOLGFBQTZCLEVBQzdCLFdBQXdDO0lBRXhDLE1BQU0sTUFBTSxHQUFvQixFQUFFLENBQUM7SUFDbkMsTUFBTSxPQUFPLEdBQXlDLEVBQUUsQ0FBQztJQUV6RCx5RUFBeUU7SUFDekUsZ0NBQWdDO0lBQ2hDLFlBQVksQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ2pELElBQUksQ0FBQztZQUNILE9B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Q1osSUFBSSxFQUFFLFNBQVMsQ0FBQyxjQUFjO1FBQzlCLE9BQU8sRUFBRSw0QkFBNEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNyRCxLQUFLLEVBQUUsQ0FBQztLQUNULENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVELCtFQUErRTtBQUUvRSxTQUFTLEtBQUssQ0FDWixLQUFhLEVBQ2IsR0FBbUIsRUFDbkIsSUFBZSxFQUNmLE9BQWUsRUFDZixJQUFhO0lBRWIsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDdkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBFcnJvckNvZGUgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9hcGktY29yZSc7XG5pbXBvcnQgeyBkZXBlbmRlbmNpZXMgfSBmcm9tICcuL2V2YWx1YXRvci5qcyc7XG5pbXBvcnQgeyB0eXBlIFNvdXJjZVBvc2l0aW9uLCB0eXBlIFRva2VuLCBUb2tlbml6ZXJFcnJvciwgdG9rZW5pemUgfSBmcm9tICcuL3Rva2VuaXplci5qcyc7XG5pbXBvcnQgeyB0b3BvU29ydCB9IGZyb20gJy4vdG9wby1zb3J0LmpzJztcbmltcG9ydCB7IHR5cGUgRmllbGRQcmVkaWNhdGUsIHZpc2l0U3RyaW5ncywgd2Fsa0FuZEJpbmQgfSBmcm9tICcuL3dhbGtlci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVFcnJvciB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIGxpbmU/OiBudW1iZXI7XG4gIGNvbD86IG51bWJlcjtcbiAgY29kZTogRXJyb3JDb2RlO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGN5Y2xlPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvblJlc3VsdCB7XG4gIHZhbGlkOiBib29sZWFuO1xuICBlcnJvcnM6IFRlbXBsYXRlRXJyb3JbXTtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIHByZWRpY2F0ZSB0aGF0IGFjY2VwdHMgYSB0ZW1wbGF0ZSBwYXRoIHdoZW4gaXRzIHJvb3QgaXMgaW4gdGhlXG4gKiBnaXZlbiBhbGxvdy1saXN0LiBVc2VkIGJ5IHRoZSB2YWxpZGF0b3IgdG8gY2hlY2sgdGhhdCBldmVyeSBge3sgcGF0aCB9fWBcbiAqIHJlc29sdmVzIHRvIGEga25vd24gc2NvcGUgcm9vdCAoYHBpcGVsaW5lYCwgYHBsdWdpbmAsIGBlbnZgLCDigKYpLlxuICpcbiAqIE9ubHkgdGhlIHJvb3Qgc2VnbWVudCBpcyBjaGVja2VkIOKAlCB3ZSBkb24ndCBlbmZvcmNlIGV4YWN0IG5lc3RlZC1rZXlcbiAqIGV4aXN0ZW5jZSBoZXJlIGJlY2F1c2UgbWV0YWRhdGEgLyB2YXJzIGtleXMgYXJlIHVzZXItcHJvdmlkZWQgcGVyIHBpcGVsaW5lXG4gKiBhbmQgbm90IGtub3duIGF0IHBsdWdpbiB1cGxvYWQgdGltZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFsbG93ZWRTY29wZVJvb3RzKHJvb3RzOiBzdHJpbmdbXSk6IChwYXRoOiBzdHJpbmdbXSkgPT4gYm9vbGVhbiB7XG4gIGNvbnN0IGFsbG93ZWQgPSBuZXcgU2V0KHJvb3RzKTtcbiAgcmV0dXJuIChwYXRoKSA9PiB7XG4gICAgY29uc3Qgcm9vdCA9IHBhdGhbMF07XG4gICAgcmV0dXJuICEhcm9vdCAmJiBhbGxvd2VkLmhhcyhyb290KTtcbiAgfTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhbGwgdGVtcGxhdGUgdG9rZW5zIGluIGEgZG9jdW1lbnQgaGF2ZSB3ZWxsLWZvcm1lZCBwYXRocyBhbmRcbiAqIHBvaW50IGF0IGFsbG93ZWQgc2NvcGUgcm9vdHMuIFJldHVybnMgYWxsIGVycm9ycyBmb3VuZCDigJQgZG9lcyBOT1Qgc3RvcFxuICogb24gZmlyc3QuXG4gKlxuICogQ2FsbGVyIHN1cHBsaWVzIGBpc1RlbXBsYXRhYmxlYCAodGhlIHNjaGVtYSBhbGxvdy1saXN0KSBhbmRcbiAqIGBpc0tub3duUGF0aGAgKHRoZSBzY29wZS1zaGFwZSBwcmVkaWNhdGUpLiBUZW1wbGF0ZSB0ZXh0IGlzIHBhcnNlZFxuICogZnJlc2g7IHVzZSBhIFRva2VuQ2FjaGUgZXh0ZXJuYWxseSBpZiByZXBlYXRlZCBwYXJzaW5nIGlzIGEgY29uY2Vybi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlVGVtcGxhdGVzPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICBkb2M6IFQsXG4gIGlzVGVtcGxhdGFibGU6IEZpZWxkUHJlZGljYXRlLFxuICBpc0tub3duUGF0aDogKHBhdGg6IHN0cmluZ1tdKSA9PiBib29sZWFuLFxuKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGNvbnN0IGVycm9yczogVGVtcGxhdGVFcnJvcltdID0gW107XG4gIGNvbnN0IGVudHJpZXM6IHsgZmllbGQ6IHN0cmluZzsgdG9rZW5zOiBUb2tlbltdIH1bXSA9IFtdO1xuXG4gIC8vIFBhc3MgMTogcGFyc2UgZXZlcnkgdGVtcGxhdGFibGUgZmllbGQsIGNvbGxlY3RpbmcgcGFyc2UgZXJyb3JzIGluc3RlYWRcbiAgLy8gb2YgdGhyb3dpbmcgb24gdGhlIGZpcnN0IG9uZS5cbiAgdmlzaXRTdHJpbmdzKGRvYywgaXNUZW1wbGF0YWJsZSwgKGZpZWxkLCBzb3VyY2UpID0+IHtcbiAgICB0cnkge1xuICAgICAgZW50cmllcy5wdXNoKHsgZmllbGQsIHRva2VuczogdG9rZW5pemUoc291cmNlKSB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBUb2tlbml6ZXJFcnJvcikge1xuICAgICAgICBlcnJvcnMucHVzaCh7IGZpZWxkLCBsaW5lOiBlcnIucG9zLmxpbmUsIGNvbDogZXJyLnBvcy5jb2wsIGNvZGU6IEVycm9yQ29kZS5URU1QTEFURV9QQVJTRV9FUlJPUiwgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlcnJvcnMucHVzaCh7IGZpZWxkLCBjb2RlOiBFcnJvckNvZGUuVEVNUExBVEVfUEFSU0VfRVJST1IsIG1lc3NhZ2U6IFN0cmluZyhlcnIpIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gUGFzcyAyOiB2YWxpZGF0ZSBlYWNoIGV4cHIncyBwYXRoIGlzIHNoYXBlLWFsbG93ZWQgYW5kIG5vdCByZXNlcnZlZFxuICBmb3IgKGNvbnN0IHsgZmllbGQsIHRva2VucyB9IG9mIGVudHJpZXMpIHtcbiAgICBmb3IgKGNvbnN0IHRvayBvZiB0b2tlbnMpIHtcbiAgICAgIGlmICh0b2sua2luZCAhPT0gJ2V4cHInKSBjb250aW51ZTtcbiAgICAgIGlmICh0b2sucGF0aFswXSA9PT0gJ3NlY3JldHMnKSB7XG4gICAgICAgIGVycm9ycy5wdXNoKG1rRXJyKGZpZWxkLCB0b2sucG9zLCBFcnJvckNvZGUuVEVNUExBVEVfU0VDUkVUU19SRVNFUlZFRCxcbiAgICAgICAgICAnXFwnc2VjcmV0c1xcJyBpcyBhIHJlc2VydmVkIHNjb3BlIOKAlCB1c2UgdGhlIHBsdWdpblxcJ3MgXFwnc2VjcmV0czpcXCcgZmllbGQgaW5zdGVhZCcsXG4gICAgICAgICAgdG9rLnBhdGguam9pbignLicpKSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFpc0tub3duUGF0aCh0b2sucGF0aCkpIHtcbiAgICAgICAgZXJyb3JzLnB1c2gobWtFcnIoZmllbGQsIHRvay5wb3MsIEVycm9yQ29kZS5URU1QTEFURV9VTktOT1dOX1BBVEgsXG4gICAgICAgICAgYFRlbXBsYXRlIHJlZmVyZW5jZXMgdW5rbm93biBzY29wZSByb290ICcke3Rvay5wYXRoWzBdfSdgLFxuICAgICAgICAgIHRvay5wYXRoLmpvaW4oJy4nKSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7IHZhbGlkOiBlcnJvcnMubGVuZ3RoID09PSAwLCBlcnJvcnMgfTtcbn1cblxuLyoqXG4gKiBEZXRlY3QgY3ljbGVzIGluIGEgc2VsZi1yZWZlcmVuY2luZyBkb2N1bWVudC4gQ2FsbGVyIHN1cHBsaWVzIHRoZVxuICogdGVtcGxhdGFibGUgcHJlZGljYXRlIGFuZCBhIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIHNjb3BlLXBhdGggdGhhdFxuICogZWFjaCB0ZW1wbGF0ZSBmaWVsZCB3cml0ZXMgdG8gKHNhbWUgdmFsdWUgdXNlZCBhcyBhIGtleSBpbiBkZXBzKS5cbiAqXG4gKiBFeGFtcGxlIGZvciBwaXBlbGluZS5qc29uOiB0aGUgZmllbGQgYG1ldGFkYXRhLmVudmAgd3JpdGVzIHRvIHNjb3BlXG4gKiBwYXRoIGBtZXRhZGF0YS5lbnZgOyBhIHRlbXBsYXRlIGB7eyBtZXRhZGF0YS5yZWdpb24gfX1gIGluIHRoYXQgZmllbGRcbiAqIGRlY2xhcmVzIGEgZGVwZW5kZW5jeSBvbiBgbWV0YWRhdGEucmVnaW9uYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRldGVjdEN5Y2xlczxUIGV4dGVuZHMgb2JqZWN0PihcbiAgZG9jOiBULFxuICBpc1RlbXBsYXRhYmxlOiBGaWVsZFByZWRpY2F0ZSxcbiAgZmllbGRUb1Njb3BlUGF0aDogKGZpZWxkOiBzdHJpbmcpID0+IHN0cmluZyB8IG51bGwsXG4pOiBUZW1wbGF0ZUVycm9yW10ge1xuICBjb25zdCBub2RlcyA9IFtdO1xuICBmb3IgKGNvbnN0IGVudHJ5IG9mIHdhbGtBbmRCaW5kKGRvYywgaXNUZW1wbGF0YWJsZSkpIHtcbiAgICBjb25zdCBrZXkgPSBmaWVsZFRvU2NvcGVQYXRoKGVudHJ5LmZpZWxkKTtcbiAgICBpZiAoIWtleSkgY29udGludWU7XG4gICAgbm9kZXMucHVzaCh7IGtleSwgZGVwczogZGVwZW5kZW5jaWVzKGVudHJ5LnRva2VucykgfSk7XG4gIH1cbiAgY29uc3QgeyBjeWNsZXMgfSA9IHRvcG9Tb3J0KG5vZGVzKTtcbiAgcmV0dXJuIGN5Y2xlcy5tYXAoYyA9PiAoe1xuICAgIGZpZWxkOiBjWzBdISxcbiAgICBjb2RlOiBFcnJvckNvZGUuVEVNUExBVEVfQ1lDTEUsXG4gICAgbWVzc2FnZTogYFRlbXBsYXRlIGN5Y2xlIGRldGVjdGVkOiAke2Muam9pbignIC0+ICcpfWAsXG4gICAgY3ljbGU6IGMsXG4gIH0pKTtcbn1cblxuLy8gLS0gaGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5mdW5jdGlvbiBta0VycihcbiAgZmllbGQ6IHN0cmluZyxcbiAgcG9zOiBTb3VyY2VQb3NpdGlvbixcbiAgY29kZTogRXJyb3JDb2RlLFxuICBtZXNzYWdlOiBzdHJpbmcsXG4gIHBhdGg/OiBzdHJpbmcsXG4pOiBUZW1wbGF0ZUVycm9yIHtcbiAgcmV0dXJuIHsgZmllbGQsIGxpbmU6IHBvcy5saW5lLCBjb2w6IHBvcy5jb2wsIGNvZGUsIG1lc3NhZ2UsIC4uLihwYXRoICYmIHsgcGF0aCB9KSB9O1xufVxuXG4iXX0=
@@ -1,4 +1,4 @@
1
- import { Token } from './tokenizer';
1
+ import { type Token } from './tokenizer.js';
2
2
  export interface WalkEntry {
3
3
  /** Dotted path to the field inside the document, e.g. 'commands[3]' or 'env.STAGE' */
4
4
  field: string;
@@ -1,16 +1,12 @@
1
- "use strict";
2
1
  // Copyright 2026 Pipeline Builder Contributors
3
2
  // SPDX-License-Identifier: Apache-2.0
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.visitStrings = visitStrings;
6
- exports.walkAndBind = walkAndBind;
7
- const tokenizer_1 = require("./tokenizer");
3
+ import { hasTemplate, tokenize } from './tokenizer.js';
8
4
  /**
9
5
  * Visit every templatable string leaf under `root`. Calls `handler(field, source)`
10
6
  * for each string whose field path satisfies `isTemplatable` and contains `{{`.
11
7
  * Does NOT tokenize — callers decide whether to throw or collect errors.
12
8
  */
13
- function visitStrings(root, isTemplatable, handler) {
9
+ export function visitStrings(root, isTemplatable, handler) {
14
10
  step(root, '', isTemplatable, handler);
15
11
  }
16
12
  function step(node, field, isTemplatable, handler) {
@@ -24,7 +20,7 @@ function step(node, field, isTemplatable, handler) {
24
20
  }
25
21
  return;
26
22
  }
27
- if (typeof node === 'string' && isTemplatable(field) && (0, tokenizer_1.hasTemplate)(node)) {
23
+ if (typeof node === 'string' && isTemplatable(field) && hasTemplate(node)) {
28
24
  handler(field, node);
29
25
  }
30
26
  }
@@ -33,10 +29,10 @@ function step(node, field, isTemplatable, handler) {
33
29
  * templated field with a bound `set()` that mutates `root` in place.
34
30
  * Tokenization happens eagerly here — parse errors throw.
35
31
  */
36
- function walkAndBind(root, isTemplatable) {
32
+ export function walkAndBind(root, isTemplatable) {
37
33
  const entries = [];
38
34
  visitStrings(root, isTemplatable, (field, source) => {
39
- const tokens = (0, tokenizer_1.tokenize)(source);
35
+ const tokens = tokenize(source);
40
36
  if (!tokens.some(t => t.kind === 'expr'))
41
37
  return;
42
38
  entries.push({
@@ -73,4 +69,4 @@ function writeField(root, parts, value) {
73
69
  return;
74
70
  cur[parts[parts.length - 1]] = value;
75
71
  }
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Fsa2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RlbXBsYXRlL3dhbGtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsK0NBQStDO0FBQy9DLHNDQUFzQzs7QUFzQnRDLG9DQU1DO0FBNEJELGtDQWdCQztBQXRFRCwyQ0FBMkQ7QUFlM0Q7Ozs7R0FJRztBQUNILFNBQWdCLFlBQVksQ0FDMUIsSUFBYSxFQUNiLGFBQTZCLEVBQzdCLE9BQWdEO0lBRWhELElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsU0FBUyxJQUFJLENBQ1gsSUFBYSxFQUNiLEtBQWEsRUFDYixhQUE2QixFQUM3QixPQUFnRDtJQUVoRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLEtBQUssSUFBSSxHQUFHLEdBQUcsRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN0RixPQUFPO0lBQ1QsQ0FBQztJQUNELElBQUksSUFBSSxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUErQixDQUFDLEVBQUUsQ0FBQztZQUMzRSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDdkUsQ0FBQztRQUNELE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUEsdUJBQVcsRUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdkIsQ0FBQztBQUNILENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsV0FBVyxDQUN6QixJQUFPLEVBQ1AsYUFBNkI7SUFFN0IsTUFBTSxPQUFPLEdBQWdCLEVBQUUsQ0FBQztJQUNoQyxZQUFZLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNsRCxNQUFNLE1BQU0sR0FBRyxJQUFBLG9CQUFRLEVBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQztZQUFFLE9BQU87UUFDakQsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNYLEtBQUs7WUFDTCxNQUFNO1lBQ04sTUFBTTtZQUNOLEdBQUcsRUFBRSxDQUFDLEtBQWMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDO1NBQ3hFLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUFDLEtBQWE7SUFDbkMsTUFBTSxLQUFLLEdBQTJCLEVBQUUsQ0FBQztJQUN6QyxNQUFNLEVBQUUsR0FBRyx3QkFBd0IsQ0FBQztJQUNwQyxJQUFJLENBQXlCLENBQUM7SUFDOUIsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUztZQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDcEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUztZQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELFNBQVMsVUFBVSxDQUFDLElBQWEsRUFBRSxLQUE2QixFQUFFLEtBQWM7SUFDOUUsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPO0lBQy9CLElBQUksR0FBRyxHQUFZLElBQUksQ0FBQztJQUN4QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUMxQyxJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUTtZQUFFLE9BQU87UUFDbkQsR0FBRyxHQUFJLEdBQXdDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUNELElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTztJQUNsRCxHQUF3QyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzlFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgMjAyNiBQaXBlbGluZSBCdWlsZGVyIENvbnRyaWJ1dG9yc1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuaW1wb3J0IHsgaGFzVGVtcGxhdGUsIHRva2VuaXplLCBUb2tlbiB9IGZyb20gJy4vdG9rZW5pemVyJztcblxuZXhwb3J0IGludGVyZmFjZSBXYWxrRW50cnkge1xuICAvKiogRG90dGVkIHBhdGggdG8gdGhlIGZpZWxkIGluc2lkZSB0aGUgZG9jdW1lbnQsIGUuZy4gJ2NvbW1hbmRzWzNdJyBvciAnZW52LlNUQUdFJyAqL1xuICBmaWVsZDogc3RyaW5nO1xuICAvKiogUmF3IHNvdXJjZSBzdHJpbmcgY29udGFpbmluZyB0ZW1wbGF0ZSB0b2tlbnMgKi9cbiAgc291cmNlOiBzdHJpbmc7XG4gIC8qKiBQYXJzZWQgdG9rZW4gc3RyZWFtICovXG4gIHRva2VuczogVG9rZW5bXTtcbiAgLyoqIFNldHRlciB0byB3cml0ZSBiYWNrIGEgcmVzb2x2ZWQgdmFsdWUgaW50byB0aGUgb3JpZ2luYWwgYHJvb3RgIG9iamVjdCAqL1xuICBzZXQ6ICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZDtcbn1cblxuZXhwb3J0IHR5cGUgRmllbGRQcmVkaWNhdGUgPSAoZmllbGQ6IHN0cmluZykgPT4gYm9vbGVhbjtcblxuLyoqXG4gKiBWaXNpdCBldmVyeSB0ZW1wbGF0YWJsZSBzdHJpbmcgbGVhZiB1bmRlciBgcm9vdGAuIENhbGxzIGBoYW5kbGVyKGZpZWxkLCBzb3VyY2UpYFxuICogZm9yIGVhY2ggc3RyaW5nIHdob3NlIGZpZWxkIHBhdGggc2F0aXNmaWVzIGBpc1RlbXBsYXRhYmxlYCBhbmQgY29udGFpbnMgYHt7YC5cbiAqIERvZXMgTk9UIHRva2VuaXplIOKAlCBjYWxsZXJzIGRlY2lkZSB3aGV0aGVyIHRvIHRocm93IG9yIGNvbGxlY3QgZXJyb3JzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmlzaXRTdHJpbmdzKFxuICByb290OiB1bmtub3duLFxuICBpc1RlbXBsYXRhYmxlOiBGaWVsZFByZWRpY2F0ZSxcbiAgaGFuZGxlcjogKGZpZWxkOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKSA9PiB2b2lkLFxuKTogdm9pZCB7XG4gIHN0ZXAocm9vdCwgJycsIGlzVGVtcGxhdGFibGUsIGhhbmRsZXIpO1xufVxuXG5mdW5jdGlvbiBzdGVwKFxuICBub2RlOiB1bmtub3duLFxuICBmaWVsZDogc3RyaW5nLFxuICBpc1RlbXBsYXRhYmxlOiBGaWVsZFByZWRpY2F0ZSxcbiAgaGFuZGxlcjogKGZpZWxkOiBzdHJpbmcsIHNvdXJjZTogc3RyaW5nKSA9PiB2b2lkLFxuKTogdm9pZCB7XG4gIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgbm9kZS5mb3JFYWNoKChjaGlsZCwgaWR4KSA9PiBzdGVwKGNoaWxkLCBgJHtmaWVsZH1bJHtpZHh9XWAsIGlzVGVtcGxhdGFibGUsIGhhbmRsZXIpKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKG5vZGUgIT09IG51bGwgJiYgdHlwZW9mIG5vZGUgPT09ICdvYmplY3QnKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCBjaGlsZF0gb2YgT2JqZWN0LmVudHJpZXMobm9kZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikpIHtcbiAgICAgIHN0ZXAoY2hpbGQsIGZpZWxkID8gYCR7ZmllbGR9LiR7a2V5fWAgOiBrZXksIGlzVGVtcGxhdGFibGUsIGhhbmRsZXIpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHR5cGVvZiBub2RlID09PSAnc3RyaW5nJyAmJiBpc1RlbXBsYXRhYmxlKGZpZWxkKSAmJiBoYXNUZW1wbGF0ZShub2RlKSkge1xuICAgIGhhbmRsZXIoZmllbGQsIG5vZGUpO1xuICB9XG59XG5cbi8qKlxuICogV2FsayBhbGwgdGVtcGxhdGFibGUgc3RyaW5nIGZpZWxkcyB1bmRlciBgcm9vdGAsIHJldHVybmluZyBvbmUgZW50cnkgcGVyXG4gKiB0ZW1wbGF0ZWQgZmllbGQgd2l0aCBhIGJvdW5kIGBzZXQoKWAgdGhhdCBtdXRhdGVzIGByb290YCBpbiBwbGFjZS5cbiAqIFRva2VuaXphdGlvbiBoYXBwZW5zIGVhZ2VybHkgaGVyZSDigJQgcGFyc2UgZXJyb3JzIHRocm93LlxuICovXG5leHBvcnQgZnVuY3Rpb24gd2Fsa0FuZEJpbmQ8VCBleHRlbmRzIG9iamVjdD4oXG4gIHJvb3Q6IFQsXG4gIGlzVGVtcGxhdGFibGU6IEZpZWxkUHJlZGljYXRlLFxuKTogV2Fsa0VudHJ5W10ge1xuICBjb25zdCBlbnRyaWVzOiBXYWxrRW50cnlbXSA9IFtdO1xuICB2aXNpdFN0cmluZ3Mocm9vdCwgaXNUZW1wbGF0YWJsZSwgKGZpZWxkLCBzb3VyY2UpID0+IHtcbiAgICBjb25zdCB0b2tlbnMgPSB0b2tlbml6ZShzb3VyY2UpO1xuICAgIGlmICghdG9rZW5zLnNvbWUodCA9PiB0LmtpbmQgPT09ICdleHByJykpIHJldHVybjtcbiAgICBlbnRyaWVzLnB1c2goe1xuICAgICAgZmllbGQsXG4gICAgICBzb3VyY2UsXG4gICAgICB0b2tlbnMsXG4gICAgICBzZXQ6ICh2YWx1ZTogdW5rbm93bikgPT4gd3JpdGVGaWVsZChyb290LCBwYXJzZUZpZWxkUGF0aChmaWVsZCksIHZhbHVlKSxcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBlbnRyaWVzO1xufVxuXG5mdW5jdGlvbiBwYXJzZUZpZWxkUGF0aChmaWVsZDogc3RyaW5nKTogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiB7XG4gIGNvbnN0IHBhcnRzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+ID0gW107XG4gIGNvbnN0IHJlID0gLyhbXi5cXFtcXF1dKyl8XFxbKFxcZCspXFxdL2c7XG4gIGxldCBtOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsO1xuICB3aGlsZSAoKG0gPSByZS5leGVjKGZpZWxkKSkgIT09IG51bGwpIHtcbiAgICBpZiAobVsxXSAhPT0gdW5kZWZpbmVkKSBwYXJ0cy5wdXNoKG1bMV0pO1xuICAgIGVsc2UgaWYgKG1bMl0gIT09IHVuZGVmaW5lZCkgcGFydHMucHVzaChOdW1iZXIobVsyXSkpO1xuICB9XG4gIHJldHVybiBwYXJ0cztcbn1cblxuZnVuY3Rpb24gd3JpdGVGaWVsZChyb290OiB1bmtub3duLCBwYXJ0czogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiwgdmFsdWU6IHVua25vd24pOiB2b2lkIHtcbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICBsZXQgY3VyOiB1bmtub3duID0gcm9vdDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICBpZiAoY3VyID09IG51bGwgfHwgdHlwZW9mIGN1ciAhPT0gJ29iamVjdCcpIHJldHVybjtcbiAgICBjdXIgPSAoY3VyIGFzIFJlY29yZDxzdHJpbmcgfCBudW1iZXIsIHVua25vd24+KVtwYXJ0c1tpXSFdO1xuICB9XG4gIGlmIChjdXIgPT0gbnVsbCB8fCB0eXBlb2YgY3VyICE9PSAnb2JqZWN0JykgcmV0dXJuO1xuICAoY3VyIGFzIFJlY29yZDxzdHJpbmcgfCBudW1iZXIsIHVua25vd24+KVtwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSFdID0gdmFsdWU7XG59XG4iXX0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Fsa2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RlbXBsYXRlL3dhbGtlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFjLE1BQU0sZ0JBQWdCLENBQUM7QUFlbkU7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQzFCLElBQWEsRUFDYixhQUE2QixFQUM3QixPQUFnRDtJQUVoRCxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVELFNBQVMsSUFBSSxDQUNYLElBQWEsRUFDYixLQUFhLEVBQ2IsYUFBNkIsRUFDN0IsT0FBZ0Q7SUFFaEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxLQUFLLElBQUksR0FBRyxHQUFHLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdEYsT0FBTztJQUNULENBQUM7SUFDRCxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBK0IsQ0FBQyxFQUFFLENBQUM7WUFDM0UsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFDRCxPQUFPO0lBQ1QsQ0FBQztJQUNELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUMxRSxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZCLENBQUM7QUFDSCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQ3pCLElBQU8sRUFDUCxhQUE2QjtJQUU3QixNQUFNLE9BQU8sR0FBZ0IsRUFBRSxDQUFDO0lBQ2hDLFlBQVksQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ2xELE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDO1lBQUUsT0FBTztRQUNqRCxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ1gsS0FBSztZQUNMLE1BQU07WUFDTixNQUFNO1lBQ04sR0FBRyxFQUFFLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUM7U0FDeEUsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQUMsS0FBYTtJQUNuQyxNQUFNLEtBQUssR0FBMkIsRUFBRSxDQUFDO0lBQ3pDLE1BQU0sRUFBRSxHQUFHLHdCQUF3QixDQUFDO0lBQ3BDLElBQUksQ0FBeUIsQ0FBQztJQUM5QixPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTO1lBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNwQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxTQUFTO1lBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsSUFBYSxFQUFFLEtBQTZCLEVBQUUsS0FBYztJQUM5RSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU87SUFDL0IsSUFBSSxHQUFHLEdBQVksSUFBSSxDQUFDO0lBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzFDLElBQUksR0FBRyxJQUFJLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1lBQUUsT0FBTztRQUNuRCxHQUFHLEdBQUksR0FBd0MsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ0QsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFBRSxPQUFPO0lBQ2xELEdBQXdDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDOUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAyMDI2IFBpcGVsaW5lIEJ1aWxkZXIgQ29udHJpYnV0b3JzXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgeyBoYXNUZW1wbGF0ZSwgdG9rZW5pemUsIHR5cGUgVG9rZW4gfSBmcm9tICcuL3Rva2VuaXplci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2Fsa0VudHJ5IHtcbiAgLyoqIERvdHRlZCBwYXRoIHRvIHRoZSBmaWVsZCBpbnNpZGUgdGhlIGRvY3VtZW50LCBlLmcuICdjb21tYW5kc1szXScgb3IgJ2Vudi5TVEFHRScgKi9cbiAgZmllbGQ6IHN0cmluZztcbiAgLyoqIFJhdyBzb3VyY2Ugc3RyaW5nIGNvbnRhaW5pbmcgdGVtcGxhdGUgdG9rZW5zICovXG4gIHNvdXJjZTogc3RyaW5nO1xuICAvKiogUGFyc2VkIHRva2VuIHN0cmVhbSAqL1xuICB0b2tlbnM6IFRva2VuW107XG4gIC8qKiBTZXR0ZXIgdG8gd3JpdGUgYmFjayBhIHJlc29sdmVkIHZhbHVlIGludG8gdGhlIG9yaWdpbmFsIGByb290YCBvYmplY3QgKi9cbiAgc2V0OiAodmFsdWU6IHVua25vd24pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCB0eXBlIEZpZWxkUHJlZGljYXRlID0gKGZpZWxkOiBzdHJpbmcpID0+IGJvb2xlYW47XG5cbi8qKlxuICogVmlzaXQgZXZlcnkgdGVtcGxhdGFibGUgc3RyaW5nIGxlYWYgdW5kZXIgYHJvb3RgLiBDYWxscyBgaGFuZGxlcihmaWVsZCwgc291cmNlKWBcbiAqIGZvciBlYWNoIHN0cmluZyB3aG9zZSBmaWVsZCBwYXRoIHNhdGlzZmllcyBgaXNUZW1wbGF0YWJsZWAgYW5kIGNvbnRhaW5zIGB7e2AuXG4gKiBEb2VzIE5PVCB0b2tlbml6ZSDigJQgY2FsbGVycyBkZWNpZGUgd2hldGhlciB0byB0aHJvdyBvciBjb2xsZWN0IGVycm9ycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZpc2l0U3RyaW5ncyhcbiAgcm9vdDogdW5rbm93bixcbiAgaXNUZW1wbGF0YWJsZTogRmllbGRQcmVkaWNhdGUsXG4gIGhhbmRsZXI6IChmaWVsZDogc3RyaW5nLCBzb3VyY2U6IHN0cmluZykgPT4gdm9pZCxcbik6IHZvaWQge1xuICBzdGVwKHJvb3QsICcnLCBpc1RlbXBsYXRhYmxlLCBoYW5kbGVyKTtcbn1cblxuZnVuY3Rpb24gc3RlcChcbiAgbm9kZTogdW5rbm93bixcbiAgZmllbGQ6IHN0cmluZyxcbiAgaXNUZW1wbGF0YWJsZTogRmllbGRQcmVkaWNhdGUsXG4gIGhhbmRsZXI6IChmaWVsZDogc3RyaW5nLCBzb3VyY2U6IHN0cmluZykgPT4gdm9pZCxcbik6IHZvaWQge1xuICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSkge1xuICAgIG5vZGUuZm9yRWFjaCgoY2hpbGQsIGlkeCkgPT4gc3RlcChjaGlsZCwgYCR7ZmllbGR9WyR7aWR4fV1gLCBpc1RlbXBsYXRhYmxlLCBoYW5kbGVyKSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChub2RlICE9PSBudWxsICYmIHR5cGVvZiBub2RlID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAoY29uc3QgW2tleSwgY2hpbGRdIG9mIE9iamVjdC5lbnRyaWVzKG5vZGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pKSB7XG4gICAgICBzdGVwKGNoaWxkLCBmaWVsZCA/IGAke2ZpZWxkfS4ke2tleX1gIDoga2V5LCBpc1RlbXBsYXRhYmxlLCBoYW5kbGVyKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ3N0cmluZycgJiYgaXNUZW1wbGF0YWJsZShmaWVsZCkgJiYgaGFzVGVtcGxhdGUobm9kZSkpIHtcbiAgICBoYW5kbGVyKGZpZWxkLCBub2RlKTtcbiAgfVxufVxuXG4vKipcbiAqIFdhbGsgYWxsIHRlbXBsYXRhYmxlIHN0cmluZyBmaWVsZHMgdW5kZXIgYHJvb3RgLCByZXR1cm5pbmcgb25lIGVudHJ5IHBlclxuICogdGVtcGxhdGVkIGZpZWxkIHdpdGggYSBib3VuZCBgc2V0KClgIHRoYXQgbXV0YXRlcyBgcm9vdGAgaW4gcGxhY2UuXG4gKiBUb2tlbml6YXRpb24gaGFwcGVucyBlYWdlcmx5IGhlcmUg4oCUIHBhcnNlIGVycm9ycyB0aHJvdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdhbGtBbmRCaW5kPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICByb290OiBULFxuICBpc1RlbXBsYXRhYmxlOiBGaWVsZFByZWRpY2F0ZSxcbik6IFdhbGtFbnRyeVtdIHtcbiAgY29uc3QgZW50cmllczogV2Fsa0VudHJ5W10gPSBbXTtcbiAgdmlzaXRTdHJpbmdzKHJvb3QsIGlzVGVtcGxhdGFibGUsIChmaWVsZCwgc291cmNlKSA9PiB7XG4gICAgY29uc3QgdG9rZW5zID0gdG9rZW5pemUoc291cmNlKTtcbiAgICBpZiAoIXRva2Vucy5zb21lKHQgPT4gdC5raW5kID09PSAnZXhwcicpKSByZXR1cm47XG4gICAgZW50cmllcy5wdXNoKHtcbiAgICAgIGZpZWxkLFxuICAgICAgc291cmNlLFxuICAgICAgdG9rZW5zLFxuICAgICAgc2V0OiAodmFsdWU6IHVua25vd24pID0+IHdyaXRlRmllbGQocm9vdCwgcGFyc2VGaWVsZFBhdGgoZmllbGQpLCB2YWx1ZSksXG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gZW50cmllcztcbn1cblxuZnVuY3Rpb24gcGFyc2VGaWVsZFBhdGgoZmllbGQ6IHN0cmluZyk6IEFycmF5PHN0cmluZyB8IG51bWJlcj4ge1xuICBjb25zdCBwYXJ0czogQXJyYXk8c3RyaW5nIHwgbnVtYmVyPiA9IFtdO1xuICBjb25zdCByZSA9IC8oW14uXFxbXFxdXSspfFxcWyhcXGQrKVxcXS9nO1xuICBsZXQgbTogUmVnRXhwRXhlY0FycmF5IHwgbnVsbDtcbiAgd2hpbGUgKChtID0gcmUuZXhlYyhmaWVsZCkpICE9PSBudWxsKSB7XG4gICAgaWYgKG1bMV0gIT09IHVuZGVmaW5lZCkgcGFydHMucHVzaChtWzFdKTtcbiAgICBlbHNlIGlmIChtWzJdICE9PSB1bmRlZmluZWQpIHBhcnRzLnB1c2goTnVtYmVyKG1bMl0pKTtcbiAgfVxuICByZXR1cm4gcGFydHM7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRmllbGQocm9vdDogdW5rbm93biwgcGFydHM6IEFycmF5PHN0cmluZyB8IG51bWJlcj4sIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XG4gIGlmIChwYXJ0cy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgbGV0IGN1cjogdW5rbm93biA9IHJvb3Q7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgaWYgKGN1ciA9PSBudWxsIHx8IHR5cGVvZiBjdXIgIT09ICdvYmplY3QnKSByZXR1cm47XG4gICAgY3VyID0gKGN1ciBhcyBSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyLCB1bmtub3duPilbcGFydHNbaV0hXTtcbiAgfVxuICBpZiAoY3VyID09IG51bGwgfHwgdHlwZW9mIGN1ciAhPT0gJ29iamVjdCcpIHJldHVybjtcbiAgKGN1ciBhcyBSZWNvcmQ8c3RyaW5nIHwgbnVtYmVyLCB1bmtub3duPilbcGFydHNbcGFydHMubGVuZ3RoIC0gMV0hXSA9IHZhbHVlO1xufVxuIl19
package/package.json CHANGED
@@ -6,32 +6,31 @@
6
6
  "url": "git+https://github.com/mwashburn160/pipeline-builder.git"
7
7
  },
8
8
  "devDependencies": {
9
- "@aws-sdk/client-secrets-manager": "3.997.0",
9
+ "@aws-sdk/client-secrets-manager": "3.1064.0",
10
10
  "@jest/globals": "30.2.0",
11
11
  "@stylistic/eslint-plugin": "^2",
12
- "@types/aws-lambda": "8.10.160",
13
- "@types/jest": "30.0.0",
12
+ "@types/aws-lambda": "8.10.162",
14
13
  "@types/jsonwebtoken": "9.0.10",
15
- "@types/node": "25.3.0",
14
+ "@types/node": "25.9.2",
16
15
  "@typescript-eslint/eslint-plugin": "^8",
17
16
  "@typescript-eslint/parser": "^8",
18
17
  "copyfiles": "2.4.1",
19
18
  "eslint": "^9",
20
19
  "eslint-import-resolver-typescript": "^4.4.4",
21
20
  "eslint-plugin-import": "^2.32.0",
22
- "jest": "30.0.0",
21
+ "jest": "30.4.2",
23
22
  "jest-junit": "^17",
24
23
  "ts-jest": "^29",
25
- "typescript": "5.9.3"
24
+ "typescript": "6.0.3"
26
25
  },
27
26
  "dependencies": {
28
- "aws-cdk-lib": "2.257.0",
29
- "axios": "1.13.5",
30
- "constructs": "10.5.1",
27
+ "aws-cdk-lib": "2.258.1",
28
+ "axios": "1.17.0",
29
+ "constructs": "10.6.0",
31
30
  "jsonwebtoken": "9.0.3",
32
- "uuid": "13.0.0",
33
- "@pipeline-builder/api-core": "3.4.63",
34
- "@pipeline-builder/pipeline-data": "3.4.64"
31
+ "uuid": "14.0.0",
32
+ "@pipeline-builder/api-core": "3.4.64",
33
+ "@pipeline-builder/pipeline-data": "3.4.65"
35
34
  },
36
35
  "keywords": [
37
36
  "aws",
@@ -75,7 +74,7 @@
75
74
  "access": "public",
76
75
  "registry": "https://registry.npmjs.org/"
77
76
  },
78
- "version": "3.4.69",
77
+ "version": "3.4.70",
79
78
  "bugs": {
80
79
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
81
80
  },
@@ -117,6 +116,7 @@
117
116
  "^.+\\.[t]sx?$": [
118
117
  "ts-jest",
119
118
  {
119
+ "useESM": true,
120
120
  "tsconfig": "tsconfig.dev.json",
121
121
  "diagnostics": {
122
122
  "ignoreCodes": [
@@ -126,12 +126,18 @@
126
126
  }
127
127
  ]
128
128
  },
129
+ "extensionsToTreatAsEsm": [
130
+ ".ts",
131
+ ".tsx"
132
+ ],
129
133
  "moduleNameMapper": {
130
- "^uuid$": "<rootDir>/../../jest-uuid-stub.js"
134
+ "^uuid$": "<rootDir>/../../jest-uuid-stub.js",
135
+ "^(\\.{1,2}/.*)\\.js$": "$1"
131
136
  },
132
137
  "maxWorkers": 1
133
138
  },
134
139
  "types": "lib/index.d.ts",
140
+ "type": "module",
135
141
  "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"pnpm dlx projen\".",
136
142
  "scripts": {
137
143
  "build": "pnpm dlx projen build",