cdktn 0.26.0-pre.2 → 0.26.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 (116) hide show
  1. package/.jsii +1200 -1116
  2. package/eslint.config.mjs +18 -7
  3. package/jest.config.js +0 -1
  4. package/lib/_tokens.d.ts +7 -0
  5. package/lib/_tokens.js +8 -2
  6. package/lib/annotations.js +1 -1
  7. package/lib/app.js +8 -4
  8. package/lib/aspect.js +1 -1
  9. package/lib/asset-hash.js +1 -1
  10. package/lib/asset-staging.js +1 -1
  11. package/lib/assets.js +4 -4
  12. package/lib/backends/azurerm-backend.d.ts +6 -0
  13. package/lib/backends/azurerm-backend.js +9 -5
  14. package/lib/backends/cloud-backend.js +4 -4
  15. package/lib/backends/consul-backend.d.ts +6 -0
  16. package/lib/backends/consul-backend.js +9 -5
  17. package/lib/backends/cos-backend.d.ts +6 -0
  18. package/lib/backends/cos-backend.js +9 -5
  19. package/lib/backends/gcs-backend.d.ts +6 -0
  20. package/lib/backends/gcs-backend.js +9 -5
  21. package/lib/backends/http-backend.d.ts +6 -0
  22. package/lib/backends/http-backend.js +9 -5
  23. package/lib/backends/local-backend.d.ts +6 -0
  24. package/lib/backends/local-backend.js +9 -5
  25. package/lib/backends/oss-backend.d.ts +6 -0
  26. package/lib/backends/oss-backend.js +9 -5
  27. package/lib/backends/pg-backend.d.ts +6 -0
  28. package/lib/backends/pg-backend.js +9 -5
  29. package/lib/backends/remote-backend.d.ts +12 -0
  30. package/lib/backends/remote-backend.js +17 -9
  31. package/lib/backends/s3-backend.d.ts +6 -0
  32. package/lib/backends/s3-backend.js +9 -5
  33. package/lib/backends/swift-backend.js +2 -2
  34. package/lib/complex-computed-list.d.ts +85 -0
  35. package/lib/complex-computed-list.js +112 -54
  36. package/lib/functions/helpers.d.ts +72 -0
  37. package/lib/functions/helpers.js +73 -14
  38. package/lib/functions/provider-function.js +1 -1
  39. package/lib/functions/terraform-functions.generated.d.ts +3 -0
  40. package/lib/functions/terraform-functions.generated.js +5 -3
  41. package/lib/hcl/quoted-string-key.d.ts +25 -0
  42. package/lib/hcl/quoted-string-key.js +42 -0
  43. package/lib/hcl/render.js +41 -7
  44. package/lib/ignore-strategy.js +1 -1
  45. package/lib/importable-resource.js +1 -1
  46. package/lib/manifest.d.ts +4 -0
  47. package/lib/manifest.js +6 -3
  48. package/lib/private/unique.js +11 -3
  49. package/lib/resource.js +1 -1
  50. package/lib/runtime.d.ts +6 -0
  51. package/lib/runtime.js +12 -3
  52. package/lib/synthesize/required-version.d.ts +32 -0
  53. package/lib/synthesize/required-version.js +205 -0
  54. package/lib/synthesize/synthesizer.d.ts +13 -0
  55. package/lib/synthesize/synthesizer.js +42 -8
  56. package/lib/terraform-asset.d.ts +4 -0
  57. package/lib/terraform-asset.js +6 -3
  58. package/lib/terraform-backend.d.ts +3 -0
  59. package/lib/terraform-backend.js +5 -3
  60. package/lib/terraform-conditions.js +1 -2
  61. package/lib/terraform-count.js +1 -1
  62. package/lib/terraform-data-resource.js +1 -1
  63. package/lib/terraform-data-source.d.ts +4 -0
  64. package/lib/terraform-data-source.js +8 -6
  65. package/lib/terraform-dependable.js +1 -1
  66. package/lib/terraform-dynamic-block.d.ts +4 -0
  67. package/lib/terraform-dynamic-block.js +5 -2
  68. package/lib/terraform-element.d.ts +4 -0
  69. package/lib/terraform-element.js +6 -3
  70. package/lib/terraform-ephemeral-resource.d.ts +4 -0
  71. package/lib/terraform-ephemeral-resource.js +8 -6
  72. package/lib/terraform-functions.d.ts +4 -0
  73. package/lib/terraform-functions.js +10 -5
  74. package/lib/terraform-hcl-module.d.ts +4 -0
  75. package/lib/terraform-hcl-module.js +6 -3
  76. package/lib/terraform-iterator.d.ts +19 -0
  77. package/lib/terraform-iterator.js +25 -11
  78. package/lib/terraform-local.d.ts +4 -0
  79. package/lib/terraform-local.js +6 -3
  80. package/lib/terraform-module.js +1 -1
  81. package/lib/terraform-operators.js +1 -1
  82. package/lib/terraform-output.d.ts +5 -0
  83. package/lib/terraform-output.js +23 -3
  84. package/lib/terraform-provider.d.ts +4 -0
  85. package/lib/terraform-provider.js +6 -3
  86. package/lib/terraform-provisioner.js +1 -1
  87. package/lib/terraform-remote-state.d.ts +3 -0
  88. package/lib/terraform-remote-state.js +5 -3
  89. package/lib/terraform-resource-targets.js +1 -1
  90. package/lib/terraform-resource.d.ts +5 -1
  91. package/lib/terraform-resource.js +16 -9
  92. package/lib/terraform-stack.d.ts +4 -0
  93. package/lib/terraform-stack.js +28 -9
  94. package/lib/terraform-variable.d.ts +7 -0
  95. package/lib/terraform-variable.js +16 -7
  96. package/lib/testing/adapters/jest.d.ts +3 -0
  97. package/lib/testing/adapters/jest.js +10 -1
  98. package/lib/testing/index.js +14 -4
  99. package/lib/testing/matchers.js +61 -19
  100. package/lib/tfExpression.d.ts +50 -0
  101. package/lib/tfExpression.js +114 -33
  102. package/lib/tokens/lazy.d.ts +4 -0
  103. package/lib/tokens/lazy.js +21 -8
  104. package/lib/tokens/private/dependency.js +2 -6
  105. package/lib/tokens/private/resolve.js +3 -3
  106. package/lib/tokens/private/stack-trace.d.ts +1 -1
  107. package/lib/tokens/private/stack-trace.js +1 -2
  108. package/lib/tokens/resolvable.js +2 -2
  109. package/lib/tokens/string-fragments.js +4 -4
  110. package/lib/tokens/token.js +2 -2
  111. package/lib/upgrade-id-aspect.js +1 -1
  112. package/lib/util.d.ts +0 -1
  113. package/lib/util.js +4 -4
  114. package/lib/validations/target-versions.d.ts +12 -0
  115. package/lib/validations/target-versions.js +40 -1
  116. package/package.json +112 -109
@@ -34,8 +34,15 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.ValidateFeatureTargetSupport = exports.TARGET_PRODUCTS = exports.DEFAULT_TARGET_VERSIONS = exports.TARGET_VERSIONS_CONTEXT_KEY = void 0;
37
+ exports.targetsOnlyOpenTofu = targetsOnlyOpenTofu;
38
+ exports.projectTargetVersions = projectTargetVersions;
39
+ exports.inferTerraformBinaryName = inferTerraformBinaryName;
37
40
  exports.resolveTargetVersions = resolveTargetVersions;
38
41
  exports.checkFeatureSupportedByTargets = checkFeatureSupportedByTargets;
42
+ // Copyright (c) HashiCorp, Inc
43
+ // SPDX-License-Identifier: MPL-2.0
44
+ const fs = __importStar(require("fs"));
45
+ const path = __importStar(require("path"));
39
46
  const semver = __importStar(require("semver"));
40
47
  /**
41
48
  * Context key carrying the project's declared Terraform-compatible runtime
@@ -62,6 +69,38 @@ exports.DEFAULT_TARGET_VERSIONS = {
62
69
  * `@cdktn/commons` (imported via subpath), not part of cdktn's public API.
63
70
  */
64
71
  exports.TARGET_PRODUCTS = ["terraform", "opentofu"];
72
+ /** OpenTofu is the sole declared product. */
73
+ function targetsOnlyOpenTofu(targetVersions) {
74
+ return (targetVersions?.opentofu !== undefined &&
75
+ targetVersions?.terraform === undefined);
76
+ }
77
+ /**
78
+ * The `targetVersions` of the nearest cdktf.json at or above `dir`. Only the
79
+ * key is read: an invalid config is reported by the command that reads it.
80
+ */
81
+ function projectTargetVersions(dir = process.cwd()) {
82
+ for (let current = path.resolve(dir);; current = path.dirname(current)) {
83
+ const file = path.join(current, "cdktf.json");
84
+ if (fs.existsSync(file)) {
85
+ try {
86
+ return JSON.parse(fs.readFileSync(file, "utf8")).targetVersions;
87
+ }
88
+ catch {
89
+ return undefined;
90
+ }
91
+ }
92
+ if (path.dirname(current) === current)
93
+ return undefined;
94
+ }
95
+ }
96
+ /**
97
+ * `TERRAFORM_BINARY_NAME`, else `tofu` when the project at or above the
98
+ * working directory targets only OpenTofu, else `terraform`.
99
+ */
100
+ function inferTerraformBinaryName() {
101
+ return (process.env.TERRAFORM_BINARY_NAME ||
102
+ (targetsOnlyOpenTofu(projectTargetVersions()) ? "tofu" : "terraform"));
103
+ }
65
104
  /**
66
105
  * Resolves the declared target versions from construct context, falling back
67
106
  * to DEFAULT_TARGET_VERSIONS. Returns errors instead of targets when the
@@ -168,4 +207,4 @@ class ValidateFeatureTargetSupport {
168
207
  }
169
208
  }
170
209
  exports.ValidateFeatureTargetSupport = ValidateFeatureTargetSupport;
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LXZlcnNpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRpb25zL3RhcmdldC12ZXJzaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrREEsc0RBNkRDO0FBWUQsd0VBZ0NDO0FBeEpELCtDQUFpQztBQUdqQzs7Ozs7Ozs7O0dBU0c7QUFDVSxRQUFBLDJCQUEyQixHQUFHLGdCQUFnQixDQUFDO0FBWTVEOzs7O0dBSUc7QUFDVSxRQUFBLHVCQUF1QixHQUE0QjtJQUM5RCxTQUFTLEVBQUUsU0FBUztJQUNwQixRQUFRLEVBQUUsU0FBUztDQUNwQixDQUFDO0FBRUY7OztHQUdHO0FBQ1UsUUFBQSxlQUFlLEdBQUcsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFVLENBQUM7QUFFbEU7Ozs7O0dBS0c7QUFDSCxTQUFnQixxQkFBcUIsQ0FBQyxLQUFpQjtJQUlyRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQ0FBMkIsQ0FBQyxDQUFDO0lBQ3ZFLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzNCLE9BQU8sRUFBRSxPQUFPLEVBQUUsK0JBQXVCLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDO0lBQzFELENBQUM7SUFFRCxJQUNFLE9BQU8sUUFBUSxLQUFLLFFBQVE7UUFDNUIsUUFBUSxLQUFLLElBQUk7UUFDakIsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFDdkIsQ0FBQztRQUNELE9BQU87WUFDTCxNQUFNLEVBQUU7Z0JBQ04sNkdBQTZHO2FBQzlHO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLElBQUksT0FBTyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztR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O0lBRUcsUUFBUTtRQUNiLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxPQUFPLDhCQUE4QixDQUNuQyxJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsV0FBVyxFQUNoQixPQUFPLEVBQ1AsSUFBSSxDQUFDLElBQUksQ0FDVixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBckJELG9FQXFCQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgeyBJQ29uc3RydWN0LCBJVmFsaWRhdGlvbiB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSBcInNlbXZlclwiO1xuaW1wb3J0IHsgVGVycmFmb3JtRmVhdHVyZVZlcnNpb25Db25zdHJhaW50cyB9IGZyb20gXCIuL3ZhbGlkYXRlLXRlcnJhZm9ybS1mZWF0dXJlLXZlcnNpb25cIjtcblxuLyoqXG4gKiBDb250ZXh0IGtleSBjYXJyeWluZyB0aGUgcHJvamVjdCdzIGRlY2xhcmVkIFRlcnJhZm9ybS1jb21wYXRpYmxlIHJ1bnRpbWVcbiAqIHRhcmdldHMgKHNldCBmcm9tIHRoZSBgdGFyZ2V0VmVyc2lvbnNgIGZpZWxkIGluIGNka3RmLmpzb24gYnkgdGhlIENMSSwgb3JcbiAqIGRpcmVjdGx5IHZpYSBBcHAgY29udGV4dCAvIENES1RGX0NPTlRFWFRfSlNPTiBmb3Igc3RhbmRhbG9uZSBzeW50aCkuXG4gKlxuICogVGhpcyBpcyB0aGUgY2Fub25pY2FsIGRlZmluaXRpb24uIGBAY2RrdG4vY29tbW9uc2AgaW1wb3J0cyBpdCBmcm9tIGhlcmVcbiAqIChjb21tb25zIGRlcGVuZHMgb24gY2RrdG47IGNka3RuIG11c3Qgbm90IGRlcGVuZCBvbiBjb21tb25zKSwgc28gdGhlIENMSVxuICogd3JpdGVzIGFuZCB0aGUgY29uc3RydWN0IGxpYnJhcnkgcmVhZHMgdGhlIGV4YWN0IHNhbWUga2V5LiBJdCBpcyBhblxuICogaW50ZXJuYWwgd2lyaW5nIGRldGFpbCwgZGVsaWJlcmF0ZWx5IG5vdCBwYXJ0IG9mIGNka3RuJ3MgcHVibGljIEFQSS5cbiAqL1xuZXhwb3J0IGNvbnN0IFRBUkdFVF9WRVJTSU9OU19DT05URVhUX0tFWSA9IFwidGFyZ2V0VmVyc2lvbnNcIjtcblxuLyoqXG4gKiBUaGUgVGVycmFmb3JtLWNvbXBhdGlibGUgcnVudGltZXMgYSBwcm9qZWN0IGRlY2xhcmVzIGl0IHN1cHBvcnRzLCBhcyBucG1cbiAqIHNlbXZlciByYW5nZXMgcGVyIHByb2R1Y3QuIEEgbWlzc2luZyBwcm9kdWN0IG1lYW5zIHRoZSBwcm9qZWN0IGRvZXMgbm90XG4gKiB0YXJnZXQgdGhhdCBwcm9kdWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRlcnJhZm9ybVRhcmdldFZlcnNpb25zIHtcbiAgcmVhZG9ubHkgdGVycmFmb3JtPzogc3RyaW5nO1xuICByZWFkb25seSBvcGVudG9mdT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBVc2VkIHdoZW4gYSBwcm9qZWN0IGRlY2xhcmVzIG5vIGB0YXJnZXRWZXJzaW9uc2A6IHRoZSBwcm9qZWN0IGlzIGFzc3VtZWRcbiAqIHRvIHRhcmdldCBldmVyeSBzdXBwb3J0ZWQgcmVsZWFzZSBvZiBib3RoIHByb2R1Y3RzLCB3aGljaCBpcyB0aGUgc3RyaWN0ZXN0XG4gKiAobW9zdCBwb3J0YWJsZSkgaW50ZXJwcmV0YXRpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX1RBUkdFVF9WRVJTSU9OUzogVGVycmFmb3JtVGFyZ2V0VmVyc2lvbnMgPSB7XG4gIHRlcnJhZm9ybTogXCI+PTEuNS43XCIsXG4gIG9wZW50b2Z1OiBcIj49MS42LjBcIixcbn07XG5cbi8qKlxuICogVGhlIHByb2R1Y3Qga2V5cyBhIHByb2plY3QgbWF5IGRlY2xhcmUgdGFyZ2V0cyBmb3IuIEV4cG9ydGVkIGZvciByZXVzZSBieVxuICogYEBjZGt0bi9jb21tb25zYCAoaW1wb3J0ZWQgdmlhIHN1YnBhdGgpLCBub3QgcGFydCBvZiBjZGt0bidzIHB1YmxpYyBBUEkuXG4gKi9cbmV4cG9ydCBjb25zdCBUQVJHRVRfUFJPRFVDVFMgPSBbXCJ0ZXJyYWZvcm1cIiwgXCJvcGVudG9mdVwiXSBhcyBjb25zdDtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgZGVjbGFyZWQgdGFyZ2V0IHZlcnNpb25zIGZyb20gY29uc3RydWN0IGNvbnRleHQsIGZhbGxpbmcgYmFja1xuICogdG8gREVGQVVMVF9UQVJHRVRfVkVSU0lPTlMuIFJldHVybnMgZXJyb3JzIGluc3RlYWQgb2YgdGFyZ2V0cyB3aGVuIHRoZVxuICogZGVjbGFyZWQgdmFsdWUgaXMgbWFsZm9ybWVkICh3aGljaCBjYW4gaGFwcGVuIHdoZW4gY29udGV4dCBpcyBzZXQgZGlyZWN0bHlcbiAqIG9uIHRoZSBBcHAgcmF0aGVyIHRoYW4gZ29pbmcgdGhyb3VnaCBjZGt0Zi5qc29uIHZhbGlkYXRpb24pLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVRhcmdldFZlcnNpb25zKHNjb3BlOiBJQ29uc3RydWN0KToge1xuICB0YXJnZXRzPzogVGVycmFmb3JtVGFyZ2V0VmVyc2lvbnM7XG4gIGVycm9yczogc3RyaW5nW107XG59IHtcbiAgY29uc3QgZGVjbGFyZWQgPSBzY29wZS5ub2RlLnRyeUdldENvbnRleHQoVEFSR0VUX1ZFUlNJT05TX0NPTlRFWFRfS0VZKTtcbiAgaWYgKGRlY2xhcmVkID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyB0YXJnZXRzOiBERUZBVUxUX1RBUkdFVF9WRVJTSU9OUywgZXJyb3JzOiBbXSB9O1xuICB9XG5cbiAgaWYgKFxuICAgIHR5cGVvZiBkZWNsYXJlZCAhPT0gXCJvYmplY3RcIiB8fFxuICAgIGRlY2xhcmVkID09PSBudWxsIHx8XG4gICAgQXJyYXkuaXNBcnJheShkZWNsYXJlZClcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yczogW1xuICAgICAgICBgdGFyZ2V0VmVyc2lvbnMgY29udGV4dCBtdXN0IGJlIGFuIG9iamVjdCBtYXBwaW5nIHByb2R1Y3RzIHRvIHNlbXZlciByYW5nZXMsIGUuZy4geyBcInRlcnJhZm9ybVwiOiBcIj49MS41LjdcIiB9YCxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhkZWNsYXJlZCk7XG4gIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7XG4gICAgICBlcnJvcnM6IFtcbiAgICAgICAgYHRhcmdldFZlcnNpb25zIG11c3QgZGVjbGFyZSBhdCBsZWFzdCBvbmUgcHJvZHVjdCAoXCJ0ZXJyYWZvcm1cIiBvciBcIm9wZW50b2Z1XCIpIG9yIGJlIG9taXR0ZWQgZW50aXJlbHlgLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IFtwcm9kdWN0LCByYW5nZV0gb2YgZW50cmllcykge1xuICAgIGlmICghVEFSR0VUX1BST0RVQ1RTLmluY2x1ZGVzKHByb2R1Y3QgYXMgYW55KSkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIGB0YXJnZXRWZXJzaW9ucyBoYXMgdW5rbm93biBwcm9kdWN0IFwiJHtwcm9kdWN0fVwiIChleHBlY3RlZCBcInRlcnJhZm9ybVwiIG9yIFwib3BlbnRvZnVcIilgLFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByYW5nZSA9PT0gXCJzdHJpbmdcIiAmJiByYW5nZS5pbmNsdWRlcyhcIn4+XCIpKSB7XG4gICAgICAvLyBucG0gc2VtdmVyIGhhcHBlbnMgdG8gcGFyc2UgXCJ+PlwiIGFzIFwiflwiLCB3aGljaCBoYXMgZGlmZmVyZW50XG4gICAgICAvLyBzZW1hbnRpY3MgdGhhbiBUZXJyYWZvcm0ncyBcIn4+XCIgcGVzc2ltaXN0aWMgY29uc3RyYWludCDigJQgcmVqZWN0IGl0XG4gICAgICAvLyBpbnN0ZWFkIG9mIHNpbGVudGx5IG1lYW5pbmcgc29tZXRoaW5nIGVsc2VcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICBgdGFyZ2V0VmVyc2lvbnMuJHtwcm9kdWN0fSBcIiR7cmFuZ2V9XCIgdXNlcyBUZXJyYWZvcm0gcHJvdmlkZXIgY29uc3RyYWludCBzeW50YXg7IHVzZSBucG0gc2VtdmVyIHJhbmdlcyBpbnN0ZWFkIChlLmcuIFwiPj0xLjUuN1wiIG9yIFwifjEuNS43XCIpYCxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHR5cGVvZiByYW5nZSAhPT0gXCJzdHJpbmdcIiB8fFxuICAgICAgcmFuZ2UudHJpbSgpLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgc2VtdmVyLnZhbGlkUmFuZ2UocmFuZ2UpID09PSBudWxsXG4gICAgKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgYHRhcmdldFZlcnNpb25zLiR7cHJvZHVjdH0gJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICByYW5nZSxcbiAgICAgICAgKX0gaXMgbm90IGEgdmFsaWQgc2VtdmVyIHJhbmdlYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHsgZXJyb3JzIH07XG4gIH1cblxuICByZXR1cm4geyB0YXJnZXRzOiBkZWNsYXJlZCBhcyBUZXJyYWZvcm1UYXJnZXRWZXJzaW9ucywgZXJyb3JzOiBbXSB9O1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYWNyb3NzIHRoZSBlbnRpcmUgZGVjbGFyZWQgdGFyZ2V0XG4gKiByYW5nZSBvZiBldmVyeSB0YXJnZXRlZCBwcm9kdWN0LlxuICpcbiAqIGBzdXBwb3J0ZWRJbmAgZm9sbG93cyB0aGUgVGVycmFmb3JtRmVhdHVyZVZlcnNpb25Db25zdHJhaW50cyBzZW1hbnRpY3M6IGFcbiAqIG1pc3NpbmcgcHJvZHVjdCBrZXkgbWVhbnMgdGhlIGZlYXR1cmUgaXMgbm90IHN1cHBvcnRlZCBieSB0aGF0IHByb2R1Y3QgYXRcbiAqIGFueSB2ZXJzaW9uLiBUaGUgY2hlY2sgaXMgYSBzZW12ZXIgcmFuZ2Ugc3Vic2V0OiBkZWNsYXJpbmdcbiAqIGB0ZXJyYWZvcm06IFwiPj0xLjUuN1wiYCB3aGlsZSBhIGZlYXR1cmUgcmVxdWlyZXMgYD49MS44LjBgIGZhaWxzLCBiZWNhdXNlXG4gKiB0aGUgcHJvamVjdCBjbGFpbXMgdG8gc3VwcG9ydCAxLjUuNy4uMS44LjAgd2hlcmUgdGhlIGZlYXR1cmUgaXMgbWlzc2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrRmVhdHVyZVN1cHBvcnRlZEJ5VGFyZ2V0cyhcbiAgZmVhdHVyZU5hbWU6IHN0cmluZyxcbiAgc3VwcG9ydGVkSW46IFRlcnJhZm9ybUZlYXR1cmVWZXJzaW9uQ29uc3RyYWludHMsXG4gIHRhcmdldHM6IFRlcnJhZm9ybVRhcmdldFZlcnNpb25zLFxuICBoaW50Pzogc3RyaW5nLFxuKTogc3RyaW5nW10ge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBwcm9kdWN0IG9mIFRBUkdFVF9QUk9EVUNUUykge1xuICAgIGNvbnN0IHRhcmdldFJhbmdlID0gdGFyZ2V0c1twcm9kdWN0XTtcbiAgICBpZiAoIXRhcmdldFJhbmdlKSBjb250aW51ZTsgLy8gcHJvZHVjdCBub3QgdGFyZ2V0ZWQgYnkgdGhlIHByb2plY3RcblxuICAgIGNvbnN0IHN1cHBvcnRlZFJhbmdlID0gc3VwcG9ydGVkSW5bcHJvZHVjdF07XG4gICAgaWYgKCFzdXBwb3J0ZWRSYW5nZSkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIGAke2ZlYXR1cmVOYW1lfSBpcyBub3Qgc3VwcG9ydGVkIGJ5ICR7cHJvZHVjdH0sIGJ1dCB0aGUgcHJvamVjdCB0YXJnZXRzICR7cHJvZHVjdH0gJHt0YXJnZXRSYW5nZX0uICR7XG4gICAgICAgICAgaGludCB8fCBcIlwiXG4gICAgICAgIH1gLnRyaW1FbmQoKSxcbiAgICAgICk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoIXNlbXZlci5zdWJzZXQodGFyZ2V0UmFuZ2UsIHN1cHBvcnRlZFJhbmdlKSkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIGAke2ZlYXR1cmVOYW1lfSByZXF1aXJlcyAke3Byb2R1Y3R9ICR7c3VwcG9ydGVkUmFuZ2V9LCBidXQgdGhlIHByb2plY3QgdGFyZ2V0cyAke3Byb2R1Y3R9ICR7dGFyZ2V0UmFuZ2V9LiAke1xuICAgICAgICAgIGhpbnQgfHwgXCJcIlxuICAgICAgICB9YC50cmltRW5kKCksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlcnJvcnM7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoYXQgYSBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgcHJvamVjdCdzIGRlY2xhcmVkXG4gKiBUZXJyYWZvcm0tY29tcGF0aWJsZSBydW50aW1lIHRhcmdldHMgKGNka3RmLmpzb24gYHRhcmdldFZlcnNpb25zYCksXG4gKiB3aXRob3V0IHByb2JpbmcgYW55IGxvY2FsbHkgaW5zdGFsbGVkIGJpbmFyeS5cbiAqXG4gKiBWZXJpZnlpbmcgdGhlIGFjdHVhbGx5IGluc3RhbGxlZCBiaW5hcnkgaXMgYSBzZXBhcmF0ZSwgZXhwbGljaXQgc3RlcDpcbiAqIHRoZSBvcHQtaW4gYHZhbGlkYXRlSW5zdGFsbGVkQmluYXJ5YCBjb25maWcgaGFuZGxlZCBieSB0aGUgQ0xJIGNvbW1hbmRzXG4gKiB0aGF0IGV4ZWN1dGUgdGhlIGJpbmFyeS5cbiAqL1xuZXhwb3J0IGNsYXNzIFZhbGlkYXRlRmVhdHVyZVRhcmdldFN1cHBvcnQgaW1wbGVtZW50cyBJVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBzY29wZTogSUNvbnN0cnVjdCxcbiAgICBwcm90ZWN0ZWQgZmVhdHVyZU5hbWU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgc3VwcG9ydGVkSW46IFRlcnJhZm9ybUZlYXR1cmVWZXJzaW9uQ29uc3RyYWludHMsXG4gICAgcHJvdGVjdGVkIGhpbnQ/OiBzdHJpbmcsXG4gICkge31cblxuICBwdWJsaWMgdmFsaWRhdGUoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHsgdGFyZ2V0cywgZXJyb3JzIH0gPSByZXNvbHZlVGFyZ2V0VmVyc2lvbnModGhpcy5zY29wZSk7XG4gICAgaWYgKCF0YXJnZXRzKSB7XG4gICAgICByZXR1cm4gZXJyb3JzO1xuICAgIH1cblxuICAgIHJldHVybiBjaGVja0ZlYXR1cmVTdXBwb3J0ZWRCeVRhcmdldHMoXG4gICAgICB0aGlzLmZlYXR1cmVOYW1lLFxuICAgICAgdGhpcy5zdXBwb3J0ZWRJbixcbiAgICAgIHRhcmdldHMsXG4gICAgICB0aGlzLmhpbnQsXG4gICAgKTtcbiAgfVxufVxuIl19
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LXZlcnNpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ZhbGlkYXRpb25zL3RhcmdldC12ZXJzaW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErQ0Esa0RBT0M7QUFNRCxzREFjQztBQU1ELDREQUtDO0FBUUQsc0RBNkRDO0FBWUQsd0VBZ0NDO0FBdE1ELCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUU3QiwrQ0FBaUM7QUFHakM7Ozs7Ozs7OztHQVNHO0FBQ1UsUUFBQSwyQkFBMkIsR0FBRyxnQkFBZ0IsQ0FBQztBQVk1RDs7OztHQUlHO0FBQ1UsUUFBQSx1QkFBdUIsR0FBNEI7SUFDOUQsU0FBUyxFQUFFLFNBQVM7SUFDcEIsUUFBUSxFQUFFLFNBQVM7Q0FDcEIsQ0FBQztBQUVGOzs7R0FHRztBQUNVLFFBQUEsZUFBZSxHQUFHLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBVSxDQUFDO0FBRWxFLDZDQUE2QztBQUM3QyxTQUFnQixtQkFBbUIsQ0FDakMsY0FBd0M7SUFFeEMsT0FBTyxDQUNMLGNBQWMsRUFBRSxRQUFRLEtBQUssU0FBUztRQUN0QyxjQUFjLEVBQUUsU0FBUyxLQUFLLFNBQVMsQ0FDeEMsQ0FBQztBQUNKLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixxQkFBcUIsQ0FDbkMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUU7SUFFbkIsS0FBSyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDeEUsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDOUMsSUFBSSxFQUFFLENBQUMs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QixnQkFBVyxHQUFYLFdBQVcsQ0FBb0M7UUFDL0MsU0FBSSxHQUFKLElBQUksQ0FBUztJQUN0QixDQUFDO0lBRUcsUUFBUTtRQUNiLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcscUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxPQUFPLDhCQUE4QixDQUNuQyxJQUFJLENBQUMsV0FBVyxFQUNoQixJQUFJLENBQUMsV0FBVyxFQUNoQixPQUFPLEVBQ1AsSUFBSSxDQUFDLElBQUksQ0FDVixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBckJELG9FQXFCQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IElDb25zdHJ1Y3QsIElWYWxpZGF0aW9uIH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tIFwic2VtdmVyXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1GZWF0dXJlVmVyc2lvbkNvbnN0cmFpbnRzIH0gZnJvbSBcIi4vdmFsaWRhdGUtdGVycmFmb3JtLWZlYXR1cmUtdmVyc2lvblwiO1xuXG4vKipcbiAqIENvbnRleHQga2V5IGNhcnJ5aW5nIHRoZSBwcm9qZWN0J3MgZGVjbGFyZWQgVGVycmFmb3JtLWNvbXBhdGlibGUgcnVudGltZVxuICogdGFyZ2V0cyAoc2V0IGZyb20gdGhlIGB0YXJnZXRWZXJzaW9uc2AgZmllbGQgaW4gY2RrdGYuanNvbiBieSB0aGUgQ0xJLCBvclxuICogZGlyZWN0bHkgdmlhIEFwcCBjb250ZXh0IC8gQ0RLVEZfQ09OVEVYVF9KU09OIGZvciBzdGFuZGFsb25lIHN5bnRoKS5cbiAqXG4gKiBUaGlzIGlzIHRoZSBjYW5vbmljYWwgZGVmaW5pdGlvbi4gYEBjZGt0bi9jb21tb25zYCBpbXBvcnRzIGl0IGZyb20gaGVyZVxuICogKGNvbW1vbnMgZGVwZW5kcyBvbiBjZGt0bjsgY2RrdG4gbXVzdCBub3QgZGVwZW5kIG9uIGNvbW1vbnMpLCBzbyB0aGUgQ0xJXG4gKiB3cml0ZXMgYW5kIHRoZSBjb25zdHJ1Y3QgbGlicmFyeSByZWFkcyB0aGUgZXhhY3Qgc2FtZSBrZXkuIEl0IGlzIGFuXG4gKiBpbnRlcm5hbCB3aXJpbmcgZGV0YWlsLCBkZWxpYmVyYXRlbHkgbm90IHBhcnQgb2YgY2RrdG4ncyBwdWJsaWMgQVBJLlxuICovXG5leHBvcnQgY29uc3QgVEFSR0VUX1ZFUlNJT05TX0NPTlRFWFRfS0VZID0gXCJ0YXJnZXRWZXJzaW9uc1wiO1xuXG4vKipcbiAqIFRoZSBUZXJyYWZvcm0tY29tcGF0aWJsZSBydW50aW1lcyBhIHByb2plY3QgZGVjbGFyZXMgaXQgc3VwcG9ydHMsIGFzIG5wbVxuICogc2VtdmVyIHJhbmdlcyBwZXIgcHJvZHVjdC4gQSBtaXNzaW5nIHByb2R1Y3QgbWVhbnMgdGhlIHByb2plY3QgZG9lcyBub3RcbiAqIHRhcmdldCB0aGF0IHByb2R1Y3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVycmFmb3JtVGFyZ2V0VmVyc2lvbnMge1xuICByZWFkb25seSB0ZXJyYWZvcm0/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9wZW50b2Z1Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFVzZWQgd2hlbiBhIHByb2plY3QgZGVjbGFyZXMgbm8gYHRhcmdldFZlcnNpb25zYDogdGhlIHByb2plY3QgaXMgYXNzdW1lZFxuICogdG8gdGFyZ2V0IGV2ZXJ5IHN1cHBvcnRlZCByZWxlYXNlIG9mIGJvdGggcHJvZHVjdHMsIHdoaWNoIGlzIHRoZSBzdHJpY3Rlc3RcbiAqIChtb3N0IHBvcnRhYmxlKSBpbnRlcnByZXRhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVEFSR0VUX1ZFUlNJT05TOiBUZXJyYWZvcm1UYXJnZXRWZXJzaW9ucyA9IHtcbiAgdGVycmFmb3JtOiBcIj49MS41LjdcIixcbiAgb3BlbnRvZnU6IFwiPj0xLjYuMFwiLFxufTtcblxuLyoqXG4gKiBUaGUgcHJvZHVjdCBrZXlzIGEgcHJvamVjdCBtYXkgZGVjbGFyZSB0YXJnZXRzIGZvci4gRXhwb3J0ZWQgZm9yIHJldXNlIGJ5XG4gKiBgQGNka3RuL2NvbW1vbnNgIChpbXBvcnRlZCB2aWEgc3VicGF0aCksIG5vdCBwYXJ0IG9mIGNka3RuJ3MgcHVibGljIEFQSS5cbiAqL1xuZXhwb3J0IGNvbnN0IFRBUkdFVF9QUk9EVUNUUyA9IFtcInRlcnJhZm9ybVwiLCBcIm9wZW50b2Z1XCJdIGFzIGNvbnN0O1xuXG4vKiogT3BlblRvZnUgaXMgdGhlIHNvbGUgZGVjbGFyZWQgcHJvZHVjdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YXJnZXRzT25seU9wZW5Ub2Z1KFxuICB0YXJnZXRWZXJzaW9ucz86IFRlcnJhZm9ybVRhcmdldFZlcnNpb25zLFxuKTogYm9vbGVhbiB7XG4gIHJldHVybiAoXG4gICAgdGFyZ2V0VmVyc2lvbnM/Lm9wZW50b2Z1ICE9PSB1bmRlZmluZWQgJiZcbiAgICB0YXJnZXRWZXJzaW9ucz8udGVycmFmb3JtID09PSB1bmRlZmluZWRcbiAgKTtcbn1cblxuLyoqXG4gKiBUaGUgYHRhcmdldFZlcnNpb25zYCBvZiB0aGUgbmVhcmVzdCBjZGt0Zi5qc29uIGF0IG9yIGFib3ZlIGBkaXJgLiBPbmx5IHRoZVxuICoga2V5IGlzIHJlYWQ6IGFuIGludmFsaWQgY29uZmlnIGlzIHJlcG9ydGVkIGJ5IHRoZSBjb21tYW5kIHRoYXQgcmVhZHMgaXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0VGFyZ2V0VmVyc2lvbnMoXG4gIGRpciA9IHByb2Nlc3MuY3dkKCksXG4pOiBUZXJyYWZvcm1UYXJnZXRWZXJzaW9ucyB8IHVuZGVmaW5lZCB7XG4gIGZvciAobGV0IGN1cnJlbnQgPSBwYXRoLnJlc29sdmUoZGlyKTsgOyBjdXJyZW50ID0gcGF0aC5kaXJuYW1lKGN1cnJlbnQpKSB7XG4gICAgY29uc3QgZmlsZSA9IHBhdGguam9pbihjdXJyZW50LCBcImNka3RmLmpzb25cIik7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMoZmlsZSkpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhmaWxlLCBcInV0ZjhcIikpLnRhcmdldFZlcnNpb25zO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChwYXRoLmRpcm5hbWUoY3VycmVudCkgPT09IGN1cnJlbnQpIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBgVEVSUkFGT1JNX0JJTkFSWV9OQU1FYCwgZWxzZSBgdG9mdWAgd2hlbiB0aGUgcHJvamVjdCBhdCBvciBhYm92ZSB0aGVcbiAqIHdvcmtpbmcgZGlyZWN0b3J5IHRhcmdldHMgb25seSBPcGVuVG9mdSwgZWxzZSBgdGVycmFmb3JtYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZmVyVGVycmFmb3JtQmluYXJ5TmFtZSgpOiBzdHJpbmcge1xuICByZXR1cm4gKFxuICAgIHByb2Nlc3MuZW52LlRFUlJBRk9STV9CSU5BUllfTkFNRSB8fFxuICAgICh0YXJnZXRzT25seU9wZW5Ub2Z1KHByb2plY3RUYXJnZXRWZXJzaW9ucygpKSA/IFwidG9mdVwiIDogXCJ0ZXJyYWZvcm1cIilcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgZGVjbGFyZWQgdGFyZ2V0IHZlcnNpb25zIGZyb20gY29uc3RydWN0IGNvbnRleHQsIGZhbGxpbmcgYmFja1xuICogdG8gREVGQVVMVF9UQVJHRVRfVkVSU0lPTlMuIFJldHVybnMgZXJyb3JzIGluc3RlYWQgb2YgdGFyZ2V0cyB3aGVuIHRoZVxuICogZGVjbGFyZWQgdmFsdWUgaXMgbWFsZm9ybWVkICh3aGljaCBjYW4gaGFwcGVuIHdoZW4gY29udGV4dCBpcyBzZXQgZGlyZWN0bHlcbiAqIG9uIHRoZSBBcHAgcmF0aGVyIHRoYW4gZ29pbmcgdGhyb3VnaCBjZGt0Zi5qc29uIHZhbGlkYXRpb24pLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVRhcmdldFZlcnNpb25zKHNjb3BlOiBJQ29uc3RydWN0KToge1xuICB0YXJnZXRzPzogVGVycmFmb3JtVGFyZ2V0VmVyc2lvbnM7XG4gIGVycm9yczogc3RyaW5nW107XG59IHtcbiAgY29uc3QgZGVjbGFyZWQgPSBzY29wZS5ub2RlLnRyeUdldENvbnRleHQoVEFSR0VUX1ZFUlNJT05TX0NPTlRFWFRfS0VZKTtcbiAgaWYgKGRlY2xhcmVkID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4geyB0YXJnZXRzOiBERUZBVUxUX1RBUkdFVF9WRVJTSU9OUywgZXJyb3JzOiBbXSB9O1xuICB9XG5cbiAgaWYgKFxuICAgIHR5cGVvZiBkZWNsYXJlZCAhPT0gXCJvYmplY3RcIiB8fFxuICAgIGRlY2xhcmVkID09PSBudWxsIHx8XG4gICAgQXJyYXkuaXNBcnJheShkZWNsYXJlZClcbiAgKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yczogW1xuICAgICAgICBgdGFyZ2V0VmVyc2lvbnMgY29udGV4dCBtdXN0IGJlIGFuIG9iamVjdCBtYXBwaW5nIHByb2R1Y3RzIHRvIHNlbXZlciByYW5nZXMsIGUuZy4geyBcInRlcnJhZm9ybVwiOiBcIj49MS41LjdcIiB9YCxcbiAgICAgIF0sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGVudHJpZXMgPSBPYmplY3QuZW50cmllcyhkZWNsYXJlZCk7XG4gIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB7XG4gICAgICBlcnJvcnM6IFtcbiAgICAgICAgYHRhcmdldFZlcnNpb25zIG11c3QgZGVjbGFyZSBhdCBsZWFzdCBvbmUgcHJvZHVjdCAoXCJ0ZXJyYWZvcm1cIiBvciBcIm9wZW50b2Z1XCIpIG9yIGJlIG9taXR0ZWQgZW50aXJlbHlgLFxuICAgICAgXSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IFtwcm9kdWN0LCByYW5nZV0gb2YgZW50cmllcykge1xuICAgIGlmICghVEFSR0VUX1BST0RVQ1RTLmluY2x1ZGVzKHByb2R1Y3QgYXMgYW55KSkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIGB0YXJnZXRWZXJzaW9ucyBoYXMgdW5rbm93biBwcm9kdWN0IFwiJHtwcm9kdWN0fVwiIChleHBlY3RlZCBcInRlcnJhZm9ybVwiIG9yIFwib3BlbnRvZnVcIilgLFxuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByYW5nZSA9PT0gXCJzdHJpbmdcIiAmJiByYW5nZS5pbmNsdWRlcyhcIn4+XCIpKSB7XG4gICAgICAvLyBucG0gc2VtdmVyIGhhcHBlbnMgdG8gcGFyc2UgXCJ+PlwiIGFzIFwiflwiLCB3aGljaCBoYXMgZGlmZmVyZW50XG4gICAgICAvLyBzZW1hbnRpY3MgdGhhbiBUZXJyYWZvcm0ncyBcIn4+XCIgcGVzc2ltaXN0aWMgY29uc3RyYWludCDigJQgcmVqZWN0IGl0XG4gICAgICAvLyBpbnN0ZWFkIG9mIHNpbGVudGx5IG1lYW5pbmcgc29tZXRoaW5nIGVsc2VcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICBgdGFyZ2V0VmVyc2lvbnMuJHtwcm9kdWN0fSBcIiR7cmFuZ2V9XCIgdXNlcyBUZXJyYWZvcm0gcHJvdmlkZXIgY29uc3RyYWludCBzeW50YXg7IHVzZSBucG0gc2VtdmVyIHJhbmdlcyBpbnN0ZWFkIChlLmcuIFwiPj0xLjUuN1wiIG9yIFwifjEuNS43XCIpYCxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHR5cGVvZiByYW5nZSAhPT0gXCJzdHJpbmdcIiB8fFxuICAgICAgcmFuZ2UudHJpbSgpLmxlbmd0aCA9PT0gMCB8fFxuICAgICAgc2VtdmVyLnZhbGlkUmFuZ2UocmFuZ2UpID09PSBudWxsXG4gICAgKSB7XG4gICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgYHRhcmdldFZlcnNpb25zLiR7cHJvZHVjdH0gJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICByYW5nZSxcbiAgICAgICAgKX0gaXMgbm90IGEgdmFsaWQgc2VtdmVyIHJhbmdlYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHsgZXJyb3JzIH07XG4gIH1cblxuICByZXR1cm4geyB0YXJnZXRzOiBkZWNsYXJlZCBhcyBUZXJyYWZvcm1UYXJnZXRWZXJzaW9ucywgZXJyb3JzOiBbXSB9O1xufVxuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgZmVhdHVyZSBpcyBzdXBwb3J0ZWQgYWNyb3NzIHRoZSBlbnRpcmUgZGVjbGFyZWQgdGFyZ2V0XG4gKiByYW5nZSBvZiBldmVyeSB0YXJnZXRlZCBwcm9kdWN0LlxuICpcbiAqIGBzdXBwb3J0ZWRJbmAgZm9sbG93cyB0aGUgVGVycmFmb3JtRmVhdHVyZVZlcnNpb25Db25zdHJhaW50cyBzZW1hbnRpY3M6IGFcbiAqIG1pc3NpbmcgcHJvZHVjdCBrZXkgbWVhbnMgdGhlIGZlYXR1cmUgaXMgbm90IHN1cHBvcnRlZCBieSB0aGF0IHByb2R1Y3QgYXRcbiAqIGFueSB2ZXJzaW9uLiBUaGUgY2hlY2sgaXMgYSBzZW12ZXIgcmFuZ2Ugc3Vic2V0OiBkZWNsYXJpbmdcbiAqIGB0ZXJyYWZvcm06IFwiPj0xLjUuN1wiYCB3aGlsZSBhIGZlYXR1cmUgcmVxdWlyZXMgYD49MS44LjBgIGZhaWxzLCBiZWNhdXNlXG4gKiB0aGUgcHJvamVjdCBjbGFpbXMgdG8gc3VwcG9ydCAxLjUuNy4uMS44LjAgd2hlcmUgdGhlIGZlYXR1cmUgaXMgbWlzc2luZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrRmVhdHVyZVN1cHBvcnRlZEJ5VGFyZ2V0cyhcbiAgZmVhdHVyZU5hbWU6IHN0cmluZyxcbiAgc3VwcG9ydGVkSW46IFRlcnJhZm9ybUZlYXR1cmVWZXJzaW9uQ29uc3RyYWludHMsXG4gIHRhcmdldHM6IFRlcnJhZm9ybVRhcmdldFZlcnNpb25zLFxuICBoaW50Pzogc3RyaW5nLFxuKTogc3RyaW5nW10ge1xuICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgZm9yIChjb25zdCBwcm9kdWN0IG9mIFRBUkdFVF9QUk9EVUNUUykge1xuICAgIGNvbnN0IHRhcmdldFJhbmdlID0gdGFyZ2V0c1twcm9kdWN0XTtcbiAgICBpZiAoIXRhcmdldFJhbmdlKSBjb250aW51ZTsgLy8gcHJvZHVjdCBub3QgdGFyZ2V0ZWQgYnkgdGhlIHByb2plY3RcblxuICAgIGNvbnN0IHN1cHBvcnRlZFJhbmdlID0gc3VwcG9ydGVkSW5bcHJvZHVjdF07XG4gICAgaWYgKCFzdXBwb3J0ZWRSYW5nZSkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIGAke2ZlYXR1cmVOYW1lfSBpcyBub3Qgc3VwcG9ydGVkIGJ5ICR7cHJvZHVjdH0sIGJ1dCB0aGUgcHJvamVjdCB0YXJnZXRzICR7cHJvZHVjdH0gJHt0YXJnZXRSYW5nZX0uICR7XG4gICAgICAgICAgaGludCB8fCBcIlwiXG4gICAgICAgIH1gLnRyaW1FbmQoKSxcbiAgICAgICk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoIXNlbXZlci5zdWJzZXQodGFyZ2V0UmFuZ2UsIHN1cHBvcnRlZFJhbmdlKSkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIGAke2ZlYXR1cmVOYW1lfSByZXF1aXJlcyAke3Byb2R1Y3R9ICR7c3VwcG9ydGVkUmFuZ2V9LCBidXQgdGhlIHByb2plY3QgdGFyZ2V0cyAke3Byb2R1Y3R9ICR7dGFyZ2V0UmFuZ2V9LiAke1xuICAgICAgICAgIGhpbnQgfHwgXCJcIlxuICAgICAgICB9YC50cmltRW5kKCksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBlcnJvcnM7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoYXQgYSBmZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgcHJvamVjdCdzIGRlY2xhcmVkXG4gKiBUZXJyYWZvcm0tY29tcGF0aWJsZSBydW50aW1lIHRhcmdldHMgKGNka3RmLmpzb24gYHRhcmdldFZlcnNpb25zYCksXG4gKiB3aXRob3V0IHByb2JpbmcgYW55IGxvY2FsbHkgaW5zdGFsbGVkIGJpbmFyeS5cbiAqXG4gKiBWZXJpZnlpbmcgdGhlIGFjdHVhbGx5IGluc3RhbGxlZCBiaW5hcnkgaXMgYSBzZXBhcmF0ZSwgZXhwbGljaXQgc3RlcDpcbiAqIHRoZSBvcHQtaW4gYHZhbGlkYXRlSW5zdGFsbGVkQmluYXJ5YCBjb25maWcgaGFuZGxlZCBieSB0aGUgQ0xJIGNvbW1hbmRzXG4gKiB0aGF0IGV4ZWN1dGUgdGhlIGJpbmFyeS5cbiAqL1xuZXhwb3J0IGNsYXNzIFZhbGlkYXRlRmVhdHVyZVRhcmdldFN1cHBvcnQgaW1wbGVtZW50cyBJVmFsaWRhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBzY29wZTogSUNvbnN0cnVjdCxcbiAgICBwcm90ZWN0ZWQgZmVhdHVyZU5hbWU6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgc3VwcG9ydGVkSW46IFRlcnJhZm9ybUZlYXR1cmVWZXJzaW9uQ29uc3RyYWludHMsXG4gICAgcHJvdGVjdGVkIGhpbnQ/OiBzdHJpbmcsXG4gICkge31cblxuICBwdWJsaWMgdmFsaWRhdGUoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHsgdGFyZ2V0cywgZXJyb3JzIH0gPSByZXNvbHZlVGFyZ2V0VmVyc2lvbnModGhpcy5zY29wZSk7XG4gICAgaWYgKCF0YXJnZXRzKSB7XG4gICAgICByZXR1cm4gZXJyb3JzO1xuICAgIH1cblxuICAgIHJldHVybiBjaGVja0ZlYXR1cmVTdXBwb3J0ZWRCeVRhcmdldHMoXG4gICAgICB0aGlzLmZlYXR1cmVOYW1lLFxuICAgICAgdGhpcy5zdXBwb3J0ZWRJbixcbiAgICAgIHRhcmdldHMsXG4gICAgICB0aGlzLmhpbnQsXG4gICAgKTtcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,115 +1,118 @@
1
1
  {
2
- "name": "cdktn",
3
- "version": "0.26.0-pre.2",
4
- "description": "Cloud Development Kit for Terraform",
5
- "scripts": {
6
- "build": "jsii --silence-warnings reserved-word",
7
- "watch": "jsii -w --silence-warnings reserved-word",
8
- "watch-preserve-output": "tsc -w --preserveWatchOutput",
9
- "package": "node ./scripts/pack.mjs",
10
- "package:python": "node ./scripts/pack.mjs python",
11
- "package:java": "node ./scripts/pack.mjs java",
12
- "package:dotnet": "node ./scripts/pack.mjs dotnet",
13
- "package:js": "node ./scripts/pack.mjs js",
14
- "package:go": "node ./scripts/pack.mjs go",
15
- "test:update": "jest -u",
16
- "dist-clean": "rm -rf dist"
17
- },
18
- "main": "lib/index.js",
19
- "types": "lib/index.d.ts",
20
- "nx": {
21
- "tags": [
22
- "unit-test:terraform"
23
- ],
24
- "targets": {
25
- "build": {
26
- "outputs": [
27
- "{projectRoot}/lib",
28
- "{projectRoot}/.jsii",
29
- "{projectRoot}/tsconfig.json"
30
- ]
31
- }
32
- }
33
- },
34
- "keywords": [
35
- "cdk",
36
- "cdktf",
37
- "cdktn",
38
- "terraform",
39
- "cdk for terraform",
40
- "terraform-cdk",
41
- "cdk terrain",
42
- "opentofu",
43
- "infrastructure as code"
44
- ],
45
- "jsii": {
46
- "outdir": "dist",
47
- "tsc": {
48
- "outDir": "lib",
49
- "rootDir": "src"
2
+ "name": "cdktn",
3
+ "version": "0.26.0-pre.21",
4
+ "description": "Cloud Development Kit for Terraform",
5
+ "scripts": {
6
+ "build": "jsii --silence-warnings reserved-word",
7
+ "watch": "jsii -w --silence-warnings reserved-word",
8
+ "watch-preserve-output": "tsc -w --preserveWatchOutput",
9
+ "package": "node ./scripts/pack.mjs",
10
+ "package:python": "node ./scripts/pack.mjs python",
11
+ "package:java": "node ./scripts/pack.mjs java",
12
+ "package:dotnet": "node ./scripts/pack.mjs dotnet",
13
+ "package:js": "node ./scripts/pack.mjs js",
14
+ "package:go": "node ./scripts/pack.mjs go",
15
+ "test:update": "jest -u",
16
+ "typecheck": "tsc --project test",
17
+ "dist-clean": "rm -rf dist"
18
+ },
19
+ "main": "lib/index.js",
20
+ "types": "lib/index.d.ts",
21
+ "nx": {
22
+ "tags": [
23
+ "unit-test:terraform"
24
+ ],
25
+ "targets": {
26
+ "build": {
27
+ "outputs": [
28
+ "{projectRoot}/lib",
29
+ "{projectRoot}/.jsii",
30
+ "{projectRoot}/tsconfig.json"
31
+ ]
32
+ },
33
+ "typecheck": {
34
+ "dependsOn": [
35
+ "build"
36
+ ]
37
+ }
38
+ }
50
39
  },
51
- "excludeTypescript": [
52
- "src/**/__tests__/**"
40
+ "keywords": [
41
+ "cdk",
42
+ "cdktf",
43
+ "cdktn",
44
+ "terraform",
45
+ "cdk for terraform",
46
+ "terraform-cdk",
47
+ "cdk terrain",
48
+ "opentofu",
49
+ "infrastructure as code"
53
50
  ],
54
- "versionFormat": "short",
55
- "license": "MPL-2.0",
51
+ "jsii": {
52
+ "outdir": "dist",
53
+ "tsc": {
54
+ "outDir": "lib",
55
+ "rootDir": "src"
56
+ },
57
+ "versionFormat": "short",
58
+ "license": "MPL-2.0",
59
+ "author": {
60
+ "name": "OpenConstructs",
61
+ "organization": true
62
+ },
63
+ "targets": {
64
+ "python": {
65
+ "distName": "cdktn",
66
+ "module": "cdktn"
67
+ },
68
+ "java": {
69
+ "package": "io.cdktn.cdktn",
70
+ "maven": {
71
+ "groupId": "io.cdktn",
72
+ "artifactId": "cdktn"
73
+ }
74
+ },
75
+ "dotnet": {
76
+ "packageId": "Io.Cdktn",
77
+ "namespace": "Io.Cdktn"
78
+ },
79
+ "go": {
80
+ "moduleName": "github.com/open-constructs/cdk-terrain-go",
81
+ "packageName": "cdktn"
82
+ }
83
+ }
84
+ },
56
85
  "author": {
57
- "name": "OpenConstructs",
58
- "organization": true
86
+ "name": "OpenConstructs",
87
+ "url": "https://github.com/open-constructs"
59
88
  },
60
- "targets": {
61
- "python": {
62
- "distName": "cdktn",
63
- "module": "cdktn"
64
- },
65
- "java": {
66
- "package": "io.cdktn.cdktn",
67
- "maven": {
68
- "groupId": "io.cdktn",
69
- "artifactId": "cdktn"
70
- }
71
- },
72
- "dotnet": {
73
- "packageId": "Io.Cdktn",
74
- "namespace": "Io.Cdktn"
75
- },
76
- "go": {
77
- "moduleName": "github.com/open-constructs/cdk-terrain-go",
78
- "packageName": "cdktn"
79
- }
89
+ "homepage": "https://github.com/open-constructs/cdk-terrain",
90
+ "repository": {
91
+ "type": "git",
92
+ "url": "https://github.com/open-constructs/cdk-terrain.git",
93
+ "directory": "packages/cdktn"
94
+ },
95
+ "license": "MPL-2.0",
96
+ "devDependencies": {
97
+ "@types/node": "22.20.1",
98
+ "@types/semver": "7.7.1",
99
+ "constructs": "10.6.0",
100
+ "jsii": "~6.0.0",
101
+ "jsii-pacmak": "1.140.0",
102
+ "typescript": "~6.0.0"
103
+ },
104
+ "dependencies": {
105
+ "fflate": "0.8.3",
106
+ "safe-stable-stringify": "2.5.0",
107
+ "semver": "7.8.5"
108
+ },
109
+ "bundledDependencies": [
110
+ "fflate",
111
+ "safe-stable-stringify",
112
+ "semver"
113
+ ],
114
+ "stability": "experimental",
115
+ "peerDependencies": {
116
+ "constructs": "^10.6.0"
80
117
  }
81
- },
82
- "author": {
83
- "name": "OpenConstructs",
84
- "url": "https://github.com/open-constructs"
85
- },
86
- "homepage": "https://github.com/open-constructs/cdk-terrain",
87
- "repository": {
88
- "type": "git",
89
- "url": "https://github.com/open-constructs/cdk-terrain.git",
90
- "directory": "packages/cdktn"
91
- },
92
- "license": "MPL-2.0",
93
- "devDependencies": {
94
- "@types/node": "22.20.1",
95
- "@types/semver": "7.7.1",
96
- "constructs": "10.6.0",
97
- "jsii": "~6.0.0",
98
- "jsii-pacmak": "1.140.0",
99
- "typescript": "~6.0.0"
100
- },
101
- "dependencies": {
102
- "fflate": "0.8.3",
103
- "safe-stable-stringify": "2.5.0",
104
- "semver": "7.8.5"
105
- },
106
- "bundledDependencies": [
107
- "fflate",
108
- "safe-stable-stringify",
109
- "semver"
110
- ],
111
- "stability": "experimental",
112
- "peerDependencies": {
113
- "constructs": "^10.6.0"
114
- }
115
- }
118
+ }