@aws-cdk/toolkit-lib 1.27.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.
Files changed (50) hide show
  1. package/build-info.json +2 -2
  2. package/db.json.gz +0 -0
  3. package/lib/actions/validate/index.d.ts +10 -0
  4. package/lib/actions/validate/index.js +1 -1
  5. package/lib/api/bootstrap/deploy-bootstrap.js +2 -1
  6. package/lib/api/cloud-assembly/environment.js +16 -4
  7. package/lib/api/deployments/cfn-api.d.ts +24 -6
  8. package/lib/api/deployments/cfn-api.js +81 -33
  9. package/lib/api/deployments/deploy-stack.js +8 -1
  10. package/lib/api/deployments/deployment-result.d.ts +6 -0
  11. package/lib/api/deployments/deployment-result.js +1 -1
  12. package/lib/api/hotswap/hotswap-deployments.js +2 -1
  13. package/lib/api/hotswap/lambda-functions.js +3 -33
  14. package/lib/api/io/private/index.d.ts +1 -0
  15. package/lib/api/io/private/index.js +2 -1
  16. package/lib/api/io/private/messages.d.ts +1 -0
  17. package/lib/api/io/private/messages.js +8 -4
  18. package/lib/api/io/private/span.d.ts +6 -0
  19. package/lib/api/io/private/span.js +10 -3
  20. package/lib/api/stack-events/stack-activity-monitor.d.ts +13 -1
  21. package/lib/api/stack-events/stack-activity-monitor.js +12 -2
  22. package/lib/api/stack-events/stack-event-poller.d.ts +7 -0
  23. package/lib/api/stack-events/stack-event-poller.js +20 -1
  24. package/lib/api/validate/validate-formatting.d.ts +5 -0
  25. package/lib/api/validate/validate-formatting.js +127 -0
  26. package/lib/api/work-graph/work-graph-builder.d.ts +3 -0
  27. package/lib/api/work-graph/work-graph-builder.js +38 -3
  28. package/lib/api/work-graph/work-graph-types.d.ts +19 -7
  29. package/lib/api/work-graph/work-graph-types.js +1 -1
  30. package/lib/api/work-graph/work-graph.d.ts +2 -1
  31. package/lib/api/work-graph/work-graph.js +8 -1
  32. package/lib/index_bg.wasm +0 -0
  33. package/lib/payloads/stack-activity.d.ts +6 -0
  34. package/lib/payloads/stack-activity.js +1 -1
  35. package/lib/private/activity-printer/base.d.ts +7 -1
  36. package/lib/private/activity-printer/base.js +16 -2
  37. package/lib/private/activity-printer/current.js +12 -6
  38. package/lib/private/activity-printer/history.js +15 -12
  39. package/lib/private/tools.d.ts +2 -0
  40. package/lib/private/tools.js +120 -0
  41. package/lib/private/tools.js.plain +21 -0
  42. package/lib/toolkit/toolkit.d.ts +2 -1
  43. package/lib/toolkit/toolkit.js +104 -19
  44. package/lib/toolkit/types.d.ts +30 -0
  45. package/lib/toolkit/types.js +1 -1
  46. package/lib/util/index.d.ts +0 -1
  47. package/lib/util/index.js +1 -2
  48. package/package.json +15 -13
  49. package/lib/util/archive.d.ts +0 -2
  50. package/lib/util/archive.js +0 -86
@@ -49,6 +49,36 @@ export interface DeployedStack extends PhysicalStack {
49
49
  readonly outputs: {
50
50
  [key: string]: string;
51
51
  };
52
+ /**
53
+ * Resources that CloudFormation failed to delete during the stack update
54
+ *
55
+ * When a resource replacement or removal triggers a delete that fails,
56
+ * CloudFormation skips the deletion and completes the update anyway. These
57
+ * resources are no longer managed by CloudFormation but still exist and may
58
+ * incur charges.
59
+ */
60
+ readonly deleteFailures: ResourceDeleteFailure[];
61
+ }
62
+ /**
63
+ * A resource that CloudFormation failed to delete during a stack update
64
+ */
65
+ export interface ResourceDeleteFailure {
66
+ /**
67
+ * The logical ID of the resource in the CloudFormation template
68
+ */
69
+ readonly logicalResourceId: string;
70
+ /**
71
+ * The physical ID of the resource (e.g. an ARN or name)
72
+ */
73
+ readonly physicalResourceId?: string;
74
+ /**
75
+ * The CloudFormation resource type (e.g. AWS::S3::Bucket)
76
+ */
77
+ readonly resourceType: string;
78
+ /**
79
+ * The reason CloudFormation gave for the deletion failure
80
+ */
81
+ readonly reason: string;
52
82
  }
53
83
  /**
54
84
  * An environment, which is an (account, region) pair
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcm9wZXJ0aWVzIHRoYXQgZGVzY3JpYmUgYSBwaHlzaWNhbGx5IGRlcGxveWVkIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGh5c2ljYWxTdGFjazxBcm4gZXh0ZW5kcyAnYXJuUmVxdWlyZWQnIHwgJ2Fybk9wdGlvbmFsJyA9ICdhcm5SZXF1aXJlZCc+IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFja1xuICAgKlxuICAgKiBBIHN0YWNrIG5hbWUgaXMgdW5pcXVlIGluc2lkZSBpdHMgZW52aXJvbm1lbnQsIGJ1dCBub3QgdW5pcXVlIGdsb2JhbGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCBvZiB0aGUgc3RhY2tcbiAgICpcbiAgICogVGhpcyBlbnZpcm9ubWVudCBpcyBhbHdheXMgY29uY3JldGUsIGJlY2F1c2UgZXZlbiB0aG91Z2ggdGhlIENESyBhcHAnc1xuICAgKiBzdGFjayBtYXkgYmUgcmVnaW9uLWFnbm9zdGljLCBpbiBvcmRlciB0byBiZSBkZXBsb3llZCBpdCB3aWxsIGhhdmUgdG8gaGF2ZVxuICAgKiBiZWVuIHNwZWNpYWxpemVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tBcm46IEFybiBleHRlbmRzICdhcm5PcHRpb25hbCcgPyBzdHJpbmcgfCB1bmRlZmluZWQgOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzdWx0IGludGVyZmFjZSBmb3IgdG9vbGtpdC5kZXBsb3kgb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95UmVzdWx0IHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIGRlcGxveWVkIGJ5IHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFja3M6IERlcGxveWVkU3RhY2tbXTtcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBhIGRlcGxveWVkIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95ZWRTdGFjayBleHRlbmRzIFBoeXNpY2FsU3RhY2sge1xuICAvKipcbiAgICogSGllcmFyY2hpY2FsIGlkZW50aWZpZXJcbiAgICpcbiAgICogVGhpcyB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBzdGFjayBpbnNpZGUgdGhlIENESyBhcHAuXG4gICAqXG4gICAqIEluIHByYWN0aWNlIHRoaXMgd2lsbCBiZSB0aGUgc3RhY2sncyBjb25zdHJ1Y3QgcGF0aCwgYnV0IHVuZm9ydHVuYXRlbHkgdGhlXG4gICAqIENsb3VkIEFzc2VtYmx5IGNvbnRyYWN0IGRvZXNuJ3QgcmVxdWlyZSBvciBndWFyYW50ZWUgdGhhdC5cbiAgICovXG4gIHJlYWRvbmx5IGhpZXJhcmNoaWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvdXRwdXRzIG9mIHRoZSBkZXBsb3llZCBDbG91ZEZvcm1hdGlvbiBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0czogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBBbiBlbnZpcm9ubWVudCwgd2hpY2ggaXMgYW4gKGFjY291bnQsIHJlZ2lvbikgcGFpclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudmlyb25tZW50IHtcbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50IG51bWJlclxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVnaW9uIG51bWJlclxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzdWx0IGludGVyZmFjZSBmb3IgdG9vbGtpdC5kZXN0cm95IG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc3Ryb3lSZXN1bHQge1xuICAvKipcbiAgICogTGlzdCBvZiBzdGFja3MgZGVzdHJveWVkIGJ5IHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFja3M6IERlc3Ryb3llZFN0YWNrW107XG59XG5cbi8qKlxuICogQSBzdGFjayB0YXJnZXRlZCBieSBhIGRlc3Ryb3kgb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVzdHJveWVkU3RhY2sgZXh0ZW5kcyBQaHlzaWNhbFN0YWNrPCdhcm5PcHRpb25hbCc+IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHN0YWNrIGV4aXN0ZWQgdG8gYmVnaW4gd2l0aFxuICAgKlxuICAgKiBJZiBgIXN0YWNrRXhpc3RlZGAsIHRoZSBzdGFjayBkaWRuJ3QgZXhpc3QsIHdhc24ndCBkZWxldGVkLCBhbmQgYHN0YWNrQXJuYFxuICAgKiB3aWxsIGJlIGB1bmRlZmluZWRgLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tFeGlzdGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlc3VsdCBpbnRlcmZhY2UgZm9yIHRvb2xraXQucm9sbGJhY2sgb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm9sbGJhY2tSZXN1bHQge1xuICAvKipcbiAgICogTGlzdCBvZiBzdGFja3Mgcm9sbGVkIGJhY2sgYnkgdGhpcyBvcGVyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrczogUm9sbGVkQmFja1N0YWNrW107XG59XG5cbi8qKlxuICogQSBzdGFjayB0YXJnZXRlZCBieSBhIHJvbGxiYWNrIG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvbGxlZEJhY2tTdGFjayBleHRlbmRzIFBoeXNpY2FsU3RhY2sge1xuICAvKipcbiAgICogV2hhdCBvcGVyYXRpb24gd2UgZGlkIGZvciB0aGlzIHN0YWNrXG4gICAqXG4gICAqIEVpdGhlcjogd2UgZGlkIHJvbGwgaXQgYmFjaywgb3Igd2UgZGlkbid0IG5lZWQgdG8gcm9sbCBpdCBiYWNrIGJlY2F1c2VcbiAgICogaXQgd2FzIGFscmVhZHkgc3RhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzdWx0OiBTdGFja1JvbGxiYWNrUmVzdWx0O1xufVxuXG5leHBvcnQgdHlwZSBTdGFja1JvbGxiYWNrUmVzdWx0ID0gJ3JvbGxlZC1iYWNrJyB8ICdhbHJlYWR5LXN0YWJsZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmVhdHVyZUZsYWcge1xuICByZWFkb25seSBtb2R1bGU6IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSByZWNvbW1lbmRlZFZhbHVlOiB1bmtub3duO1xuICByZWFkb25seSB1c2VyVmFsdWU/OiB1bmtub3duO1xuICByZWFkb25seSBleHBsYW5hdGlvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgdW5jb25maWd1cmVkQmVoYXZlc0xpa2U/OiB7IHYyPzogYW55IH07XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBQcm9wZXJ0aWVzIHRoYXQgZGVzY3JpYmUgYSBwaHlzaWNhbGx5IGRlcGxveWVkIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGh5c2ljYWxTdGFjazxBcm4gZXh0ZW5kcyAnYXJuUmVxdWlyZWQnIHwgJ2Fybk9wdGlvbmFsJyA9ICdhcm5SZXF1aXJlZCc+IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFja1xuICAgKlxuICAgKiBBIHN0YWNrIG5hbWUgaXMgdW5pcXVlIGluc2lkZSBpdHMgZW52aXJvbm1lbnQsIGJ1dCBub3QgdW5pcXVlIGdsb2JhbGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBlbnZpcm9ubWVudCBvZiB0aGUgc3RhY2tcbiAgICpcbiAgICogVGhpcyBlbnZpcm9ubWVudCBpcyBhbHdheXMgY29uY3JldGUsIGJlY2F1c2UgZXZlbiB0aG91Z2ggdGhlIENESyBhcHAnc1xuICAgKiBzdGFjayBtYXkgYmUgcmVnaW9uLWFnbm9zdGljLCBpbiBvcmRlciB0byBiZSBkZXBsb3llZCBpdCB3aWxsIGhhdmUgdG8gaGF2ZVxuICAgKiBiZWVuIHNwZWNpYWxpemVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IEVudmlyb25tZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tBcm46IEFybiBleHRlbmRzICdhcm5PcHRpb25hbCcgPyBzdHJpbmcgfCB1bmRlZmluZWQgOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzdWx0IGludGVyZmFjZSBmb3IgdG9vbGtpdC5kZXBsb3kgb3BlcmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95UmVzdWx0IHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIGRlcGxveWVkIGJ5IHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFja3M6IERlcGxveWVkU3RhY2tbXTtcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBhYm91dCBhIGRlcGxveWVkIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVwbG95ZWRTdGFjayBleHRlbmRzIFBoeXNpY2FsU3RhY2sge1xuICAvKipcbiAgICogSGllcmFyY2hpY2FsIGlkZW50aWZpZXJcbiAgICpcbiAgICogVGhpcyB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBzdGFjayBpbnNpZGUgdGhlIENESyBhcHAuXG4gICAqXG4gICAqIEluIHByYWN0aWNlIHRoaXMgd2lsbCBiZSB0aGUgc3RhY2sncyBjb25zdHJ1Y3QgcGF0aCwgYnV0IHVuZm9ydHVuYXRlbHkgdGhlXG4gICAqIENsb3VkIEFzc2VtYmx5IGNvbnRyYWN0IGRvZXNuJ3QgcmVxdWlyZSBvciBndWFyYW50ZWUgdGhhdC5cbiAgICovXG4gIHJlYWRvbmx5IGhpZXJhcmNoaWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvdXRwdXRzIG9mIHRoZSBkZXBsb3llZCBDbG91ZEZvcm1hdGlvbiBzdGFja1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0czogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogUmVzb3VyY2VzIHRoYXQgQ2xvdWRGb3JtYXRpb24gZmFpbGVkIHRvIGRlbGV0ZSBkdXJpbmcgdGhlIHN0YWNrIHVwZGF0ZVxuICAgKlxuICAgKiBXaGVuIGEgcmVzb3VyY2UgcmVwbGFjZW1lbnQgb3IgcmVtb3ZhbCB0cmlnZ2VycyBhIGRlbGV0ZSB0aGF0IGZhaWxzLFxuICAgKiBDbG91ZEZvcm1hdGlvbiBza2lwcyB0aGUgZGVsZXRpb24gYW5kIGNvbXBsZXRlcyB0aGUgdXBkYXRlIGFueXdheS4gVGhlc2VcbiAgICogcmVzb3VyY2VzIGFyZSBubyBsb25nZXIgbWFuYWdlZCBieSBDbG91ZEZvcm1hdGlvbiBidXQgc3RpbGwgZXhpc3QgYW5kIG1heVxuICAgKiBpbmN1ciBjaGFyZ2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlRmFpbHVyZXM6IFJlc291cmNlRGVsZXRlRmFpbHVyZVtdO1xufVxuXG4vKipcbiAqIEEgcmVzb3VyY2UgdGhhdCBDbG91ZEZvcm1hdGlvbiBmYWlsZWQgdG8gZGVsZXRlIGR1cmluZyBhIHN0YWNrIHVwZGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlRGVsZXRlRmFpbHVyZSB7XG4gIC8qKlxuICAgKiBUaGUgbG9naWNhbCBJRCBvZiB0aGUgcmVzb3VyY2UgaW4gdGhlIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlXG4gICAqL1xuICByZWFkb25seSBsb2dpY2FsUmVzb3VyY2VJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGh5c2ljYWwgSUQgb2YgdGhlIHJlc291cmNlIChlLmcuIGFuIEFSTiBvciBuYW1lKVxuICAgKi9cbiAgcmVhZG9ubHkgcGh5c2ljYWxSZXNvdXJjZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgdHlwZSAoZS5nLiBBV1M6OlMzOjpCdWNrZXQpXG4gICAqL1xuICByZWFkb25seSByZXNvdXJjZVR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlYXNvbiBDbG91ZEZvcm1hdGlvbiBnYXZlIGZvciB0aGUgZGVsZXRpb24gZmFpbHVyZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVhc29uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQW4gZW52aXJvbm1lbnQsIHdoaWNoIGlzIGFuIChhY2NvdW50LCByZWdpb24pIHBhaXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbnZpcm9ubWVudCB7XG4gIC8qKlxuICAgKiBUaGUgYWNjb3VudCBudW1iZXJcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlZ2lvbiBudW1iZXJcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3VsdCBpbnRlcmZhY2UgZm9yIHRvb2xraXQuZGVzdHJveSBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXN0cm95UmVzdWx0IHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIGRlc3Ryb3llZCBieSB0aGlzIG9wZXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tzOiBEZXN0cm95ZWRTdGFja1tdO1xufVxuXG4vKipcbiAqIEEgc3RhY2sgdGFyZ2V0ZWQgYnkgYSBkZXN0cm95IG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERlc3Ryb3llZFN0YWNrIGV4dGVuZHMgUGh5c2ljYWxTdGFjazwnYXJuT3B0aW9uYWwnPiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzdGFjayBleGlzdGVkIHRvIGJlZ2luIHdpdGhcbiAgICpcbiAgICogSWYgYCFzdGFja0V4aXN0ZWRgLCB0aGUgc3RhY2sgZGlkbid0IGV4aXN0LCB3YXNuJ3QgZGVsZXRlZCwgYW5kIGBzdGFja0FybmBcbiAgICogd2lsbCBiZSBgdW5kZWZpbmVkYC5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrRXhpc3RlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXN1bHQgaW50ZXJmYWNlIGZvciB0b29sa2l0LnJvbGxiYWNrIG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvbGxiYWNrUmVzdWx0IHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3RhY2tzIHJvbGxlZCBiYWNrIGJ5IHRoaXMgb3BlcmF0aW9uXG4gICAqL1xuICByZWFkb25seSBzdGFja3M6IFJvbGxlZEJhY2tTdGFja1tdO1xufVxuXG4vKipcbiAqIEEgc3RhY2sgdGFyZ2V0ZWQgYnkgYSByb2xsYmFjayBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb2xsZWRCYWNrU3RhY2sgZXh0ZW5kcyBQaHlzaWNhbFN0YWNrIHtcbiAgLyoqXG4gICAqIFdoYXQgb3BlcmF0aW9uIHdlIGRpZCBmb3IgdGhpcyBzdGFja1xuICAgKlxuICAgKiBFaXRoZXI6IHdlIGRpZCByb2xsIGl0IGJhY2ssIG9yIHdlIGRpZG4ndCBuZWVkIHRvIHJvbGwgaXQgYmFjayBiZWNhdXNlXG4gICAqIGl0IHdhcyBhbHJlYWR5IHN0YWJsZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3VsdDogU3RhY2tSb2xsYmFja1Jlc3VsdDtcbn1cblxuZXhwb3J0IHR5cGUgU3RhY2tSb2xsYmFja1Jlc3VsdCA9ICdyb2xsZWQtYmFjaycgfCAnYWxyZWFkeS1zdGFibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZlYXR1cmVGbGFnIHtcbiAgcmVhZG9ubHkgbW9kdWxlOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVjb21tZW5kZWRWYWx1ZTogdW5rbm93bjtcbiAgcmVhZG9ubHkgdXNlclZhbHVlPzogdW5rbm93bjtcbiAgcmVhZG9ubHkgZXhwbGFuYXRpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVuY29uZmlndXJlZEJlaGF2ZXNMaWtlPzogeyB2Mj86IGFueSB9O1xufVxuIl19
@@ -1,4 +1,3 @@
1
- export * from './archive';
2
1
  export * from './arrays';
3
2
  export * from './bool';
4
3
  export * from './bytes';
package/lib/util/index.js CHANGED
@@ -14,7 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./archive"), exports);
18
17
  __exportStar(require("./arrays"), exports);
19
18
  __exportStar(require("./bool"), exports);
20
19
  __exportStar(require("./bytes"), exports);
@@ -35,4 +34,4 @@ __exportStar(require("./type-brands"), exports);
35
34
  __exportStar(require("./types"), exports);
36
35
  __exportStar(require("./version-range"), exports);
37
36
  __exportStar(require("./yaml-cfn"), exports);
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNENBQTBCO0FBQzFCLDJDQUF5QjtBQUN6Qix5Q0FBdUI7QUFDdkIsMENBQXdCO0FBQ3hCLG1EQUFpQztBQUNqQyxpREFBK0I7QUFDL0IsZ0RBQThCO0FBQzlCLGlEQUErQjtBQUMvQixpREFBK0I7QUFDL0IsbURBQWlDO0FBQ2pDLHlDQUF1QjtBQUN2Qix3Q0FBc0I7QUFDdEIsNENBQTBCO0FBQzFCLDZDQUEyQjtBQUMzQixpREFBK0I7QUFDL0IsOENBQTRCO0FBQzVCLHdEQUFzQztBQUN0QyxnREFBOEI7QUFDOUIsMENBQXdCO0FBQ3hCLGtEQUFnQztBQUNoQyw2Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FyY2hpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9hcnJheXMnO1xuZXhwb3J0ICogZnJvbSAnLi9ib29sJztcbmV4cG9ydCAqIGZyb20gJy4vYnl0ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9jbG91ZGZvcm1hdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2NvbnRlbnQtaGFzaCc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdG9yaWVzJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybWF0LWVycm9yJztcbmV4cG9ydCAqIGZyb20gJy4vZ2xvYi1tYXRjaGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZ3Vlc3MtbGFuZ3VhZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9qc29uJztcbmV4cG9ydCAqIGZyb20gJy4vbmV0JztcbmV4cG9ydCAqIGZyb20gJy4vb2JqZWN0cyc7XG5leHBvcnQgKiBmcm9tICcuL3BhcmFsbGVsJztcbmV4cG9ydCAqIGZyb20gJy4vcGFja2FnZS1pbmZvJztcbmV4cG9ydCAqIGZyb20gJy4vc2VyaWFsaXplJztcbmV4cG9ydCAqIGZyb20gJy4vc3RyaW5nLW1hbmlwdWxhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3R5cGUtYnJhbmRzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi92ZXJzaW9uLXJhbmdlJztcbmV4cG9ydCAqIGZyb20gJy4veWFtbC1jZm4nO1xuIl19
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlCO0FBQ3pCLHlDQUF1QjtBQUN2QiwwQ0FBd0I7QUFDeEIsbURBQWlDO0FBQ2pDLGlEQUErQjtBQUMvQixnREFBOEI7QUFDOUIsaURBQStCO0FBQy9CLGlEQUErQjtBQUMvQixtREFBaUM7QUFDakMseUNBQXVCO0FBQ3ZCLHdDQUFzQjtBQUN0Qiw0Q0FBMEI7QUFDMUIsNkNBQTJCO0FBQzNCLGlEQUErQjtBQUMvQiw4Q0FBNEI7QUFDNUIsd0RBQXNDO0FBQ3RDLGdEQUE4QjtBQUM5QiwwQ0FBd0I7QUFDeEIsa0RBQWdDO0FBQ2hDLDZDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXJyYXlzJztcbmV4cG9ydCAqIGZyb20gJy4vYm9vbCc7XG5leHBvcnQgKiBmcm9tICcuL2J5dGVzJztcbmV4cG9ydCAqIGZyb20gJy4vY2xvdWRmb3JtYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZW50LWhhc2gnO1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3Rvcmllcyc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1hdC1lcnJvcic7XG5leHBvcnQgKiBmcm9tICcuL2dsb2ItbWF0Y2hlcic7XG5leHBvcnQgKiBmcm9tICcuL2d1ZXNzLWxhbmd1YWdlJztcbmV4cG9ydCAqIGZyb20gJy4vanNvbic7XG5leHBvcnQgKiBmcm9tICcuL25ldCc7XG5leHBvcnQgKiBmcm9tICcuL29iamVjdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9wYXJhbGxlbCc7XG5leHBvcnQgKiBmcm9tICcuL3BhY2thZ2UtaW5mbyc7XG5leHBvcnQgKiBmcm9tICcuL3NlcmlhbGl6ZSc7XG5leHBvcnQgKiBmcm9tICcuL3N0cmluZy1tYW5pcHVsYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlLWJyYW5kcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vdmVyc2lvbi1yYW5nZSc7XG5leHBvcnQgKiBmcm9tICcuL3lhbWwtY2ZuJztcbiJdfQ==
package/package.json CHANGED
@@ -35,14 +35,15 @@
35
35
  "organization": true
36
36
  },
37
37
  "devDependencies": {
38
- "@aws-cdk/aws-service-spec": "^0.1.181",
38
+ "@aws-cdk/aws-service-spec": "^0.1.185",
39
39
  "@aws-cdk/cli-plugin-contract": "2.182.2",
40
- "@cdklabs/eslint-plugin": "^2.0.6",
40
+ "@aws-cdk/private-tools": "0.0.0",
41
+ "@cdklabs/eslint-plugin": "^2.0.9",
41
42
  "@jest/environment": "^29.7.0",
42
43
  "@jest/globals": "^29.7.0",
43
44
  "@jest/types": "^29.6.3",
44
- "@microsoft/api-extractor": "^7.58.7",
45
- "@smithy/util-stream": "^4.6.4",
45
+ "@microsoft/api-extractor": "^7.58.8",
46
+ "@smithy/util-stream": "^4.6.6",
46
47
  "@stylistic/eslint-plugin": "^3",
47
48
  "@types/fs-extra": "^11",
48
49
  "@types/jest": "^29.5.14",
@@ -52,14 +53,15 @@
52
53
  "@types/split2": "^4.2.3",
53
54
  "@typescript-eslint/eslint-plugin": "^8",
54
55
  "@typescript-eslint/parser": "^8",
55
- "aws-cdk-lib": "2.257.0",
56
+ "aws-cdk-lib": "2.258.1",
56
57
  "aws-sdk-client-mock": "^4.1.0",
57
58
  "aws-sdk-client-mock-jest": "^4.1.0",
58
59
  "commit-and-tag-version": "^12",
59
60
  "constructs": "^10.0.0",
61
+ "esbuild": "^0.28.1",
60
62
  "eslint": "^9",
61
63
  "eslint-config-prettier": "^10.1.8",
62
- "eslint-import-resolver-typescript": "^4.4.4",
64
+ "eslint-import-resolver-typescript": "^4.4.5",
63
65
  "eslint-plugin-import": "^2.32.0",
64
66
  "eslint-plugin-jest": "^29.15.2",
65
67
  "eslint-plugin-jsdoc": "^62.9.0",
@@ -71,11 +73,11 @@
71
73
  "jest-when": "^3.7.0",
72
74
  "license-checker": "^25.0.1",
73
75
  "nock": "13",
74
- "nx": "^22.7.2",
76
+ "nx": "^22.7.5",
75
77
  "prettier": "^2.8",
76
- "projen": "^0.99.63",
78
+ "projen": "^0.99.73",
77
79
  "ts-jest": "^29.4.11",
78
- "tsx": "^4.22.3",
80
+ "tsx": "^4.22.4",
79
81
  "typescript": "5.9"
80
82
  },
81
83
  "peerDependencies": {
@@ -84,7 +86,7 @@
84
86
  "dependencies": {
85
87
  "@aws-cdk/cdk-assets-lib": "^1",
86
88
  "@aws-cdk/cloud-assembly-api": "2.2.5",
87
- "@aws-cdk/cloud-assembly-schema": ">=53.28.0",
89
+ "@aws-cdk/cloud-assembly-schema": ">=54.3.0",
88
90
  "@aws-cdk/cloudformation-diff": "^2",
89
91
  "@aws-cdk/cx-api": "^2",
90
92
  "@aws-sdk/client-appsync": "^3",
@@ -115,7 +117,7 @@
115
117
  "@smithy/util-retry": "^4",
116
118
  "@smithy/util-waiter": "^4",
117
119
  "archiver": "^7.0.1",
118
- "cdk-from-cfn": "^0.300.0",
120
+ "cdk-from-cfn": "^0.304.0",
119
121
  "chalk": "^4",
120
122
  "chokidar": "^4",
121
123
  "fast-deep-equal": "^3.1.3",
@@ -123,7 +125,7 @@
123
125
  "fs-extra": "^11",
124
126
  "p-limit": "^3",
125
127
  "picomatch": "^4",
126
- "semver": "^7.8.0",
128
+ "semver": "^7.8.4",
127
129
  "split2": "^4.2.0",
128
130
  "wrap-ansi": "^7",
129
131
  "yaml": "^1"
@@ -148,7 +150,7 @@
148
150
  "publishConfig": {
149
151
  "access": "public"
150
152
  },
151
- "version": "1.27.0",
153
+ "version": "1.29.0",
152
154
  "packageManager": "yarn@4.13.0",
153
155
  "types": "lib/index.d.ts",
154
156
  "exports": {
@@ -1,2 +0,0 @@
1
- export declare function zipDirectory(directory: string, outputFile: string): Promise<void>;
2
- //# sourceMappingURL=archive.d.ts.map
@@ -1,86 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.zipDirectory = zipDirectory;
4
- const console_1 = require("console");
5
- const fs_1 = require("fs");
6
- const path = require("path");
7
- const fast_glob_1 = require("fast-glob");
8
- const format_error_1 = require("./format-error");
9
- // eslint-disable-next-line @typescript-eslint/no-require-imports
10
- const archiver = require('archiver');
11
- // Adapted from cdk-assets
12
- async function zipDirectory(directory, outputFile) {
13
- // We write to a temporary file and rename at the last moment. This is so that if we are
14
- // interrupted during this process, we don't leave a half-finished file in the target location.
15
- const temporaryOutputFile = `${outputFile}.${randomString()}._tmp`;
16
- await writeZipFile(directory, temporaryOutputFile);
17
- await moveIntoPlace(temporaryOutputFile, outputFile);
18
- }
19
- function writeZipFile(directory, outputFile) {
20
- return new Promise(async (ok, fail) => {
21
- // The below options are needed to support following symlinks when building zip files:
22
- // - onlyFiles: This will prevent symlinks themselves from being copied into the zip.
23
- // - followSymbolicLinks: This will follow symlinks and copy the files within.
24
- const globOptions = {
25
- dot: true,
26
- onlyFiles: true,
27
- followSymbolicLinks: true,
28
- cwd: directory,
29
- };
30
- const files = (0, fast_glob_1.globSync)('**', globOptions); // The output here is already sorted
31
- const output = (0, fs_1.createWriteStream)(outputFile);
32
- const archive = archiver('zip');
33
- archive.on('warning', fail);
34
- archive.on('error', fail);
35
- // archive has been finalized and the output file descriptor has closed, resolve promise
36
- // this has to be done before calling `finalize` since the events may fire immediately after.
37
- // see https://www.npmjs.com/package/archiver
38
- output.once('close', ok);
39
- archive.pipe(output);
40
- // Append files serially to ensure file order
41
- for (const file of files) {
42
- const fullPath = path.resolve(directory, file);
43
- // Exactly 2 promises
44
- // eslint-disable-next-line @cdklabs/promiseall-no-unbounded-parallelism
45
- const [data, stat] = await Promise.all([fs_1.promises.readFile(fullPath), fs_1.promises.stat(fullPath)]);
46
- archive.append(data, {
47
- name: file,
48
- mode: stat.mode,
49
- });
50
- }
51
- await archive.finalize();
52
- });
53
- }
54
- /**
55
- * Rename the file to the target location, taking into account:
56
- *
57
- * - That we may see EPERM on Windows while an Antivirus scanner still has the
58
- * file open, so retry a couple of times.
59
- * - This same function may be called in parallel and be interrupted at any point.
60
- */
61
- async function moveIntoPlace(source, target) {
62
- let delay = 100;
63
- let attempts = 5;
64
- while (true) {
65
- try {
66
- // 'rename' is guaranteed to overwrite an existing target, as long as it is a file (not a directory)
67
- await fs_1.promises.rename(source, target);
68
- return;
69
- }
70
- catch (e) {
71
- if (e.code !== 'EPERM' || attempts-- <= 0) {
72
- throw e;
73
- }
74
- (0, console_1.error)((0, format_error_1.formatErrorMessage)(e));
75
- await sleep(Math.floor(Math.random() * delay));
76
- delay *= 2;
77
- }
78
- }
79
- }
80
- function sleep(ms) {
81
- return new Promise(ok => setTimeout(ok, ms));
82
- }
83
- function randomString() {
84
- return Math.random().toString(36).replace(/[^a-z0-9]+/g, '');
85
- }
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJjaGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImFyY2hpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFXQSxvQ0FNQztBQWpCRCxxQ0FBZ0M7QUFDaEMsMkJBQXVEO0FBQ3ZELDZCQUE2QjtBQUU3Qix5Q0FBcUM7QUFDckMsaURBQW9EO0FBRXBELGlFQUFpRTtBQUNqRSxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7QUFFckMsMEJBQTBCO0FBQ25CLEtBQUssVUFBVSxZQUFZLENBQUMsU0FBaUIsRUFBRSxVQUFrQjtJQUN0RSx3RkFBd0Y7SUFDeEYsK0ZBQStGO0lBQy9GLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxVQUFVLElBQUksWUFBWSxFQUFFLE9BQU8sQ0FBQztJQUNuRSxNQUFNLFlBQVksQ0FBQyxTQUFTLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUNuRCxNQUFNLGFBQWEsQ0FBQyxtQkFBbUIsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsU0FBaUIsRUFBRSxVQUFrQjtJQUN6RCxPQUFPLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDcEMsc0ZBQXNGO1FBQ3RGLHFGQUFxRjtRQUNyRiw4RUFBOEU7UUFDOUUsTUFBTSxXQUFXLEdBQVk7WUFDM0IsR0FBRyxFQUFFLElBQUk7WUFDVCxTQUFTLEVBQUUsSUFBSTtZQUNmLG1CQUFtQixFQUFFLElBQUk7WUFDekIsR0FBRyxFQUFFLFNBQVM7U0FDZixDQUFDO1FBQ0YsTUFBTSxLQUFLLEdBQUcsSUFBQSxvQkFBUSxFQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLG9DQUFvQztRQUUvRSxNQUFNLE1BQU0sR0FBRyxJQUFBLHNCQUFpQixFQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTdDLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxPQUFPLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUxQix3RkFBd0Y7UUFDeEYsNkZBQTZGO1FBQzdGLDZDQUE2QztRQUM3QyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUV6QixPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJCLDZDQUE2QztRQUM3QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQy9DLHFCQUFxQjtZQUNyQix3RUFBd0U7WUFDeEUsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLGFBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25GLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO2dCQUNuQixJQUFJLEVBQUUsSUFBSTtnQkFDVixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7YUFDaEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0sT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILEtBQUssVUFBVSxhQUFhLENBQUMsTUFBYyxFQUFFLE1BQWM7SUFDekQsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ2hCLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNqQixPQUFPLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDO1lBQ0gsb0dBQW9HO1lBQ3BHLE1BQU0sYUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDaEMsT0FBTztRQUNULENBQUM7UUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLE1BQU0sQ0FBQyxDQUFDO1lBQ1YsQ0FBQztZQUNELElBQUEsZUFBSyxFQUFDLElBQUEsaUNBQWtCLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QixNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQy9DLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDYixDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxFQUFVO0lBQ3ZCLE9BQU8sSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUVELFNBQVMsWUFBWTtJQUNuQixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXJyb3IgfSBmcm9tICdjb25zb2xlJztcbmltcG9ydCB7IGNyZWF0ZVdyaXRlU3RyZWFtLCBwcm9taXNlcyBhcyBmcyB9IGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgfSBmcm9tICdmYXN0LWdsb2InO1xuaW1wb3J0IHsgZ2xvYlN5bmMgfSBmcm9tICdmYXN0LWdsb2InO1xuaW1wb3J0IHsgZm9ybWF0RXJyb3JNZXNzYWdlIH0gZnJvbSAnLi9mb3JtYXQtZXJyb3InO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuY29uc3QgYXJjaGl2ZXIgPSByZXF1aXJlKCdhcmNoaXZlcicpO1xuXG4vLyBBZGFwdGVkIGZyb20gY2RrLWFzc2V0c1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHppcERpcmVjdG9yeShkaXJlY3Rvcnk6IHN0cmluZywgb3V0cHV0RmlsZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIC8vIFdlIHdyaXRlIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIHJlbmFtZSBhdCB0aGUgbGFzdCBtb21lbnQuIFRoaXMgaXMgc28gdGhhdCBpZiB3ZSBhcmVcbiAgLy8gaW50ZXJydXB0ZWQgZHVyaW5nIHRoaXMgcHJvY2Vzcywgd2UgZG9uJ3QgbGVhdmUgYSBoYWxmLWZpbmlzaGVkIGZpbGUgaW4gdGhlIHRhcmdldCBsb2NhdGlvbi5cbiAgY29uc3QgdGVtcG9yYXJ5T3V0cHV0RmlsZSA9IGAke291dHB1dEZpbGV9LiR7cmFuZG9tU3RyaW5nKCl9Ll90bXBgO1xuICBhd2FpdCB3cml0ZVppcEZpbGUoZGlyZWN0b3J5LCB0ZW1wb3JhcnlPdXRwdXRGaWxlKTtcbiAgYXdhaXQgbW92ZUludG9QbGFjZSh0ZW1wb3JhcnlPdXRwdXRGaWxlLCBvdXRwdXRGaWxlKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVaaXBGaWxlKGRpcmVjdG9yeTogc3RyaW5nLCBvdXRwdXRGaWxlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChvaywgZmFpbCkgPT4ge1xuICAgIC8vIFRoZSBiZWxvdyBvcHRpb25zIGFyZSBuZWVkZWQgdG8gc3VwcG9ydCBmb2xsb3dpbmcgc3ltbGlua3Mgd2hlbiBidWlsZGluZyB6aXAgZmlsZXM6XG4gICAgLy8gLSBvbmx5RmlsZXM6IFRoaXMgd2lsbCBwcmV2ZW50IHN5bWxpbmtzIHRoZW1zZWx2ZXMgZnJvbSBiZWluZyBjb3BpZWQgaW50byB0aGUgemlwLlxuICAgIC8vIC0gZm9sbG93U3ltYm9saWNMaW5rczogVGhpcyB3aWxsIGZvbGxvdyBzeW1saW5rcyBhbmQgY29weSB0aGUgZmlsZXMgd2l0aGluLlxuICAgIGNvbnN0IGdsb2JPcHRpb25zOiBPcHRpb25zID0ge1xuICAgICAgZG90OiB0cnVlLFxuICAgICAgb25seUZpbGVzOiB0cnVlLFxuICAgICAgZm9sbG93U3ltYm9saWNMaW5rczogdHJ1ZSxcbiAgICAgIGN3ZDogZGlyZWN0b3J5LFxuICAgIH07XG4gICAgY29uc3QgZmlsZXMgPSBnbG9iU3luYygnKionLCBnbG9iT3B0aW9ucyk7IC8vIFRoZSBvdXRwdXQgaGVyZSBpcyBhbHJlYWR5IHNvcnRlZFxuXG4gICAgY29uc3Qgb3V0cHV0ID0gY3JlYXRlV3JpdGVTdHJlYW0ob3V0cHV0RmlsZSk7XG5cbiAgICBjb25zdCBhcmNoaXZlID0gYXJjaGl2ZXIoJ3ppcCcpO1xuICAgIGFyY2hpdmUub24oJ3dhcm5pbmcnLCBmYWlsKTtcbiAgICBhcmNoaXZlLm9uKCdlcnJvcicsIGZhaWwpO1xuXG4gICAgLy8gYXJjaGl2ZSBoYXMgYmVlbiBmaW5hbGl6ZWQgYW5kIHRoZSBvdXRwdXQgZmlsZSBkZXNjcmlwdG9yIGhhcyBjbG9zZWQsIHJlc29sdmUgcHJvbWlzZVxuICAgIC8vIHRoaXMgaGFzIHRvIGJlIGRvbmUgYmVmb3JlIGNhbGxpbmcgYGZpbmFsaXplYCBzaW5jZSB0aGUgZXZlbnRzIG1heSBmaXJlIGltbWVkaWF0ZWx5IGFmdGVyLlxuICAgIC8vIHNlZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9hcmNoaXZlclxuICAgIG91dHB1dC5vbmNlKCdjbG9zZScsIG9rKTtcblxuICAgIGFyY2hpdmUucGlwZShvdXRwdXQpO1xuXG4gICAgLy8gQXBwZW5kIGZpbGVzIHNlcmlhbGx5IHRvIGVuc3VyZSBmaWxlIG9yZGVyXG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGgucmVzb2x2ZShkaXJlY3RvcnksIGZpbGUpO1xuICAgICAgLy8gRXhhY3RseSAyIHByb21pc2VzXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGNka2xhYnMvcHJvbWlzZWFsbC1uby11bmJvdW5kZWQtcGFyYWxsZWxpc21cbiAgICAgIGNvbnN0IFtkYXRhLCBzdGF0XSA9IGF3YWl0IFByb21pc2UuYWxsKFtmcy5yZWFkRmlsZShmdWxsUGF0aCksIGZzLnN0YXQoZnVsbFBhdGgpXSk7XG4gICAgICBhcmNoaXZlLmFwcGVuZChkYXRhLCB7XG4gICAgICAgIG5hbWU6IGZpbGUsXG4gICAgICAgIG1vZGU6IHN0YXQubW9kZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGF3YWl0IGFyY2hpdmUuZmluYWxpemUoKTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmVuYW1lIHRoZSBmaWxlIHRvIHRoZSB0YXJnZXQgbG9jYXRpb24sIHRha2luZyBpbnRvIGFjY291bnQ6XG4gKlxuICogLSBUaGF0IHdlIG1heSBzZWUgRVBFUk0gb24gV2luZG93cyB3aGlsZSBhbiBBbnRpdmlydXMgc2Nhbm5lciBzdGlsbCBoYXMgdGhlXG4gKiAgIGZpbGUgb3Blbiwgc28gcmV0cnkgYSBjb3VwbGUgb2YgdGltZXMuXG4gKiAtIFRoaXMgc2FtZSBmdW5jdGlvbiBtYXkgYmUgY2FsbGVkIGluIHBhcmFsbGVsIGFuZCBiZSBpbnRlcnJ1cHRlZCBhdCBhbnkgcG9pbnQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG1vdmVJbnRvUGxhY2Uoc291cmNlOiBzdHJpbmcsIHRhcmdldDogc3RyaW5nKSB7XG4gIGxldCBkZWxheSA9IDEwMDtcbiAgbGV0IGF0dGVtcHRzID0gNTtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICB0cnkge1xuICAgICAgLy8gJ3JlbmFtZScgaXMgZ3VhcmFudGVlZCB0byBvdmVyd3JpdGUgYW4gZXhpc3RpbmcgdGFyZ2V0LCBhcyBsb25nIGFzIGl0IGlzIGEgZmlsZSAobm90IGEgZGlyZWN0b3J5KVxuICAgICAgYXdhaXQgZnMucmVuYW1lKHNvdXJjZSwgdGFyZ2V0KTtcbiAgICAgIHJldHVybjtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmIChlLmNvZGUgIT09ICdFUEVSTScgfHwgYXR0ZW1wdHMtLSA8PSAwKSB7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgICBlcnJvcihmb3JtYXRFcnJvck1lc3NhZ2UoZSkpO1xuICAgICAgYXdhaXQgc2xlZXAoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogZGVsYXkpKTtcbiAgICAgIGRlbGF5ICo9IDI7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNsZWVwKG1zOiBudW1iZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKG9rID0+IHNldFRpbWVvdXQob2ssIG1zKSk7XG59XG5cbmZ1bmN0aW9uIHJhbmRvbVN0cmluZygpIHtcbiAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnJlcGxhY2UoL1teYS16MC05XSsvZywgJycpO1xufVxuIl19