@pipeline-builder/pipeline-manager 4.1.18 → 4.1.20

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":"plugin-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/plugin-resolver.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AA6F5C;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA4ClC"}
1
+ {"version":3,"file":"plugin-resolver.d.ts","sourceRoot":"","sources":["../../src/utils/plugin-resolver.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAsG5C;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA+ClC"}
@@ -60,16 +60,18 @@ function collectPluginRefs(props) {
60
60
  }
61
61
  /**
62
62
  * Lookup refusals that must STOP the synth rather than fall back to
63
- * deploy-time resolution: an image whose signature doesn't verify, and a
64
- * listing the org can't use (not installed, blocked by its policy, yanked or
65
- * suspended). Falling back would quietly turn
66
- * each into an unresolved step that fails at run time instead of now.
63
+ * deploy-time resolution: an image whose signature doesn't verify, a listing
64
+ * the org can't use (not installed, blocked by its policy, yanked or
65
+ * suspended), and — with `PLUGIN_BLOCK_ON_NEW_CRITICAL` on — a pin to a
66
+ * version the nightly rescan flagged. Falling back would quietly turn each into
67
+ * an unresolved step that fails at run time instead of now.
67
68
  */
68
69
  const FATAL_LOOKUP_CODES = [
69
70
  ErrorCode.IMAGE_VERIFICATION_FAILED,
70
71
  ErrorCode.PLUGIN_NOT_INSTALLED,
71
72
  ErrorCode.PLUGIN_BLOCKED_BY_POLICY,
72
73
  ErrorCode.PLUGIN_UNAVAILABLE,
74
+ ErrorCode.PLUGIN_VERSION_VULN_BLOCKED,
73
75
  ];
74
76
  /** The error code of a plugin service answer, when it is one of {@link FATAL_LOOKUP_CODES}. */
75
77
  function fatalLookupCode(err) {
@@ -77,6 +79,12 @@ function fatalLookupCode(err) {
77
79
  const code = data && typeof data === 'object' ? data.code : undefined;
78
80
  return typeof code === 'string' && FATAL_LOOKUP_CODES.includes(code) ? code : null;
79
81
  }
82
+ /** The plugin service's own refusal message, when the answer carries one. */
83
+ function serviceMessage(err) {
84
+ const data = err?.response?.data;
85
+ const message = data && typeof data === 'object' ? data.message : undefined;
86
+ return typeof message === 'string' && message.length > 0 ? message : null;
87
+ }
80
88
  /**
81
89
  * Pre-resolve plugins by calling the same `POST /api/plugins/lookup` endpoint
82
90
  * the deploy-time custom resource Lambda uses. Returning the full Plugin
@@ -130,6 +138,10 @@ export async function resolvePluginsForProps(client, props) {
130
138
  if (fatal === ErrorCode.IMAGE_VERIFICATION_FAILED) {
131
139
  throw new Error(`Plugin "${label}" image failed signature verification: ${errorMessage(err)}`);
132
140
  }
141
+ // The block-mode refusal already names the version, the CVEs and the fix:
142
+ // print it as the platform wrote it.
143
+ if (fatal === ErrorCode.PLUGIN_VERSION_VULN_BLOCKED)
144
+ throw new Error(serviceMessage(err) ?? errorMessage(err));
133
145
  if (fatal)
134
146
  throw new Error(`Plugin "${label}" can't be used (${fatal}): ${errorMessage(err)}`);
135
147
  const msg = errorMessage(err);
@@ -138,4 +150,4 @@ export async function resolvePluginsForProps(client, props) {
138
150
  }));
139
151
  return resolved;
140
152
  }
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BsdWdpbi1yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFXakQ7Ozs7R0FJRztBQUNILFNBQVMsUUFBUSxDQUFDLEdBQWM7SUFDOUIsT0FBTyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLGlCQUFpQixDQUFDLEtBQThCO0lBQ3ZELE1BQU0sSUFBSSxHQUFnQixFQUFFLENBQUM7SUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFFdkMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFZLEVBQVEsRUFBRTtRQUNsQyxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7WUFBRSxPQUFPO1FBQzVDLE1BQU0sQ0FBQyxHQUFHLEdBQWdCLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUNwQixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsd0VBQXdFO1FBQ3hFLDJFQUEyRTtRQUMzRSxNQUFNLElBQUksR0FBSSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQTJCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM5RCxNQUFNLE1BQU0sR0FBRyxD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R0FBRyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QixZQUFZLENBQUMsV0FBVyxLQUFLLDRCQUE0QixHQUFHLDRDQUE0QyxDQUFDLENBQUM7UUFDNUcsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IEVycm9yQ29kZSwgZXJyb3JNZXNzYWdlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgcGx1Z2luQXJ0aWZhY3RBbGlhcywgcGx1Z2luTG9va3VwRmlsdGVyLCB1bndyYXBMb29rdXAgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1jb3JlJztcbmltcG9ydCB7IEFwaUNsaWVudCB9IGZyb20gJy4vYXBpLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBwcmludFdhcm5pbmcgfSBmcm9tICcuL291dHB1dC11dGlscy5qcyc7XG5cbi8qKiBNaW5pbWFsIHBsdWdpbiByZWZlcmVuY2Ugc2hhcGUg4oCUIG1hdGNoZXMgUGx1Z2luT3B0aW9ucyBmcm9tIHBpcGVsaW5lLWNvcmUuICovXG5pbnRlcmZhY2UgUGx1Z2luUmVmIHtcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogUHVibGlzaGVyIGhhbmRsZSBvZiBhbiBpbnN0YWxsZWQgbGlzdGluZy4gKi9cbiAgcHVibGlzaGVyPzogc3RyaW5nO1xuICBhbGlhcz86IHN0cmluZztcbiAgZmlsdGVyPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKlxuICogQ2FjaGUga2V5IG1hdGNoaW5nIGBQbHVnaW5Mb29rdXAubm9ybWFsaXplKClgOiB0aGUgZXhwbGljaXQgYWxpYXMgd2hlbiBzZXQsXG4gKiBvdGhlcndpc2UgYFs8cHVibGlzaGVyPi1dPG5hbWU+LWFsaWFzYCDigJQgcGlwZWxpbmUtY29yZSdzXG4gKiBgcGx1Z2luQXJ0aWZhY3RBbGlhc2AsIHRoZSBvbmUgcnVsZSBldmVyeSBjb25zdW1lciBvZiB0aGlzIG1hcCB1c2VzLlxuICovXG5mdW5jdGlvbiBjYWNoZUtleShyZWY6IFBsdWdpblJlZik6IHN0cmluZyB7XG4gIHJldHVybiBwbHVnaW5BcnRpZmFjdEFsaWFzKHJlZik7XG59XG5cbi8qKlxuICogV2FsayB0aGUgcGlwZWxpbmUgcHJvcHMgdHJlZSB0byBjb2xsZWN0IGV2ZXJ5IHBsdWdpbiByZWZlcmVuY2UuIFBsdWdpbnNcbiAqIGFwcGVhciBhdCBgc3ludGgucGx1Z2luYCBhbmQgYXQgYHN0YWdlc1tdLnN0ZXBzW10ucGx1Z2luYC4gRW50cmllcyBhcmVcbiAqIGRlLWR1cGxpY2F0ZWQgYnkgYGNhY2hlS2V5KClgIOKAlCB0aGUgc2FtZSBrZXkgYFBsdWdpbkxvb2t1cC5wbHVnaW4oKWAgdXNlcyxcbiAqIHNvIHRoZSByZXNvbHZlZC1wbHVnaW5zIG1hcCBsb29rdXBzIG1hdGNoIGRvd25zdHJlYW0uXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RQbHVnaW5SZWZzKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFBsdWdpblJlZltdIHtcbiAgY29uc3QgcmVmczogUGx1Z2luUmVmW10gPSBbXTtcbiAgY29uc3Qgc2VlbiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgY29uc3QgcHVzaCA9IChyYXc6IHVua25vd24pOiB2b2lkID0+IHtcbiAgICBpZiAoIXJhdyB8fCB0eXBlb2YgcmF3ICE9PSAnb2JqZWN0JykgcmV0dXJuO1xuICAgIGNvbnN0IHIgPSByYXcgYXMgUGx1Z2luUmVmO1xuICAgIGlmICghci5uYW1lKSByZXR1cm47XG4gICAgY29uc3Qga2V5ID0gY2FjaGVLZXkocik7XG4gICAgLy8gVGhlIG5hbWUgdGhlIGxvb2t1cCB3aWxsIFRBUkdFVCDigJQgYW4gZXhwbGljaXQgYGZpbHRlci5uYW1lYCB3aW5zIChzZWVcbiAgICAvLyBiZWxvdyksIHNvIHR3byByZWZzIHRoYXQgcmVzb2x2ZSB0byB0aGUgc2FtZSBwbHVnaW4gYXJlIG5vdCBhIGNvbGxpc2lvbi5cbiAgICBjb25zdCBuYW1lID0gKHIuZmlsdGVyPy5uYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz8gci5uYW1lO1xuICAgIGNvbnN0IHRhcmdldCA9IHIucHVibGlzaGVyID8gYCR7ci5wdWJsaXNoZXJ9LyR7bmFtZX1gIDogbmFtZTtcbiAgICBjb25zdCBob2xkZXIgPSBzZWVuLmdldChrZXkpO1xuICAgIGlmIChob2xkZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gT25lIGFsaWFzIGNhbiBvbmx5IGV2ZXIgbWVhbiBvbmUgcGx1Z2luLiBEZWR1cGxpY2F0aW5nIG9uIHRoZSBhbGlhc1xuICAgICAgLy8gYWxvbmUga2VwdCB0aGUgRklSU1QgcGx1Z2luIGFuZCBzaWxlbnRseSBkcm9wcGVkIHRoZSBzZWNvbmQsIHNvIGEgc3RlcFxuICAgICAgLy8gZGVjbGFyaW5nIGB7IG5hbWU6ICdtYXZlbi1idWlsZCcsIGFsaWFzOiAnYnVpbGQnIH1gIGFmdGVyIGFub3RoZXJcbiAgICAgIC8vIGRlY2xhcmluZyBgeyBuYW1lOiAnbm9kZWpzLWJ1aWxkJywgYWxpYXM6ICdidWlsZCcgfWAgcmFuIG5vZGVqcy1idWlsZCdzXG4gICAgICAvLyBpbWFnZSBhbmQgY29tbWFuZHMg4oCUIG5vIGVycm9yLCBqdXN0IHRoZSB3cm9uZyBidWlsZC5cbiAgICAgIGlmIChob2xkZXIgIT09IHRhcmdldCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFBsdWdpbiBhbGlhcyBcIiR7a2V5fVwiIGlzIHVzZWQgZm9yIHR3byBkaWZmZXJlbnQgcGx1Z2lucyAoXCIke2hvbGRlcn1cIiBhbmQgXCIke3RhcmdldH1cIikuIGBcbiAgICAgICAgICArICdHaXZlIGVhY2ggcGx1Z2luIGl0cyBvd24gYWxpYXMuJyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2Vlbi5zZXQoa2V5LCB0YXJnZXQpO1xuICAgIHJlZnMucHVzaChyKTtcbiAgfTtcblxuICBjb25zdCBzeW50aCA9IHByb3BzLnN5bnRoIGFzIHsgcGx1Z2luPzogdW5rbm93biB9IHwgdW5kZWZpbmVkO1xuICBwdXNoKHN5bnRoPy5wbHVnaW4pO1xuXG4gIGNvbnN0IHN0YWdlcyA9IHByb3BzLnN0YWdlcyBhcyBBcnJheTx7IHN0ZXBzPzogQXJyYXk8eyBwbHVnaW4/OiB1bmtub3duIH0+IH0+IHwgdW5kZWZpbmVkO1xuICBmb3IgKGNvbnN0IHN0YWdlIG9mIHN0YWdlcyA/PyBbXSkge1xuICAgIGZvciAoY29uc3Qgc3RlcCBvZiBzdGFnZS5zdGVwcyA/PyBbXSkge1xuICAgICAgcHVzaChzdGVwLnBsdWdpbik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlZnM7XG59XG5cbi8qKlxuICogTG9va3VwIHJlZnVzYWxzIHRoYXQgbXVzdCBTVE9QIHRoZSBzeW50aCByYXRoZXIgdGhhbiBmYWxsIGJhY2sgdG9cbiAqIGRlcGxveS10aW1lIHJlc29sdXRpb246IGFuIGltYWdlIHdob3NlIHNpZ25hdHVyZSBkb2Vzbid0IHZlcmlmeSwgYW5kIGFcbiAqIGxpc3RpbmcgdGhlIG9yZyBjYW4ndCB1c2UgKG5vdCBpbnN0YWxsZWQsIGJsb2NrZWQgYnkgaXRzIHBvbGljeSwgeWFua2VkIG9yXG4gKiBzdXNwZW5kZWQpLiBGYWxsaW5nIGJhY2sgd291bGQgcXVpZXRseSB0dXJuXG4gKiBlYWNoIGludG8gYW4gdW5yZXNvbHZlZCBzdGVwIHRoYXQgZmFpbHMgYXQgcnVuIHRpbWUgaW5zdGVhZCBvZiBub3cuXG4gKi9cbmNvbnN0IEZBVEFMX0xPT0tVUF9DT0RFUzogcmVhZG9ubHkgc3RyaW5nW10gPSBbXG4gIEVycm9yQ29kZS5JTUFHRV9WRVJJRklDQVRJT05fRkFJTEVELFxuICBFcnJvckNvZGUuUExVR0lOX05PVF9JTlNUQUxMRUQsXG4gIEVycm9yQ29kZS5QTFVHSU5fQkxPQ0tFRF9CWV9QT0xJQ1ksXG4gIEVycm9yQ29kZS5QTFVHSU5fVU5BVkFJTEFCTEUsXG5dO1xuXG4vKiogVGhlIGVycm9yIGNvZGUgb2YgYSBwbHVnaW4gc2VydmljZSBhbnN3ZXIsIHdoZW4gaXQgaXMgb25lIG9mIHtAbGluayBGQVRBTF9MT09LVVBfQ09ERVN9LiAqL1xuZnVuY3Rpb24gZmF0YWxMb29rdXBDb2RlKGVycjogdW5rbm93bik6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBkYXRhID0gKGVyciBhcyB7IHJlc3BvbnNlPzogeyBkYXRhPzogdW5rbm93biB9IH0gfCB1bmRlZmluZWQpPy5yZXNwb25zZT8uZGF0YTtcbiAgY29uc3QgY29kZSA9IGRhdGEgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnID8gKGRhdGEgYXMgeyBjb2RlPzogdW5rbm93biB9KS5jb2RlIDogdW5kZWZpbmVkO1xuICByZXR1cm4gdHlwZW9mIGNvZGUgPT09ICdzdHJpbmcnICYmIEZBVEFMX0xPT0tVUF9DT0RFUy5pbmNsdWRlcyhjb2RlKSA/IGNvZGUgOiBudWxsO1xufVxuXG4vKipcbiAqIFByZS1yZXNvbHZlIHBsdWdpbnMgYnkgY2FsbGluZyB0aGUgc2FtZSBgUE9TVCAvYXBpL3BsdWdpbnMvbG9va3VwYCBlbmRwb2ludFxuICogdGhlIGRlcGxveS10aW1lIGN1c3RvbSByZXNvdXJjZSBMYW1iZGEgdXNlcy4gUmV0dXJuaW5nIHRoZSBmdWxsIFBsdWdpblxuICogcmVjb3JkIGF0IHN5bnRoIHRpbWUgaXMgd2hhdCBhbGxvd3MgdGhlIHJlc3VsdGluZyBDRk4gdGVtcGxhdGUgdG8gc2hpcFxuICogd2l0aCByZWFsIENvZGVCdWlsZCBpbWFnZSBVUklzIChgPGhvc3Q+Lzxucz4vPG5hbWU+Ojx2ZXJzaW9uPmApIHJhdGhlciB0aGFuXG4gKiB0aGUgYGF3cy9jb2RlYnVpbGQvc3RhbmRhcmQ6Ny4wYCBmYWxsYmFjayB0aGF0IHRoZSBzeW50aC10aW1lIHRva2VuIHBhdGhcbiAqIGZvcmNlcy5cbiAqXG4gKiBGYWlsdXJlcyBhcmUgbm9uLWZhdGFsOiBhIG1pc3NpbmcgcGx1Z2luIG9yIHVucmVhY2hhYmxlIEFQSSBsb2dzIGEgd2FybmluZ1xuICogYW5kIGZhbGxzIHRocm91Z2ggdG8gdGhlIGRlcGxveS10aW1lIGN1c3RvbSByZXNvdXJjZSBwYXRoIHNvIHBhcnRpYWxcbiAqIHBsYXRmb3JtIG91dGFnZXMgZG9uJ3QgYmxvY2sgc3ludGgvZGVwbG95LiBUaGUgZXhjZXB0aW9uIGlzIGFuIGltYWdlIHRoYXRcbiAqIGZhaWxzIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24g4oCUIHRoYXQgYWJvcnRzIHRoZSBzeW50aC5cbiAqXG4gKiBLZXllZCBieSBgYWxpYXMgfHwgbmFtZWAgdG8gbWF0Y2ggYFBsdWdpbkxvb2t1cC5wbHVnaW4oKWAuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXNvbHZlUGx1Z2luc0ZvclByb3BzKFxuICBjbGllbnQ6IEFwaUNsaWVudCxcbiAgcHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICBjb25zdCByZWZzID0gY29sbGVjdFBsdWdpblJlZnMocHJvcHMpO1xuICBpZiAocmVmcy5sZW5ndGggPT09IDApIHJldHVybiB7fTtcblxuICBjb25zdCByZXNvbHZlZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICBhd2FpdCBQcm9taXNlLmFsbChyZWZzLm1hcChhc3luYyAocmVmKSA9PiB7XG4gICAgY29uc3Qga2V5ID0gY2FjaGVLZXkocmVmKTtcbiAgICBjb25zdCBsYWJlbCA9IHJlZi5wdWJsaXNoZXIgPyBgJHtyZWYucHVibGlzaGVyfS8ke3JlZi5uYW1lfWAgOiByZWYubmFtZTtcbiAgICAvLyBUaGUgcGx1Z2luIE5BTUUgbGl2ZXMgb24gdGhlIHJlZiAoYSBzaWJsaW5nIG9mIGBmaWx0ZXJgKSwgTk9UIGluc2lkZSB0aGVcbiAgICAvLyBmaWx0ZXIgb2JqZWN0IOKAlCBidXQgdGhlIGxvb2t1cCBtYXRjaGVzIG9uIHRoZSBmaWx0ZXIuIEEgZmlsdGVyIHdpdGhvdXRcbiAgICAvLyBgbmFtZWAgKGUuZy4gYHt2ZXJzaW9uLCB2aXNpYmlsaXR5LCBpc0FjdGl2ZSwgaXNEZWZhdWx0fWApIG1hdGNoZXMgQU5ZXG4gICAgLy8gcGx1Z2luIHdpdGggdGhvc2UgYXR0cmlidXRlcywgYW5kIHRoZSBlbmRwb2ludCByZXR1cm5zIGFuIGFyYml0cmFyeSBvbmVcbiAgICAvLyAoc2VlbjogYGRvY2tlcmZpbGUtbXVsdGktcHJvdmlkZXJgKS4gVGhhdCBtYWRlIHRoZSBzeW50aCBhbmQgZXZlcnkgc3RlcFxuICAgIC8vIHJlc29sdmUgdG8gdGhlIFdST05HIHBsdWdpbi4gU28gd2hlbiB0aGUgZmlsdGVyIG9taXRzIGBuYW1lYCwgZmFsbCBiYWNrIHRvXG4gICAgLy8gdGhlIHJlZidzIHBsdWdpbiBuYW1lOyBhbiBleHBsaWNpdCBmaWx0ZXIgYG5hbWVgIHN0aWxsIHRha2VzIHByZWNlZGVuY2UuXG4gICAgLy8gU2hhcmVkIHdpdGggdGhlIHBpcGVsaW5lIHNlcnZpY2UncyBjb250cmFjdCBjaGVjayAoc2FtZSBmaWx0ZXIsIHNhbWUgcGx1Z2luKS5cbiAgICBjb25zdCBmaWx0ZXIgPSBwbHVnaW5Mb29rdXBGaWx0ZXIocmVmKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gYXdhaXQgY2xpZW50LnBvc3Q8dW5rbm93bj4oJy9hcGkvcGx1Z2lucy9sb29rdXAnLCB7IGZpbHRlciB9KTtcbiAgICAgIGNvbnN0IHsgcGx1Z2luLCB3YXJuaW5ncyB9ID0gdW53cmFwTG9va3VwKHJlcyk7XG4gICAgICBmb3IgKGNvbnN0IHdhcm5pbmcgb2Ygd2FybmluZ3MpIHtcbiAgICAgICAgcHJpbnRXYXJuaW5nKGBQbHVnaW4gXCIke2xhYmVsfVwiOiAke3dhcm5pbmd9YCk7XG4gICAgICB9XG4gICAgICBpZiAocGx1Z2luKSB7XG4gICAgICAgIHJlc29sdmVkW2tleV0gPSBwbHVnaW47XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcmludFdhcm5pbmcoYFBsdWdpbiBcIiR7bGFiZWx9XCIgbG9va3VwIHJldHVybmVkIG5vIHJlY29yZCDigJQgZmFsbGluZyBiYWNrIHRvIGRlcGxveS10aW1lIHJlc29sdXRpb25gKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIEEgcGx1Z2luIHdob3NlIGltYWdlIHNpZ25hdHVyZSBkb2Vzbid0IHZlcmlmeSwgb3IgYSBsaXN0aW5nIHRoZSBvcmdcbiAgICAgIC8vIGNhbid0IHVzZSwgaXMgTk9UIGFuIG91dGFnZSB0byByaWRlIG91dDogZmFsbGluZyBiYWNrIHdvdWxkIHF1aWV0bHlcbiAgICAgIC8vIHR1cm4gaXQgaW50byBhbiB1bnJlc29sdmVkIHN0ZXAuIFN0b3AuXG4gICAgICBjb25zdCBmYXRhbCA9IGZhdGFsTG9va3VwQ29kZShlcnIpO1xuICAgICAgaWYgKGZhdGFsID09PSBFcnJvckNvZGUuSU1BR0VfVkVSSUZJQ0FUSU9OX0ZBSUxFRCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBsdWdpbiBcIiR7bGFiZWx9XCIgaW1hZ2UgZmFpbGVkIHNpZ25hdHVyZSB2ZXJpZmljYXRpb246ICR7ZXJyb3JNZXNzYWdlKGVycil9YCk7XG4gICAgICB9XG4gICAgICBpZiAoZmF0YWwpIHRocm93IG5ldyBFcnJvcihgUGx1Z2luIFwiJHtsYWJlbH1cIiBjYW4ndCBiZSB1c2VkICgke2ZhdGFsfSk6ICR7ZXJyb3JNZXNzYWdlKGVycil9YCk7XG4gICAgICBjb25zdCBtc2cgPSBlcnJvck1lc3NhZ2UoZXJyKTtcbiAgICAgIHByaW50V2FybmluZyhgUGx1Z2luIFwiJHtsYWJlbH1cIiBwcmUtcmVzb2x1dGlvbiBmYWlsZWQgKCR7bXNnfSkg4oCUIGZhbGxpbmcgYmFjayB0byBkZXBsb3ktdGltZSByZXNvbHV0aW9uYCk7XG4gICAgfVxuICB9KSk7XG5cbiAgcmV0dXJuIHJlc29sdmVkO1xufVxuIl19
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLXJlc29sdmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL3BsdWdpbi1yZXNvbHZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQ0FBK0M7QUFDL0Msc0NBQXNDO0FBRXRDLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFXakQ7Ozs7R0FJRztBQUNILFNBQVMsUUFBUSxDQUFDLEdBQWM7SUFDOUIsT0FBTyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLGlCQUFpQixDQUFDLEtBQThCO0lBQ3ZELE1BQU0sSUFBSSxHQUFnQixFQUFFLENBQUM7SUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFFdkMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFZLEVBQVEsRUFBRTtRQUNsQyxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7WUFBRSxPQUFPO1FBQzVDLE1BQU0sQ0FBQyxHQUFHLEdBQWdCLENBQUM7UUFDM0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQUUsT0FBTztRQUNwQixNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEIsd0VBQXdFO1FBQ3hFLDJFQUEyRTtRQUMzRSxNQUFNLElBQUksR0FBSSxDQUFDLENBQUMsTUFBTSxFQUFFLElBQTJCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM5RCxNQUFNLE1BQU0sR0FBRyxD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QztZQUNiLHNFQUFzRTtZQUN0RSxzRUFBc0U7WUFDdEUseUNBQXlDO1lBQ3pDLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQyxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUMseUJBQXlCLEVBQUUsQ0FBQztnQkFDbEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssMENBQTBDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakcsQ0FBQztZQUNELDBFQUEwRTtZQUMxRSxxQ0FBcUM7WUFDckMsSUFBSSxLQUFLLEtBQUssU0FBUyxDQUFDLDJCQUEyQjtnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvRyxJQUFJLEtBQUs7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLEtBQUssb0JBQW9CLEtBQUssTUFBTSxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9GLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM5QixZQUFZLENBQUMsV0FBVyxLQUFLLDRCQUE0QixHQUFHLDRDQUE0QyxDQUFDLENBQUM7UUFDNUcsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFSixPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjYgUGlwZWxpbmUgQnVpbGRlciBDb250cmlidXRvcnNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cbmltcG9ydCB7IEVycm9yQ29kZSwgZXJyb3JNZXNzYWdlIH0gZnJvbSAnQHBpcGVsaW5lLWJ1aWxkZXIvYXBpLWNvcmUnO1xuaW1wb3J0IHsgcGx1Z2luQXJ0aWZhY3RBbGlhcywgcGx1Z2luTG9va3VwRmlsdGVyLCB1bndyYXBMb29rdXAgfSBmcm9tICdAcGlwZWxpbmUtYnVpbGRlci9waXBlbGluZS1jb3JlJztcbmltcG9ydCB7IEFwaUNsaWVudCB9IGZyb20gJy4vYXBpLWNsaWVudC5qcyc7XG5pbXBvcnQgeyBwcmludFdhcm5pbmcgfSBmcm9tICcuL291dHB1dC11dGlscy5qcyc7XG5cbi8qKiBNaW5pbWFsIHBsdWdpbiByZWZlcmVuY2Ugc2hhcGUg4oCUIG1hdGNoZXMgUGx1Z2luT3B0aW9ucyBmcm9tIHBpcGVsaW5lLWNvcmUuICovXG5pbnRlcmZhY2UgUGx1Z2luUmVmIHtcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogUHVibGlzaGVyIGhhbmRsZSBvZiBhbiBpbnN0YWxsZWQgbGlzdGluZy4gKi9cbiAgcHVibGlzaGVyPzogc3RyaW5nO1xuICBhbGlhcz86IHN0cmluZztcbiAgZmlsdGVyPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKlxuICogQ2FjaGUga2V5IG1hdGNoaW5nIGBQbHVnaW5Mb29rdXAubm9ybWFsaXplKClgOiB0aGUgZXhwbGljaXQgYWxpYXMgd2hlbiBzZXQsXG4gKiBvdGhlcndpc2UgYFs8cHVibGlzaGVyPi1dPG5hbWU+LWFsaWFzYCDigJQgcGlwZWxpbmUtY29yZSdzXG4gKiBgcGx1Z2luQXJ0aWZhY3RBbGlhc2AsIHRoZSBvbmUgcnVsZSBldmVyeSBjb25zdW1lciBvZiB0aGlzIG1hcCB1c2VzLlxuICovXG5mdW5jdGlvbiBjYWNoZUtleShyZWY6IFBsdWdpblJlZik6IHN0cmluZyB7XG4gIHJldHVybiBwbHVnaW5BcnRpZmFjdEFsaWFzKHJlZik7XG59XG5cbi8qKlxuICogV2FsayB0aGUgcGlwZWxpbmUgcHJvcHMgdHJlZSB0byBjb2xsZWN0IGV2ZXJ5IHBsdWdpbiByZWZlcmVuY2UuIFBsdWdpbnNcbiAqIGFwcGVhciBhdCBgc3ludGgucGx1Z2luYCBhbmQgYXQgYHN0YWdlc1tdLnN0ZXBzW10ucGx1Z2luYC4gRW50cmllcyBhcmVcbiAqIGRlLWR1cGxpY2F0ZWQgYnkgYGNhY2hlS2V5KClgIOKAlCB0aGUgc2FtZSBrZXkgYFBsdWdpbkxvb2t1cC5wbHVnaW4oKWAgdXNlcyxcbiAqIHNvIHRoZSByZXNvbHZlZC1wbHVnaW5zIG1hcCBsb29rdXBzIG1hdGNoIGRvd25zdHJlYW0uXG4gKi9cbmZ1bmN0aW9uIGNvbGxlY3RQbHVnaW5SZWZzKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFBsdWdpblJlZltdIHtcbiAgY29uc3QgcmVmczogUGx1Z2luUmVmW10gPSBbXTtcbiAgY29uc3Qgc2VlbiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgY29uc3QgcHVzaCA9IChyYXc6IHVua25vd24pOiB2b2lkID0+IHtcbiAgICBpZiAoIXJhdyB8fCB0eXBlb2YgcmF3ICE9PSAnb2JqZWN0JykgcmV0dXJuO1xuICAgIGNvbnN0IHIgPSByYXcgYXMgUGx1Z2luUmVmO1xuICAgIGlmICghci5uYW1lKSByZXR1cm47XG4gICAgY29uc3Qga2V5ID0gY2FjaGVLZXkocik7XG4gICAgLy8gVGhlIG5hbWUgdGhlIGxvb2t1cCB3aWxsIFRBUkdFVCDigJQgYW4gZXhwbGljaXQgYGZpbHRlci5uYW1lYCB3aW5zIChzZWVcbiAgICAvLyBiZWxvdyksIHNvIHR3byByZWZzIHRoYXQgcmVzb2x2ZSB0byB0aGUgc2FtZSBwbHVnaW4gYXJlIG5vdCBhIGNvbGxpc2lvbi5cbiAgICBjb25zdCBuYW1lID0gKHIuZmlsdGVyPy5uYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZCkgPz8gci5uYW1lO1xuICAgIGNvbnN0IHRhcmdldCA9IHIucHVibGlzaGVyID8gYCR7ci5wdWJsaXNoZXJ9LyR7bmFtZX1gIDogbmFtZTtcbiAgICBjb25zdCBob2xkZXIgPSBzZWVuLmdldChrZXkpO1xuICAgIGlmIChob2xkZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gT25lIGFsaWFzIGNhbiBvbmx5IGV2ZXIgbWVhbiBvbmUgcGx1Z2luLiBEZWR1cGxpY2F0aW5nIG9uIHRoZSBhbGlhc1xuICAgICAgLy8gYWxvbmUga2VwdCB0aGUgRklSU1QgcGx1Z2luIGFuZCBzaWxlbnRseSBkcm9wcGVkIHRoZSBzZWNvbmQsIHNvIGEgc3RlcFxuICAgICAgLy8gZGVjbGFyaW5nIGB7IG5hbWU6ICdtYXZlbi1idWlsZCcsIGFsaWFzOiAnYnVpbGQnIH1gIGFmdGVyIGFub3RoZXJcbiAgICAgIC8vIGRlY2xhcmluZyBgeyBuYW1lOiAnbm9kZWpzLWJ1aWxkJywgYWxpYXM6ICdidWlsZCcgfWAgcmFuIG5vZGVqcy1idWlsZCdzXG4gICAgICAvLyBpbWFnZSBhbmQgY29tbWFuZHMg4oCUIG5vIGVycm9yLCBqdXN0IHRoZSB3cm9uZyBidWlsZC5cbiAgICAgIGlmIChob2xkZXIgIT09IHRhcmdldCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFBsdWdpbiBhbGlhcyBcIiR7a2V5fVwiIGlzIHVzZWQgZm9yIHR3byBkaWZmZXJlbnQgcGx1Z2lucyAoXCIke2hvbGRlcn1cIiBhbmQgXCIke3RhcmdldH1cIikuIGBcbiAgICAgICAgICArICdHaXZlIGVhY2ggcGx1Z2luIGl0cyBvd24gYWxpYXMuJyxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2Vlbi5zZXQoa2V5LCB0YXJnZXQpO1xuICAgIHJlZnMucHVzaChyKTtcbiAgfTtcblxuICBjb25zdCBzeW50aCA9IHByb3BzLnN5bnRoIGFzIHsgcGx1Z2luPzogdW5rbm93biB9IHwgdW5kZWZpbmVkO1xuICBwdXNoKHN5bnRoPy5wbHVnaW4pO1xuXG4gIGNvbnN0IHN0YWdlcyA9IHByb3BzLnN0YWdlcyBhcyBBcnJheTx7IHN0ZXBzPzogQXJyYXk8eyBwbHVnaW4/OiB1bmtub3duIH0+IH0+IHwgdW5kZWZpbmVkO1xuICBmb3IgKGNvbnN0IHN0YWdlIG9mIHN0YWdlcyA/PyBbXSkge1xuICAgIGZvciAoY29uc3Qgc3RlcCBvZiBzdGFnZS5zdGVwcyA/PyBbXSkge1xuICAgICAgcHVzaChzdGVwLnBsdWdpbik7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlZnM7XG59XG5cbi8qKlxuICogTG9va3VwIHJlZnVzYWxzIHRoYXQgbXVzdCBTVE9QIHRoZSBzeW50aCByYXRoZXIgdGhhbiBmYWxsIGJhY2sgdG9cbiAqIGRlcGxveS10aW1lIHJlc29sdXRpb246IGFuIGltYWdlIHdob3NlIHNpZ25hdHVyZSBkb2Vzbid0IHZlcmlmeSwgYSBsaXN0aW5nXG4gKiB0aGUgb3JnIGNhbid0IHVzZSAobm90IGluc3RhbGxlZCwgYmxvY2tlZCBieSBpdHMgcG9saWN5LCB5YW5rZWQgb3JcbiAqIHN1c3BlbmRlZCksIGFuZCDigJQgd2l0aCBgUExVR0lOX0JMT0NLX09OX05FV19DUklUSUNBTGAgb24g4oCUIGEgcGluIHRvIGFcbiAqIHZlcnNpb24gdGhlIG5pZ2h0bHkgcmVzY2FuIGZsYWdnZWQuIEZhbGxpbmcgYmFjayB3b3VsZCBxdWlldGx5IHR1cm4gZWFjaCBpbnRvXG4gKiBhbiB1bnJlc29sdmVkIHN0ZXAgdGhhdCBmYWlscyBhdCBydW4gdGltZSBpbnN0ZWFkIG9mIG5vdy5cbiAqL1xuY29uc3QgRkFUQUxfTE9PS1VQX0NPREVTOiByZWFkb25seSBzdHJpbmdbXSA9IFtcbiAgRXJyb3JDb2RlLklNQUdFX1ZFUklGSUNBVElPTl9GQUlMRUQsXG4gIEVycm9yQ29kZS5QTFVHSU5fTk9UX0lOU1RBTExFRCxcbiAgRXJyb3JDb2RlLlBMVUdJTl9CTE9DS0VEX0JZX1BPTElDWSxcbiAgRXJyb3JDb2RlLlBMVUdJTl9VTkFWQUlMQUJMRSxcbiAgRXJyb3JDb2RlLlBMVUdJTl9WRVJTSU9OX1ZVTE5fQkxPQ0tFRCxcbl07XG5cbi8qKiBUaGUgZXJyb3IgY29kZSBvZiBhIHBsdWdpbiBzZXJ2aWNlIGFuc3dlciwgd2hlbiBpdCBpcyBvbmUgb2Yge0BsaW5rIEZBVEFMX0xPT0tVUF9DT0RFU30uICovXG5mdW5jdGlvbiBmYXRhbExvb2t1cENvZGUoZXJyOiB1bmtub3duKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IGRhdGEgPSAoZXJyIGFzIHsgcmVzcG9uc2U/OiB7IGRhdGE/OiB1bmtub3duIH0gfSB8IHVuZGVmaW5lZCk/LnJlc3BvbnNlPy5kYXRhO1xuICBjb25zdCBjb2RlID0gZGF0YSAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgPyAoZGF0YSBhcyB7IGNvZGU/OiB1bmtub3duIH0pLmNvZGUgOiB1bmRlZmluZWQ7XG4gIHJldHVybiB0eXBlb2YgY29kZSA9PT0gJ3N0cmluZycgJiYgRkFUQUxfTE9PS1VQX0NPREVTLmluY2x1ZGVzKGNvZGUpID8gY29kZSA6IG51bGw7XG59XG5cbi8qKiBUaGUgcGx1Z2luIHNlcnZpY2UncyBvd24gcmVmdXNhbCBtZXNzYWdlLCB3aGVuIHRoZSBhbnN3ZXIgY2FycmllcyBvbmUuICovXG5mdW5jdGlvbiBzZXJ2aWNlTWVzc2FnZShlcnI6IHVua25vd24pOiBzdHJpbmcgfCBudWxsIHtcbiAgY29uc3QgZGF0YSA9IChlcnIgYXMgeyByZXNwb25zZT86IHsgZGF0YT86IHVua25vd24gfSB9IHwgdW5kZWZpbmVkKT8ucmVzcG9uc2U/LmRhdGE7XG4gIGNvbnN0IG1lc3NhZ2UgPSBkYXRhICYmIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyA/IChkYXRhIGFzIHsgbWVzc2FnZT86IHVua25vd24gfSkubWVzc2FnZSA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIHR5cGVvZiBtZXNzYWdlID09PSAnc3RyaW5nJyAmJiBtZXNzYWdlLmxlbmd0aCA+IDAgPyBtZXNzYWdlIDogbnVsbDtcbn1cblxuLyoqXG4gKiBQcmUtcmVzb2x2ZSBwbHVnaW5zIGJ5IGNhbGxpbmcgdGhlIHNhbWUgYFBPU1QgL2FwaS9wbHVnaW5zL2xvb2t1cGAgZW5kcG9pbnRcbiAqIHRoZSBkZXBsb3ktdGltZSBjdXN0b20gcmVzb3VyY2UgTGFtYmRhIHVzZXMuIFJldHVybmluZyB0aGUgZnVsbCBQbHVnaW5cbiAqIHJlY29yZCBhdCBzeW50aCB0aW1lIGlzIHdoYXQgYWxsb3dzIHRoZSByZXN1bHRpbmcgQ0ZOIHRlbXBsYXRlIHRvIHNoaXBcbiAqIHdpdGggcmVhbCBDb2RlQnVpbGQgaW1hZ2UgVVJJcyAoYDxob3N0Pi88bnM+LzxuYW1lPjo8dmVyc2lvbj5gKSByYXRoZXIgdGhhblxuICogdGhlIGBhd3MvY29kZWJ1aWxkL3N0YW5kYXJkOjcuMGAgZmFsbGJhY2sgdGhhdCB0aGUgc3ludGgtdGltZSB0b2tlbiBwYXRoXG4gKiBmb3JjZXMuXG4gKlxuICogRmFpbHVyZXMgYXJlIG5vbi1mYXRhbDogYSBtaXNzaW5nIHBsdWdpbiBvciB1bnJlYWNoYWJsZSBBUEkgbG9ncyBhIHdhcm5pbmdcbiAqIGFuZCBmYWxscyB0aHJvdWdoIHRvIHRoZSBkZXBsb3ktdGltZSBjdXN0b20gcmVzb3VyY2UgcGF0aCBzbyBwYXJ0aWFsXG4gKiBwbGF0Zm9ybSBvdXRhZ2VzIGRvbid0IGJsb2NrIHN5bnRoL2RlcGxveS4gVGhlIGV4Y2VwdGlvbiBpcyBhbiBpbWFnZSB0aGF0XG4gKiBmYWlscyBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIOKAlCB0aGF0IGFib3J0cyB0aGUgc3ludGguXG4gKlxuICogS2V5ZWQgYnkgYGFsaWFzIHx8IG5hbWVgIHRvIG1hdGNoIGBQbHVnaW5Mb29rdXAucGx1Z2luKClgLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVBsdWdpbnNGb3JQcm9wcyhcbiAgY2xpZW50OiBBcGlDbGllbnQsXG4gIHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgY29uc3QgcmVmcyA9IGNvbGxlY3RQbHVnaW5SZWZzKHByb3BzKTtcbiAgaWYgKHJlZnMubGVuZ3RoID09PSAwKSByZXR1cm4ge307XG5cbiAgY29uc3QgcmVzb2x2ZWQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwocmVmcy5tYXAoYXN5bmMgKHJlZikgPT4ge1xuICAgIGNvbnN0IGtleSA9IGNhY2hlS2V5KHJlZik7XG4gICAgY29uc3QgbGFiZWwgPSByZWYucHVibGlzaGVyID8gYCR7cmVmLnB1Ymxpc2hlcn0vJHtyZWYubmFtZX1gIDogcmVmLm5hbWU7XG4gICAgLy8gVGhlIHBsdWdpbiBOQU1FIGxpdmVzIG9uIHRoZSByZWYgKGEgc2libGluZyBvZiBgZmlsdGVyYCksIE5PVCBpbnNpZGUgdGhlXG4gICAgLy8gZmlsdGVyIG9iamVjdCDigJQgYnV0IHRoZSBsb29rdXAgbWF0Y2hlcyBvbiB0aGUgZmlsdGVyLiBBIGZpbHRlciB3aXRob3V0XG4gICAgLy8gYG5hbWVgIChlLmcuIGB7dmVyc2lvbiwgdmlzaWJpbGl0eSwgaXNBY3RpdmUsIGlzRGVmYXVsdH1gKSBtYXRjaGVzIEFOWVxuICAgIC8vIHBsdWdpbiB3aXRoIHRob3NlIGF0dHJpYnV0ZXMsIGFuZCB0aGUgZW5kcG9pbnQgcmV0dXJucyBhbiBhcmJpdHJhcnkgb25lXG4gICAgLy8gKHNlZW46IGBkb2NrZXJmaWxlLW11bHRpLXByb3ZpZGVyYCkuIFRoYXQgbWFkZSB0aGUgc3ludGggYW5kIGV2ZXJ5IHN0ZXBcbiAgICAvLyByZXNvbHZlIHRvIHRoZSBXUk9ORyBwbHVnaW4uIFNvIHdoZW4gdGhlIGZpbHRlciBvbWl0cyBgbmFtZWAsIGZhbGwgYmFjayB0b1xuICAgIC8vIHRoZSByZWYncyBwbHVnaW4gbmFtZTsgYW4gZXhwbGljaXQgZmlsdGVyIGBuYW1lYCBzdGlsbCB0YWtlcyBwcmVjZWRlbmNlLlxuICAgIC8vIFNoYXJlZCB3aXRoIHRoZSBwaXBlbGluZSBzZXJ2aWNlJ3MgY29udHJhY3QgY2hlY2sgKHNhbWUgZmlsdGVyLCBzYW1lIHBsdWdpbikuXG4gICAgY29uc3QgZmlsdGVyID0gcGx1Z2luTG9va3VwRmlsdGVyKHJlZik7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGNsaWVudC5wb3N0PHVua25vd24+KCcvYXBpL3BsdWdpbnMvbG9va3VwJywgeyBmaWx0ZXIgfSk7XG4gICAgICBjb25zdCB7IHBsdWdpbiwgd2FybmluZ3MgfSA9IHVud3JhcExvb2t1cChyZXMpO1xuICAgICAgZm9yIChjb25zdCB3YXJuaW5nIG9mIHdhcm5pbmdzKSB7XG4gICAgICAgIHByaW50V2FybmluZyhgUGx1Z2luIFwiJHtsYWJlbH1cIjogJHt3YXJuaW5nfWApO1xuICAgICAgfVxuICAgICAgaWYgKHBsdWdpbikge1xuICAgICAgICByZXNvbHZlZFtrZXldID0gcGx1Z2luO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJpbnRXYXJuaW5nKGBQbHVnaW4gXCIke2xhYmVsfVwiIGxvb2t1cCByZXR1cm5lZCBubyByZWNvcmQg4oCUIGZhbGxpbmcgYmFjayB0byBkZXBsb3ktdGltZSByZXNvbHV0aW9uYCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBBIHBsdWdpbiB3aG9zZSBpbWFnZSBzaWduYXR1cmUgZG9lc24ndCB2ZXJpZnksIG9yIGEgbGlzdGluZyB0aGUgb3JnXG4gICAgICAvLyBjYW4ndCB1c2UsIGlzIE5PVCBhbiBvdXRhZ2UgdG8gcmlkZSBvdXQ6IGZhbGxpbmcgYmFjayB3b3VsZCBxdWlldGx5XG4gICAgICAvLyB0dXJuIGl0IGludG8gYW4gdW5yZXNvbHZlZCBzdGVwLiBTdG9wLlxuICAgICAgY29uc3QgZmF0YWwgPSBmYXRhbExvb2t1cENvZGUoZXJyKTtcbiAgICAgIGlmIChmYXRhbCA9PT0gRXJyb3JDb2RlLklNQUdFX1ZFUklGSUNBVElPTl9GQUlMRUQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQbHVnaW4gXCIke2xhYmVsfVwiIGltYWdlIGZhaWxlZCBzaWduYXR1cmUgdmVyaWZpY2F0aW9uOiAke2Vycm9yTWVzc2FnZShlcnIpfWApO1xuICAgICAgfVxuICAgICAgLy8gVGhlIGJsb2NrLW1vZGUgcmVmdXNhbCBhbHJlYWR5IG5hbWVzIHRoZSB2ZXJzaW9uLCB0aGUgQ1ZFcyBhbmQgdGhlIGZpeDpcbiAgICAgIC8vIHByaW50IGl0IGFzIHRoZSBwbGF0Zm9ybSB3cm90ZSBpdC5cbiAgICAgIGlmIChmYXRhbCA9PT0gRXJyb3JDb2RlLlBMVUdJTl9WRVJTSU9OX1ZVTE5fQkxPQ0tFRCkgdGhyb3cgbmV3IEVycm9yKHNlcnZpY2VNZXNzYWdlKGVycikgPz8gZXJyb3JNZXNzYWdlKGVycikpO1xuICAgICAgaWYgKGZhdGFsKSB0aHJvdyBuZXcgRXJyb3IoYFBsdWdpbiBcIiR7bGFiZWx9XCIgY2FuJ3QgYmUgdXNlZCAoJHtmYXRhbH0pOiAke2Vycm9yTWVzc2FnZShlcnIpfWApO1xuICAgICAgY29uc3QgbXNnID0gZXJyb3JNZXNzYWdlKGVycik7XG4gICAgICBwcmludFdhcm5pbmcoYFBsdWdpbiBcIiR7bGFiZWx9XCIgcHJlLXJlc29sdXRpb24gZmFpbGVkICgke21zZ30pIOKAlCBmYWxsaW5nIGJhY2sgdG8gZGVwbG95LXRpbWUgcmVzb2x1dGlvbmApO1xuICAgIH1cbiAgfSkpO1xuXG4gIHJldHVybiByZXNvbHZlZDtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "pipeline-manager": "./dist/cli.js"
10
10
  },
11
11
  "devDependencies": {
12
- "@jest/globals": "30.4.1",
12
+ "@jest/globals": "30.5.2",
13
13
  "@stylistic/eslint-plugin": "^2",
14
14
  "@types/figlet": "1.7.0",
15
15
  "@types/node": "^24",
@@ -18,36 +18,36 @@
18
18
  "@typescript-eslint/parser": "^8",
19
19
  "@typescript/native": "npm:typescript@^7.0.2",
20
20
  "copyfiles": "2.4.1",
21
- "esbuild": "0.28.0",
21
+ "esbuild": "0.28.2",
22
22
  "eslint": "^9",
23
- "eslint-import-resolver-typescript": "^4.4.4",
23
+ "eslint-import-resolver-typescript": "^4.4.5",
24
24
  "eslint-plugin-import": "^2.32.0",
25
- "jest": "30.4.2",
25
+ "jest": "30.5.2",
26
26
  "jest-junit": "^17",
27
27
  "ts-jest": "29.4.12",
28
28
  "typescript": "npm:@typescript/typescript6@^6.0.2"
29
29
  },
30
30
  "dependencies": {
31
- "@aws-sdk/client-cloudformation": "3.1101.0",
32
- "@aws-sdk/client-lambda": "3.1101.0",
33
- "@aws-sdk/client-secrets-manager": "3.1101.0",
34
- "@aws-sdk/client-sqs": "3.1101.0",
35
- "@aws-sdk/client-sts": "3.1101.0",
36
- "aws-cdk-lib": "2.263.0",
37
- "axios": "1.19.0",
31
+ "@aws-sdk/client-cloudformation": "3.1136.0",
32
+ "@aws-sdk/client-lambda": "3.1136.0",
33
+ "@aws-sdk/client-secrets-manager": "3.1136.0",
34
+ "@aws-sdk/client-sqs": "3.1136.0",
35
+ "@aws-sdk/client-sts": "3.1136.0",
36
+ "aws-cdk-lib": "2.270.0",
37
+ "axios": "1.20.0",
38
38
  "commander": "15.0.0",
39
- "constructs": "10.7.0",
39
+ "constructs": "10.8.1",
40
40
  "figlet": "1.11.4",
41
41
  "form-data": "4.0.6",
42
42
  "ora": "9.4.1",
43
43
  "picocolors": "1.1.1",
44
44
  "progress": "2.0.3",
45
45
  "typescript": "npm:@typescript/typescript6@^6.0.2",
46
- "yaml": "2.9.0",
47
- "zod": "4.4.3",
48
- "@pipeline-builder/pipeline-core": "4.1.18",
49
- "@pipeline-builder/ai-core": "4.1.16",
50
- "@pipeline-builder/api-core": "4.1.16"
46
+ "yaml": "2.9.1",
47
+ "zod": "4.6.5",
48
+ "@pipeline-builder/ai-core": "4.1.17",
49
+ "@pipeline-builder/api-core": "4.1.17",
50
+ "@pipeline-builder/pipeline-core": "4.1.19"
51
51
  },
52
52
  "keywords": [
53
53
  "ci-cd",
@@ -102,7 +102,7 @@
102
102
  "access": "public",
103
103
  "registry": "https://registry.npmjs.org/"
104
104
  },
105
- "version": "4.1.18",
105
+ "version": "4.1.20",
106
106
  "bugs": {
107
107
  "url": "https://github.com/mwashburn160/pipeline-builder/issues"
108
108
  },