cdktn 0.25.0-pre.2 → 0.25.0-pre.21

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 (86) hide show
  1. package/.jsii +927 -107
  2. package/lib/annotations.js +4 -4
  3. package/lib/app.js +54 -5
  4. package/lib/aspect.js +3 -4
  5. package/lib/asset-hash.d.ts +75 -0
  6. package/lib/asset-hash.js +129 -0
  7. package/lib/assets.d.ts +168 -0
  8. package/lib/assets.js +128 -0
  9. package/lib/backends/azurerm-backend.js +4 -6
  10. package/lib/backends/cloud-backend.js +10 -10
  11. package/lib/backends/consul-backend.js +4 -6
  12. package/lib/backends/cos-backend.js +4 -6
  13. package/lib/backends/gcs-backend.js +4 -6
  14. package/lib/backends/http-backend.js +4 -6
  15. package/lib/backends/local-backend.js +38 -7
  16. package/lib/backends/oss-backend.js +4 -6
  17. package/lib/backends/pg-backend.js +4 -6
  18. package/lib/backends/remote-backend.js +8 -10
  19. package/lib/backends/s3-backend.js +4 -6
  20. package/lib/backends/swift-backend.js +4 -6
  21. package/lib/complex-computed-list.js +114 -65
  22. package/lib/errors.d.ts +6 -0
  23. package/lib/errors.js +24 -3
  24. package/lib/functions/provider-function.js +2 -4
  25. package/lib/functions/terraform-functions.generated.js +2 -4
  26. package/lib/ignore-strategy.d.ts +82 -0
  27. package/lib/ignore-strategy.js +29 -0
  28. package/lib/importable-resource.js +3 -4
  29. package/lib/index.d.ts +3 -0
  30. package/lib/index.js +27 -2
  31. package/lib/manifest.js +56 -14
  32. package/lib/private/fs.d.ts +74 -2
  33. package/lib/private/fs.js +129 -17
  34. package/lib/private/unique.js +35 -2
  35. package/lib/resource.js +3 -4
  36. package/lib/synthesize/synthesizer.js +43 -4
  37. package/lib/terraform-asset.d.ts +33 -2
  38. package/lib/terraform-asset.js +118 -34
  39. package/lib/terraform-backend.js +3 -4
  40. package/lib/terraform-count.js +3 -4
  41. package/lib/terraform-data-resource.js +12 -10
  42. package/lib/terraform-data-source.js +10 -4
  43. package/lib/terraform-dynamic-block.js +5 -2
  44. package/lib/terraform-dynamic-expression.js +4 -1
  45. package/lib/terraform-element.js +34 -6
  46. package/lib/terraform-ephemeral-resource.js +10 -4
  47. package/lib/terraform-functions.js +2 -4
  48. package/lib/terraform-hcl-module.js +3 -4
  49. package/lib/terraform-iterator.js +11 -12
  50. package/lib/terraform-local.js +3 -4
  51. package/lib/terraform-module-asset.js +45 -5
  52. package/lib/terraform-module.js +8 -4
  53. package/lib/terraform-operators.js +2 -4
  54. package/lib/terraform-output.js +7 -4
  55. package/lib/terraform-provider.js +5 -4
  56. package/lib/terraform-provisioner.js +2 -4
  57. package/lib/terraform-remote-state.js +5 -5
  58. package/lib/terraform-resource-targets.js +3 -7
  59. package/lib/terraform-resource.js +16 -5
  60. package/lib/terraform-stack.js +38 -38
  61. package/lib/terraform-variable.js +25 -22
  62. package/lib/testing/index.js +42 -8
  63. package/lib/testing/matchers.js +39 -6
  64. package/lib/tfExpression.js +25 -8
  65. package/lib/tokens/lazy.js +11 -7
  66. package/lib/tokens/private/dependency.js +2 -2
  67. package/lib/tokens/private/encoding.js +6 -1
  68. package/lib/tokens/private/intrinsic.js +6 -1
  69. package/lib/tokens/private/resolve.js +2 -5
  70. package/lib/tokens/private/token-map.js +4 -6
  71. package/lib/tokens/private/uniqueid.js +35 -2
  72. package/lib/tokens/resolvable.js +4 -6
  73. package/lib/tokens/string-fragments.js +6 -10
  74. package/lib/tokens/token.js +15 -18
  75. package/lib/upgrade-id-aspect.js +37 -6
  76. package/lib/validations/target-versions.js +39 -2
  77. package/lib/validations/validate-binary-version.js +39 -2
  78. package/lib/validations/validate-function-version-support.js +2 -1
  79. package/lib/validations/validate-provider-function-target-support.js +2 -1
  80. package/lib/validations/validate-provider-presence.js +10 -9
  81. package/lib/validations/validate-terraform-version.js +3 -1
  82. package/package.json +5 -5
  83. package/scripts/pack.mjs +57 -15
  84. package/lib/tsconfig.tsbuildinfo +0 -1
  85. package/tsconfig.json +0 -40
  86. package/tsconfig.test.json +0 -12
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.Annotations = exports.DISABLE_STACK_TRACE_IN_METADATA = exports.AnnotationMetadataEntryType = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
@@ -14,6 +13,8 @@ exports.DISABLE_STACK_TRACE_IN_METADATA = "@cdktf/disable_stack_trace_in_metadat
14
13
  * Includes API for attaching annotations such as warning messages to constructs.
15
14
  */
16
15
  class Annotations {
16
+ scope;
17
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.Annotations", version: "0.25.0-pre.21" };
17
18
  /**
18
19
  * Returns the annotations API for a construct scope.
19
20
  * @param scope The scope
@@ -21,6 +22,7 @@ class Annotations {
21
22
  static of(scope) {
22
23
  return new Annotations(scope);
23
24
  }
25
+ stackTraces;
24
26
  constructor(scope) {
25
27
  this.scope = scope;
26
28
  const disableTrace = scope.node.tryGetContext(exports.DISABLE_STACK_TRACE_IN_METADATA) || false;
@@ -68,6 +70,4 @@ class Annotations {
68
70
  }
69
71
  }
70
72
  exports.Annotations = Annotations;
71
- _a = JSII_RTTI_SYMBOL_1;
72
- Annotations[_a] = { fqn: "cdktn.Annotations", version: "0.25.0-pre.2" };
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYW5ub3RhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFPQSxJQUFZLDJCQUlYO0FBSkQsV0FBWSwyQkFBMkI7SUFDckMsbURBQW9CLENBQUE7SUFDcEIsbURBQW9CLENBQUE7SUFDcEIscURBQXNCLENBQUE7QUFDeEIsQ0FBQyxFQUpXLDJCQUEyQiwyQ0FBM0IsMkJBQTJCLFFBSXRDO0FBRVksUUFBQSwrQkFBK0IsR0FDMUMsd0NBQXdDLENBQUM7QUFFM0M7O0dBRUc7QUFDSCxNQUFhLFdBQVc7SUFDdEI7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFpQjtRQUNoQyxPQUFPLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFJRCxZQUFxQyxLQUFpQjtRQUFqQixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ3BELE1BQU0sWUFBWSxHQUNoQixLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyx1Q0FBK0IsQ0FBQyxJQUFJLEtBQUssQ0FBQztRQUVyRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsWUFBWSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLFVBQVUsQ0FBQyxPQUFlO1FBQy9CLElBQUksQ0FBQyxVQUFVLENBQUMsMkJBQTJCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxPQUFPLENBQUMsT0FBZTtRQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLDJCQUEyQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFFBQVEsQ0FBQyxPQUFlO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsMkJBQTJCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssVUFBVSxDQUFDLEtBQWtDLEVBQUUsT0FBZTtRQUNwRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRTtZQUMxQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDN0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUE1REgsa0NBNkRDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbi8vIE9yaWdpbmFsbHkgZnJvbSBhd3MtY2RrIHYyIGJlY2F1c2Ugd2l0aCBjb25zdHJ1Y3RzIHYxMCBhZGRNZXNzYWdlIHdhcyByZW1vdmVkXG4vLyBpbiBmYXZvciBvZiBBbm5vdGF0aW9ucyBpbiB0aGUgQVdTIENES1xuLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvZGNhZTNlZWFkMGRiZjlhY2IxZWQ4MGJhOTViYjEwNGM2NGNiMWJkNy9wYWNrYWdlcy9AYXdzLWNkay9jb3JlL2xpYi9hbm5vdGF0aW9ucy50c1xuaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmV4cG9ydCBlbnVtIEFubm90YXRpb25NZXRhZGF0YUVudHJ5VHlwZSB7XG4gIElORk8gPSBcIkBjZGt0Zi9pbmZvXCIsXG4gIFdBUk4gPSBcIkBjZGt0Zi93YXJuXCIsXG4gIEVSUk9SID0gXCJAY2RrdGYvZXJyb3JcIixcbn1cblxuZXhwb3J0IGNvbnN0IERJU0FCTEVfU1RBQ0tfVFJBQ0VfSU5fTUVUQURBVEEgPVxuICBcIkBjZGt0Zi9kaXNhYmxlX3N0YWNrX3RyYWNlX2luX21ldGFkYXRhXCI7XG5cbi8qKlxuICogSW5jbHVkZXMgQVBJIGZvciBhdHRhY2hpbmcgYW5ub3RhdGlvbnMgc3VjaCBhcyB3YXJuaW5nIG1lc3NhZ2VzIHRvIGNvbnN0cnVjdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBbm5vdGF0aW9ucyB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhbm5vdGF0aW9ucyBBUEkgZm9yIGEgY29uc3RydWN0IHNjb3BlLlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHNjb3BlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHNjb3BlOiBJQ29uc3RydWN0KSB7XG4gICAgcmV0dXJuIG5ldyBBbm5vdGF0aW9ucyhzY29wZSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHN0YWNrVHJhY2VzOiBib29sZWFuO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzY29wZTogSUNvbnN0cnVjdCkge1xuICAgIGNvbnN0IGRpc2FibGVUcmFjZSA9XG4gICAgICBzY29wZS5ub2RlLnRyeUdldENvbnRleHQoRElTQUJMRV9TVEFDS19UUkFDRV9JTl9NRVRBREFUQSkgfHwgZmFsc2U7XG5cbiAgICB0aGlzLnN0YWNrVHJhY2VzID0gIWRpc2FibGVUcmFjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgd2FybmluZyBtZXRhZGF0YSBlbnRyeSB0byB0aGlzIGNvbnN0cnVjdC5cbiAgICpcbiAgICogVGhlIENMSSB3aWxsIGRpc3BsYXkgdGhlIHdhcm5pbmcgd2hlbiBhbiBhcHAgaXMgc3ludGhlc2l6ZWQuXG4gICAqIEluIGEgZnV0dXJlIHJlbGVhc2UgdGhlIENMSSBtaWdodCBpbnRyb2R1Y2UgYSAtLXN0cmljdCBmbGFnIHdoaWNoXG4gICAqIHdpbGwgdGhlbiBmYWlsIHRoZSBzeW50aGVzaXMgaWYgaXQgZW5jb3VudGVycyBhIHdhcm5pbmcuXG4gICAqXG4gICAqIEBwYXJhbSBtZXNzYWdlIFRoZSB3YXJuaW5nIG1lc3NhZ2UuXG4gICAqL1xuICBwdWJsaWMgYWRkV2FybmluZyhtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFkZE1lc3NhZ2UoQW5ub3RhdGlvbk1ldGFkYXRhRW50cnlUeXBlLldBUk4sIG1lc3NhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gaW5mbyBtZXRhZGF0YSBlbnRyeSB0byB0aGlzIGNvbnN0cnVjdC5cbiAgICpcbiAgICogVGhlIENMSSB3aWxsIGRpc3BsYXkgdGhlIGluZm8gbWVzc2FnZSB3aGVuIGFwcHMgYXJlIHN5bnRoZXNpemVkLlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgaW5mbyBtZXNzYWdlLlxuICAgKi9cbiAgcHVibGljIGFkZEluZm8obWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5hZGRNZXNzYWdlKEFubm90YXRpb25NZXRhZGF0YUVudHJ5VHlwZS5JTkZPLCBtZXNzYWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIHsgXCJlcnJvclwiOiA8bWVzc2FnZT4gfSBtZXRhZGF0YSBlbnRyeSB0byB0aGlzIGNvbnN0cnVjdC5cbiAgICogVGhlIHRvb2xraXQgd2lsbCBmYWlsIHN5bnRoZXNpcyB3aGVuIGVycm9ycyBhcmUgcmVwb3J0ZWQuXG4gICAqIEBwYXJhbSBtZXNzYWdlIFRoZSBlcnJvciBtZXNzYWdlLlxuICAgKi9cbiAgcHVibGljIGFkZEVycm9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHRoaXMuYWRkTWVzc2FnZShBbm5vdGF0aW9uTWV0YWRhdGFFbnRyeVR5cGUuRVJST1IsIG1lc3NhZ2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBtZXNzYWdlIG1ldGFkYXRhIGVudHJ5IHRvIHRoZSBjb25zdHJ1Y3Qgbm9kZSwgdG8gYmUgZGlzcGxheWVkIGJ5IHRoZSBDREsgQ0xJLlxuICAgKiBAcGFyYW0gbGV2ZWwgVGhlIG1lc3NhZ2UgbGV2ZWxcbiAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgaXRzZWxmXG4gICAqL1xuICBwcml2YXRlIGFkZE1lc3NhZ2UobGV2ZWw6IEFubm90YXRpb25NZXRhZGF0YUVudHJ5VHlwZSwgbWVzc2FnZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zY29wZS5ub2RlLmFkZE1ldGFkYXRhKGxldmVsLCBtZXNzYWdlLCB7XG4gICAgICBzdGFja1RyYWNlOiB0aGlzLnN0YWNrVHJhY2VzLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYW5ub3RhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQU9BLElBQVksMkJBSVg7QUFKRCxXQUFZLDJCQUEyQjtJQUNyQyxtREFBb0IsQ0FBQTtJQUNwQixtREFBb0IsQ0FBQTtJQUNwQixxREFBc0IsQ0FBQTtBQUN4QixDQUFDLEVBSlcsMkJBQTJCLDJDQUEzQiwyQkFBMkIsUUFJdEM7QUFFWSxRQUFBLCtCQUErQixHQUMxQyx3Q0FBd0MsQ0FBQztBQUUzQzs7R0FFRztBQUNILE1BQWEsV0FBVztJQVdlOztJQVZyQzs7O09BR0c7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWlCO1FBQ2hDLE9BQU8sSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVnQixXQUFXLENBQVU7SUFFdEMsWUFBcUMsS0FBaUI7UUFBakIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUNwRCxNQUFNLFlBQVksR0FDaEIsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsdUNBQStCLENBQUMsSUFBSSxLQUFLLENBQUM7UUFFckUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLFlBQVksQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxVQUFVLENBQUMsT0FBZTtRQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLDJCQUEyQixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksT0FBTyxDQUFDLE9BQWU7UUFDNUIsSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxRQUFRLENBQUMsT0FBZTtRQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLDJCQUEyQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLFVBQVUsQ0FBQyxLQUFrQyxFQUFFLE9BQWU7UUFDcEUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDMUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQzdCLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBNURILGtDQTZEQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG4vLyBPcmlnaW5hbGx5IGZyb20gYXdzLWNkayB2MiBiZWNhdXNlIHdpdGggY29uc3RydWN0cyB2MTAgYWRkTWVzc2FnZSB3YXMgcmVtb3ZlZFxuLy8gaW4gZmF2b3Igb2YgQW5ub3RhdGlvbnMgaW4gdGhlIEFXUyBDREtcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL2RjYWUzZWVhZDBkYmY5YWNiMWVkODBiYTk1YmIxMDRjNjRjYjFiZDcvcGFja2FnZXMvQGF3cy1jZGsvY29yZS9saWIvYW5ub3RhdGlvbnMudHNcbmltcG9ydCB7IElDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5leHBvcnQgZW51bSBBbm5vdGF0aW9uTWV0YWRhdGFFbnRyeVR5cGUge1xuICBJTkZPID0gXCJAY2RrdGYvaW5mb1wiLFxuICBXQVJOID0gXCJAY2RrdGYvd2FyblwiLFxuICBFUlJPUiA9IFwiQGNka3RmL2Vycm9yXCIsXG59XG5cbmV4cG9ydCBjb25zdCBESVNBQkxFX1NUQUNLX1RSQUNFX0lOX01FVEFEQVRBID1cbiAgXCJAY2RrdGYvZGlzYWJsZV9zdGFja190cmFjZV9pbl9tZXRhZGF0YVwiO1xuXG4vKipcbiAqIEluY2x1ZGVzIEFQSSBmb3IgYXR0YWNoaW5nIGFubm90YXRpb25zIHN1Y2ggYXMgd2FybmluZyBtZXNzYWdlcyB0byBjb25zdHJ1Y3RzLlxuICovXG5leHBvcnQgY2xhc3MgQW5ub3RhdGlvbnMge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYW5ub3RhdGlvbnMgQVBJIGZvciBhIGNvbnN0cnVjdCBzY29wZS5cbiAgICogQHBhcmFtIHNjb3BlIFRoZSBzY29wZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZihzY29wZTogSUNvbnN0cnVjdCkge1xuICAgIHJldHVybiBuZXcgQW5ub3RhdGlvbnMoc2NvcGUpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzdGFja1RyYWNlczogYm9vbGVhbjtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgc2NvcGU6IElDb25zdHJ1Y3QpIHtcbiAgICBjb25zdCBkaXNhYmxlVHJhY2UgPVxuICAgICAgc2NvcGUubm9kZS50cnlHZXRDb250ZXh0KERJU0FCTEVfU1RBQ0tfVFJBQ0VfSU5fTUVUQURBVEEpIHx8IGZhbHNlO1xuXG4gICAgdGhpcy5zdGFja1RyYWNlcyA9ICFkaXNhYmxlVHJhY2U7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHdhcm5pbmcgbWV0YWRhdGEgZW50cnkgdG8gdGhpcyBjb25zdHJ1Y3QuXG4gICAqXG4gICAqIFRoZSBDTEkgd2lsbCBkaXNwbGF5IHRoZSB3YXJuaW5nIHdoZW4gYW4gYXBwIGlzIHN5bnRoZXNpemVkLlxuICAgKiBJbiBhIGZ1dHVyZSByZWxlYXNlIHRoZSBDTEkgbWlnaHQgaW50cm9kdWNlIGEgLS1zdHJpY3QgZmxhZyB3aGljaFxuICAgKiB3aWxsIHRoZW4gZmFpbCB0aGUgc3ludGhlc2lzIGlmIGl0IGVuY291bnRlcnMgYSB3YXJuaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgd2FybmluZyBtZXNzYWdlLlxuICAgKi9cbiAgcHVibGljIGFkZFdhcm5pbmcobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgdGhpcy5hZGRNZXNzYWdlKEFubm90YXRpb25NZXRhZGF0YUVudHJ5VHlwZS5XQVJOLCBtZXNzYWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGFuIGluZm8gbWV0YWRhdGEgZW50cnkgdG8gdGhpcyBjb25zdHJ1Y3QuXG4gICAqXG4gICAqIFRoZSBDTEkgd2lsbCBkaXNwbGF5IHRoZSBpbmZvIG1lc3NhZ2Ugd2hlbiBhcHBzIGFyZSBzeW50aGVzaXplZC5cbiAgICpcbiAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIGluZm8gbWVzc2FnZS5cbiAgICovXG4gIHB1YmxpYyBhZGRJbmZvKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuYWRkTWVzc2FnZShBbm5vdGF0aW9uTWV0YWRhdGFFbnRyeVR5cGUuSU5GTywgbWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiB7IFwiZXJyb3JcIjogPG1lc3NhZ2U+IH0gbWV0YWRhdGEgZW50cnkgdG8gdGhpcyBjb25zdHJ1Y3QuXG4gICAqIFRoZSB0b29sa2l0IHdpbGwgZmFpbCBzeW50aGVzaXMgd2hlbiBlcnJvcnMgYXJlIHJlcG9ydGVkLlxuICAgKiBAcGFyYW0gbWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICovXG4gIHB1YmxpYyBhZGRFcnJvcihtZXNzYWdlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmFkZE1lc3NhZ2UoQW5ub3RhdGlvbk1ldGFkYXRhRW50cnlUeXBlLkVSUk9SLCBtZXNzYWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbWVzc2FnZSBtZXRhZGF0YSBlbnRyeSB0byB0aGUgY29uc3RydWN0IG5vZGUsIHRvIGJlIGRpc3BsYXllZCBieSB0aGUgQ0RLIENMSS5cbiAgICogQHBhcmFtIGxldmVsIFRoZSBtZXNzYWdlIGxldmVsXG4gICAqIEBwYXJhbSBtZXNzYWdlIFRoZSBtZXNzYWdlIGl0c2VsZlxuICAgKi9cbiAgcHJpdmF0ZSBhZGRNZXNzYWdlKGxldmVsOiBBbm5vdGF0aW9uTWV0YWRhdGFFbnRyeVR5cGUsIG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHRoaXMuc2NvcGUubm9kZS5hZGRNZXRhZGF0YShsZXZlbCwgbWVzc2FnZSwge1xuICAgICAgc3RhY2tUcmFjZTogdGhpcy5zdGFja1RyYWNlcyxcbiAgICB9KTtcbiAgfVxufVxuIl19
package/lib/app.js CHANGED
@@ -1,12 +1,44 @@
1
1
  "use strict";
2
- var _a;
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
3
35
  Object.defineProperty(exports, "__esModule", { value: true });
4
36
  exports.App = exports.CONTEXT_ENV = void 0;
5
37
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
38
  // Copyright (c) HashiCorp, Inc
7
39
  // SPDX-License-Identifier: MPL-2.0
8
40
  const constructs_1 = require("constructs");
9
- const fs = require("fs");
41
+ const fs = __importStar(require("fs"));
10
42
  const package_json_1 = require("../package.json");
11
43
  const annotations_1 = require("./annotations");
12
44
  const manifest_1 = require("./manifest");
@@ -19,6 +51,25 @@ exports.CONTEXT_ENV = "CDKTF_CONTEXT_JSON";
19
51
  * Represents a cdktn application.
20
52
  */
21
53
  class App extends constructs_1.Construct {
54
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.App", version: "0.25.0-pre.21" };
55
+ /**
56
+ * The output directory into which resources will be synthesized.
57
+ */
58
+ outdir;
59
+ hclOutput;
60
+ /**
61
+ * The stack which will be synthesized. If not set, all stacks will be synthesized.
62
+ */
63
+ targetStackId;
64
+ manifest;
65
+ /**
66
+ * Whether to skip all validations during synthesis of the app
67
+ */
68
+ skipValidation;
69
+ /**
70
+ * Whether to skip backend validation during synthesis of the app
71
+ */
72
+ skipBackendValidation;
22
73
  /**
23
74
  * Defines an app
24
75
  * @param config configuration
@@ -118,6 +169,4 @@ class App extends constructs_1.Construct {
118
169
  }
119
170
  }
120
171
  exports.App = App;
121
- _a = JSII_RTTI_SYMBOL_1;
122
- App[_a] = { fqn: "cdktn.App", version: "0.25.0-pre.2" };
123
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsMkNBQW1EO0FBQ25ELHlCQUF5QjtBQUN6QixrREFBMEM7QUFDMUMsK0NBQWdFO0FBQ2hFLHlDQUFzQztBQUV0Qyx1REFBbUQ7QUFDbkQscUNBSWtCO0FBQ2xCLHlDQUFrRTtBQUVsRSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzlCLFFBQUEsV0FBVyxHQUFHLG9CQUFvQixDQUFDO0FBK0NoRDs7R0FFRztBQUNILE1BQWEsR0FBSSxTQUFRLHNCQUFTO0lBeUJoQzs7O09BR0c7SUFDSCxZQUFZLFNBQW9CLEVBQUU7UUFDaEMsS0FBSyxDQUFDLFNBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFekQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxJQUFJLFdBQVcsQ0FBQztRQUN2RSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1FBQ2xELElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDO1FBQzFDLElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQy9CLFNBQVMsR0FBRyxZQUFZLEtBQUssTUFBTSxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUM7UUFDdkQsSUFBSSxDQUFDLGNB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LENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBRUQsd0JBQXdCO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQVcsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sc0JBQXNCLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFMUUsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDOztBQTNKSCxrQkE0SkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gXCIuLi9wYWNrYWdlLmpzb25cIjtcbmltcG9ydCB7IERJU0FCTEVfU1RBQ0tfVFJBQ0VfSU5fTUVUQURBVEEgfSBmcm9tIFwiLi9hbm5vdGF0aW9uc1wiO1xuaW1wb3J0IHsgTWFuaWZlc3QgfSBmcm9tIFwiLi9tYW5pZmVzdFwiO1xuaW1wb3J0IHsgSVN5bnRoZXNpc1Nlc3Npb24gfSBmcm9tIFwiLi9zeW50aGVzaXplXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1TdGFjayB9IGZyb20gXCIuL3RlcnJhZm9ybS1zdGFja1wiO1xuaW1wb3J0IHtcbiAgYXBwVmFsaWRhdGlvbkZhaWx1cmUsXG4gIGNvbnN0cnVjdHNPdXRzaWRlT2ZTdGFja3MsXG4gIG5vQXBwRm91bmQsXG59IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgRkFJTF9PTl9DT05TVFJVQ1RTX09VVFNJREVfT0ZfU1RBQ0tTIH0gZnJvbSBcIi4vZmVhdHVyZXNcIjtcblxuY29uc3QgQVBQX1NZTUJPTCA9IFN5bWJvbC5mb3IoXCJjZGt0Zi9BcHBcIik7XG5leHBvcnQgY29uc3QgQ09OVEVYVF9FTlYgPSBcIkNES1RGX0NPTlRFWFRfSlNPTlwiO1xuZXhwb3J0IGludGVyZmFjZSBBcHBDb25maWcge1xuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSB0byBvdXRwdXQgVGVycmFmb3JtIHJlc291cmNlcy5cbiAgICpcbiAgICogSWYgeW91IGFyZSB1c2luZyB0aGUgQ0RLVE4gQ0xJLCB0aGlzIHZhbHVlIGlzIGF1dG9tYXRpY2FsbHkgc2V0IGZyb20gb25lIG9mIHRoZSBmb2xsb3dpbmcgdGhyZWUgc291cmNlczpcbiAgICogLSBUaGUgYC1vYCAvIGAtLW91dHB1dGAgQ0xJIG9wdGlvblxuICAgKiAtIFRoZSBgQ0RLVEZfT1VURElSYCBlbnZpcm9ubWVudCB2YXJpYWJsZVxuICAgKiAtIFRoZSBgb3V0ZGlyYCBrZXkgaW4gYGNka3RmLmpzb25gXG4gICAqXG4gICAqIElmIHlvdSBhcmUgdXNpbmcgdGhlIENES1ROIENMSSBhbmQgd2FudCB0byBzZXQgYSBkaWZmZXJlbnQgdmFsdWUgaGVyZSwgeW91IHdpbGwgYWxzbyBuZWVkIHRvIHNldCB0aGUgc2FtZSB2YWx1ZSB2aWEgb25lIG9mIHRoZSB0aHJlZSB3YXlzIHNwZWNpZmllZCBhYm92ZS5cbiAgICpcbiAgICogVGhlIG1vc3QgY29tbW9uIGNhc2UgdG8gc2V0IHRoaXMgdmFsdWUgaXMgd2hlbiB5b3UgYXJlIHVzaW5nIHRoZSBDREtUTiBsaWJyYXJ5IGRpcmVjdGx5IChlLmcuIHdoZW4gd3JpdGluZyB1bml0IHRlc3RzKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBDREtURl9PVVRESVIgaWYgZGVmaW5lZCwgb3RoZXJ3aXNlIFwiY2RrdGYub3V0XCJcbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcj86IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhY2tUcmFjZXM/OiBib29sZWFuO1xuXG4gIHJlYWRvbmx5IGhjbE91dHB1dD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgY29udGV4dCB2YWx1ZXMgZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogQ29udGV4dCBzZXQgYnkgdGhlIENMSSBvciB0aGUgYGNvbnRleHRgIGtleSBpbiBgY2RrdGYuanNvbmAgaGFzIHByZWNlZGVuY2UuXG4gICAqXG4gICAqIENvbnRleHQgY2FuIGJlIHJlYWQgZnJvbSBhbnkgY29uc3RydWN0IHVzaW5nIGBub2RlLmdldENvbnRleHQoa2V5KWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0PzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBza2lwIGFsbCB2YWxpZGF0aW9ucyBkdXJpbmcgc3ludGhlc2lzIG9mIHRoZSBhcHBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcFZhbGlkYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNraXAgYmFja2VuZCB2YWxpZGF0aW9uIGR1cmluZyBzeW50aGVzaXMgb2YgdGhlIGFwcFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwQmFja2VuZFZhbGlkYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjZGt0biBhcHBsaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFwcCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgb3V0cHV0IGRpcmVjdG9yeSBpbnRvIHdoaWNoIHJlc291cmNlcyB3aWxsIGJlIHN5bnRoZXNpemVkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG91dGRpcjogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBoY2xPdXRwdXQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayB3aGljaCB3aWxsIGJlIHN5bnRoZXNpemVkLiBJZiBub3Qgc2V0LCBhbGwgc3RhY2tzIHdpbGwgYmUgc3ludGhlc2l6ZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0U3RhY2tJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyByZWFkb25seSBtYW5pZmVzdDogTWFuaWZlc3Q7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2tpcCBhbGwgdmFsaWRhdGlvbnMgZHVyaW5nIHN5bnRoZXNpcyBvZiB0aGUgYXBwXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2tpcFZhbGlkYXRpb246IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2tpcCBiYWNrZW5kIHZhbGlkYXRpb24gZHVyaW5nIHN5bnRoZXNpcyBvZiB0aGUgYXBwXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2tpcEJhY2tlbmRWYWxpZGF0aW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGFuIGFwcFxuICAgKiBAcGFyYW0gY29uZmlnIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQXBwQ29uZmlnID0ge30pIHtcbiAgICBzdXBlcih1bmRlZmluZWQgYXMgYW55LCBcIlwiKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgQVBQX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMub3V0ZGlyID0gY29uZmlnLm91dGRpciA/PyBwcm9jZXNzLmVudi5DREtURl9PVVRESVIgPz8gXCJjZGt0Zi5vdXRcIjtcbiAgICBjb25zdCBlbnZIY2xPdXRwdXQgPSBwcm9jZXNzLmVudi5TWU5USF9IQ0xfT1VUUFVUO1xuICAgIGxldCBoY2xPdXRwdXQgPSBjb25maWcuaGNsT3V0cHV0IHx8IGZhbHNlO1xuICAgIGlmIChlbnZIY2xPdXRwdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGNsT3V0cHV0ID0gZW52SGNsT3V0cHV0ID09PSBcInRydWVcIjtcbiAgICB9XG5cbiAgICB0aGlzLmhjbE91dHB1dCA9IGhjbE91dHB1dDtcbiAgICB0aGlzLnRhcmdldFN0YWNrSWQgPSBwcm9jZXNzLmVudi5DREtURl9UQVJHRVRfU1RBQ0tfSUQ7XG4gICAgdGhpcy5za2lwVmFsaWRhdGlvbiA9IGNvbmZpZy5za2lwVmFsaWRhdGlvbiB8fCBmYWxzZTtcbiAgICB0aGlzLnNraXBCYWNrZW5kVmFsaWRhdGlvbiA9IGNvbmZpZy5za2lwQmFja2VuZFZhbGlkYXRpb24gfHwgZmFsc2U7XG5cbiAgICB0aGlzLmxvYWRDb250ZXh0KGNvbmZpZy5jb250ZXh0KTtcblxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGU7XG4gICAgaWYgKGNvbmZpZy5zdGFja1RyYWNlcyA9PT0gZmFsc2UpIHtcbiAgICAgIG5vZGUuc2V0Q29udGV4dChESVNBQkxFX1NUQUNLX1RSQUNFX0lOX01FVEFEQVRBLCB0cnVlKTtcbiAgICB9XG5cbiAgICBub2RlLnNldENvbnRleHQoXCJjZGt0ZlZlcnNpb25cIiwgdmVyc2lvbik7XG5cbiAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5vdXRkaXIpKSB7XG4gICAgICBmcy5ta2RpclN5bmModGhpcy5vdXRkaXIpO1xuICAgIH1cbiAgICB0aGlzLm1hbmlmZXN0ID0gbmV3IE1hbmlmZXN0KHZlcnNpb24sIHRoaXMub3V0ZGlyLCB0aGlzLmhjbE91dHB1dCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzQXBwKHg6IGFueSk6IHggaXMgQXBwIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gXCJvYmplY3RcIiAmJiBBUFBfU1lNQk9MIGluIHg7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG9mKGNvbnN0cnVjdDogSUNvbnN0cnVjdCk6IEFwcCB7XG4gICAgcmV0dXJuIF9sb29rdXAoY29uc3RydWN0KTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZnVuY3Rpb24gX2xvb2t1cChjOiBJQ29uc3RydWN0KTogQXBwIHtcbiAgICAgIGlmIChBcHAuaXNBcHAoYykpIHtcbiAgICAgICAgcmV0dXJuIGM7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vZGUgPSBjLm5vZGU7XG5cbiAgICAgIGlmICghbm9kZS5zY29wZSkge1xuICAgICAgICB0aHJvdyBub0FwcEZvdW5kKGNvbnN0cnVjdC5ub2RlLnBhdGgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gX2xvb2t1cChub2RlLnNjb3BlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3ludGhlc2l6ZXMgYWxsIHJlc291cmNlcyB0byB0aGUgb3V0cHV0IGRpcmVjdG9yeVxuICAgKi9cbiAgcHVibGljIHN5bnRoKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlc3Npb246IElTeW50aGVzaXNTZXNzaW9uID0ge1xuICAgICAgb3V0ZGlyOiB0aGlzLm91dGRpcixcbiAgICAgIHNraXBWYWxpZGF0aW9uOiB0aGlzLnNraXBWYWxpZGF0aW9uLFxuICAgICAgbWFuaWZlc3Q6IHRoaXMubWFuaWZlc3QsXG4gICAgICBzdGFja3NQcmVwYXJlZDogdHJ1ZSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3RhY2tzID0gdGhpcy5ub2RlXG4gICAgICAuZmluZEFsbCgpXG4gICAgICAuZmlsdGVyPFRlcnJhZm9ybVN0YWNrPihUZXJyYWZvcm1TdGFjay5pc1N0YWNrKTtcblxuICAgIGlmICh0aGlzLm5vZGUudHJ5R2V0Q29udGV4dChGQUlMX09OX0NPTlNUUlVDVFNfT1VUU0lERV9PRl9TVEFDS1MpKSB7XG4gICAgICBjb25zdCBvcnBoYW5zID0gdGhpcy5ub2RlLmNoaWxkcmVuLmZpbHRlcihcbiAgICAgICAgKGNoaWxkKSA9PiAhVGVycmFmb3JtU3RhY2suaXNTdGFjayhjaGlsZCksXG4gICAgICApO1xuICAgICAgaWYgKG9ycGhhbnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBjb25zdHJ1Y3RzT3V0c2lkZU9mU3RhY2tzKG9ycGhhbnMubWFwKChvKSA9PiBvLm5vZGUucGF0aCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN0YWNrcy5mb3JFYWNoKChzdGFjaykgPT4gc3RhY2sucHJlcGFyZVN0YWNrKCkpO1xuICAgIHN0YWNrcy5mb3JFYWNoKChzdGFjaykgPT4gc3RhY2suc3ludGhlc2l6ZXIuc3ludGhlc2l6ZShzZXNzaW9uKSk7XG5cbiAgICBpZiAoIXRoaXMuc2tpcFZhbGlkYXRpb24pIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25zID0gdGhpcy5ub2RlLnZhbGlkYXRlKCk7XG4gICAgICBpZiAodmFsaWRhdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGVycm9yTGlzdCA9IHZhbGlkYXRpb25zLmpvaW4oXCJcXG4gIFwiKTtcbiAgICAgICAgdGhyb3cgYXBwVmFsaWRhdGlvbkZhaWx1cmUoZXJyb3JMaXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm1hbmlmZXN0LndyaXRlVG9GaWxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHJlZmVyZW5jZSBmcm9tIG9uZSBzdGFjayB0byBhbm90aGVyLCBpbnZva2VkIG9uIHByZXBhcmVTdGFjayBzaW5jZSBpdCBjcmVhdGVzIGV4dHJhIHJlc291cmNlc1xuICAgKi9cbiAgcHVibGljIGNyb3NzU3RhY2tSZWZlcmVuY2UoXG4gICAgZnJvbVN0YWNrOiBUZXJyYWZvcm1TdGFjayxcbiAgICB0b1N0YWNrOiBUZXJyYWZvcm1TdGFjayxcbiAgICBpZGVudGlmaWVyOiBzdHJpbmcsXG4gICk6IHN0cmluZyB7XG4gICAgdG9TdGFjay5hZGREZXBlbmRlbmN5KGZyb21TdGFjayk7XG4gICAgY29uc3Qgb3V0cHV0SWQgPVxuICAgICAgZnJvbVN0YWNrLnJlZ2lzdGVyT3V0Z29pbmdDcm9zc1N0YWNrUmVmZXJlbmNlKFxuICAgICAgICBpZGVudGlmaWVyLFxuICAgICAgKS5mcmllbmRseVVuaXF1ZUlkO1xuXG4gICAgY29uc3QgcmVtb3RlU3RhdGUgPSB0b1N0YWNrLnJlZ2lzdGVySW5jb21pbmdDcm9zc1N0YWNrUmVmZXJlbmNlKGZyb21TdGFjayk7XG5cbiAgICByZXR1cm4gcmVtb3RlU3RhdGUuZ2V0U3RyaW5nKG91dHB1dElkKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZENvbnRleHQoZGVmYXVsdHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fSkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGU7XG5cbiAgICAvLyBwcmltZSB3aXRoIGRlZmF1bHRzIHBhc3NlZCB0aHJvdWdoIGNvbnN0cnVjdG9yXG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoZGVmYXVsdHMpKSB7XG4gICAgICBub2RlLnNldENvbnRleHQoaywgdik7XG4gICAgfVxuXG4gICAgLy8gcmVhZCBmcm9tIGVudmlyb25tZW50XG4gICAgY29uc3QgY29udGV4dEpzb24gPSBwcm9jZXNzLmVudltDT05URVhUX0VOVl07XG4gICAgY29uc3QgY29udGV4dEZyb21FbnZpcm9ubWVudCA9IGNvbnRleHRKc29uID8gSlNPTi5wYXJzZShjb250ZXh0SnNvbikgOiB7fTtcblxuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGNvbnRleHRGcm9tRW52aXJvbm1lbnQpKSB7XG4gICAgICBub2RlLnNldENvbnRleHQoaywgdik7XG4gICAgfVxuICB9XG59XG4iXX0=
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQywyQ0FBbUQ7QUFDbkQsdUNBQXlCO0FBQ3pCLGtEQUEwQztBQUMxQywrQ0FBZ0U7QUFDaEUseUNBQXNDO0FBRXRDLHVEQUFtRDtBQUNuRCxxQ0FJa0I7QUFDbEIseUNBQWtFO0FBRWxFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDOUIsUUFBQSxXQUFXLEdBQUcsb0JBQW9CLENBQUM7QUErQ2hEOztHQUVHO0FBQ0gsTUFBYSxHQUFJLFNBQVEsc0JBQVM7O0lBQ2hDOztPQUVHO0lBQ2EsTUFBTSxDQUFTO0lBRWYsU0FBUyxDQUFVO0lBRW5DOztPQUVHO0lBQ2EsYUFBYSxDQUFxQjtJQUVsQyxRQUFRLENBQVc7SUFFbkM7O09BRUc7SUFDYSxjQUFjLENBQVU7SUFFeEM7O09BRUc7SUFDYSxxQkFBcUIsQ0FBVTtJQUUvQzs7O09BR0c7SUFDSCxZQUFZLFNBQW9CLEVBQUU7UUFDaEMsS0FBSyxDQUFDLFNBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFekQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxJQUFJLFdBQVcsQ0FBQztRQUN2RSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1FBQ2xELElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDO1FBQzFDLElBQUksWUFBWSxLQUFL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RU8sV0FBVyxDQUFDLFdBQXNDLEVBQUU7UUFDMUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUV2QixpREFBaUQ7UUFDakQsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBRUQsd0JBQXdCO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQVcsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sc0JBQXNCLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFMUUsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDOztBQTNKSCxrQkE0SkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gXCIuLi9wYWNrYWdlLmpzb25cIjtcbmltcG9ydCB7IERJU0FCTEVfU1RBQ0tfVFJBQ0VfSU5fTUVUQURBVEEgfSBmcm9tIFwiLi9hbm5vdGF0aW9uc1wiO1xuaW1wb3J0IHsgTWFuaWZlc3QgfSBmcm9tIFwiLi9tYW5pZmVzdFwiO1xuaW1wb3J0IHsgSVN5bnRoZXNpc1Nlc3Npb24gfSBmcm9tIFwiLi9zeW50aGVzaXplXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1TdGFjayB9IGZyb20gXCIuL3RlcnJhZm9ybS1zdGFja1wiO1xuaW1wb3J0IHtcbiAgYXBwVmFsaWRhdGlvbkZhaWx1cmUsXG4gIGNvbnN0cnVjdHNPdXRzaWRlT2ZTdGFja3MsXG4gIG5vQXBwRm91bmQsXG59IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgRkFJTF9PTl9DT05TVFJVQ1RTX09VVFNJREVfT0ZfU1RBQ0tTIH0gZnJvbSBcIi4vZmVhdHVyZXNcIjtcblxuY29uc3QgQVBQX1NZTUJPTCA9IFN5bWJvbC5mb3IoXCJjZGt0Zi9BcHBcIik7XG5leHBvcnQgY29uc3QgQ09OVEVYVF9FTlYgPSBcIkNES1RGX0NPTlRFWFRfSlNPTlwiO1xuZXhwb3J0IGludGVyZmFjZSBBcHBDb25maWcge1xuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSB0byBvdXRwdXQgVGVycmFmb3JtIHJlc291cmNlcy5cbiAgICpcbiAgICogSWYgeW91IGFyZSB1c2luZyB0aGUgQ0RLVE4gQ0xJLCB0aGlzIHZhbHVlIGlzIGF1dG9tYXRpY2FsbHkgc2V0IGZyb20gb25lIG9mIHRoZSBmb2xsb3dpbmcgdGhyZWUgc291cmNlczpcbiAgICogLSBUaGUgYC1vYCAvIGAtLW91dHB1dGAgQ0xJIG9wdGlvblxuICAgKiAtIFRoZSBgQ0RLVEZfT1VURElSYCBlbnZpcm9ubWVudCB2YXJpYWJsZVxuICAgKiAtIFRoZSBgb3V0ZGlyYCBrZXkgaW4gYGNka3RmLmpzb25gXG4gICAqXG4gICAqIElmIHlvdSBhcmUgdXNpbmcgdGhlIENES1ROIENMSSBhbmQgd2FudCB0byBzZXQgYSBkaWZmZXJlbnQgdmFsdWUgaGVyZSwgeW91IHdpbGwgYWxzbyBuZWVkIHRvIHNldCB0aGUgc2FtZSB2YWx1ZSB2aWEgb25lIG9mIHRoZSB0aHJlZSB3YXlzIHNwZWNpZmllZCBhYm92ZS5cbiAgICpcbiAgICogVGhlIG1vc3QgY29tbW9uIGNhc2UgdG8gc2V0IHRoaXMgdmFsdWUgaXMgd2hlbiB5b3UgYXJlIHVzaW5nIHRoZSBDREtUTiBsaWJyYXJ5IGRpcmVjdGx5IChlLmcuIHdoZW4gd3JpdGluZyB1bml0IHRlc3RzKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBDREtURl9PVVRESVIgaWYgZGVmaW5lZCwgb3RoZXJ3aXNlIFwiY2RrdGYub3V0XCJcbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcj86IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhY2tUcmFjZXM/OiBib29sZWFuO1xuXG4gIHJlYWRvbmx5IGhjbE91dHB1dD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgY29udGV4dCB2YWx1ZXMgZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogQ29udGV4dCBzZXQgYnkgdGhlIENMSSBvciB0aGUgYGNvbnRleHRgIGtleSBpbiBgY2RrdGYuanNvbmAgaGFzIHByZWNlZGVuY2UuXG4gICAqXG4gICAqIENvbnRleHQgY2FuIGJlIHJlYWQgZnJvbSBhbnkgY29uc3RydWN0IHVzaW5nIGBub2RlLmdldENvbnRleHQoa2V5KWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0PzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBza2lwIGFsbCB2YWxpZGF0aW9ucyBkdXJpbmcgc3ludGhlc2lzIG9mIHRoZSBhcHBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcFZhbGlkYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNraXAgYmFja2VuZCB2YWxpZGF0aW9uIGR1cmluZyBzeW50aGVzaXMgb2YgdGhlIGFwcFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwQmFja2VuZFZhbGlkYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjZGt0biBhcHBsaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFwcCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgb3V0cHV0IGRpcmVjdG9yeSBpbnRvIHdoaWNoIHJlc291cmNlcyB3aWxsIGJlIHN5bnRoZXNpemVkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG91dGRpcjogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBoY2xPdXRwdXQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayB3aGljaCB3aWxsIGJlIHN5bnRoZXNpemVkLiBJZiBub3Qgc2V0LCBhbGwgc3RhY2tzIHdpbGwgYmUgc3ludGhlc2l6ZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0U3RhY2tJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyByZWFkb25seSBtYW5pZmVzdDogTWFuaWZlc3Q7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2tpcCBhbGwgdmFsaWRhdGlvbnMgZHVyaW5nIHN5bnRoZXNpcyBvZiB0aGUgYXBwXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2tpcFZhbGlkYXRpb246IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2tpcCBiYWNrZW5kIHZhbGlkYXRpb24gZHVyaW5nIHN5bnRoZXNpcyBvZiB0aGUgYXBwXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2tpcEJhY2tlbmRWYWxpZGF0aW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGFuIGFwcFxuICAgKiBAcGFyYW0gY29uZmlnIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQXBwQ29uZmlnID0ge30pIHtcbiAgICBzdXBlcih1bmRlZmluZWQgYXMgYW55LCBcIlwiKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgQVBQX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMub3V0ZGlyID0gY29uZmlnLm91dGRpciA/PyBwcm9jZXNzLmVudi5DREtURl9PVVRESVIgPz8gXCJjZGt0Zi5vdXRcIjtcbiAgICBjb25zdCBlbnZIY2xPdXRwdXQgPSBwcm9jZXNzLmVudi5TWU5USF9IQ0xfT1VUUFVUO1xuICAgIGxldCBoY2xPdXRwdXQgPSBjb25maWcuaGNsT3V0cHV0IHx8IGZhbHNlO1xuICAgIGlmIChlbnZIY2xPdXRwdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGNsT3V0cHV0ID0gZW52SGNsT3V0cHV0ID09PSBcInRydWVcIjtcbiAgICB9XG5cbiAgICB0aGlzLmhjbE91dHB1dCA9IGhjbE91dHB1dDtcbiAgICB0aGlzLnRhcmdldFN0YWNrSWQgPSBwcm9jZXNzLmVudi5DREtURl9UQVJHRVRfU1RBQ0tfSUQ7XG4gICAgdGhpcy5za2lwVmFsaWRhdGlvbiA9IGNvbmZpZy5za2lwVmFsaWRhdGlvbiB8fCBmYWxzZTtcbiAgICB0aGlzLnNraXBCYWNrZW5kVmFsaWRhdGlvbiA9IGNvbmZpZy5za2lwQmFja2VuZFZhbGlkYXRpb24gfHwgZmFsc2U7XG5cbiAgICB0aGlzLmxvYWRDb250ZXh0KGNvbmZpZy5jb250ZXh0KTtcblxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGU7XG4gICAgaWYgKGNvbmZpZy5zdGFja1RyYWNlcyA9PT0gZmFsc2UpIHtcbiAgICAgIG5vZGUuc2V0Q29udGV4dChESVNBQkxFX1NUQUNLX1RSQUNFX0lOX01FVEFEQVRBLCB0cnVlKTtcbiAgICB9XG5cbiAgICBub2RlLnNldENvbnRleHQoXCJjZGt0ZlZlcnNpb25cIiwgdmVyc2lvbik7XG5cbiAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5vdXRkaXIpKSB7XG4gICAgICBmcy5ta2RpclN5bmModGhpcy5vdXRkaXIpO1xuICAgIH1cbiAgICB0aGlzLm1hbmlmZXN0ID0gbmV3IE1hbmlmZXN0KHZlcnNpb24sIHRoaXMub3V0ZGlyLCB0aGlzLmhjbE91dHB1dCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzQXBwKHg6IGFueSk6IHggaXMgQXBwIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gXCJvYmplY3RcIiAmJiBBUFBfU1lNQk9MIGluIHg7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG9mKGNvbnN0cnVjdDogSUNvbnN0cnVjdCk6IEFwcCB7XG4gICAgcmV0dXJuIF9sb29rdXAoY29uc3RydWN0KTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZnVuY3Rpb24gX2xvb2t1cChjOiBJQ29uc3RydWN0KTogQXBwIHtcbiAgICAgIGlmIChBcHAuaXNBcHAoYykpIHtcbiAgICAgICAgcmV0dXJuIGM7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vZGUgPSBjLm5vZGU7XG5cbiAgICAgIGlmICghbm9kZS5zY29wZSkge1xuICAgICAgICB0aHJvdyBub0FwcEZvdW5kKGNvbnN0cnVjdC5ub2RlLnBhdGgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gX2xvb2t1cChub2RlLnNjb3BlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3ludGhlc2l6ZXMgYWxsIHJlc291cmNlcyB0byB0aGUgb3V0cHV0IGRpcmVjdG9yeVxuICAgKi9cbiAgcHVibGljIHN5bnRoKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlc3Npb246IElTeW50aGVzaXNTZXNzaW9uID0ge1xuICAgICAgb3V0ZGlyOiB0aGlzLm91dGRpcixcbiAgICAgIHNraXBWYWxpZGF0aW9uOiB0aGlzLnNraXBWYWxpZGF0aW9uLFxuICAgICAgbWFuaWZlc3Q6IHRoaXMubWFuaWZlc3QsXG4gICAgICBzdGFja3NQcmVwYXJlZDogdHJ1ZSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3RhY2tzID0gdGhpcy5ub2RlXG4gICAgICAuZmluZEFsbCgpXG4gICAgICAuZmlsdGVyPFRlcnJhZm9ybVN0YWNrPihUZXJyYWZvcm1TdGFjay5pc1N0YWNrKTtcblxuICAgIGlmICh0aGlzLm5vZGUudHJ5R2V0Q29udGV4dChGQUlMX09OX0NPTlNUUlVDVFNfT1VUU0lERV9PRl9TVEFDS1MpKSB7XG4gICAgICBjb25zdCBvcnBoYW5zID0gdGhpcy5ub2RlLmNoaWxkcmVuLmZpbHRlcihcbiAgICAgICAgKGNoaWxkKSA9PiAhVGVycmFmb3JtU3RhY2suaXNTdGFjayhjaGlsZCksXG4gICAgICApO1xuICAgICAgaWYgKG9ycGhhbnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBjb25zdHJ1Y3RzT3V0c2lkZU9mU3RhY2tzKG9ycGhhbnMubWFwKChvKSA9PiBvLm5vZGUucGF0aCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN0YWNrcy5mb3JFYWNoKChzdGFjaykgPT4gc3RhY2sucHJlcGFyZVN0YWNrKCkpO1xuICAgIHN0YWNrcy5mb3JFYWNoKChzdGFjaykgPT4gc3RhY2suc3ludGhlc2l6ZXIuc3ludGhlc2l6ZShzZXNzaW9uKSk7XG5cbiAgICBpZiAoIXRoaXMuc2tpcFZhbGlkYXRpb24pIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25zID0gdGhpcy5ub2RlLnZhbGlkYXRlKCk7XG4gICAgICBpZiAodmFsaWRhdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGVycm9yTGlzdCA9IHZhbGlkYXRpb25zLmpvaW4oXCJcXG4gIFwiKTtcbiAgICAgICAgdGhyb3cgYXBwVmFsaWRhdGlvbkZhaWx1cmUoZXJyb3JMaXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm1hbmlmZXN0LndyaXRlVG9GaWxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHJlZmVyZW5jZSBmcm9tIG9uZSBzdGFjayB0byBhbm90aGVyLCBpbnZva2VkIG9uIHByZXBhcmVTdGFjayBzaW5jZSBpdCBjcmVhdGVzIGV4dHJhIHJlc291cmNlc1xuICAgKi9cbiAgcHVibGljIGNyb3NzU3RhY2tSZWZlcmVuY2UoXG4gICAgZnJvbVN0YWNrOiBUZXJyYWZvcm1TdGFjayxcbiAgICB0b1N0YWNrOiBUZXJyYWZvcm1TdGFjayxcbiAgICBpZGVudGlmaWVyOiBzdHJpbmcsXG4gICk6IHN0cmluZyB7XG4gICAgdG9TdGFjay5hZGREZXBlbmRlbmN5KGZyb21TdGFjayk7XG4gICAgY29uc3Qgb3V0cHV0SWQgPVxuICAgICAgZnJvbVN0YWNrLnJlZ2lzdGVyT3V0Z29pbmdDcm9zc1N0YWNrUmVmZXJlbmNlKFxuICAgICAgICBpZGVudGlmaWVyLFxuICAgICAgKS5mcmllbmRseVVuaXF1ZUlkO1xuXG4gICAgY29uc3QgcmVtb3RlU3RhdGUgPSB0b1N0YWNrLnJlZ2lzdGVySW5jb21pbmdDcm9zc1N0YWNrUmVmZXJlbmNlKGZyb21TdGFjayk7XG5cbiAgICByZXR1cm4gcmVtb3RlU3RhdGUuZ2V0U3RyaW5nKG91dHB1dElkKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZENvbnRleHQoZGVmYXVsdHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fSkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGU7XG5cbiAgICAvLyBwcmltZSB3aXRoIGRlZmF1bHRzIHBhc3NlZCB0aHJvdWdoIGNvbnN0cnVjdG9yXG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoZGVmYXVsdHMpKSB7XG4gICAgICBub2RlLnNldENvbnRleHQoaywgdik7XG4gICAgfVxuXG4gICAgLy8gcmVhZCBmcm9tIGVudmlyb25tZW50XG4gICAgY29uc3QgY29udGV4dEpzb24gPSBwcm9jZXNzLmVudltDT05URVhUX0VOVl07XG4gICAgY29uc3QgY29udGV4dEZyb21FbnZpcm9ubWVudCA9IGNvbnRleHRKc29uID8gSlNPTi5wYXJzZShjb250ZXh0SnNvbikgOiB7fTtcblxuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGNvbnRleHRGcm9tRW52aXJvbm1lbnQpKSB7XG4gICAgICBub2RlLnNldENvbnRleHQoaywgdik7XG4gICAgfVxuICB9XG59XG4iXX0=
package/lib/aspect.js CHANGED
@@ -1,5 +1,4 @@
1
1
  "use strict";
2
- var _a;
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
3
  exports.Aspects = void 0;
5
4
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
@@ -9,6 +8,7 @@ const ASPECTS_SYMBOL = Symbol("cdktf-aspects");
9
8
  * synthesis.
10
9
  */
11
10
  class Aspects {
11
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.Aspects", version: "0.25.0-pre.21" };
12
12
  /**
13
13
  * Returns the `Aspects` object associated with a construct scope.
14
14
  * @param scope The scope for which these aspects will apply.
@@ -25,6 +25,7 @@ class Aspects {
25
25
  }
26
26
  return aspects;
27
27
  }
28
+ _aspects;
28
29
  constructor() {
29
30
  this._aspects = [];
30
31
  }
@@ -43,6 +44,4 @@ class Aspects {
43
44
  }
44
45
  }
45
46
  exports.Aspects = Aspects;
46
- _a = JSII_RTTI_SYMBOL_1;
47
- Aspects[_a] = { fqn: "cdktn.Aspects", version: "0.25.0-pre.2" };
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FzcGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQU1BLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztBQVkvQzs7O0dBR0c7QUFDSCxNQUFhLE9BQU87SUFDbEI7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFpQjtRQUNoQyxJQUFJLE9BQU8sR0FBSSxLQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7WUFFeEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFO2dCQUMzQyxLQUFLLEVBQUUsT0FBTztnQkFDZCxZQUFZLEVBQUUsS0FBSztnQkFDbkIsVUFBVSxFQUFFLEtBQUs7YUFDbEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFJRDtRQUNFLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxHQUFHLENBQUMsTUFBZTtRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLEdBQUc7UUFDWixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUIsQ0FBQzs7QUF0Q0gsMEJBdUNDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbi8vICBPcmlnaW5hbGx5IGZyb20gYXdzLWNkayB2MiBiZWNhdXNlIHdpdGggY29uc3RydWN0cyB2MTAgQXNwZWN0cyB3aGVyZSBtb3ZlZCB0byB0aGUgQVdTIENES1xuLy8gIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL2RjYWUzZWVhZDBkYmY5YWNiMWVkODBiYTk1YmIxMDRjNjRjYjFiZDcvcGFja2FnZXMvQGF3cy1jZGsvY29yZS9saWIvYXNwZWN0LnRzXG5pbXBvcnQgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuY29uc3QgQVNQRUNUU19TWU1CT0wgPSBTeW1ib2woXCJjZGt0Zi1hc3BlY3RzXCIpO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gQXNwZWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUFzcGVjdCB7XG4gIC8qKlxuICAgKiBBbGwgYXNwZWN0cyBjYW4gdmlzaXQgYW4gSUNvbnN0cnVjdFxuICAgKi9cbiAgdmlzaXQobm9kZTogSUNvbnN0cnVjdCk6IHZvaWQ7XG59XG5cbi8qKlxuICogQXNwZWN0cyBjYW4gYmUgYXBwbGllZCB0byBDREsgdHJlZSBzY29wZXMgYW5kIGNhbiBvcGVyYXRlIG9uIHRoZSB0cmVlIGJlZm9yZVxuICogc3ludGhlc2lzLlxuICovXG5leHBvcnQgY2xhc3MgQXNwZWN0cyB7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBgQXNwZWN0c2Agb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBhIGNvbnN0cnVjdCBzY29wZS5cbiAgICogQHBhcmFtIHNjb3BlIFRoZSBzY29wZSBmb3Igd2hpY2ggdGhlc2UgYXNwZWN0cyB3aWxsIGFwcGx5LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZihzY29wZTogSUNvbnN0cnVjdCk6IEFzcGVjdHMge1xuICAgIGxldCBhc3BlY3RzID0gKHNjb3BlIGFzIGFueSlbQVNQRUNUU19TWU1CT0xdO1xuICAgIGlmICghYXNwZWN0cykge1xuICAgICAgYXNwZWN0cyA9IG5ldyBBc3BlY3RzKCk7XG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShzY29wZSwgQVNQRUNUU19TWU1CT0wsIHtcbiAgICAgICAgdmFsdWU6IGFzcGVjdHMsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBhc3BlY3RzO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYXNwZWN0czogSUFzcGVjdFtdO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5fYXNwZWN0cyA9IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gYXNwZWN0IHRvIGFwcGx5IHRoaXMgc2NvcGUgYmVmb3JlIHN5bnRoZXNpcy5cbiAgICogQHBhcmFtIGFzcGVjdCBUaGUgYXNwZWN0IHRvIGFkZC5cbiAgICovXG4gIHB1YmxpYyBhZGQoYXNwZWN0OiBJQXNwZWN0KSB7XG4gICAgdGhpcy5fYXNwZWN0cy5wdXNoKGFzcGVjdCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgYXNwZWN0cyB3aGljaCB3ZXJlIGRpcmVjdGx5IGFwcGxpZWQgb24gdGhpcyBzY29wZS5cbiAgICovXG4gIHB1YmxpYyBnZXQgYWxsKCk6IElBc3BlY3RbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLl9hc3BlY3RzXTtcbiAgfVxufVxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FzcGVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBTUEsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBWS9DOzs7R0FHRztBQUNILE1BQWEsT0FBTzs7SUFDbEI7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsQ0FBQyxLQUFpQjtRQUNoQyxJQUFJLE9BQU8sR0FBSSxLQUFhLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7WUFFeEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFO2dCQUMzQyxLQUFLLEVBQUUsT0FBTztnQkFDZCxZQUFZLEVBQUUsS0FBSztnQkFDbkIsVUFBVSxFQUFFLEtBQUs7YUFDbEIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFZ0IsUUFBUSxDQUFZO0lBRXJDO1FBQ0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEdBQUcsQ0FBQyxNQUFlO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsR0FBRztRQUNaLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QixDQUFDOztBQXRDSCwwQkF1Q0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuLy8gIE9yaWdpbmFsbHkgZnJvbSBhd3MtY2RrIHYyIGJlY2F1c2Ugd2l0aCBjb25zdHJ1Y3RzIHYxMCBBc3BlY3RzIHdoZXJlIG1vdmVkIHRvIHRoZSBBV1MgQ0RLXG4vLyAgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvZGNhZTNlZWFkMGRiZjlhY2IxZWQ4MGJhOTViYjEwNGM2NGNiMWJkNy9wYWNrYWdlcy9AYXdzLWNkay9jb3JlL2xpYi9hc3BlY3QudHNcbmltcG9ydCB7IElDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5jb25zdCBBU1BFQ1RTX1NZTUJPTCA9IFN5bWJvbChcImNka3RmLWFzcGVjdHNcIik7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBBc3BlY3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQXNwZWN0IHtcbiAgLyoqXG4gICAqIEFsbCBhc3BlY3RzIGNhbiB2aXNpdCBhbiBJQ29uc3RydWN0XG4gICAqL1xuICB2aXNpdChub2RlOiBJQ29uc3RydWN0KTogdm9pZDtcbn1cblxuLyoqXG4gKiBBc3BlY3RzIGNhbiBiZSBhcHBsaWVkIHRvIENESyB0cmVlIHNjb3BlcyBhbmQgY2FuIG9wZXJhdGUgb24gdGhlIHRyZWUgYmVmb3JlXG4gKiBzeW50aGVzaXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBc3BlY3RzIHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGBBc3BlY3RzYCBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIGEgY29uc3RydWN0IHNjb3BlLlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHNjb3BlIGZvciB3aGljaCB0aGVzZSBhc3BlY3RzIHdpbGwgYXBwbHkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHNjb3BlOiBJQ29uc3RydWN0KTogQXNwZWN0cyB7XG4gICAgbGV0IGFzcGVjdHMgPSAoc2NvcGUgYXMgYW55KVtBU1BFQ1RTX1NZTUJPTF07XG4gICAgaWYgKCFhc3BlY3RzKSB7XG4gICAgICBhc3BlY3RzID0gbmV3IEFzcGVjdHMoKTtcblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHNjb3BlLCBBU1BFQ1RTX1NZTUJPTCwge1xuICAgICAgICB2YWx1ZTogYXNwZWN0cyxcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGFzcGVjdHM7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IF9hc3BlY3RzOiBJQXNwZWN0W107XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9hc3BlY3RzID0gW107XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhbiBhc3BlY3QgdG8gYXBwbHkgdGhpcyBzY29wZSBiZWZvcmUgc3ludGhlc2lzLlxuICAgKiBAcGFyYW0gYXNwZWN0IFRoZSBhc3BlY3QgdG8gYWRkLlxuICAgKi9cbiAgcHVibGljIGFkZChhc3BlY3Q6IElBc3BlY3QpIHtcbiAgICB0aGlzLl9hc3BlY3RzLnB1c2goYXNwZWN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBhc3BlY3RzIHdoaWNoIHdlcmUgZGlyZWN0bHkgYXBwbGllZCBvbiB0aGlzIHNjb3BlLlxuICAgKi9cbiAgcHVibGljIGdldCBhbGwoKTogSUFzcGVjdFtdIHtcbiAgICByZXR1cm4gWy4uLnRoaXMuX2FzcGVjdHNdO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,75 @@
1
+ import { IIgnoreStrategy } from "./ignore-strategy";
2
+ /**
3
+ * Options for {@link AssetHash.of}.
4
+ */
5
+ export interface AssetHashOptions {
6
+ /**
7
+ * Paths to exclude, relative to the hashed path. Cannot be combined with
8
+ * `ignoreStrategy`, which replaces this matcher rather than layering on
9
+ * top of it.
10
+ *
11
+ * @default - nothing is excluded
12
+ */
13
+ readonly exclude?: string[];
14
+ /**
15
+ * Extra information to fold into the hash.
16
+ *
17
+ * @default - no extra data
18
+ */
19
+ readonly extraHash?: string;
20
+ /**
21
+ * Exclusion matching, for callers that need `.gitignore` / `.dockerignore`
22
+ * parity rather than the built-in exact-path / suffix / directory matcher.
23
+ *
24
+ * @default - `exclude` is used with the built-in matcher
25
+ */
26
+ readonly ignoreStrategy?: IIgnoreStrategy;
27
+ }
28
+ /**
29
+ * Computes a content hash of a file or directory without staging it.
30
+ *
31
+ * Providers that read a local path directly — a Docker build `context`, for
32
+ * example — need a content hash to drive `triggers`, but have no use for a
33
+ * staged copy of the source. `Asset` and `TerraformAsset` always produce a
34
+ * staged copy; this is the identity half without the staging half.
35
+ */
36
+ export declare class AssetHash {
37
+ /**
38
+ * Content hash of a file or directory, without staging it.
39
+ *
40
+ * This is a hash of the source tree, and it does not depend on how the
41
+ * source is later packaged. `hashPath` is always called with `archive`
42
+ * unset, so directory records are part of the digest; the hash of a given
43
+ * tree is therefore the same whether it is later copied, zipped, or packed
44
+ * by a custom `IAssetPackaging` such as `tar.bz2`.
45
+ *
46
+ * A consequence worth stating: this does not equal
47
+ * `TerraformAsset(dir, { type: ARCHIVE }).assetHash` for a directory with
48
+ * subdirectories. That asset frames its hash to the emitted ZIP, which has
49
+ * no directory entries (see #323), so directory-only changes move it and
50
+ * not this. It equals a `FILE` / `DIRECTORY` `TerraformAsset` hash only
51
+ * when the `canonicalAssetHashes` flag is enabled, since that flag is what
52
+ * puts the asset on this same canonical scheme.
53
+ *
54
+ * A relative `filePath` is resolved against the directory containing
55
+ * `cdktf.json`, the same base `TerraformAsset` uses, so both hash the same
56
+ * source regardless of the process working directory. Absolute paths are
57
+ * used as-is. Throws if `filePath` is relative and no `cdktf.json` is found
58
+ * above the working directory.
59
+ * @param filePath - path to a file or directory to hash
60
+ * @param options - see {@link AssetHashOptions}
61
+ */
62
+ static of(filePath: string, options?: AssetHashOptions): string;
63
+ /**
64
+ * Resolve `filePath` to an absolute path using the same base as
65
+ * `TerraformAsset`: relative paths are anchored to the directory holding
66
+ * `cdktf.json`, not `process.cwd()`, so a hash taken here matches the one
67
+ * `TerraformAsset` computes for the same source even when the app is run
68
+ * from a subdirectory or a test runner. Unlike `TerraformAsset`, there is
69
+ * no construct scope to read the `cdktfJsonPath` context from, so this uses
70
+ * the `findFileAboveCwd` fallback directly.
71
+ * @param filePath - path passed to {@link AssetHash.of}
72
+ */
73
+ private static resolvePath;
74
+ private constructor();
75
+ }
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.AssetHash = void 0;
37
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
38
+ // Copyright (c) HashiCorp, Inc
39
+ // SPDX-License-Identifier: MPL-2.0
40
+ const crypto = __importStar(require("crypto"));
41
+ const path = __importStar(require("path"));
42
+ const fs_1 = require("./private/fs");
43
+ const ignore_strategy_1 = require("./ignore-strategy");
44
+ const errors_1 = require("./errors");
45
+ /**
46
+ * Computes a content hash of a file or directory without staging it.
47
+ *
48
+ * Providers that read a local path directly — a Docker build `context`, for
49
+ * example — need a content hash to drive `triggers`, but have no use for a
50
+ * staged copy of the source. `Asset` and `TerraformAsset` always produce a
51
+ * staged copy; this is the identity half without the staging half.
52
+ */
53
+ class AssetHash {
54
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "cdktn.AssetHash", version: "0.25.0-pre.21" };
55
+ /**
56
+ * Content hash of a file or directory, without staging it.
57
+ *
58
+ * This is a hash of the source tree, and it does not depend on how the
59
+ * source is later packaged. `hashPath` is always called with `archive`
60
+ * unset, so directory records are part of the digest; the hash of a given
61
+ * tree is therefore the same whether it is later copied, zipped, or packed
62
+ * by a custom `IAssetPackaging` such as `tar.bz2`.
63
+ *
64
+ * A consequence worth stating: this does not equal
65
+ * `TerraformAsset(dir, { type: ARCHIVE }).assetHash` for a directory with
66
+ * subdirectories. That asset frames its hash to the emitted ZIP, which has
67
+ * no directory entries (see #323), so directory-only changes move it and
68
+ * not this. It equals a `FILE` / `DIRECTORY` `TerraformAsset` hash only
69
+ * when the `canonicalAssetHashes` flag is enabled, since that flag is what
70
+ * puts the asset on this same canonical scheme.
71
+ *
72
+ * A relative `filePath` is resolved against the directory containing
73
+ * `cdktf.json`, the same base `TerraformAsset` uses, so both hash the same
74
+ * source regardless of the process working directory. Absolute paths are
75
+ * used as-is. Throws if `filePath` is relative and no `cdktf.json` is found
76
+ * above the working directory.
77
+ * @param filePath - path to a file or directory to hash
78
+ * @param options - see {@link AssetHashOptions}
79
+ */
80
+ static of(filePath, options = {}) {
81
+ if (options.exclude?.length && options.ignoreStrategy) {
82
+ throw (0, errors_1.assetHashConflictingExcludeOptions)();
83
+ }
84
+ const resolved = AssetHash.resolvePath(filePath);
85
+ const strategy = options.ignoreStrategy ??
86
+ new ignore_strategy_1.ExcludeIgnoreStrategy(options.exclude ?? []);
87
+ // Pinned to the canonical scheme: this is a brand-new API with no
88
+ // existing hashes to preserve, so it has no reason to start on the
89
+ // legacy scheme that `canonicalAssetHashes` exists to move away from.
90
+ const baseHash = (0, fs_1.hashPath)(resolved, {
91
+ canonical: true,
92
+ shouldExclude: (relativePath, isDirectory) => strategy.ignores({ relativePath, isDirectory }),
93
+ descendIntoExcludedDirectories: strategy.pruneExcludedDirectories === false,
94
+ });
95
+ if (!options.extraHash) {
96
+ return baseHash;
97
+ }
98
+ return crypto
99
+ .createHash("md5")
100
+ .update(baseHash)
101
+ .update(options.extraHash)
102
+ .digest("hex")
103
+ .slice(0, 32)
104
+ .toUpperCase();
105
+ }
106
+ /**
107
+ * Resolve `filePath` to an absolute path using the same base as
108
+ * `TerraformAsset`: relative paths are anchored to the directory holding
109
+ * `cdktf.json`, not `process.cwd()`, so a hash taken here matches the one
110
+ * `TerraformAsset` computes for the same source even when the app is run
111
+ * from a subdirectory or a test runner. Unlike `TerraformAsset`, there is
112
+ * no construct scope to read the `cdktfJsonPath` context from, so this uses
113
+ * the `findFileAboveCwd` fallback directly.
114
+ * @param filePath - path passed to {@link AssetHash.of}
115
+ */
116
+ static resolvePath(filePath) {
117
+ if (path.isAbsolute(filePath)) {
118
+ return filePath;
119
+ }
120
+ const cdktfJsonPath = (0, fs_1.findFileAboveCwd)("cdktf.json");
121
+ if (!cdktfJsonPath) {
122
+ throw (0, errors_1.assetHashOutOfScopeCdktnJson)(filePath);
123
+ }
124
+ return path.resolve(path.dirname(cdktfJsonPath), filePath);
125
+ }
126
+ constructor() { }
127
+ }
128
+ exports.AssetHash = AssetHash;
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtaGFzaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9hc3NldC1oYXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLCtDQUFpQztBQUNqQywyQ0FBNkI7QUFDN0IscUNBQTBEO0FBQzFELHVEQUEyRTtBQUMzRSxxQ0FHa0I7QUErQmxCOzs7Ozs7O0dBT0c7QUFDSCxNQUFhLFNBQVM7O0lBQ3BCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F3Qkc7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQWdCLEVBQUUsVUFBNEIsRUFBRTtRQUMvRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxJQUFJLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0RCxNQUFNLElBQUEsMkNBQWtDLEdBQUUsQ0FBQztRQUM3QyxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRCxNQUFNLFFBQVEsR0FDWixPQUFPLENBQUMsY0FBYztZQUN0QixJQUFJLHVDQUFxQixDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7UUFFbkQsa0VBQWtFO1FBQ2xFLG1FQUFtRTtRQUNuRSxzRUFBc0U7UUFDdEUsTUFBTSxRQUFRLEdBQUcsSUFBQSxhQUFRLEVBQUMsUUFBUSxFQUFFO1lBQ2xDLFNBQVMsRUFBRSxJQUFJO1lBQ2YsYUFBYSxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQzNDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDakQsOEJBQThCLEVBQzVCLFFBQVEsQ0FBQyx3QkFBd0IsS0FBSyxLQUFLO1NBQzlDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdkIsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQztRQUVELE9BQU8sTUFBTTthQUNWLFVBQVUsQ0FBQyxLQUFLLENBQUM7YUFDakIsTUFBTSxDQUFDLFFBQVEsQ0FBQzthQUNoQixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQzthQUN6QixNQUFNLENBQUMsS0FBSyxDQUFDO2FBQ2IsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7YUFDWixXQUFXLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ssTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFnQjtRQUN6QyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM5QixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBQ0QsTUFBTSxhQUFhLEdBQUcsSUFBQSxxQkFBZ0IsRUFBQyxZQUFZLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkIsTUFBTSxJQUFBLHFDQUE0QixFQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsZ0JBQXVCLENBQUM7O0FBakYxQiw4QkFrRkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0ICogYXMgY3J5cHRvIGZyb20gXCJjcnlwdG9cIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IGhhc2hQYXRoLCBmaW5kRmlsZUFib3ZlQ3dkIH0gZnJvbSBcIi4vcHJpdmF0ZS9mc1wiO1xuaW1wb3J0IHsgRXhjbHVkZUlnbm9yZVN0cmF0ZWd5LCBJSWdub3JlU3RyYXRlZ3kgfSBmcm9tIFwiLi9pZ25vcmUtc3RyYXRlZ3lcIjtcbmltcG9ydCB7XG4gIGFzc2V0SGFzaENvbmZsaWN0aW5nRXhjbHVkZU9wdGlvbnMsXG4gIGFzc2V0SGFzaE91dE9mU2NvcGVDZGt0bkpzb24sXG59IGZyb20gXCIuL2Vycm9yc1wiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBBc3NldEhhc2gub2Z9LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFzc2V0SGFzaE9wdGlvbnMge1xuICAvKipcbiAgICogUGF0aHMgdG8gZXhjbHVkZSwgcmVsYXRpdmUgdG8gdGhlIGhhc2hlZCBwYXRoLiBDYW5ub3QgYmUgY29tYmluZWQgd2l0aFxuICAgKiBgaWdub3JlU3RyYXRlZ3lgLCB3aGljaCByZXBsYWNlcyB0aGlzIG1hdGNoZXIgcmF0aGVyIHRoYW4gbGF5ZXJpbmcgb25cbiAgICogdG9wIG9mIGl0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vdGhpbmcgaXMgZXhjbHVkZWRcbiAgICovXG4gIHJlYWRvbmx5IGV4Y2x1ZGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogRXh0cmEgaW5mb3JtYXRpb24gdG8gZm9sZCBpbnRvIHRoZSBoYXNoLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGV4dHJhIGRhdGFcbiAgICovXG4gIHJlYWRvbmx5IGV4dHJhSGFzaD86IHN0cmluZztcblxuICAvKipcbiAgICogRXhjbHVzaW9uIG1hdGNoaW5nLCBmb3IgY2FsbGVycyB0aGF0IG5lZWQgYC5naXRpZ25vcmVgIC8gYC5kb2NrZXJpZ25vcmVgXG4gICAqIHBhcml0eSByYXRoZXIgdGhhbiB0aGUgYnVpbHQtaW4gZXhhY3QtcGF0aCAvIHN1ZmZpeCAvIGRpcmVjdG9yeSBtYXRjaGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGBleGNsdWRlYCBpcyB1c2VkIHdpdGggdGhlIGJ1aWx0LWluIG1hdGNoZXJcbiAgICovXG4gIHJlYWRvbmx5IGlnbm9yZVN0cmF0ZWd5PzogSUlnbm9yZVN0cmF0ZWd5O1xufVxuXG4vKipcbiAqIENvbXB1dGVzIGEgY29udGVudCBoYXNoIG9mIGEgZmlsZSBvciBkaXJlY3Rvcnkgd2l0aG91dCBzdGFnaW5nIGl0LlxuICpcbiAqIFByb3ZpZGVycyB0aGF0IHJlYWQgYSBsb2NhbCBwYXRoIGRpcmVjdGx5IOKAlCBhIERvY2tlciBidWlsZCBgY29udGV4dGAsIGZvclxuICogZXhhbXBsZSDigJQgbmVlZCBhIGNvbnRlbnQgaGFzaCB0byBkcml2ZSBgdHJpZ2dlcnNgLCBidXQgaGF2ZSBubyB1c2UgZm9yIGFcbiAqIHN0YWdlZCBjb3B5IG9mIHRoZSBzb3VyY2UuIGBBc3NldGAgYW5kIGBUZXJyYWZvcm1Bc3NldGAgYWx3YXlzIHByb2R1Y2UgYVxuICogc3RhZ2VkIGNvcHk7IHRoaXMgaXMgdGhlIGlkZW50aXR5IGhhbGYgd2l0aG91dCB0aGUgc3RhZ2luZyBoYWxmLlxuICovXG5leHBvcnQgY2xhc3MgQXNzZXRIYXNoIHtcbiAgLyoqXG4gICAqIENvbnRlbnQgaGFzaCBvZiBhIGZpbGUgb3IgZGlyZWN0b3J5LCB3aXRob3V0IHN0YWdpbmcgaXQuXG4gICAqXG4gICAqIFRoaXMgaXMgYSBoYXNoIG9mIHRoZSBzb3VyY2UgdHJlZSwgYW5kIGl0IGRvZXMgbm90IGRlcGVuZCBvbiBob3cgdGhlXG4gICAqIHNvdXJjZSBpcyBsYXRlciBwYWNrYWdlZC4gYGhhc2hQYXRoYCBpcyBhbHdheXMgY2FsbGVkIHdpdGggYGFyY2hpdmVgXG4gICAqIHVuc2V0LCBzbyBkaXJlY3RvcnkgcmVjb3JkcyBhcmUgcGFydCBvZiB0aGUgZGlnZXN0OyB0aGUgaGFzaCBvZiBhIGdpdmVuXG4gICAqIHRyZWUgaXMgdGhlcmVmb3JlIHRoZSBzYW1lIHdoZXRoZXIgaXQgaXMgbGF0ZXIgY29waWVkLCB6aXBwZWQsIG9yIHBhY2tlZFxuICAgKiBieSBhIGN1c3RvbSBgSUFzc2V0UGFja2FnaW5nYCBzdWNoIGFzIGB0YXIuYnoyYC5cbiAgICpcbiAgICogQSBjb25zZXF1ZW5jZSB3b3J0aCBzdGF0aW5nOiB0aGlzIGRvZXMgbm90IGVxdWFsXG4gICAqIGBUZXJyYWZvcm1Bc3NldChkaXIsIHsgdHlwZTogQVJDSElWRSB9KS5hc3NldEhhc2hgIGZvciBhIGRpcmVjdG9yeSB3aXRoXG4gICAqIHN1YmRpcmVjdG9yaWVzLiBUaGF0IGFzc2V0IGZyYW1lcyBpdHMgaGFzaCB0byB0aGUgZW1pdHRlZCBaSVAsIHdoaWNoIGhhc1xuICAgKiBubyBkaXJlY3RvcnkgZW50cmllcyAoc2VlICMzMjMpLCBzbyBkaXJlY3Rvcnktb25seSBjaGFuZ2VzIG1vdmUgaXQgYW5kXG4gICAqIG5vdCB0aGlzLiBJdCBlcXVhbHMgYSBgRklMRWAgLyBgRElSRUNUT1JZYCBgVGVycmFmb3JtQXNzZXRgIGhhc2ggb25seVxuICAgKiB3aGVuIHRoZSBgY2Fub25pY2FsQXNzZXRIYXNoZXNgIGZsYWcgaXMgZW5hYmxlZCwgc2luY2UgdGhhdCBmbGFnIGlzIHdoYXRcbiAgICogcHV0cyB0aGUgYXNzZXQgb24gdGhpcyBzYW1lIGNhbm9uaWNhbCBzY2hlbWUuXG4gICAqXG4gICAqIEEgcmVsYXRpdmUgYGZpbGVQYXRoYCBpcyByZXNvbHZlZCBhZ2FpbnN0IHRoZSBkaXJlY3RvcnkgY29udGFpbmluZ1xuICAgKiBgY2RrdGYuanNvbmAsIHRoZSBzYW1lIGJhc2UgYFRlcnJhZm9ybUFzc2V0YCB1c2VzLCBzbyBib3RoIGhhc2ggdGhlIHNhbWVcbiAgICogc291cmNlIHJlZ2FyZGxlc3Mgb2YgdGhlIHByb2Nlc3Mgd29ya2luZyBkaXJlY3RvcnkuIEFic29sdXRlIHBhdGhzIGFyZVxuICAgKiB1c2VkIGFzLWlzLiBUaHJvd3MgaWYgYGZpbGVQYXRoYCBpcyByZWxhdGl2ZSBhbmQgbm8gYGNka3RmLmpzb25gIGlzIGZvdW5kXG4gICAqIGFib3ZlIHRoZSB3b3JraW5nIGRpcmVjdG9yeS5cbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gcGF0aCB0byBhIGZpbGUgb3IgZGlyZWN0b3J5IHRvIGhhc2hcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBzZWUge0BsaW5rIEFzc2V0SGFzaE9wdGlvbnN9XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKGZpbGVQYXRoOiBzdHJpbmcsIG9wdGlvbnM6IEFzc2V0SGFzaE9wdGlvbnMgPSB7fSk6IHN0cmluZyB7XG4gICAgaWYgKG9wdGlvbnMuZXhjbHVkZT8ubGVuZ3RoICYmIG9wdGlvbnMuaWdub3JlU3RyYXRlZ3kpIHtcbiAgICAgIHRocm93IGFzc2V0SGFzaENvbmZsaWN0aW5nRXhjbHVkZU9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvbHZlZCA9IEFzc2V0SGFzaC5yZXNvbHZlUGF0aChmaWxlUGF0aCk7XG4gICAgY29uc3Qgc3RyYXRlZ3kgPVxuICAgICAgb3B0aW9ucy5pZ25vcmVTdHJhdGVneSA/P1xuICAgICAgbmV3IEV4Y2x1ZGVJZ25vcmVTdHJhdGVneShvcHRpb25zLmV4Y2x1ZGUgPz8gW10pO1xuXG4gICAgLy8gUGlubmVkIHRvIHRoZSBjYW5vbmljYWwgc2NoZW1lOiB0aGlzIGlzIGEgYnJhbmQtbmV3IEFQSSB3aXRoIG5vXG4gICAgLy8gZXhpc3RpbmcgaGFzaGVzIHRvIHByZXNlcnZlLCBzbyBpdCBoYXMgbm8gcmVhc29uIHRvIHN0YXJ0IG9uIHRoZVxuICAgIC8vIGxlZ2FjeSBzY2hlbWUgdGhhdCBgY2Fub25pY2FsQXNzZXRIYXNoZXNgIGV4aXN0cyB0byBtb3ZlIGF3YXkgZnJvbS5cbiAgICBjb25zdCBiYXNlSGFzaCA9IGhhc2hQYXRoKHJlc29sdmVkLCB7XG4gICAgICBjYW5vbmljYWw6IHRydWUsXG4gICAgICBzaG91bGRFeGNsdWRlOiAocmVsYXRpdmVQYXRoLCBpc0RpcmVjdG9yeSkgPT5cbiAgICAgICAgc3RyYXRlZ3kuaWdub3Jlcyh7IHJlbGF0aXZlUGF0aCwgaXNEaXJlY3RvcnkgfSksXG4gICAgICBkZXNjZW5kSW50b0V4Y2x1ZGVkRGlyZWN0b3JpZXM6XG4gICAgICAgIHN0cmF0ZWd5LnBydW5lRXhjbHVkZWREaXJlY3RvcmllcyA9PT0gZmFsc2UsXG4gICAgfSk7XG5cbiAgICBpZiAoIW9wdGlvbnMuZXh0cmFIYXNoKSB7XG4gICAgICByZXR1cm4gYmFzZUhhc2g7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNyeXB0b1xuICAgICAgLmNyZWF0ZUhhc2goXCJtZDVcIilcbiAgICAgIC51cGRhdGUoYmFzZUhhc2gpXG4gICAgICAudXBkYXRlKG9wdGlvbnMuZXh0cmFIYXNoKVxuICAgICAgLmRpZ2VzdChcImhleFwiKVxuICAgICAgLnNsaWNlKDAsIDMyKVxuICAgICAgLnRvVXBwZXJDYXNlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSBgZmlsZVBhdGhgIHRvIGFuIGFic29sdXRlIHBhdGggdXNpbmcgdGhlIHNhbWUgYmFzZSBhc1xuICAgKiBgVGVycmFmb3JtQXNzZXRgOiByZWxhdGl2ZSBwYXRocyBhcmUgYW5jaG9yZWQgdG8gdGhlIGRpcmVjdG9yeSBob2xkaW5nXG4gICAqIGBjZGt0Zi5qc29uYCwgbm90IGBwcm9jZXNzLmN3ZCgpYCwgc28gYSBoYXNoIHRha2VuIGhlcmUgbWF0Y2hlcyB0aGUgb25lXG4gICAqIGBUZXJyYWZvcm1Bc3NldGAgY29tcHV0ZXMgZm9yIHRoZSBzYW1lIHNvdXJjZSBldmVuIHdoZW4gdGhlIGFwcCBpcyBydW5cbiAgICogZnJvbSBhIHN1YmRpcmVjdG9yeSBvciBhIHRlc3QgcnVubmVyLiBVbmxpa2UgYFRlcnJhZm9ybUFzc2V0YCwgdGhlcmUgaXNcbiAgICogbm8gY29uc3RydWN0IHNjb3BlIHRvIHJlYWQgdGhlIGBjZGt0Zkpzb25QYXRoYCBjb250ZXh0IGZyb20sIHNvIHRoaXMgdXNlc1xuICAgKiB0aGUgYGZpbmRGaWxlQWJvdmVDd2RgIGZhbGxiYWNrIGRpcmVjdGx5LlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBwYXRoIHBhc3NlZCB0byB7QGxpbmsgQXNzZXRIYXNoLm9mfVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVzb2x2ZVBhdGgoZmlsZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHBhdGguaXNBYnNvbHV0ZShmaWxlUGF0aCkpIHtcbiAgICAgIHJldHVybiBmaWxlUGF0aDtcbiAgICB9XG4gICAgY29uc3QgY2RrdGZKc29uUGF0aCA9IGZpbmRGaWxlQWJvdmVDd2QoXCJjZGt0Zi5qc29uXCIpO1xuICAgIGlmICghY2RrdGZKc29uUGF0aCkge1xuICAgICAgdGhyb3cgYXNzZXRIYXNoT3V0T2ZTY29wZUNka3RuSnNvbihmaWxlUGF0aCk7XG4gICAgfVxuICAgIHJldHVybiBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKGNka3RmSnNvblBhdGgpLCBmaWxlUGF0aCk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cbn1cbiJdfQ==
@@ -0,0 +1,168 @@
1
+ import { IIgnoreStrategy } from "./ignore-strategy";
2
+ /**
3
+ * Common interface for all assets.
4
+ */
5
+ export interface IAsset {
6
+ /**
7
+ * A hash of this asset, which is available at construction time. As this is a plain string, it
8
+ * can be used in construct IDs in order to enforce creation of a new resource when the content
9
+ * hash has changed.
10
+ */
11
+ readonly assetHash: string;
12
+ }
13
+ /**
14
+ * Asset hash options
15
+ */
16
+ export interface AssetOptions {
17
+ /**
18
+ * Specify a custom hash for this asset. If `assetHashType` is set it must
19
+ * be set to `AssetHashType.CUSTOM`. The value is used verbatim as the asset
20
+ * hash, and because it names the staged asset file it may only contain
21
+ * letters, digits, `_`, `.` and `-`.
22
+ *
23
+ * NOTE: the hash is used in order to identify a specific revision of the asset, and
24
+ * used for optimizing and caching deployment activities related to this asset such as
25
+ * packaging, uploading to cloud storage, etc. If you chose to customize the hash, you will
26
+ * need to make sure it is updated every time the asset changes, or otherwise it is
27
+ * possible that some deployments will not be invalidated.
28
+ *
29
+ * @default - based on `assetHashType`
30
+ */
31
+ readonly assetHash?: string;
32
+ /**
33
+ * Specifies the type of hash to calculate for this asset.
34
+ *
35
+ * If `assetHash` is configured, this option must be `undefined` or
36
+ * `AssetHashType.CUSTOM`.
37
+ *
38
+ * @default - the default is `AssetHashType.SOURCE`, but if `assetHash` is
39
+ * explicitly specified this value defaults to `AssetHashType.CUSTOM`.
40
+ */
41
+ readonly assetHashType?: AssetHashType;
42
+ }
43
+ /**
44
+ * The type of asset hash
45
+ *
46
+ * NOTE: the hash is used in order to identify a specific revision of the asset, and
47
+ * used for optimizing and caching deployment activities related to this asset such as
48
+ * packaging, uploading to cloud storage, etc.
49
+ */
50
+ export declare enum AssetHashType {
51
+ /**
52
+ * Based on the content of the source path
53
+ *
54
+ * Use `SOURCE` when the content of the asset changes frequently or when
55
+ * you want to track changes to the source files directly.
56
+ */
57
+ SOURCE = "source",
58
+ /**
59
+ * Based on the content of the bundling output
60
+ *
61
+ * Use `OUTPUT` when the source of the asset is a top level folder containing
62
+ * code and/or dependencies that are not directly linked to the asset.
63
+ */
64
+ OUTPUT = "output",
65
+ /**
66
+ * Use a custom hash
67
+ */
68
+ CUSTOM = "custom"
69
+ }
70
+ /**
71
+ * How a staged asset is produced and what shape it takes on disk.
72
+ *
73
+ * Packaging answers two independent questions: how the artifact is produced
74
+ * (copy, zip, tar.gz, ...) and whether the result is a directory or a single
75
+ * file. A closed enum can only ever answer the second one, so it is an
76
+ * interface rather than an enum — custom formats (e.g. `tar.bz2`) need no
77
+ * core change.
78
+ */
79
+ export interface IAssetPackaging {
80
+ /**
81
+ * Appended to the staged artifact name, e.g. ".zip", "", ".tar.bz2".
82
+ */
83
+ readonly extension: string;
84
+ /**
85
+ * Whether the staged result is a directory rather than a single file.
86
+ *
87
+ * Publishers branch on this to decide whether they upload one object or
88
+ * sync a tree.
89
+ */
90
+ readonly producesDirectory: boolean;
91
+ /**
92
+ * Perform the staging transformation, writing the packaged result to
93
+ * `options.target`.
94
+ * @param options - see {@link PackOptions}
95
+ */
96
+ pack(options: PackOptions): void;
97
+ }
98
+ /**
99
+ * Options for {@link IAssetPackaging.pack}.
100
+ *
101
+ * A struct rather than positional parameters: adding a struct field is
102
+ * additive, adding a method parameter is not, and `pack` is called through
103
+ * JSII where that distinction is a breaking-change boundary.
104
+ */
105
+ export interface PackOptions {
106
+ /**
107
+ * Path to the resolved (already bundled, if applicable) source.
108
+ */
109
+ readonly source: string;
110
+ /**
111
+ * Path the packaged result should be written to.
112
+ */
113
+ readonly target: string;
114
+ /**
115
+ * Entries to omit from the packaged result. Must match the strategy used
116
+ * to hash the same source, or the hash and the artifact describe
117
+ * different sets of files.
118
+ *
119
+ * @default - nothing is excluded
120
+ */
121
+ readonly ignoreStrategy?: IIgnoreStrategy;
122
+ }
123
+ /**
124
+ * Built-in packaging strategies. Custom formats implement `IAssetPackaging`
125
+ * directly rather than extending this class.
126
+ */
127
+ export declare class AssetPackaging {
128
+ /**
129
+ * Copy a single file as-is.
130
+ */
131
+ static readonly FILE: IAssetPackaging;
132
+ /**
133
+ * Copy a directory tree as-is, without archiving.
134
+ */
135
+ static readonly DIRECTORY: IAssetPackaging;
136
+ /**
137
+ * Archive a directory tree into a single zip file.
138
+ */
139
+ static readonly ZIP: IAssetPackaging;
140
+ private constructor();
141
+ }
142
+ /**
143
+ * A staged artifact, ready to hand to an `IAssetPublisher`.
144
+ *
145
+ * Deliberately narrower than a location: `path` and `isDirectory` are known
146
+ * once staging runs, at synth time, before anything is published. Where an
147
+ * asset ends up — a bucket name, an object key, a URL — is resolved at
148
+ * apply time and belongs on the publisher's own reference type instead.
149
+ */
150
+ export interface StagedAsset {
151
+ /**
152
+ * A hash on the content source. This hash is used to uniquely identify this
153
+ * asset throughout the system. If this value doesn't change, the asset will
154
+ * not be rebuilt or republished.
155
+ */
156
+ readonly assetHash: string;
157
+ /**
158
+ * The path to the staged artifact, relative to the stack directory.
159
+ */
160
+ readonly path: string;
161
+ /**
162
+ * Whether the staged artifact is a directory rather than a single file.
163
+ *
164
+ * Publishers branch on this to decide whether they upload one object or
165
+ * sync a tree; see `IAssetPackaging.producesDirectory`.
166
+ */
167
+ readonly isDirectory: boolean;
168
+ }