@aws-cdk/toolkit-lib 1.28.0 → 1.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build-info.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
- "comment": "Generated at 2026-06-03T16:09:36Z by build-info.sh",
3
- "commit": "a90d578"
2
+ "comment": "Generated at 2026-06-15T12:57:42Z by build-info.sh",
3
+ "commit": "425ccb0"
4
4
  }
package/db.json.gz CHANGED
Binary file
@@ -5,6 +5,16 @@ export interface ValidateOptions {
5
5
  * Select the stacks to validate
6
6
  */
7
7
  readonly stacks?: StackSelector;
8
+ /**
9
+ * Submit templates to CloudFormation for early validation.
10
+ *
11
+ * Creates a non-executing change set per stack and reports any
12
+ * early validation errors (invalid resource types, property validation, name conflicts).
13
+ * Requires AWS credentials.
14
+ *
15
+ * @default true
16
+ */
17
+ readonly online?: boolean;
8
18
  }
9
19
  /**
10
20
  * The result of the validate action
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQb2xpY3lWYWxpZGF0aW9uUmVwb3J0SnNvbiwgUG9saWN5VmFsaWRhdGlvblJlcG9ydENvbmNsdXNpb24sIFBsdWdpblJlcG9ydEpzb24gfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0IHR5cGUgeyBTdGFja1NlbGVjdG9yIH0gZnJvbSAnLi4vLi4vYXBpL2Nsb3VkLWFzc2VtYmx5JztcblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0ZU9wdGlvbnMge1xuICAvKipcbiAgICogU2VsZWN0IHRoZSBzdGFja3MgdG8gdmFsaWRhdGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrcz86IFN0YWNrU2VsZWN0b3I7XG59XG5cbi8qKlxuICogVGhlIHJlc3VsdCBvZiB0aGUgdmFsaWRhdGUgYWN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGVSZXN1bHQge1xuICAvKipcbiAgICogV2hldGhlciB2YWxpZGF0aW9uIHBhc3NlZCBvciBmYWlsZWQgb3ZlcmFsbC5cbiAgICogJ3N1Y2Nlc3MnIGlmIG5vIHBsdWdpbnMgcmVwb3J0ZWQgZmFpbHVyZXMgKG9yIG5vIHBsdWdpbnMgcmFuKS5cbiAgICogJ2ZhaWx1cmUnIGlmIGFueSBwbHVnaW4gcmVwb3J0ZWQgYSBmYWlsdXJlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uY2x1c2lvbjogUG9saWN5VmFsaWRhdGlvblJlcG9ydENvbmNsdXNpb247XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgdmFsaWRhdGlvbiByZXBvcnRcbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXBvcnRzIGZyb20gZWFjaCB2YWxpZGF0aW9uIHBsdWdpblxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luUmVwb3J0czogUGx1Z2luUmVwb3J0SnNvbltdO1xufVxuXG5leHBvcnQgdHlwZSB7IFBvbGljeVZhbGlkYXRpb25SZXBvcnRKc29uLCBQb2xpY3lWYWxpZGF0aW9uUmVwb3J0Q29uY2x1c2lvbiwgUGx1Z2luUmVwb3J0SnNvbiB9O1xuIl19
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQb2xpY3lWYWxpZGF0aW9uUmVwb3J0SnNvbiwgUG9saWN5VmFsaWRhdGlvblJlcG9ydENvbmNsdXNpb24sIFBsdWdpblJlcG9ydEpzb24gfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0IHR5cGUgeyBTdGFja1NlbGVjdG9yIH0gZnJvbSAnLi4vLi4vYXBpL2Nsb3VkLWFzc2VtYmx5JztcblxuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0ZU9wdGlvbnMge1xuICAvKipcbiAgICogU2VsZWN0IHRoZSBzdGFja3MgdG8gdmFsaWRhdGVcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrcz86IFN0YWNrU2VsZWN0b3I7XG5cbiAgLyoqXG4gICAqIFN1Ym1pdCB0ZW1wbGF0ZXMgdG8gQ2xvdWRGb3JtYXRpb24gZm9yIGVhcmx5IHZhbGlkYXRpb24uXG4gICAqXG4gICAqIENyZWF0ZXMgYSBub24tZXhlY3V0aW5nIGNoYW5nZSBzZXQgcGVyIHN0YWNrIGFuZCByZXBvcnRzIGFueVxuICAgKiBlYXJseSB2YWxpZGF0aW9uIGVycm9ycyAoaW52YWxpZCByZXNvdXJjZSB0eXBlcywgcHJvcGVydHkgdmFsaWRhdGlvbiwgbmFtZSBjb25mbGljdHMpLlxuICAgKiBSZXF1aXJlcyBBV1MgY3JlZGVudGlhbHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IG9ubGluZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIHJlc3VsdCBvZiB0aGUgdmFsaWRhdGUgYWN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGVSZXN1bHQge1xuICAvKipcbiAgICogV2hldGhlciB2YWxpZGF0aW9uIHBhc3NlZCBvciBmYWlsZWQgb3ZlcmFsbC5cbiAgICogJ3N1Y2Nlc3MnIGlmIG5vIHBsdWdpbnMgcmVwb3J0ZWQgZmFpbHVyZXMgKG9yIG5vIHBsdWdpbnMgcmFuKS5cbiAgICogJ2ZhaWx1cmUnIGlmIGFueSBwbHVnaW4gcmVwb3J0ZWQgYSBmYWlsdXJlLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uY2x1c2lvbjogUG9saWN5VmFsaWRhdGlvblJlcG9ydENvbmNsdXNpb247XG5cbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgdmFsaWRhdGlvbiByZXBvcnRcbiAgICovXG4gIHJlYWRvbmx5IHRpdGxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXBvcnRzIGZyb20gZWFjaCB2YWxpZGF0aW9uIHBsdWdpblxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luUmVwb3J0czogUGx1Z2luUmVwb3J0SnNvbltdO1xufVxuXG5leHBvcnQgdHlwZSB7IFBvbGljeVZhbGlkYXRpb25SZXBvcnRKc29uLCBQb2xpY3lWYWxpZGF0aW9uUmVwb3J0Q29uY2x1c2lvbiwgUGx1Z2luUmVwb3J0SnNvbiB9O1xuIl19
@@ -66,12 +66,24 @@ function contextFromSettings(settings) {
66
66
  * Convert settings to context/environment variables
67
67
  */
68
68
  function synthParametersFromSettings(settings) {
69
+ // These are the environment variables that will switch on debugging in the
70
+ // CDK framework.
71
+ //
72
+ // - CDK_DEBUG: an environment variable instead of a context variable, so it can also
73
+ // be accessed in framework code where we don't have access to a construct tree.
74
+ // - JSII_HOST_STACK_TRACES: have the jsii client library send call stacks
75
+ // across so we can read them in JS-land. Only set if not already set by the
76
+ // user, this allows them to switch it off by setting `JSII_HOST_STACK_TRACES=0`.
77
+ const debugEnvVars = {
78
+ CDK_DEBUG: 'true',
79
+ };
80
+ if (process.env.JSII_HOST_STACK_TRACES === undefined) {
81
+ debugEnvVars.JSII_HOST_STACK_TRACES = '1';
82
+ }
69
83
  return {
70
84
  context: contextFromSettings(settings),
71
85
  env: {
72
- // An environment variable instead of a context variable, so it can also
73
- // be accessed in framework code where we don't have access to a construct tree.
74
- ...settings.get(['debug']) ? { CDK_DEBUG: 'true' } : {},
86
+ ...settings.get(['debugApp']) ? debugEnvVars : {},
75
87
  },
76
88
  };
77
89
  }
@@ -188,4 +200,4 @@ function quoteSpaces(part) {
188
200
  }
189
201
  return part;
190
202
  }
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXFCQSw4REFnQkM7QUFPRCxrREFpQ0M7QUFLRCxrRUFZQztBQUVELDREQVFDO0FBbUJELDBDQW1CQztBQTlJRCw2QkFBNkI7QUFDN0IseUNBQXlDO0FBQ3pDLCtCQUErQjtBQU8vQjs7Ozs7Ozs7Ozs7R0FXRztBQUNJLEtBQUssVUFBVSx5QkFBeUIsQ0FDN0MsR0FBZ0IsRUFDaEIsT0FBdUM7SUFFdkMsTUFBTSxHQUFHLEdBQVEsRUFBRSxDQUFDO0lBRXBCLEdBQUcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDO0lBQ2xELE1BQU0sT0FBTyxDQUFDLFlBQVksS0FBSyxDQUFDLGtCQUFrQiw2QkFBNkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVoSCxNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDO0lBQzFELElBQUksU0FBUyxFQUFFLENBQUM7UUFDZCxHQUFHLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsU0FBUyxDQUFDO1FBQzNDLE1BQU0sT0FBTyxDQUFDLFlBQVksS0FBSyxDQUFDLG1CQUFtQiw2QkFBNkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwSCxDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLG1CQUFtQixDQUNqQyxRQUFrQjtJQUVsQixNQUFNLE9BQU8sR0FBNEIsRUFBRSxDQUFDO0lBRTVDLE1BQU0sWUFBWSxHQUFZLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FB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TUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RDLE9BQU87WUFDTCxRQUFRO1lBQ1Isc0NBQXNDO1lBQ3RDLFlBQVksRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3JELENBQUM7SUFDSixDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFPRDs7OztHQUlHO0FBQ0gsU0FBUyxXQUFXLENBQUMsSUFBWTtJQUMvQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN2QixPQUFPLElBQUksSUFBSSxHQUFHLENBQUM7SUFDckIsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0IHR5cGUgeyBTZGtQcm92aWRlciB9IGZyb20gJy4uL2F3cy1hdXRoL3ByaXZhdGUnO1xuaW1wb3J0IHR5cGUgeyBTZXR0aW5ncyB9IGZyb20gJy4uL3NldHRpbmdzJztcblxuZXhwb3J0IHR5cGUgRW52ID0geyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfTtcbmV4cG9ydCB0eXBlIENvbnRleHQgPSB7IFtrZXk6IHN0cmluZ106IHVua25vd24gfTtcblxuLyoqXG4gKiBJZiB3ZSBkb24ndCBoYXZlIHJlZ2lvbi9hY2NvdW50IGRlZmluZWQgaW4gY29udGV4dCwgd2UgZmFsbCBiYWNrIHRvIHRoZSBkZWZhdWx0IFNESyBiZWhhdmlvclxuICogd2hlcmUgcmVnaW9uIGlzIHJldHJpZXZlZCBmcm9tIH4vLmF3cy9jb25maWcgYW5kIGFjY291bnQgaXMgYmFzZWQgb24gZGVmYXVsdCBjcmVkZW50aWFscyBwcm92aWRlclxuICogY2hhaW4gYW5kIHRoZW4gU1RTIGlzIHF1ZXJpZWQuXG4gKlxuICogVGhpcyBpcyBkb25lIG9wcG9ydHVuaXN0aWNhbGx5OiBmb3IgZXhhbXBsZSwgaWYgd2UgY2FuJ3QgYWNjZXNzIFNUUyBmb3Igc29tZSByZWFzb24gb3IgdGhlIHJlZ2lvblxuICogaXMgbm90IGNvbmZpZ3VyZWQsIHRoZSBjb250ZXh0IHZhbHVlIHdpbGwgYmUgJ251bGwnIGFuZCB0aGVyZSBjb3VsZCBmYWlsdXJlcyBkb3duIHRoZSBsaW5lLiBJblxuICogc29tZSBjYXNlcywgc3ludGhlc2lzIGRvZXMgbm90IHJlcXVpcmUgcmVnaW9uL2FjY291bnQgaW5mb3JtYXRpb24gYXQgYWxsLCBzbyB0aGF0IG1pZ2h0IGJlIHBlcmZlY3RseVxuICogZmluZSBpbiBjZXJ0YWluIHNjZW5hcmlvcy5cbiAqXG4gKiBAcGFyYW0gY29udGV4dCAtIFRoZSBjb250ZXh0IGtleS92YWx1ZSBiYXNoLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJlcGFyZURlZmF1bHRFbnZpcm9ubWVudChcbiAgYXdzOiBTZGtQcm92aWRlcixcbiAgZGVidWdGbjogKG1zZzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+LFxuKTogUHJvbWlzZTxFbnY+IHtcbiAgY29uc3QgZW52OiBFbnYgPSB7fTtcblxuICBlbnZbY3hhcGkuREVGQVVMVF9SRUdJT05fRU5WXSA9IGF3cy5kZWZhdWx0UmVnaW9uO1xuICBhd2FpdCBkZWJ1Z0ZuKGBTZXR0aW5nIFwiJHtjeGFwaS5ERUZBVUxUX1JFR0lPTl9FTlZ9XCIgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gJHtlbnZbY3hhcGkuREVGQVVMVF9SRUdJT05fRU5WXX1gKTtcblxuICBjb25zdCBhY2NvdW50SWQgPSAoYXdhaXQgYXdzLmRlZmF1bHRBY2NvdW50KCkpPy5hY2NvdW50SWQ7XG4gIGlmIChhY2NvdW50SWQpIHtcbiAgICBlbnZbY3hhcGkuREVGQVVMVF9BQ0NPVU5UX0VOVl0gPSBhY2NvdW50SWQ7XG4gICAgYXdhaXQgZGVidWdGbihgU2V0dGluZyBcIiR7Y3hhcGkuREVGQVVMVF9BQ0NPVU5UX0VOVn1cIiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byAke2VudltjeGFwaS5ERUZBVUxUX0FDQ09VTlRfRU5WXX1gKTtcbiAgfVxuXG4gIHJldHVybiBlbnY7XG59XG5cbi8qKlxuICogQ3JlYXRlIGNvbnRleHQgZnJvbSBzZXR0aW5ncy5cbiAqXG4gKiBNdXRhdGVzIHRoZSBgY29udGV4dGAgb2JqZWN0IGFuZCByZXR1cm5zIGl0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udGV4dEZyb21TZXR0aW5ncyhcbiAgc2V0dGluZ3M6IFNldHRpbmdzLFxuKSB7XG4gIGNvbnN0IGNvbnRleHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgY29uc3QgcGF0aE1ldGFkYXRhOiBib29sZWFuID0gc2V0dGluZ3MuZ2V0KFsncGF0aE1ldGFkYXRhJ10pID8/IHRydWU7XG4gIGlmIChwYXRoTWV0YWRhdGEpIHtcbiAgICBjb250ZXh0W2N4YXBpLlBBVEhfTUVUQURBVEFfRU5BQkxFX0NPTlRFWFRdID0gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGFzc2V0TWV0YWRhdGE6IGJvb2xlYW4gPSBzZXR0aW5ncy5nZXQoWydhc3NldE1ldGFkYXRhJ10pID8/IHRydWU7XG4gIGlmIChhc3NldE1ldGFkYXRhKSB7XG4gICAgY29udGV4dFtjeGFwaS5BU1NFVF9SRVNPVVJDRV9NRVRBREFUQV9FTkFCTEVEX0NPTlRFWFRdID0gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IHZlcnNpb25SZXBvcnRpbmc6IGJvb2xlYW4gPSBzZXR0aW5ncy5nZXQoWyd2ZXJzaW9uUmVwb3J0aW5nJ10pID8/IHRydWU7XG4gIGlmICh2ZXJzaW9uUmVwb3J0aW5nKSB7XG4gICAgY29udGV4dFtjeGFwaS5BTkFMWVRJQ1NfUkVQT1JUSU5HX0VOQUJMRURfQ09OVEVYVF0gPSB0cnVlO1xuICB9XG4gIC8vIFdlIG5lZWQgdG8ga2VlcCBvbiBkb2luZyB0aGlzIGZvciBmcmFtZXdvcmsgdmVyc2lvbiBmcm9tIGJlZm9yZSB0aGlzIGZsYWcgd2FzIGRlcHJlY2F0ZWQuXG4gIGlmICghdmVyc2lvblJlcG9ydGluZykge1xuICAgIGNvbnRleHRbJ2F3czpjZGs6ZGlzYWJsZS12ZXJzaW9uLXJlcG9ydGluZyddID0gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IHN0YWdpbmdFbmFibGVkID0gc2V0dGluZ3MuZ2V0KFsnc3RhZ2luZyddKSA/PyB0cnVlO1xuICBpZiAoIXN0YWdpbmdFbmFibGVkKSB7XG4gICAgY29udGV4dFtjeGFwaS5ESVNBQkxFX0FTU0VUX1NUQUdJTkdfQ09OVEVYVF0gPSB0cnVlO1xuICB9XG5cbiAgY29uc3QgYnVuZGxpbmdTdGFja3MgPSBzZXR0aW5ncy5nZXQoWydidW5kbGluZ1N0YWNrcyddKSA/PyBbJyoqJ107XG4gIGNvbnRleHRbY3hhcGkuQlVORExJTkdfU1RBQ0tTXSA9IGJ1bmRsaW5nU3RhY2tzO1xuXG4gIHJldHVybiBjb250ZXh0O1xufVxuXG4vKipcbiAqIENvbnZlcnQgc2V0dGluZ3MgdG8gY29udGV4dC9lbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN5bnRoUGFyYW1ldGVyc0Zyb21TZXR0aW5ncyhzZXR0aW5nczogU2V0dGluZ3MpOiB7XG4gIGNvbnRleHQ6IENvbnRleHQ7XG4gIGVudjogRW52O1xufSB7XG4gIHJldHVybiB7XG4gICAgY29udGV4dDogY29udGV4dEZyb21TZXR0aW5ncyhzZXR0aW5ncyksXG4gICAgZW52OiB7XG4gICAgICAvLyBBbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbnN0ZWFkIG9mIGEgY29udGV4dCB2YXJpYWJsZSwgc28gaXQgY2FuIGFsc29cbiAgICAgIC8vIGJlIGFjY2Vzc2VkIGluIGZyYW1ld29yayBjb2RlIHdoZXJlIHdlIGRvbid0IGhhdmUgYWNjZXNzIHRvIGEgY29uc3RydWN0IHRyZWUuXG4gICAgICAuLi5zZXR0aW5ncy5nZXQoWydkZWJ1ZyddKSA/IHsgQ0RLX0RFQlVHOiAndHJ1ZScgfSA6IHt9LFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzcGFjZUF2YWlsYWJsZUZvckNvbnRleHQoZW52OiBFbnYsIGxpbWl0OiBudW1iZXIpIHtcbiAgY29uc3Qgc2l6ZSA9ICh2YWx1ZT86IHN0cmluZykgPT4gdmFsdWUgIT0gbnVsbCA/IEJ1ZmZlci5ieXRlTGVuZ3RoKHZhbHVlKSA6IDA7XG5cbiAgY29uc3QgdXNlZFNwYWNlID0gT2JqZWN0LmVudHJpZXMoZW52KVxuICAgIC5tYXAoKFtrLCB2XSkgPT4gayA9PT0gY3hhcGkuQ09OVEVYVF9FTlYgPyBzaXplKGspIDogc2l6ZShrKSArIHNpemUodikpXG4gICAgLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApO1xuXG4gIHJldHVybiBNYXRoLm1heCgwLCBsaW1pdCAtIHVzZWRTcGFjZSk7XG59XG5cbi8qKlxuICogR3Vlc3MgdGhlIGV4ZWN1dGFibGUgZnJvbSB0aGUgY29tbWFuZC1saW5lIGFyZ3VtZW50XG4gKlxuICogSW5wdXQgaXMgdGhlIFwiYXBwXCIgc3RyaW5nIHRoZSB1c2VyIGdhdmUgdXMuIE91dHB1dCBpcyB0aGUgY29tbWFuZCBsaW5lIHdlIGFyZSBnb2luZyB0byBleGVjdXRlLlxuICpcbiAqIC0gT24gV2luZG93czogaXQncyBoYXJkIHRvIHZlcmlmeSBpZiByZWdpc3RyeSBhc3NvY2lhdGlvbnMgaGF2ZSBvciBoYXZlIG5vdFxuICogICBiZWVuIHNldCB1cCBmb3IgdGhpcyBmaWxlIHR5cGUgKGkuZS4sIFNoZWxsRXhlYydpbmcgdGhlIGZpbGUgd2lsbCB3b3JrIG9yIG5vdCksXG4gKiAgIHNvIHdlJ2xsIGFzc3VtZSB0aGUgd29yc3QgYW5kIHRha2UgY29udHJvbCBvdXJzZWx2ZXMuXG4gKlxuICogLSBPbiBQT1NJWDogaWYgdGhlIGZpbGUgaXMgTk9UIG1hcmtlZCBhcyBleGVjdXRhYmxlLCBndWVzcyB0aGUgaW50ZXJwcmV0ZXIuIElmIGl0IGlzIGV4ZWN1dGFibGUsXG4gKiAgIHRoZSBjb3JyZWN0IGludGVycHJldGVyIHNob3VsZCBiZSBpbiB0aGUgZmlsZSdzIHNoZWJhbmcgYW5kIHdlIGp1c3QgZXhlY3V0ZSBpdCBkaXJlY3RseS5cbiAqXG4gKiBUaGUgYmVoYXZpb3Igb2Ygb25seSBndWVzc2luZyB0aGUgaW50ZXJwcmV0ZXIgaWYgdGhlIGNvbW1hbmQgbGluZSBpcyBhIHNpbmdsZSBmaWxlIG5hbWVcbiAqIGlzIGEgYml0IGxpbWl0ZWQ6IHdlIGNhbid0IHB1dCBhIGAuanNgIGZpbGUgd2l0aCBhcmd1bWVudHMgaW4gdGhlIGNvbW1hbmQgbGluZSBhbmQgaGF2ZVxuICogaXQgd29yayBwcm9wZXJseS4gTmV2ZXJ0aGVsZXNzLCB0aGlzIGlzIHRoZSBiZWhhdmlvciB3ZSBoYXZlIGhhZCBmb3IgYSBsb25nIHRpbWUgYW5kIG5vYm9keVxuICogaGFzIHJlYWxseSBjb21wbGFpbmVkIGFib3V0IGl0LCBzbyB3ZSdsbCBrZWVwIGl0IGZvciBub3cuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBndWVzc0V4ZWN1dGFibGUoY29tbWFuZExpbmU6IHN0cmluZywgZGVidWdGbjogKG1zZzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgLy8gVGhlIGNvbW1hbmQgbGluZSB3aXRoIHNwYWNlcyBpbiBpdCBjb3VsZCByZWZlcmVuY2UgYSBmaWxlIG9uIGRpc2suIElmIHRydWUsXG4gIC8vIHdlIHF1b3RlIGl0IGFuZCByZXR1cm4gdGhhdCwgb3B0aW9uYWxseSBieSBwcmVmaXhpbmcgYW4gaW50ZXJwcmV0ZXIuXG4gIGNvbnN0IGZ1bGxGaWxlID0gYXdhaXQgY2hlY2tGaWxlKGNvbW1hbmRMaW5lKTtcbiAgaWYgKGZ1bGxGaWxlKSB7XG4gICAgcmV0dXJuIGd1ZXNzSW50ZXJwcmV0ZXIoZnVsbEZpbGUpO1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCB0aGUgZmlyc3Qgd29yZCBvbiB0aGUgY29tbWFuZCBsaW5lIGNvdWxkIHJlZmVyZW5jZSBhIGZpbGUgb25cbiAgLy8gZGlzayAocXVvdGVkIG9yIG5vbi1xdW90ZWQpLiBJZiB0cnVlLCB3ZSBvcHRpb25hbGx5IHByZWZpeCBhbiBpbnRlcnByZXRlci5cbiAgY29uc3QgW2ZpcnN0LCByZXN0XSA9IHNwbGl0Rmlyc3RTaGVsbFdvcmQoY29tbWFuZExpbmUpO1xuICBjb25zdCBmaXJzdEZpbGUgPSBhd2FpdCBjaGVja0ZpbGUoZmlyc3QpO1xuICBpZiAoZmlyc3RGaWxlKSB7XG4gICAgcmV0dXJuIGAke2d1ZXNzSW50ZXJwcmV0ZXIoZmlyc3RGaWxlKX0gJHtyZXN0fWAudHJpbSgpO1xuICB9XG5cbiAgLy8gV2UgY291bGRuJ3QgcGFyc2UgaXQsIHNvIGp1c3QgdXNlIHRoZSBnaXZlbiBjb21tYW5kIGxpbmUuXG4gIGF3YWl0IGRlYnVnRm4oYE5vdCBhIGZpbGU6ICcke2NvbW1hbmRMaW5lfScuIFVzaW5nICcke2NvbW1hbmRMaW5lfSBhcyBjb21tYW5kLWxpbmVgKTtcbiAgcmV0dXJuIGNvbW1hbmRMaW5lO1xufVxuXG4vKipcbiAqIEd1ZXNzIHRoZSByaWdodCBpbnRlcnByZXRlciB0byB1c2UgdG8gZXhlY3V0ZSB0aGUgZ2l2ZW4gZmlsZSBhbmQgcmV0dXJuIGEgKHBhcnRpYWwpIGNvbW1hbmQgbGluZSB0byBleGVjdXRlIGl0LlxuICpcbiAqIFRoaXMgbWF5IGVudGFpbDpcbiAqXG4gKiAtIFByZWZpeGluZyBhbiBpbnRlcnByZXRlciBpZiBuZWNlc3NhcnlcbiAqIC0gUXVvdGluZyB0aGUgZmlsZSBuYW1lIGlmIG5lY2Vzc2FyeVxuICovXG5mdW5jdGlvbiBndWVzc0ludGVycHJldGVyKGZpbGU6IEZpbGVJbmZvKTogc3RyaW5nIHtcbiAgY29uc3QgaXNXaW5kb3dzID0gcHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJztcblxuICBjb25zdCBoYW5kbGVyID0gRVhURU5TSU9OX01BUFtwYXRoLmV4dG5hbWUoZmlsZS5maWxlTmFtZSldO1xuICBpZiAoaGFuZGxlciAmJiAoIWZpbGUuaXNFeGVjdXRhYmxlIHx8IGlzV2luZG93cykpIHtcbiAgICByZXR1cm4gaGFuZGxlcihmaWxlLmZpbGVOYW1lKTtcbiAgfVxuXG4gIHJldHVybiBxdW90ZVNwYWNlcyhmaWxlLmZpbGVOYW1lKTtcbn1cblxuLyoqXG4gKiBNYXBwaW5nIG9mIGV4dGVuc2lvbnMgdG8gY29tbWFuZC1saW5lIGdlbmVyYXRvcnNcbiAqL1xuY29uc3QgRVhURU5TSU9OX01BUDogUmVjb3JkPHN0cmluZywgQ29tbWFuZEdlbmVyYXRvcj4gPSB7XG4gICcuanMnOiBleGVjdXRlTm9kZSxcbn07XG5cbnR5cGUgQ29tbWFuZEdlbmVyYXRvciA9IChmaWxlOiBzdHJpbmcpID0+IHN0cmluZztcblxuLyoqXG4gKiBFeGVjdXRlIHRoZSBnaXZlbiBmaWxlIHdpdGggdGhlIHNhbWUgJ25vZGUnIHByb2Nlc3MgYXMgaXMgcnVubmluZyB0aGUgY3VycmVudCBwcm9jZXNzXG4gKi9cbmZ1bmN0aW9uIGV4ZWN1dGVOb2RlKHNjcmlwdEZpbGU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBgJHtxdW90ZVNwYWNlcyhwcm9jZXNzLmV4ZWNQYXRoKX0gJHtxdW90ZVNwYWNlcyhzY3JpcHRGaWxlKX1gO1xufVxuXG4vKipcbiAqIFBhcnNlIG9mZiB0aGUgZmlyc3QgcXVvdGVkIG9yIHVucXVvdGVkIHNoZWxsIHdvcmQuXG4gKi9cbmZ1bmN0aW9uIHNwbGl0Rmlyc3RTaGVsbFdvcmQoY29tbWFuZExpbmU6IHN0cmluZyk6IFtzdHJpbmcsIHN0cmluZ10ge1xuICBjb21tYW5kTGluZSA9IGNvbW1hbmRMaW5lLnRyaW0oKTtcbiAgaWYgKGNvbW1hbmRMaW5lWzBdID09PSAnXCInKSB7XG4gICAgLy8gU3BsaXQgb24gdGhlIG5leHQgcXVvdGUsIGlnbm9yZSBhbnkgZXNjYXBpbmdcbiAgICBjb25zdCBlbmRRdW90ZSA9IGNvbW1hbmRMaW5lLmluZGV4T2YoJ1wiJywgMSk7XG4gICAgcmV0dXJuIGVuZFF1b3RlID4gLTEgPyBbY29tbWFuZExpbmUuc2xpY2UoMSwgZW5kUXVvdGUpLCBjb21tYW5kTGluZS5zbGljZShlbmRRdW90ZSArIDEpLnRyaW0oKV0gOiBbY29tbWFuZExpbmUsICcnXTtcbiAgfSBlbHNlIHtcbiAgICAvLyBTcGxpdCBvbiB0aGUgZmlyc3Qgc3BhY2VcbiAgICBjb25zdCBzcGFjZSA9IGNvbW1hbmRMaW5lLmluZGV4T2YoJyAnKTtcbiAgICByZXR1cm4gc3BhY2UgPiAtMSA/IFtjb21tYW5kTGluZS5zbGljZSgwLCBzcGFjZSksIGNvbW1hbmRMaW5lLnNsaWNlKHNwYWNlICsgMSldIDogW2NvbW1hbmRMaW5lLCAnJ107XG4gIH1cbn1cblxuLyoqXG4gKiBMb29rIHVwIGEgZmlsZSBhbmQgc2VlIGlmIGl0IGV4aXN0cyBhbmQgaXMgZXhlY3V0YWJsZVxuICovXG5hc3luYyBmdW5jdGlvbiBjaGVja0ZpbGUoZmlsZU5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZUluZm8gfCB1bmRlZmluZWQ+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBmc3RhdCA9IGF3YWl0IGZzLnN0YXQoZmlsZU5hbWUpO1xuICAgIHJldHVybiB7XG4gICAgICBmaWxlTmFtZSxcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgICBpc0V4ZWN1dGFibGU6IChmc3RhdC5tb2RlICYgZnMuY29uc3RhbnRzLlhfT0spICE9PSAwLFxuICAgIH07XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuaW50ZXJmYWNlIEZpbGVJbmZvIHtcbiAgcmVhZG9ubHkgZmlsZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgaXNFeGVjdXRhYmxlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFF1b3RlIGEgc2hlbGwgcGFydCBpZiBpdCBjb250YWlucyBzcGFjZXNcbiAqXG4gKiBXZSdyZSBvbmx5IGludGVyZXN0ZWQgaW4gc3BhY2VzLCBub3RoaW5nIGVsc2UuXG4gKi9cbmZ1bmN0aW9uIHF1b3RlU3BhY2VzKHBhcnQ6IHN0cmluZykge1xuICBpZiAocGFydC5pbmNsdWRlcygnICcpKSB7XG4gICAgcmV0dXJuIGBcIiR7cGFydH1cImA7XG4gIH1cbiAgcmV0dXJuIHBhcnQ7XG59XG4iXX0=
203
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJlbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXFCQSw4REFnQkM7QUFPRCxrREFpQ0M7QUFLRCxrRUF5QkM7QUFFRCw0REFRQztBQW1CRCwwQ0FtQkM7QUEzSkQsNkJBQTZCO0FBQzdCLHlDQUF5QztBQUN6QywrQkFBK0I7QUFPL0I7Ozs7Ozs7Ozs7O0dBV0c7QUFDSSxLQUFLLFVBQVUseUJBQXlCLENBQzdDLEdBQWdCLEVBQ2hCLE9BQXVDO0lBRXZDLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztJQUVwQixHQUFHLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQztJQUNsRCxNQUFNLE9BQU8sQ0FBQyxZQUFZLEtBQUssQ0FBQyxrQkFBa0IsNkJBQTZCLEdBQUcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFaEgsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQztJQUMxRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ2QsR0FBRyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUMzQyxNQUFNLE9BQU8sQ0FBQyxZQUFZLEtBQUssQ0FBQyxtQkFBbUIsNkJBQTZCLEdBQUcsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEgsQ0FBQztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FDakMsUUFBa0I7SUFFbEIsTUFBTSxPQUFPLEdBQTRCLEVBQUUsQ0FBQztJQUU1QyxNQUFNLFlBQVksR0FBWSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxJQUFJLENB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LENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN0RyxDQUFDO0FBQ0gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsS0FBSyxVQUFVLFNBQVMsQ0FBQyxRQUFnQjtJQUN2QyxJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEMsT0FBTztZQUNMLFFBQVE7WUFDUixzQ0FBc0M7WUFDdEMsWUFBWSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDckQsQ0FBQztJQUNKLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQU9EOzs7O0dBSUc7QUFDSCxTQUFTLFdBQVcsQ0FBQyxJQUFZO0lBQy9CLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxJQUFJLEdBQUcsQ0FBQztJQUNyQixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGN4YXBpIGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyIH0gZnJvbSAnLi4vYXdzLWF1dGgvcHJpdmF0ZSc7XG5pbXBvcnQgdHlwZSB7IFNldHRpbmdzIH0gZnJvbSAnLi4vc2V0dGluZ3MnO1xuXG5leHBvcnQgdHlwZSBFbnYgPSB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9O1xuZXhwb3J0IHR5cGUgQ29udGV4dCA9IHsgW2tleTogc3RyaW5nXTogdW5rbm93biB9O1xuXG4vKipcbiAqIElmIHdlIGRvbid0IGhhdmUgcmVnaW9uL2FjY291bnQgZGVmaW5lZCBpbiBjb250ZXh0LCB3ZSBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHQgU0RLIGJlaGF2aW9yXG4gKiB3aGVyZSByZWdpb24gaXMgcmV0cmlldmVkIGZyb20gfi8uYXdzL2NvbmZpZyBhbmQgYWNjb3VudCBpcyBiYXNlZCBvbiBkZWZhdWx0IGNyZWRlbnRpYWxzIHByb3ZpZGVyXG4gKiBjaGFpbiBhbmQgdGhlbiBTVFMgaXMgcXVlcmllZC5cbiAqXG4gKiBUaGlzIGlzIGRvbmUgb3Bwb3J0dW5pc3RpY2FsbHk6IGZvciBleGFtcGxlLCBpZiB3ZSBjYW4ndCBhY2Nlc3MgU1RTIGZvciBzb21lIHJlYXNvbiBvciB0aGUgcmVnaW9uXG4gKiBpcyBub3QgY29uZmlndXJlZCwgdGhlIGNvbnRleHQgdmFsdWUgd2lsbCBiZSAnbnVsbCcgYW5kIHRoZXJlIGNvdWxkIGZhaWx1cmVzIGRvd24gdGhlIGxpbmUuIEluXG4gKiBzb21lIGNhc2VzLCBzeW50aGVzaXMgZG9lcyBub3QgcmVxdWlyZSByZWdpb24vYWNjb3VudCBpbmZvcm1hdGlvbiBhdCBhbGwsIHNvIHRoYXQgbWlnaHQgYmUgcGVyZmVjdGx5XG4gKiBmaW5lIGluIGNlcnRhaW4gc2NlbmFyaW9zLlxuICpcbiAqIEBwYXJhbSBjb250ZXh0IC0gVGhlIGNvbnRleHQga2V5L3ZhbHVlIGJhc2guXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcmVwYXJlRGVmYXVsdEVudmlyb25tZW50KFxuICBhd3M6IFNka1Byb3ZpZGVyLFxuICBkZWJ1Z0ZuOiAobXNnOiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD4sXG4pOiBQcm9taXNlPEVudj4ge1xuICBjb25zdCBlbnY6IEVudiA9IHt9O1xuXG4gIGVudltjeGFwaS5ERUZBVUxUX1JFR0lPTl9FTlZdID0gYXdzLmRlZmF1bHRSZWdpb247XG4gIGF3YWl0IGRlYnVnRm4oYFNldHRpbmcgXCIke2N4YXBpLkRFRkFVTFRfUkVHSU9OX0VOVn1cIiBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byAke2VudltjeGFwaS5ERUZBVUxUX1JFR0lPTl9FTlZdfWApO1xuXG4gIGNvbnN0IGFjY291bnRJZCA9IChhd2FpdCBhd3MuZGVmYXVsdEFjY291bnQoKSk/LmFjY291bnRJZDtcbiAgaWYgKGFjY291bnRJZCkge1xuICAgIGVudltjeGFwaS5ERUZBVUxUX0FDQ09VTlRfRU5WXSA9IGFjY291bnRJZDtcbiAgICBhd2FpdCBkZWJ1Z0ZuKGBTZXR0aW5nIFwiJHtjeGFwaS5ERUZBVUxUX0FDQ09VTlRfRU5WfVwiIGVudmlyb25tZW50IHZhcmlhYmxlIHRvICR7ZW52W2N4YXBpLkRFRkFVTFRfQUNDT1VOVF9FTlZdfWApO1xuICB9XG5cbiAgcmV0dXJuIGVudjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgY29udGV4dCBmcm9tIHNldHRpbmdzLlxuICpcbiAqIE11dGF0ZXMgdGhlIGBjb250ZXh0YCBvYmplY3QgYW5kIHJldHVybnMgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb250ZXh0RnJvbVNldHRpbmdzKFxuICBzZXR0aW5nczogU2V0dGluZ3MsXG4pIHtcbiAgY29uc3QgY29udGV4dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICBjb25zdCBwYXRoTWV0YWRhdGE6IGJvb2xlYW4gPSBzZXR0aW5ncy5nZXQoWydwYXRoTWV0YWRhdGEnXSkgPz8gdHJ1ZTtcbiAgaWYgKHBhdGhNZXRhZGF0YSkge1xuICAgIGNvbnRleHRbY3hhcGkuUEFUSF9NRVRBREFUQV9FTkFCTEVfQ09OVEVYVF0gPSB0cnVlO1xuICB9XG5cbiAgY29uc3QgYXNzZXRNZXRhZGF0YTogYm9vbGVhbiA9IHNldHRpbmdzLmdldChbJ2Fzc2V0TWV0YWRhdGEnXSkgPz8gdHJ1ZTtcbiAgaWYgKGFzc2V0TWV0YWRhdGEpIHtcbiAgICBjb250ZXh0W2N4YXBpLkFTU0VUX1JFU09VUkNFX01FVEFEQVRBX0VOQUJMRURfQ09OVEVYVF0gPSB0cnVlO1xuICB9XG5cbiAgY29uc3QgdmVyc2lvblJlcG9ydGluZzogYm9vbGVhbiA9IHNldHRpbmdzLmdldChbJ3ZlcnNpb25SZXBvcnRpbmcnXSkgPz8gdHJ1ZTtcbiAgaWYgKHZlcnNpb25SZXBvcnRpbmcpIHtcbiAgICBjb250ZXh0W2N4YXBpLkFOQUxZVElDU19SRVBPUlRJTkdfRU5BQkxFRF9DT05URVhUXSA9IHRydWU7XG4gIH1cbiAgLy8gV2UgbmVlZCB0byBrZWVwIG9uIGRvaW5nIHRoaXMgZm9yIGZyYW1ld29yayB2ZXJzaW9uIGZyb20gYmVmb3JlIHRoaXMgZmxhZyB3YXMgZGVwcmVjYXRlZC5cbiAgaWYgKCF2ZXJzaW9uUmVwb3J0aW5nKSB7XG4gICAgY29udGV4dFsnYXdzOmNkazpkaXNhYmxlLXZlcnNpb24tcmVwb3J0aW5nJ10gPSB0cnVlO1xuICB9XG5cbiAgY29uc3Qgc3RhZ2luZ0VuYWJsZWQgPSBzZXR0aW5ncy5nZXQoWydzdGFnaW5nJ10pID8/IHRydWU7XG4gIGlmICghc3RhZ2luZ0VuYWJsZWQpIHtcbiAgICBjb250ZXh0W2N4YXBpLkRJU0FCTEVfQVNTRVRfU1RBR0lOR19DT05URVhUXSA9IHRydWU7XG4gIH1cblxuICBjb25zdCBidW5kbGluZ1N0YWNrcyA9IHNldHRpbmdzLmdldChbJ2J1bmRsaW5nU3RhY2tzJ10pID8/IFsnKionXTtcbiAgY29udGV4dFtjeGFwaS5CVU5ETElOR19TVEFDS1NdID0gYnVuZGxpbmdTdGFja3M7XG5cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbi8qKlxuICogQ29udmVydCBzZXR0aW5ncyB0byBjb250ZXh0L2Vudmlyb25tZW50IHZhcmlhYmxlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc3ludGhQYXJhbWV0ZXJzRnJvbVNldHRpbmdzKHNldHRpbmdzOiBTZXR0aW5ncyk6IHtcbiAgY29udGV4dDogQ29udGV4dDtcbiAgZW52OiBFbnY7XG59IHtcbiAgLy8gVGhlc2UgYXJlIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdGhhdCB3aWxsIHN3aXRjaCBvbiBkZWJ1Z2dpbmcgaW4gdGhlXG4gIC8vIENESyBmcmFtZXdvcmsuXG4gIC8vXG4gIC8vIC0gQ0RLX0RFQlVHOiBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbnN0ZWFkIG9mIGEgY29udGV4dCB2YXJpYWJsZSwgc28gaXQgY2FuIGFsc29cbiAgLy8gYmUgYWNjZXNzZWQgaW4gZnJhbWV3b3JrIGNvZGUgd2hlcmUgd2UgZG9uJ3QgaGF2ZSBhY2Nlc3MgdG8gYSBjb25zdHJ1Y3QgdHJlZS5cbiAgLy8gLSBKU0lJX0hPU1RfU1RBQ0tfVFJBQ0VTOiBoYXZlIHRoZSBqc2lpIGNsaWVudCBsaWJyYXJ5IHNlbmQgY2FsbCBzdGFja3NcbiAgLy8gYWNyb3NzIHNvIHdlIGNhbiByZWFkIHRoZW0gaW4gSlMtbGFuZC4gT25seSBzZXQgaWYgbm90IGFscmVhZHkgc2V0IGJ5IHRoZVxuICAvLyB1c2VyLCB0aGlzIGFsbG93cyB0aGVtIHRvIHN3aXRjaCBpdCBvZmYgYnkgc2V0dGluZyBgSlNJSV9IT1NUX1NUQUNLX1RSQUNFUz0wYC5cbiAgY29uc3QgZGVidWdFbnZWYXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgIENES19ERUJVRzogJ3RydWUnLFxuICB9O1xuICBpZiAocHJvY2Vzcy5lbnYuSlNJSV9IT1NUX1NUQUNLX1RSQUNFUyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZGVidWdFbnZWYXJzLkpTSUlfSE9TVF9TVEFDS19UUkFDRVMgPSAnMSc7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGNvbnRleHQ6IGNvbnRleHRGcm9tU2V0dGluZ3Moc2V0dGluZ3MpLFxuICAgIGVudjoge1xuICAgICAgLi4uc2V0dGluZ3MuZ2V0KFsnZGVidWdBcHAnXSkgPyBkZWJ1Z0VudlZhcnMgOiB7fSxcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BhY2VBdmFpbGFibGVGb3JDb250ZXh0KGVudjogRW52LCBsaW1pdDogbnVtYmVyKSB7XG4gIGNvbnN0IHNpemUgPSAodmFsdWU/OiBzdHJpbmcpID0+IHZhbHVlICE9IG51bGwgPyBCdWZmZXIuYnl0ZUxlbmd0aCh2YWx1ZSkgOiAwO1xuXG4gIGNvbnN0IHVzZWRTcGFjZSA9IE9iamVjdC5lbnRyaWVzKGVudilcbiAgICAubWFwKChbaywgdl0pID0+IGsgPT09IGN4YXBpLkNPTlRFWFRfRU5WID8gc2l6ZShrKSA6IHNpemUoaykgKyBzaXplKHYpKVxuICAgIC5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKTtcblxuICByZXR1cm4gTWF0aC5tYXgoMCwgbGltaXQgLSB1c2VkU3BhY2UpO1xufVxuXG4vKipcbiAqIEd1ZXNzIHRoZSBleGVjdXRhYmxlIGZyb20gdGhlIGNvbW1hbmQtbGluZSBhcmd1bWVudFxuICpcbiAqIElucHV0IGlzIHRoZSBcImFwcFwiIHN0cmluZyB0aGUgdXNlciBnYXZlIHVzLiBPdXRwdXQgaXMgdGhlIGNvbW1hbmQgbGluZSB3ZSBhcmUgZ29pbmcgdG8gZXhlY3V0ZS5cbiAqXG4gKiAtIE9uIFdpbmRvd3M6IGl0J3MgaGFyZCB0byB2ZXJpZnkgaWYgcmVnaXN0cnkgYXNzb2NpYXRpb25zIGhhdmUgb3IgaGF2ZSBub3RcbiAqICAgYmVlbiBzZXQgdXAgZm9yIHRoaXMgZmlsZSB0eXBlIChpLmUuLCBTaGVsbEV4ZWMnaW5nIHRoZSBmaWxlIHdpbGwgd29yayBvciBub3QpLFxuICogICBzbyB3ZSdsbCBhc3N1bWUgdGhlIHdvcnN0IGFuZCB0YWtlIGNvbnRyb2wgb3Vyc2VsdmVzLlxuICpcbiAqIC0gT24gUE9TSVg6IGlmIHRoZSBmaWxlIGlzIE5PVCBtYXJrZWQgYXMgZXhlY3V0YWJsZSwgZ3Vlc3MgdGhlIGludGVycHJldGVyLiBJZiBpdCBpcyBleGVjdXRhYmxlLFxuICogICB0aGUgY29ycmVjdCBpbnRlcnByZXRlciBzaG91bGQgYmUgaW4gdGhlIGZpbGUncyBzaGViYW5nIGFuZCB3ZSBqdXN0IGV4ZWN1dGUgaXQgZGlyZWN0bHkuXG4gKlxuICogVGhlIGJlaGF2aW9yIG9mIG9ubHkgZ3Vlc3NpbmcgdGhlIGludGVycHJldGVyIGlmIHRoZSBjb21tYW5kIGxpbmUgaXMgYSBzaW5nbGUgZmlsZSBuYW1lXG4gKiBpcyBhIGJpdCBsaW1pdGVkOiB3ZSBjYW4ndCBwdXQgYSBgLmpzYCBmaWxlIHdpdGggYXJndW1lbnRzIGluIHRoZSBjb21tYW5kIGxpbmUgYW5kIGhhdmVcbiAqIGl0IHdvcmsgcHJvcGVybHkuIE5ldmVydGhlbGVzcywgdGhpcyBpcyB0aGUgYmVoYXZpb3Igd2UgaGF2ZSBoYWQgZm9yIGEgbG9uZyB0aW1lIGFuZCBub2JvZHlcbiAqIGhhcyByZWFsbHkgY29tcGxhaW5lZCBhYm91dCBpdCwgc28gd2UnbGwga2VlcCBpdCBmb3Igbm93LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ3Vlc3NFeGVjdXRhYmxlKGNvbW1hbmRMaW5lOiBzdHJpbmcsIGRlYnVnRm46IChtc2c6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPik6IFByb21pc2U8c3RyaW5nPiB7XG4gIC8vIFRoZSBjb21tYW5kIGxpbmUgd2l0aCBzcGFjZXMgaW4gaXQgY291bGQgcmVmZXJlbmNlIGEgZmlsZSBvbiBkaXNrLiBJZiB0cnVlLFxuICAvLyB3ZSBxdW90ZSBpdCBhbmQgcmV0dXJuIHRoYXQsIG9wdGlvbmFsbHkgYnkgcHJlZml4aW5nIGFuIGludGVycHJldGVyLlxuICBjb25zdCBmdWxsRmlsZSA9IGF3YWl0IGNoZWNrRmlsZShjb21tYW5kTGluZSk7XG4gIGlmIChmdWxsRmlsZSkge1xuICAgIHJldHVybiBndWVzc0ludGVycHJldGVyKGZ1bGxGaWxlKTtcbiAgfVxuXG4gIC8vIE90aGVyd2lzZSwgdGhlIGZpcnN0IHdvcmQgb24gdGhlIGNvbW1hbmQgbGluZSBjb3VsZCByZWZlcmVuY2UgYSBmaWxlIG9uXG4gIC8vIGRpc2sgKHF1b3RlZCBvciBub24tcXVvdGVkKS4gSWYgdHJ1ZSwgd2Ugb3B0aW9uYWxseSBwcmVmaXggYW4gaW50ZXJwcmV0ZXIuXG4gIGNvbnN0IFtmaXJzdCwgcmVzdF0gPSBzcGxpdEZpcnN0U2hlbGxXb3JkKGNvbW1hbmRMaW5lKTtcbiAgY29uc3QgZmlyc3RGaWxlID0gYXdhaXQgY2hlY2tGaWxlKGZpcnN0KTtcbiAgaWYgKGZpcnN0RmlsZSkge1xuICAgIHJldHVybiBgJHtndWVzc0ludGVycHJldGVyKGZpcnN0RmlsZSl9ICR7cmVzdH1gLnRyaW0oKTtcbiAgfVxuXG4gIC8vIFdlIGNvdWxkbid0IHBhcnNlIGl0LCBzbyBqdXN0IHVzZSB0aGUgZ2l2ZW4gY29tbWFuZCBsaW5lLlxuICBhd2FpdCBkZWJ1Z0ZuKGBOb3QgYSBmaWxlOiAnJHtjb21tYW5kTGluZX0nLiBVc2luZyAnJHtjb21tYW5kTGluZX0gYXMgY29tbWFuZC1saW5lYCk7XG4gIHJldHVybiBjb21tYW5kTGluZTtcbn1cblxuLyoqXG4gKiBHdWVzcyB0aGUgcmlnaHQgaW50ZXJwcmV0ZXIgdG8gdXNlIHRvIGV4ZWN1dGUgdGhlIGdpdmVuIGZpbGUgYW5kIHJldHVybiBhIChwYXJ0aWFsKSBjb21tYW5kIGxpbmUgdG8gZXhlY3V0ZSBpdC5cbiAqXG4gKiBUaGlzIG1heSBlbnRhaWw6XG4gKlxuICogLSBQcmVmaXhpbmcgYW4gaW50ZXJwcmV0ZXIgaWYgbmVjZXNzYXJ5XG4gKiAtIFF1b3RpbmcgdGhlIGZpbGUgbmFtZSBpZiBuZWNlc3NhcnlcbiAqL1xuZnVuY3Rpb24gZ3Vlc3NJbnRlcnByZXRlcihmaWxlOiBGaWxlSW5mbyk6IHN0cmluZyB7XG4gIGNvbnN0IGlzV2luZG93cyA9IHByb2Nlc3MucGxhdGZvcm0gPT09ICd3aW4zMic7XG5cbiAgY29uc3QgaGFuZGxlciA9IEVYVEVOU0lPTl9NQVBbcGF0aC5leHRuYW1lKGZpbGUuZmlsZU5hbWUpXTtcbiAgaWYgKGhhbmRsZXIgJiYgKCFmaWxlLmlzRXhlY3V0YWJsZSB8fCBpc1dpbmRvd3MpKSB7XG4gICAgcmV0dXJuIGhhbmRsZXIoZmlsZS5maWxlTmFtZSk7XG4gIH1cblxuICByZXR1cm4gcXVvdGVTcGFjZXMoZmlsZS5maWxlTmFtZSk7XG59XG5cbi8qKlxuICogTWFwcGluZyBvZiBleHRlbnNpb25zIHRvIGNvbW1hbmQtbGluZSBnZW5lcmF0b3JzXG4gKi9cbmNvbnN0IEVYVEVOU0lPTl9NQVA6IFJlY29yZDxzdHJpbmcsIENvbW1hbmRHZW5lcmF0b3I+ID0ge1xuICAnLmpzJzogZXhlY3V0ZU5vZGUsXG59O1xuXG50eXBlIENvbW1hbmRHZW5lcmF0b3IgPSAoZmlsZTogc3RyaW5nKSA9PiBzdHJpbmc7XG5cbi8qKlxuICogRXhlY3V0ZSB0aGUgZ2l2ZW4gZmlsZSB3aXRoIHRoZSBzYW1lICdub2RlJyBwcm9jZXNzIGFzIGlzIHJ1bm5pbmcgdGhlIGN1cnJlbnQgcHJvY2Vzc1xuICovXG5mdW5jdGlvbiBleGVjdXRlTm9kZShzY3JpcHRGaWxlOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYCR7cXVvdGVTcGFjZXMocHJvY2Vzcy5leGVjUGF0aCl9ICR7cXVvdGVTcGFjZXMoc2NyaXB0RmlsZSl9YDtcbn1cblxuLyoqXG4gKiBQYXJzZSBvZmYgdGhlIGZpcnN0IHF1b3RlZCBvciB1bnF1b3RlZCBzaGVsbCB3b3JkLlxuICovXG5mdW5jdGlvbiBzcGxpdEZpcnN0U2hlbGxXb3JkKGNvbW1hbmRMaW5lOiBzdHJpbmcpOiBbc3RyaW5nLCBzdHJpbmddIHtcbiAgY29tbWFuZExpbmUgPSBjb21tYW5kTGluZS50cmltKCk7XG4gIGlmIChjb21tYW5kTGluZVswXSA9PT0gJ1wiJykge1xuICAgIC8vIFNwbGl0IG9uIHRoZSBuZXh0IHF1b3RlLCBpZ25vcmUgYW55IGVzY2FwaW5nXG4gICAgY29uc3QgZW5kUXVvdGUgPSBjb21tYW5kTGluZS5pbmRleE9mKCdcIicsIDEpO1xuICAgIHJldHVybiBlbmRRdW90ZSA+IC0xID8gW2NvbW1hbmRMaW5lLnNsaWNlKDEsIGVuZFF1b3RlKSwgY29tbWFuZExpbmUuc2xpY2UoZW5kUXVvdGUgKyAxKS50cmltKCldIDogW2NvbW1hbmRMaW5lLCAnJ107XG4gIH0gZWxzZSB7XG4gICAgLy8gU3BsaXQgb24gdGhlIGZpcnN0IHNwYWNlXG4gICAgY29uc3Qgc3BhY2UgPSBjb21tYW5kTGluZS5pbmRleE9mKCcgJyk7XG4gICAgcmV0dXJuIHNwYWNlID4gLTEgPyBbY29tbWFuZExpbmUuc2xpY2UoMCwgc3BhY2UpLCBjb21tYW5kTGluZS5zbGljZShzcGFjZSArIDEpXSA6IFtjb21tYW5kTGluZSwgJyddO1xuICB9XG59XG5cbi8qKlxuICogTG9vayB1cCBhIGZpbGUgYW5kIHNlZSBpZiBpdCBleGlzdHMgYW5kIGlzIGV4ZWN1dGFibGVcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY2hlY2tGaWxlKGZpbGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVJbmZvIHwgdW5kZWZpbmVkPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZnN0YXQgPSBhd2FpdCBmcy5zdGF0KGZpbGVOYW1lKTtcbiAgICByZXR1cm4ge1xuICAgICAgZmlsZU5hbWUsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZVxuICAgICAgaXNFeGVjdXRhYmxlOiAoZnN0YXQubW9kZSAmIGZzLmNvbnN0YW50cy5YX09LKSAhPT0gMCxcbiAgICB9O1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmludGVyZmFjZSBGaWxlSW5mbyB7XG4gIHJlYWRvbmx5IGZpbGVOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzRXhlY3V0YWJsZTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBRdW90ZSBhIHNoZWxsIHBhcnQgaWYgaXQgY29udGFpbnMgc3BhY2VzXG4gKlxuICogV2UncmUgb25seSBpbnRlcmVzdGVkIGluIHNwYWNlcywgbm90aGluZyBlbHNlLlxuICovXG5mdW5jdGlvbiBxdW90ZVNwYWNlcyhwYXJ0OiBzdHJpbmcpIHtcbiAgaWYgKHBhcnQuaW5jbHVkZXMoJyAnKSkge1xuICAgIHJldHVybiBgXCIke3BhcnR9XCJgO1xuICB9XG4gIHJldHVybiBwYXJ0O1xufVxuIl19
@@ -1,24 +1,35 @@
1
1
  import * as cxapi from '@aws-cdk/cloud-assembly-api';
2
2
  import { type DescribeChangeSetCommandOutput, type Parameter, type ResourceToImport } from '@aws-sdk/client-cloudformation';
3
3
  import type { Deployments } from './deployments';
4
+ import type { StackDiagnosis } from '../../actions/diagnose';
4
5
  import type { ICloudFormationClient, SdkProvider } from '../aws-auth/private';
5
6
  import type { Template, TemplateBodyParameter, TemplateParameter } from '../cloudformation';
6
7
  import { CloudFormationStack } from '../cloudformation';
7
8
  import { CloudFormationStackDiagnoser } from '../diagnosing/stack-diagnoser';
8
9
  import type { IoHelper } from '../io/private';
9
10
  import type { ResourcesToImport } from '../resource-import';
11
+ export interface ChangeSetReport {
12
+ readonly description: DescribeChangeSetCommandOutput;
13
+ readonly diagnosis: StackDiagnosis;
14
+ }
15
+ /**
16
+ * Waits for a ChangeSet to reach a terminal state and returns the diagnosis without throwing.
17
+ */
18
+ export declare function waitForChangeSetReport(cfn: ICloudFormationClient, ioHelper: IoHelper, stackNameOrArn: string, changeSetNameOrArn: string, { fetchAll, diagnoser }: {
19
+ fetchAll: boolean;
20
+ diagnoser: CloudFormationStackDiagnoser;
21
+ }): Promise<ChangeSetReport>;
10
22
  /**
11
23
  * Waits for a ChangeSet to be available for triggering a StackUpdate.
12
24
  *
13
25
  * Will return a changeset that is either ready to be executed or has no changes.
14
26
  * Will throw in other cases.
15
27
  *
16
- * @param cfn - a CloudFormation client
17
- * @param stackNameOrArn - the name or ARN of the Stack that the ChangeSet belongs to, prefer passing an ARN if available
18
- * @param changeSetNameOrArn - the name or ARN of the ChangeSet, prefer passing an ARN if available
19
- * @param fetchAll - if true, fetches all pages of the ChangeSet before returning.
20
- *
21
- * @returns the CloudFormation description of the ChangeSet
28
+ * @param cfn - a CloudFormation client
29
+ * @param stackNameOrArn - the name or ARN of the Stack the ChangeSet belongs to, prefer ARN
30
+ * @param changeSetNameOrArn - the name or ARN of the ChangeSet, prefer ARN
31
+ * @param fetchAll - if true, fetches all pages of the ChangeSet before returning.
32
+ * @returns the CloudFormation description of the ChangeSet
22
33
  */
23
34
  export declare function waitForChangeSet(cfn: ICloudFormationClient, ioHelper: IoHelper, stackNameOrArn: string, changeSetNameOrArn: string, { fetchAll, diagnoser }: {
24
35
  fetchAll: boolean;
@@ -75,6 +86,13 @@ export declare function createDiffChangeSet(ioHelper: IoHelper, options: Omit<Pr
75
86
  * bucket and assumed roles and such.
76
87
  */
77
88
  export declare function uploadStackTemplateAssets(stack: cxapi.CloudFormationStackArtifact, deployments: Deployments): Promise<void>;
89
+ /**
90
+ * Create a change set for online validation (never executes, returns diagnosis instead of throwing).
91
+ *
92
+ * Uses the same env preparation as diff, but calls `waitForChangeSetReport` to return
93
+ * the diagnosis rather than throwing on failure. Always cleans up the change set afterwards.
94
+ */
95
+ export declare function createValidationChangeSet(ioHelper: IoHelper, options: Omit<PrepareChangeSetOptions, 'includeNestedStacks' | 'diagnoser' | 'sdkProvider'>): Promise<ChangeSetReport>;
78
96
  /**
79
97
  * Waits for a CloudFormation stack to stabilize in a complete/available state
80
98
  * after a delete operation is issued.