@aws-cdk/toolkit-lib 1.23.0 → 1.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/build-info.json +2 -2
  2. package/db.json.gz +0 -0
  3. package/lib/actions/deploy/index.d.ts +15 -1
  4. package/lib/actions/deploy/index.js +1 -1
  5. package/lib/actions/deploy/private/deployment-method.d.ts +5 -9
  6. package/lib/actions/deploy/private/deployment-method.js +8 -1
  7. package/lib/actions/diagnose/index.d.ts +89 -0
  8. package/lib/actions/diagnose/index.js +3 -0
  9. package/lib/actions/diff/private/helpers.js +12 -15
  10. package/lib/actions/index.d.ts +2 -0
  11. package/lib/actions/index.js +3 -1
  12. package/lib/actions/orphan/index.d.ts +18 -0
  13. package/lib/actions/orphan/index.js +3 -0
  14. package/lib/api/aws-auth/sdk.d.ts +2 -1
  15. package/lib/api/aws-auth/sdk.js +2 -1
  16. package/lib/api/bootstrap/bootstrap-environment.js +4 -4
  17. package/lib/api/bootstrap/bootstrap-template.yaml +5 -16
  18. package/lib/api/bootstrap/deploy-bootstrap.js +9 -1
  19. package/lib/api/cloud-assembly/stack-selector.d.ts +1 -1
  20. package/lib/api/cloud-assembly/stack-selector.js +1 -1
  21. package/lib/api/cloudformation/index.d.ts +1 -0
  22. package/lib/api/cloudformation/index.js +2 -1
  23. package/lib/api/cloudformation/logical-id-map.d.ts +24 -0
  24. package/lib/api/cloudformation/logical-id-map.js +45 -0
  25. package/lib/api/cloudformation/stack-helpers.d.ts +6 -0
  26. package/lib/api/cloudformation/stack-helpers.js +12 -1
  27. package/lib/api/deployments/cfn-api.d.ts +9 -17
  28. package/lib/api/deployments/cfn-api.js +82 -71
  29. package/lib/api/deployments/deploy-stack.d.ts +6 -2
  30. package/lib/api/deployments/deploy-stack.js +43 -60
  31. package/lib/api/deployments/deployments.d.ts +3 -2
  32. package/lib/api/deployments/deployments.js +31 -7
  33. package/lib/api/diagnosing/diagnosis-formatting.d.ts +13 -0
  34. package/lib/api/diagnosing/diagnosis-formatting.js +139 -0
  35. package/lib/api/diagnosing/early-validation.d.ts +49 -0
  36. package/lib/api/diagnosing/early-validation.js +81 -0
  37. package/lib/api/diagnosing/stack-diagnoser.d.ts +99 -0
  38. package/lib/api/diagnosing/stack-diagnoser.js +338 -0
  39. package/lib/api/diagnosing/tree-builder.d.ts +12 -0
  40. package/lib/api/diagnosing/tree-builder.js +86 -0
  41. package/lib/api/diagnosing/tree.d.ts +13 -0
  42. package/lib/api/diagnosing/tree.js +61 -0
  43. package/lib/api/diff/diff-formatter.js +8 -12
  44. package/lib/api/drift/drift-formatter.d.ts +0 -1
  45. package/lib/api/drift/drift-formatter.js +3 -10
  46. package/lib/api/hotswap/hotswap-deployments.js +14 -2
  47. package/lib/api/hotswap/hotswap-template-cache.d.ts +19 -0
  48. package/lib/api/hotswap/hotswap-template-cache.js +96 -0
  49. package/lib/api/index.d.ts +1 -0
  50. package/lib/api/index.js +2 -1
  51. package/lib/api/io/private/messages.d.ts +5 -0
  52. package/lib/api/io/private/messages.js +23 -1
  53. package/lib/api/io/toolkit-action.d.ts +1 -1
  54. package/lib/api/io/toolkit-action.js +1 -1
  55. package/lib/api/orphan/orphaner.d.ts +75 -0
  56. package/lib/api/orphan/orphaner.js +246 -0
  57. package/lib/api/orphan/private/helpers.d.ts +56 -0
  58. package/lib/api/orphan/private/helpers.js +219 -0
  59. package/lib/api/orphan/private/index.d.ts +2 -0
  60. package/lib/api/orphan/private/index.js +18 -0
  61. package/lib/api/resource-import/importer.d.ts +8 -1
  62. package/lib/api/resource-import/importer.js +35 -14
  63. package/lib/api/settings.d.ts +3 -1
  64. package/lib/api/settings.js +16 -3
  65. package/lib/api/source-tracing/index.d.ts +2 -0
  66. package/lib/api/source-tracing/index.js +18 -0
  67. package/lib/api/source-tracing/private/source-tracing.d.ts +16 -0
  68. package/lib/api/source-tracing/private/source-tracing.js +8 -0
  69. package/lib/api/source-tracing/private/stack-source-tracing.d.ts +32 -0
  70. package/lib/api/source-tracing/private/stack-source-tracing.js +134 -0
  71. package/lib/api/source-tracing/types.d.ts +9 -0
  72. package/lib/api/source-tracing/types.js +3 -0
  73. package/lib/api/stack-events/resource-errors.d.ts +82 -0
  74. package/lib/api/stack-events/resource-errors.js +129 -0
  75. package/lib/api/stack-events/stack-activity-monitor.d.ts +2 -29
  76. package/lib/api/stack-events/stack-activity-monitor.js +5 -94
  77. package/lib/api/stack-events/stack-event-poller.d.ts +71 -8
  78. package/lib/api/stack-events/stack-event-poller.js +107 -13
  79. package/lib/api/work-graph/work-graph.d.ts +4 -0
  80. package/lib/api/work-graph/work-graph.js +6 -1
  81. package/lib/index.d.ts +1 -0
  82. package/lib/index.js +2 -1
  83. package/lib/index_bg.wasm +0 -0
  84. package/lib/toolkit/toolkit.d.ts +17 -1
  85. package/lib/toolkit/toolkit.js +226 -84
  86. package/lib/util/arrays.d.ts +1 -0
  87. package/lib/util/arrays.js +23 -1
  88. package/lib/util/type-brands.d.ts +1 -1
  89. package/lib/util/type-brands.js +1 -1
  90. package/package.json +11 -11
  91. package/lib/api/deployments/early-validation.d.ts +0 -17
  92. package/lib/api/deployments/early-validation.js +0 -54
@@ -13,4 +13,5 @@ export declare function flatten<T>(xs: T[][]): T[];
13
13
  */
14
14
  export declare function partition<T>(collection: T[], pred: (x: T) => boolean): T[];
15
15
  export declare function indexBy<A, B>(xs: A[], fn: (a: A) => Promise<B>): Promise<Map<B, A[]>>;
16
+ export declare function sortByKey<A>(xs: A[], keyFn: (x: A) => Array<string | number>): void;
16
17
  //# sourceMappingURL=arrays.d.ts.map
@@ -4,6 +4,7 @@ exports.flatMap = flatMap;
4
4
  exports.flatten = flatten;
5
5
  exports.partition = partition;
6
6
  exports.indexBy = indexBy;
7
+ exports.sortByKey = sortByKey;
7
8
  /**
8
9
  * Map a function over an array and concatenate the results
9
10
  */
@@ -48,4 +49,25 @@ async function indexBy(xs, fn) {
48
49
  }
49
50
  return ret;
50
51
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXJyYXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsMEJBRUM7QUFLRCwwQkFFQztBQU9ELDhCQVdDO0FBRUQsMEJBWUM7QUE1Q0Q7O0dBRUc7QUFDSCxTQUFnQixPQUFPLENBQU8sRUFBTyxFQUFFLEVBQThCO0lBQ25FLE9BQU8sT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixPQUFPLENBQUksRUFBUztJQUNsQyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixTQUFTLENBQUksVUFBZSxFQUFFLElBQXVCO0lBQ25FLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztJQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixPQUFPLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4QixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDTixDQUFDLEVBQUUsQ0FBQztRQUNOLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRU0sS0FBSyxVQUFVLE9BQU8sQ0FBTyxFQUFPLEVBQUUsRUFBd0I7SUFDbkUsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUM5QixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ25CLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsQ0FBQzthQUFNLENBQUM7WUFDTixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1hcCBhIGZ1bmN0aW9uIG92ZXIgYW4gYXJyYXkgYW5kIGNvbmNhdGVuYXRlIHRoZSByZXN1bHRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0TWFwPFQsIFU+KHhzOiBUW10sIGZuOiAoKHg6IFQsIGk6IG51bWJlcikgPT4gVVtdKSk6IFVbXSB7XG4gIHJldHVybiBmbGF0dGVuKHhzLm1hcChmbikpO1xufVxuXG4vKipcbiAqIEZsYXR0ZW4gYSBsaXN0IG9mIGxpc3RzIGludG8gYSBsaXN0IG9mIGVsZW1lbnRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuPFQ+KHhzOiBUW11bXSk6IFRbXSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLCB4cyk7XG59XG5cbi8qKlxuICogUGFydGl0aW9uIGEgY29sbGVjdGlvbiBieSByZW1vdmluZyBhbmQgcmV0dXJuaW5nIGFsbCBlbGVtZW50cyB0aGF0IG1hdGNoIGEgcHJlZGljYXRlXG4gKlxuICogTm90ZTogdGhlIGlucHV0IGNvbGxlY3Rpb24gaXMgbW9kaWZpZWQgaW4tcGxhY2UhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJ0aXRpb248VD4oY29sbGVjdGlvbjogVFtdLCBwcmVkOiAoeDogVCkgPT4gYm9vbGVhbik6IFRbXSB7XG4gIGNvbnN0IHJldDogVFtdID0gW107XG4gIGxldCBpID0gMDtcbiAgd2hpbGUgKGkgPCBjb2xsZWN0aW9uLmxlbmd0aCkge1xuICAgIGlmIChwcmVkKGNvbGxlY3Rpb25baV0pKSB7XG4gICAgICByZXQucHVzaChjb2xsZWN0aW9uLnNwbGljZShpLCAxKVswXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGkrKztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluZGV4Qnk8QSwgQj4oeHM6IEFbXSwgZm46IChhOiBBKSA9PiBQcm9taXNlPEI+KTogUHJvbWlzZTxNYXA8QiwgQVtdPj4ge1xuICBjb25zdCByZXQgPSBuZXcgTWFwPEIsIEFbXT4oKTtcbiAgZm9yIChjb25zdCB4IG9mIHhzKSB7XG4gICAgY29uc3Qga2V5ID0gYXdhaXQgZm4oeCk7XG4gICAgY29uc3QgZ3JvdXAgPSByZXQuZ2V0KGtleSk7XG4gICAgaWYgKGdyb3VwKSB7XG4gICAgICBncm91cC5wdXNoKHgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXQuc2V0KGtleSwgW3hdKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuIl19
52
+ function sortByKey(xs, keyFn) {
53
+ xs.sort((a, b) => cmp(keyFn(a), keyFn(b)));
54
+ function cmp(as, bs) {
55
+ for (let i = 0; i < as.length && i < bs.length; i++) {
56
+ const a = as[i];
57
+ const b = bs[i];
58
+ if (typeof a !== typeof b) {
59
+ return (typeof a).localeCompare(typeof b);
60
+ }
61
+ if (a !== b) {
62
+ if (typeof a === 'number' && typeof b === 'number') {
63
+ return a - b;
64
+ }
65
+ if (typeof a === 'string' && typeof b === 'string') {
66
+ return a.localeCompare(b);
67
+ }
68
+ }
69
+ }
70
+ return as.length - bs.length;
71
+ }
72
+ }
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXJyYXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsMEJBRUM7QUFLRCwwQkFFQztBQU9ELDhCQVdDO0FBRUQsMEJBWUM7QUFFRCw4QkFxQkM7QUFuRUQ7O0dBRUc7QUFDSCxTQUFnQixPQUFPLENBQU8sRUFBTyxFQUFFLEVBQThCO0lBQ25FLE9BQU8sT0FBTyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixPQUFPLENBQUksRUFBUztJQUNsQyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixTQUFTLENBQUksVUFBZSxFQUFFLElBQXVCO0lBQ25FLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztJQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDVixPQUFPLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4QixHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDTixDQUFDLEVBQUUsQ0FBQztRQUNOLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRU0sS0FBSyxVQUFVLE9BQU8sQ0FBTyxFQUFPLEVBQUUsRUFBd0I7SUFDbkUsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUM5QixLQUFLLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQ25CLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEIsQ0FBQzthQUFNLENBQUM7WUFDTixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxTQUFnQixTQUFTLENBQUksRUFBTyxFQUFFLEtBQXVDO0lBQzNFLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFM0MsU0FBUyxHQUFHLENBQUMsRUFBMEIsRUFBRSxFQUEwQjtRQUNqRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BELE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQixNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEIsSUFBSSxPQUFPLENBQUMsS0FBSyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUMxQixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUM1QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ1osSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7b0JBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDZixDQUFDO2dCQUNELElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO29CQUNuRCxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQy9CLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNYXAgYSBmdW5jdGlvbiBvdmVyIGFuIGFycmF5IGFuZCBjb25jYXRlbmF0ZSB0aGUgcmVzdWx0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmxhdE1hcDxULCBVPih4czogVFtdLCBmbjogKCh4OiBULCBpOiBudW1iZXIpID0+IFVbXSkpOiBVW10ge1xuICByZXR1cm4gZmxhdHRlbih4cy5tYXAoZm4pKTtcbn1cblxuLyoqXG4gKiBGbGF0dGVuIGEgbGlzdCBvZiBsaXN0cyBpbnRvIGEgbGlzdCBvZiBlbGVtZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZmxhdHRlbjxUPih4czogVFtdW10pOiBUW10ge1xuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSwgeHMpO1xufVxuXG4vKipcbiAqIFBhcnRpdGlvbiBhIGNvbGxlY3Rpb24gYnkgcmVtb3ZpbmcgYW5kIHJldHVybmluZyBhbGwgZWxlbWVudHMgdGhhdCBtYXRjaCBhIHByZWRpY2F0ZVxuICpcbiAqIE5vdGU6IHRoZSBpbnB1dCBjb2xsZWN0aW9uIGlzIG1vZGlmaWVkIGluLXBsYWNlIVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFydGl0aW9uPFQ+KGNvbGxlY3Rpb246IFRbXSwgcHJlZDogKHg6IFQpID0+IGJvb2xlYW4pOiBUW10ge1xuICBjb25zdCByZXQ6IFRbXSA9IFtdO1xuICBsZXQgaSA9IDA7XG4gIHdoaWxlIChpIDwgY29sbGVjdGlvbi5sZW5ndGgpIHtcbiAgICBpZiAocHJlZChjb2xsZWN0aW9uW2ldKSkge1xuICAgICAgcmV0LnB1c2goY29sbGVjdGlvbi5zcGxpY2UoaSwgMSlbMF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpKys7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbmRleEJ5PEEsIEI+KHhzOiBBW10sIGZuOiAoYTogQSkgPT4gUHJvbWlzZTxCPik6IFByb21pc2U8TWFwPEIsIEFbXT4+IHtcbiAgY29uc3QgcmV0ID0gbmV3IE1hcDxCLCBBW10+KCk7XG4gIGZvciAoY29uc3QgeCBvZiB4cykge1xuICAgIGNvbnN0IGtleSA9IGF3YWl0IGZuKHgpO1xuICAgIGNvbnN0IGdyb3VwID0gcmV0LmdldChrZXkpO1xuICAgIGlmIChncm91cCkge1xuICAgICAgZ3JvdXAucHVzaCh4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0LnNldChrZXksIFt4XSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb3J0QnlLZXk8QT4oeHM6IEFbXSwga2V5Rm46ICh4OiBBKSA9PiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KSB7XG4gIHhzLnNvcnQoKGEsIGIpID0+IGNtcChrZXlGbihhKSwga2V5Rm4oYikpKTtcblxuICBmdW5jdGlvbiBjbXAoYXM6IEFycmF5PHN0cmluZyB8IG51bWJlcj4sIGJzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KTogbnVtYmVyIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFzLmxlbmd0aCAmJiBpIDwgYnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGEgPSBhc1tpXTtcbiAgICAgIGNvbnN0IGIgPSBic1tpXTtcbiAgICAgIGlmICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHtcbiAgICAgICAgcmV0dXJuICh0eXBlb2YgYSkubG9jYWxlQ29tcGFyZSh0eXBlb2YgYik7XG4gICAgICB9XG4gICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICBpZiAodHlwZW9mIGEgPT09ICdudW1iZXInICYmIHR5cGVvZiBiID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHJldHVybiBhIC0gYjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIGEgPT09ICdzdHJpbmcnICYmIHR5cGVvZiBiID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiBhLmxvY2FsZUNvbXBhcmUoYik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFzLmxlbmd0aCAtIGJzLmxlbmd0aDtcbiAgfVxufVxuIl19
@@ -35,6 +35,6 @@ export type Branded<T, B> = T & Brand<B>;
35
35
  * way to write 'as').
36
36
  */
37
37
  export declare function createBranded<A extends Branded<any, any>>(value: TypeUnderlyingBrand<A>): A;
38
- type TypeUnderlyingBrand<A> = A extends Branded<infer T, any> ? T : never;
38
+ type TypeUnderlyingBrand<A> = Omit<A, keyof Brand<any>>;
39
39
  export {};
40
40
  //# sourceMappingURL=type-brands.d.ts.map
@@ -36,4 +36,4 @@ exports.createBranded = createBranded;
36
36
  function createBranded(value) {
37
37
  return value;
38
38
  }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1icmFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlLWJyYW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7O0FBa0JILHNDQUVDO0FBWEQ7Ozs7Ozs7R0FPRztBQUNILHFCQUFxQjtBQUNyQixTQUFnQixhQUFhLENBQThCLEtBQTZCO0lBQ3RGLE9BQU8sS0FBVSxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR5cGUgYnJhbmRpbmdcbiAqXG4gKiBUaGlzIGFsbG93cyBtYXJraW5nIGNlcnRhaW4gdHlwZXMgYXMgaGF2aW5nIGdvbmUgdGhyb3VnaCBwYXJ0aWN1bGFyIG9wZXJhdGlvbnMuXG4gKlxuICogQnJhbmRlZCB0eXBlcyBjYW4gYmUgdXNlZCBhbnl3aGVyZSB0aGUgYmFzZSB0eXBlIGlzIGV4cGVjdGVkLCBidXQgdGhlIGJhc2UgdHlwZVxuICogY2Fubm90IGJlIHVzZWQgd2hlcmUgYSBicmFuZGVkIHR5cGUgaXMgZXhwZWN0ZWQ7IHRoZSB2YWx1ZXMgaGF2ZSB0byBnbyB0aHJvdWdoXG4gKiBhIHR5cGUgYXNzZXJ0aW9uIG9wZXJhdGlvbiB0byBjb25maXJtIHRoZWlyIGJyYW5kLlxuICpcbiAqIFVzYWdlOlxuICpcbiAqIGBgYFxuICogdHlwZSBWYWxpZGF0ZWRTdHJpbmcgPSBCcmFuZGVkPHN0cmluZywgJ1Bhc3NlZE15VmFsaWRhdGlvbic+O1xuICpcbiAqIGZ1bmN0aW9uIHZhbGlkYXRlKHg6IHN0cmluZyk6IGFzc2VydHMgeCBpcyBWYWxpZGF0ZWRTdHJpbmcge1xuICogICAvLyAuLi4gdGhyb3cgYW4gZXJyb3IgaWYgbm90XG4gKiB9XG4gKlxuICogZnVuY3Rpb24gaXNWYWxpZCh4OiBzdHJpbmcpOiB4IGlzIFZhbGlkYXRlZFN0cmluZyB7XG4gKiAgIC8vIC4uLiB0aHJvdyBhbiBlcnJvciBpZiBub3RcbiAqIH1cbiAqIGBgYFxuICovXG5cbi8vIFRoaXMgY29uc3RydWN0IHB1cmVseSBoYXBwZW5zIGF0IHR5cGUgY2hlY2tpbmcgdGltZS4gVGhlcmUgaXMgbm8gcnVuLXRpbWUgaW1wYWN0LlxuLy8gSGVuY2UsIHdlIG5ldmVyIGV2ZW4gaGF2ZSB0byBjb25zdHJ1Y3QgdmFsdWVzIG9mIHRoaXMgdHlwZS5cbmRlY2xhcmUgY29uc3QgX19icmFuZDogdW5pcXVlIHN5bWJvbDtcblxuZXhwb3J0IHR5cGUgQnJhbmQ8Qj4gPSB7IFtfX2JyYW5kXTogQiB9O1xuZXhwb3J0IHR5cGUgQnJhbmRlZDxULCBCPiA9IFQgJiBCcmFuZDxCPjtcblxuLyoqXG4gKiBNYXJrcyBhIHZhbHVlIGFzIGJlaW5nIGJyYW5kZWQgYSBjZXJ0YWluIHdheS5cbiAqXG4gKiBZb3Ugc2hvdWxkIGluIGdlbmVyYWwgYXZvaWQgY2FsbGluZyB0aGlzLCBhbmQgdXNlIHZhbGlkYXRpb24gb3JcbiAqIGFzc2VydGluZyBmdW5jdGlvbnMgaW5zdGVhZC4gSG93ZXZlciwgdGhpcyBjYW4gYmUgdXNlZnVsIHRvIHByb2R1Y2VcbiAqIHZhbHVlcyB3aGljaCBhcmUgYnJhbmRlZCBieSBjb25zdHJ1Y3Rpb24gKHJlYWxseSBqdXN0IGFuIGVsYWJvcmF0ZVxuICogd2F5IHRvIHdyaXRlICdhcycpLlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCcmFuZGVkPEEgZXh0ZW5kcyBCcmFuZGVkPGFueSwgYW55Pj4odmFsdWU6IFR5cGVVbmRlcmx5aW5nQnJhbmQ8QT4pOiBBIHtcbiAgcmV0dXJuIHZhbHVlIGFzIEE7XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG50eXBlIFR5cGVVbmRlcmx5aW5nQnJhbmQ8QT4gPSBBIGV4dGVuZHMgQnJhbmRlZDxpbmZlciBULCBhbnk+ID8gVCA6IG5ldmVyO1xuIl19
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1icmFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlLWJyYW5kcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7O0FBa0JILHNDQUVDO0FBWEQ7Ozs7Ozs7R0FPRztBQUNILHFCQUFxQjtBQUNyQixTQUFnQixhQUFhLENBQThCLEtBQTZCO0lBQ3RGLE9BQU8sS0FBVSxDQUFDO0FBQ3BCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR5cGUgYnJhbmRpbmdcbiAqXG4gKiBUaGlzIGFsbG93cyBtYXJraW5nIGNlcnRhaW4gdHlwZXMgYXMgaGF2aW5nIGdvbmUgdGhyb3VnaCBwYXJ0aWN1bGFyIG9wZXJhdGlvbnMuXG4gKlxuICogQnJhbmRlZCB0eXBlcyBjYW4gYmUgdXNlZCBhbnl3aGVyZSB0aGUgYmFzZSB0eXBlIGlzIGV4cGVjdGVkLCBidXQgdGhlIGJhc2UgdHlwZVxuICogY2Fubm90IGJlIHVzZWQgd2hlcmUgYSBicmFuZGVkIHR5cGUgaXMgZXhwZWN0ZWQ7IHRoZSB2YWx1ZXMgaGF2ZSB0byBnbyB0aHJvdWdoXG4gKiBhIHR5cGUgYXNzZXJ0aW9uIG9wZXJhdGlvbiB0byBjb25maXJtIHRoZWlyIGJyYW5kLlxuICpcbiAqIFVzYWdlOlxuICpcbiAqIGBgYFxuICogdHlwZSBWYWxpZGF0ZWRTdHJpbmcgPSBCcmFuZGVkPHN0cmluZywgJ1Bhc3NlZE15VmFsaWRhdGlvbic+O1xuICpcbiAqIGZ1bmN0aW9uIHZhbGlkYXRlKHg6IHN0cmluZyk6IGFzc2VydHMgeCBpcyBWYWxpZGF0ZWRTdHJpbmcge1xuICogICAvLyAuLi4gdGhyb3cgYW4gZXJyb3IgaWYgbm90XG4gKiB9XG4gKlxuICogZnVuY3Rpb24gaXNWYWxpZCh4OiBzdHJpbmcpOiB4IGlzIFZhbGlkYXRlZFN0cmluZyB7XG4gKiAgIC8vIC4uLiB0aHJvdyBhbiBlcnJvciBpZiBub3RcbiAqIH1cbiAqIGBgYFxuICovXG5cbi8vIFRoaXMgY29uc3RydWN0IHB1cmVseSBoYXBwZW5zIGF0IHR5cGUgY2hlY2tpbmcgdGltZS4gVGhlcmUgaXMgbm8gcnVuLXRpbWUgaW1wYWN0LlxuLy8gSGVuY2UsIHdlIG5ldmVyIGV2ZW4gaGF2ZSB0byBjb25zdHJ1Y3QgdmFsdWVzIG9mIHRoaXMgdHlwZS5cbmRlY2xhcmUgY29uc3QgX19icmFuZDogdW5pcXVlIHN5bWJvbDtcblxuZXhwb3J0IHR5cGUgQnJhbmQ8Qj4gPSB7IFtfX2JyYW5kXTogQiB9O1xuZXhwb3J0IHR5cGUgQnJhbmRlZDxULCBCPiA9IFQgJiBCcmFuZDxCPjtcblxuLyoqXG4gKiBNYXJrcyBhIHZhbHVlIGFzIGJlaW5nIGJyYW5kZWQgYSBjZXJ0YWluIHdheS5cbiAqXG4gKiBZb3Ugc2hvdWxkIGluIGdlbmVyYWwgYXZvaWQgY2FsbGluZyB0aGlzLCBhbmQgdXNlIHZhbGlkYXRpb24gb3JcbiAqIGFzc2VydGluZyBmdW5jdGlvbnMgaW5zdGVhZC4gSG93ZXZlciwgdGhpcyBjYW4gYmUgdXNlZnVsIHRvIHByb2R1Y2VcbiAqIHZhbHVlcyB3aGljaCBhcmUgYnJhbmRlZCBieSBjb25zdHJ1Y3Rpb24gKHJlYWxseSBqdXN0IGFuIGVsYWJvcmF0ZVxuICogd2F5IHRvIHdyaXRlICdhcycpLlxuICovXG4vKiBjOCBpZ25vcmUgc3RhcnQgKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCcmFuZGVkPEEgZXh0ZW5kcyBCcmFuZGVkPGFueSwgYW55Pj4odmFsdWU6IFR5cGVVbmRlcmx5aW5nQnJhbmQ8QT4pOiBBIHtcbiAgcmV0dXJuIHZhbHVlIGFzIEE7XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuXG50eXBlIFR5cGVVbmRlcmx5aW5nQnJhbmQ8QT4gPSBPbWl0PEEsIGtleW9mIEJyYW5kPGFueT4+O1xuIl19
package/package.json CHANGED
@@ -35,14 +35,14 @@
35
35
  "organization": true
36
36
  },
37
37
  "devDependencies": {
38
- "@aws-cdk/aws-service-spec": "^0.1.171",
38
+ "@aws-cdk/aws-service-spec": "^0.1.175",
39
39
  "@aws-cdk/cli-plugin-contract": "2.182.2",
40
- "@cdklabs/eslint-plugin": "^2.0.0",
40
+ "@cdklabs/eslint-plugin": "^2.0.2",
41
41
  "@jest/environment": "^29.7.0",
42
42
  "@jest/globals": "^29.7.0",
43
43
  "@jest/types": "^29.6.3",
44
- "@microsoft/api-extractor": "^7.58.2",
45
- "@smithy/util-stream": "^4.5.22",
44
+ "@microsoft/api-extractor": "^7.58.7",
45
+ "@smithy/util-stream": "^4.5.25",
46
46
  "@stylistic/eslint-plugin": "^3",
47
47
  "@types/fs-extra": "^11",
48
48
  "@types/jest": "^29.5.14",
@@ -52,7 +52,7 @@
52
52
  "@types/split2": "^4.2.3",
53
53
  "@typescript-eslint/eslint-plugin": "^8",
54
54
  "@typescript-eslint/parser": "^8",
55
- "aws-cdk-lib": "2.248.0",
55
+ "aws-cdk-lib": "2.250.0",
56
56
  "aws-sdk-client-mock": "^4.1.0",
57
57
  "aws-sdk-client-mock-jest": "^4.1.0",
58
58
  "commit-and-tag-version": "^12",
@@ -64,16 +64,16 @@
64
64
  "eslint-plugin-jest": "^29.15.2",
65
65
  "eslint-plugin-jsdoc": "^62.9.0",
66
66
  "eslint-plugin-prettier": "^4.2.5",
67
- "fast-check": "^4.6.0",
67
+ "fast-check": "^4.7.0",
68
68
  "jest": "^29.7.0",
69
69
  "jest-environment-node": "^29.7.0",
70
70
  "jest-junit": "^16",
71
71
  "jest-when": "^3.7.0",
72
72
  "license-checker": "^25.0.1",
73
73
  "nock": "13",
74
- "nx": "^22.6.4",
74
+ "nx": "^22.6.5",
75
75
  "prettier": "^2.8",
76
- "projen": "^0.99.48",
76
+ "projen": "^0.99.52",
77
77
  "ts-jest": "^29.4.9",
78
78
  "tsx": "^4.21.0",
79
79
  "typescript": "5.9"
@@ -84,7 +84,7 @@
84
84
  "dependencies": {
85
85
  "@aws-cdk/cdk-assets-lib": "^1",
86
86
  "@aws-cdk/cloud-assembly-api": "2.2.2",
87
- "@aws-cdk/cloud-assembly-schema": ">=53.17.0",
87
+ "@aws-cdk/cloud-assembly-schema": ">=53.19.0",
88
88
  "@aws-cdk/cloudformation-diff": "^2",
89
89
  "@aws-cdk/cx-api": "^2",
90
90
  "@aws-sdk/client-appsync": "^3",
@@ -115,7 +115,7 @@
115
115
  "@smithy/util-retry": "^4",
116
116
  "@smithy/util-waiter": "^4",
117
117
  "archiver": "^7.0.1",
118
- "cdk-from-cfn": "^0.295.0",
118
+ "cdk-from-cfn": "^0.297.0",
119
119
  "chalk": "^4",
120
120
  "chokidar": "^4",
121
121
  "fast-deep-equal": "^3.1.3",
@@ -149,7 +149,7 @@
149
149
  "publishConfig": {
150
150
  "access": "public"
151
151
  },
152
- "version": "1.23.0",
152
+ "version": "1.25.0",
153
153
  "packageManager": "yarn@4.13.0",
154
154
  "types": "lib/index.d.ts",
155
155
  "exports": {
@@ -1,17 +0,0 @@
1
- import type { ValidationReporter } from './cfn-api';
2
- import type { SDK } from '../aws-auth/sdk';
3
- import type { EnvironmentResources } from '../environment';
4
- /**
5
- * A ValidationReporter that checks for early validation errors right after
6
- * creating the change set. If any are found, it throws an error listing all validation failures.
7
- * If the DescribeEvents API call fails (for example, due to insufficient permissions),
8
- * it logs a warning instead.
9
- */
10
- export declare class EarlyValidationReporter implements ValidationReporter {
11
- private readonly sdk;
12
- private readonly envResources;
13
- constructor(sdk: SDK, envResources: EnvironmentResources);
14
- fetchDetails(changeSetName: string, stackName: string): Promise<string>;
15
- private getFailedEvents;
16
- }
17
- //# sourceMappingURL=early-validation.d.ts.map
@@ -1,54 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EarlyValidationReporter = void 0;
4
- /**
5
- * A ValidationReporter that checks for early validation errors right after
6
- * creating the change set. If any are found, it throws an error listing all validation failures.
7
- * If the DescribeEvents API call fails (for example, due to insufficient permissions),
8
- * it logs a warning instead.
9
- */
10
- class EarlyValidationReporter {
11
- sdk;
12
- envResources;
13
- constructor(sdk, envResources) {
14
- this.sdk = sdk;
15
- this.envResources = envResources;
16
- }
17
- async fetchDetails(changeSetName, stackName) {
18
- let operationEvents = [];
19
- try {
20
- operationEvents = await this.getFailedEvents(stackName, changeSetName);
21
- }
22
- catch (error) {
23
- let currentVersion = undefined;
24
- try {
25
- currentVersion = (await this.envResources.lookupToolkit()).version;
26
- }
27
- catch (e) {
28
- }
29
- return `The template cannot be deployed because of early validation errors, but retrieving more details about those
30
- errors failed (${error}). Make sure you have permissions to call the DescribeEvents API, or re-bootstrap
31
- your environment by running 'cdk bootstrap' to update the Bootstrap CDK Toolkit stack.
32
- Bootstrap toolkit stack version 30 or later is needed; current version: ${currentVersion ?? 'unknown'}.`;
33
- }
34
- let message = `ChangeSet '${changeSetName}' on stack '${stackName}' failed early validation`;
35
- if (operationEvents.length > 0) {
36
- const failures = operationEvents
37
- .map((event) => ` - ${event.ValidationStatusReason} (at ${event.ValidationPath})`)
38
- .join('\n');
39
- message += `:\n${failures}\n`;
40
- }
41
- return message;
42
- }
43
- async getFailedEvents(stackName, changeSetName) {
44
- return this.sdk.cloudFormation().paginatedDescribeEvents({
45
- StackName: stackName,
46
- ChangeSetName: changeSetName,
47
- Filters: {
48
- FailedEvents: true,
49
- },
50
- });
51
- }
52
- }
53
- exports.EarlyValidationReporter = EarlyValidationReporter;
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFybHktdmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImVhcmx5LXZhbGlkYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBS0E7Ozs7O0dBS0c7QUFDSCxNQUFhLHVCQUF1QjtJQUNMO0lBQTJCO0lBQXhELFlBQTZCLEdBQVEsRUFBbUIsWUFBa0M7UUFBN0QsUUFBRyxHQUFILEdBQUcsQ0FBSztRQUFtQixpQkFBWSxHQUFaLFlBQVksQ0FBc0I7SUFDMUYsQ0FBQztJQUVNLEtBQUssQ0FBQyxZQUFZLENBQUMsYUFBcUIsRUFBRSxTQUFpQjtRQUNoRSxJQUFJLGVBQWUsR0FBcUIsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQztZQUNILGVBQWUsR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxjQUFjLEdBQXVCLFNBQVMsQ0FBQztZQUNuRCxJQUFJLENBQUM7Z0JBQ0gsY0FBYyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ3JFLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2IsQ0FBQztZQUVELE9BQU87aUJBQ0ksS0FBSzs7MEVBRW9ELGNBQWMsSUFBSSxTQUFTLEdBQUcsQ0FBQztRQUNyRyxDQUFDO1FBRUQsSUFBSSxPQUFPLEdBQUcsY0FBYyxhQUFhLGVBQWUsU0FBUywyQkFBMkIsQ0FBQztRQUM3RixJQUFJLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDL0IsTUFBTSxRQUFRLEdBQUcsZUFBZTtpQkFDN0IsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLEtBQUssQ0FBQyxzQkFBc0IsUUFBUSxLQUFLLENBQUMsY0FBYyxHQUFHLENBQUM7aUJBQ2xGLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUVkLE9BQU8sSUFBSSxNQUFNLFFBQVEsSUFBSSxDQUFDO1FBQ2hDLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU8sS0FBSyxDQUFDLGVBQWUsQ0FBQyxTQUFpQixFQUFFLGFBQXFCO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQztZQUN2RCxTQUFTLEVBQUUsU0FBUztZQUNwQixhQUFhLEVBQUUsYUFBYTtZQUM1QixPQUFPLEVBQUU7Z0JBQ1AsWUFBWSxFQUFFLElBQUk7YUFDbkI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF6Q0QsMERBeUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBPcGVyYXRpb25FdmVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgdHlwZSB7IFZhbGlkYXRpb25SZXBvcnRlciB9IGZyb20gJy4vY2ZuLWFwaSc7XG5pbXBvcnQgdHlwZSB7IFNESyB9IGZyb20gJy4uL2F3cy1hdXRoL3Nkayc7XG5pbXBvcnQgdHlwZSB7IEVudmlyb25tZW50UmVzb3VyY2VzIH0gZnJvbSAnLi4vZW52aXJvbm1lbnQnO1xuXG4vKipcbiAqIEEgVmFsaWRhdGlvblJlcG9ydGVyIHRoYXQgY2hlY2tzIGZvciBlYXJseSB2YWxpZGF0aW9uIGVycm9ycyByaWdodCBhZnRlclxuICogY3JlYXRpbmcgdGhlIGNoYW5nZSBzZXQuIElmIGFueSBhcmUgZm91bmQsIGl0IHRocm93cyBhbiBlcnJvciBsaXN0aW5nIGFsbCB2YWxpZGF0aW9uIGZhaWx1cmVzLlxuICogSWYgdGhlIERlc2NyaWJlRXZlbnRzIEFQSSBjYWxsIGZhaWxzIChmb3IgZXhhbXBsZSwgZHVlIHRvIGluc3VmZmljaWVudCBwZXJtaXNzaW9ucyksXG4gKiBpdCBsb2dzIGEgd2FybmluZyBpbnN0ZWFkLlxuICovXG5leHBvcnQgY2xhc3MgRWFybHlWYWxpZGF0aW9uUmVwb3J0ZXIgaW1wbGVtZW50cyBWYWxpZGF0aW9uUmVwb3J0ZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHNkazogU0RLLCBwcml2YXRlIHJlYWRvbmx5IGVudlJlc291cmNlczogRW52aXJvbm1lbnRSZXNvdXJjZXMpIHtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBmZXRjaERldGFpbHMoY2hhbmdlU2V0TmFtZTogc3RyaW5nLCBzdGFja05hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgbGV0IG9wZXJhdGlvbkV2ZW50czogT3BlcmF0aW9uRXZlbnRbXSA9IFtdO1xuICAgIHRyeSB7XG4gICAgICBvcGVyYXRpb25FdmVudHMgPSBhd2FpdCB0aGlzLmdldEZhaWxlZEV2ZW50cyhzdGFja05hbWUsIGNoYW5nZVNldE5hbWUpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsZXQgY3VycmVudFZlcnNpb246IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGN1cnJlbnRWZXJzaW9uID0gKGF3YWl0IHRoaXMuZW52UmVzb3VyY2VzLmxvb2t1cFRvb2xraXQoKSkudmVyc2lvbjtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGBUaGUgdGVtcGxhdGUgY2Fubm90IGJlIGRlcGxveWVkIGJlY2F1c2Ugb2YgZWFybHkgdmFsaWRhdGlvbiBlcnJvcnMsIGJ1dCByZXRyaWV2aW5nIG1vcmUgZGV0YWlscyBhYm91dCB0aG9zZVxuZXJyb3JzIGZhaWxlZCAoJHtlcnJvcn0pLiBNYWtlIHN1cmUgeW91IGhhdmUgcGVybWlzc2lvbnMgdG8gY2FsbCB0aGUgRGVzY3JpYmVFdmVudHMgQVBJLCBvciByZS1ib290c3RyYXBcbnlvdXIgZW52aXJvbm1lbnQgYnkgcnVubmluZyAnY2RrIGJvb3RzdHJhcCcgdG8gdXBkYXRlIHRoZSBCb290c3RyYXAgQ0RLIFRvb2xraXQgc3RhY2suXG5Cb290c3RyYXAgdG9vbGtpdCBzdGFjayB2ZXJzaW9uIDMwIG9yIGxhdGVyIGlzIG5lZWRlZDsgY3VycmVudCB2ZXJzaW9uOiAke2N1cnJlbnRWZXJzaW9uID8/ICd1bmtub3duJ30uYDtcbiAgICB9XG5cbiAgICBsZXQgbWVzc2FnZSA9IGBDaGFuZ2VTZXQgJyR7Y2hhbmdlU2V0TmFtZX0nIG9uIHN0YWNrICcke3N0YWNrTmFtZX0nIGZhaWxlZCBlYXJseSB2YWxpZGF0aW9uYDtcbiAgICBpZiAob3BlcmF0aW9uRXZlbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZhaWx1cmVzID0gb3BlcmF0aW9uRXZlbnRzXG4gICAgICAgIC5tYXAoKGV2ZW50KSA9PiBgICAtICR7ZXZlbnQuVmFsaWRhdGlvblN0YXR1c1JlYXNvbn0gKGF0ICR7ZXZlbnQuVmFsaWRhdGlvblBhdGh9KWApXG4gICAgICAgIC5qb2luKCdcXG4nKTtcblxuICAgICAgbWVzc2FnZSArPSBgOlxcbiR7ZmFpbHVyZXN9XFxuYDtcbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEZhaWxlZEV2ZW50cyhzdGFja05hbWU6IHN0cmluZywgY2hhbmdlU2V0TmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuc2RrLmNsb3VkRm9ybWF0aW9uKCkucGFnaW5hdGVkRGVzY3JpYmVFdmVudHMoe1xuICAgICAgU3RhY2tOYW1lOiBzdGFja05hbWUsXG4gICAgICBDaGFuZ2VTZXROYW1lOiBjaGFuZ2VTZXROYW1lLFxuICAgICAgRmlsdGVyczoge1xuICAgICAgICBGYWlsZWRFdmVudHM6IHRydWUsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=