cdktn 0.25.0-pre.8 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +2194 -424
- package/README.md +12 -0
- package/lib/annotations.js +4 -4
- package/lib/app.js +54 -5
- package/lib/aspect.js +3 -4
- package/lib/asset-hash.d.ts +75 -0
- package/lib/asset-hash.js +129 -0
- package/lib/asset-staging.d.ts +180 -0
- package/lib/asset-staging.js +464 -0
- package/lib/assets.d.ts +401 -0
- package/lib/assets.js +333 -0
- package/lib/backends/azurerm-backend.js +4 -6
- package/lib/backends/cloud-backend.js +15 -12
- package/lib/backends/consul-backend.js +4 -6
- package/lib/backends/cos-backend.js +4 -6
- package/lib/backends/gcs-backend.js +4 -6
- package/lib/backends/http-backend.js +4 -6
- package/lib/backends/local-backend.js +38 -7
- package/lib/backends/oss-backend.js +4 -6
- package/lib/backends/pg-backend.js +4 -6
- package/lib/backends/remote-backend.js +8 -10
- package/lib/backends/s3-backend.js +4 -6
- package/lib/backends/swift-backend.js +4 -6
- package/lib/complex-computed-list.js +114 -65
- package/lib/errors.d.ts +16 -0
- package/lib/errors.js +51 -3
- package/lib/functions/provider-function.js +2 -4
- package/lib/functions/terraform-functions.generated.js +2 -4
- package/lib/ignore-strategy.d.ts +82 -0
- package/lib/ignore-strategy.js +29 -0
- package/lib/importable-resource.js +8 -6
- package/lib/index.d.ts +4 -0
- package/lib/index.js +28 -2
- package/lib/manifest.js +49 -11
- package/lib/private/fs.d.ts +74 -2
- package/lib/private/fs.js +129 -17
- package/lib/private/unique.js +35 -2
- package/lib/resource.js +3 -4
- package/lib/synthesize/synthesizer.js +51 -25
- package/lib/terraform-asset.d.ts +68 -5
- package/lib/terraform-asset.js +127 -40
- package/lib/terraform-backend.js +3 -4
- package/lib/terraform-count.js +3 -4
- package/lib/terraform-data-resource.d.ts +1 -1
- package/lib/terraform-data-resource.js +18 -13
- package/lib/terraform-data-source.js +10 -4
- package/lib/terraform-dynamic-block.js +5 -2
- package/lib/terraform-dynamic-expression.js +4 -1
- package/lib/terraform-element.js +34 -6
- package/lib/terraform-ephemeral-resource.js +10 -4
- package/lib/terraform-functions.js +2 -4
- package/lib/terraform-hcl-module.js +3 -4
- package/lib/terraform-iterator.js +11 -12
- package/lib/terraform-local.js +3 -4
- package/lib/terraform-module-asset.js +39 -4
- package/lib/terraform-module.js +8 -4
- package/lib/terraform-operators.js +2 -4
- package/lib/terraform-output.js +7 -4
- package/lib/terraform-provider.js +5 -4
- package/lib/terraform-provisioner.js +2 -4
- package/lib/terraform-remote-state.js +5 -5
- package/lib/terraform-resource-targets.js +3 -7
- package/lib/terraform-resource.js +23 -7
- package/lib/terraform-stack.js +38 -38
- package/lib/terraform-variable.js +25 -22
- package/lib/testing/adapters/jest.d.ts +2 -1
- package/lib/testing/adapters/jest.js +3 -3
- package/lib/testing/index.js +42 -8
- package/lib/testing/matchers.d.ts +34 -30
- package/lib/testing/matchers.js +329 -93
- package/lib/tfExpression.js +25 -8
- package/lib/tokens/lazy.js +11 -7
- package/lib/tokens/private/dependency.js +2 -2
- package/lib/tokens/private/encoding.js +6 -1
- package/lib/tokens/private/intrinsic.js +6 -1
- package/lib/tokens/private/resolve.js +2 -5
- package/lib/tokens/private/token-map.js +4 -6
- package/lib/tokens/private/uniqueid.js +35 -2
- package/lib/tokens/resolvable.js +4 -6
- package/lib/tokens/string-fragments.js +6 -10
- package/lib/tokens/token.js +15 -18
- package/lib/upgrade-id-aspect.js +37 -6
- package/lib/validations/index.d.ts +0 -1
- package/lib/validations/index.js +1 -2
- package/lib/validations/target-versions.js +39 -2
- package/lib/validations/validate-function-version-support.js +2 -1
- package/lib/validations/validate-provider-function-target-support.js +2 -1
- package/lib/validations/validate-provider-presence.js +10 -9
- package/package.json +21 -7
- package/scripts/pack.mjs +27 -12
- package/lib/validations/validate-binary-version.d.ts +0 -23
- package/lib/validations/validate-binary-version.js +0 -54
- package/lib/validations/validate-terraform-version.d.ts +0 -13
- package/lib/validations/validate-terraform-version.js +0 -21
package/README.md
CHANGED
|
@@ -3,6 +3,18 @@
|
|
|
3
3
|
cdktn is a framework for defining cloud infrastructure using Terraform providers and modules. It allows for
|
|
4
4
|
users to define infrastructure resources using higher-level programming languages.
|
|
5
5
|
|
|
6
|
+
CDK Terrain (CDKTN) is the community-maintained successor to CDK for Terraform (CDKTF). Migrating from CDKTF? Follow the [migration guide](https://cdktn.io/docs/release/upgrade-guide-v0-22).
|
|
7
|
+
|
|
8
|
+
## Use with AI agents
|
|
9
|
+
|
|
10
|
+
The CDKTN docs are served to AI coding agents by a hosted [MCP server](https://cdktn.io/docs/ai-agents) at `https://cdktn.io/docs/mcp` (streamable HTTP, no auth). Point your agent at it rather than relying on prior CDKTF knowledge:
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
claude mcp add --transport http cdktn https://cdktn.io/docs/mcp
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
An [agent skill](https://cdktn.io/docs/skill.md) and an [llms.txt index](https://cdktn.io/llms.txt) are also available.
|
|
17
|
+
|
|
6
18
|
## Build
|
|
7
19
|
|
|
8
20
|
Install dependencies
|
package/lib/annotations.js
CHANGED
|
@@ -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" };
|
|
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
|
-
|
|
72
|
-
Annotations[_a] = { fqn: "cdktn.Annotations", version: "0.25.0-pre.8" };
|
|
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
|
|
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" };
|
|
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.8" };
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsMkNBQW1EO0FBQ25ELHlCQUF5QjtBQUN6QixrREFBMEM7QUFDMUMsK0NBQWdFO0FBQ2hFLHlDQUFzQztBQUV0Qyx1REFBbUQ7QUFDbkQscUNBSWtCO0FBQ2xCLHlDQUFrRTtBQUVsRSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQzlCLFFBQUEsV0FBVyxHQUFHLG9CQUFvQixDQUFDO0FBK0NoRDs7R0FFRztBQUNILE1BQWEsR0FBSSxTQUFRLHNCQUFTO0lBeUJoQzs7O09BR0c7SUFDSCxZQUFZLFNBQW9CLEVBQUU7UUFDaEMsS0FBSyxDQUFDLFNBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFekQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxJQUFJLFdBQVcsQ0FBQztRQUN2RSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1FBQ2xELElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDO1FBQzFDLElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQy9CLFNBQVMsR0FBRyxZQUFZLEtBQUssTUFBTSxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUM7UUFDdkQsSUFBSSxDQUFDLGNB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LENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBRUQsd0JBQXdCO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQVcsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sc0JBQXNCLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFMUUsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDOztBQTNKSCxrQkE0SkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gXCIuLi9wYWNrYWdlLmpzb25cIjtcbmltcG9ydCB7IERJU0FCTEVfU1RBQ0tfVFJBQ0VfSU5fTUVUQURBVEEgfSBmcm9tIFwiLi9hbm5vdGF0aW9uc1wiO1xuaW1wb3J0IHsgTWFuaWZlc3QgfSBmcm9tIFwiLi9tYW5pZmVzdFwiO1xuaW1wb3J0IHsgSVN5bnRoZXNpc1Nlc3Npb24gfSBmcm9tIFwiLi9zeW50aGVzaXplXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1TdGFjayB9IGZyb20gXCIuL3RlcnJhZm9ybS1zdGFja1wiO1xuaW1wb3J0IHtcbiAgYXBwVmFsaWRhdGlvbkZhaWx1cmUsXG4gIGNvbnN0cnVjdHNPdXRzaWRlT2ZTdGFja3MsXG4gIG5vQXBwRm91bmQsXG59IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgRkFJTF9PTl9DT05TVFJVQ1RTX09VVFNJREVfT0ZfU1RBQ0tTIH0gZnJvbSBcIi4vZmVhdHVyZXNcIjtcblxuY29uc3QgQVBQX1NZTUJPTCA9IFN5bWJvbC5mb3IoXCJjZGt0Zi9BcHBcIik7XG5leHBvcnQgY29uc3QgQ09OVEVYVF9FTlYgPSBcIkNES1RGX0NPTlRFWFRfSlNPTlwiO1xuZXhwb3J0IGludGVyZmFjZSBBcHBDb25maWcge1xuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSB0byBvdXRwdXQgVGVycmFmb3JtIHJlc291cmNlcy5cbiAgICpcbiAgICogSWYgeW91IGFyZSB1c2luZyB0aGUgQ0RLVE4gQ0xJLCB0aGlzIHZhbHVlIGlzIGF1dG9tYXRpY2FsbHkgc2V0IGZyb20gb25lIG9mIHRoZSBmb2xsb3dpbmcgdGhyZWUgc291cmNlczpcbiAgICogLSBUaGUgYC1vYCAvIGAtLW91dHB1dGAgQ0xJIG9wdGlvblxuICAgKiAtIFRoZSBgQ0RLVEZfT1VURElSYCBlbnZpcm9ubWVudCB2YXJpYWJsZVxuICAgKiAtIFRoZSBgb3V0ZGlyYCBrZXkgaW4gYGNka3RmLmpzb25gXG4gICAqXG4gICAqIElmIHlvdSBhcmUgdXNpbmcgdGhlIENES1ROIENMSSBhbmQgd2FudCB0byBzZXQgYSBkaWZmZXJlbnQgdmFsdWUgaGVyZSwgeW91IHdpbGwgYWxzbyBuZWVkIHRvIHNldCB0aGUgc2FtZSB2YWx1ZSB2aWEgb25lIG9mIHRoZSB0aHJlZSB3YXlzIHNwZWNpZmllZCBhYm92ZS5cbiAgICpcbiAgICogVGhlIG1vc3QgY29tbW9uIGNhc2UgdG8gc2V0IHRoaXMgdmFsdWUgaXMgd2hlbiB5b3UgYXJlIHVzaW5nIHRoZSBDREtUTiBsaWJyYXJ5IGRpcmVjdGx5IChlLmcuIHdoZW4gd3JpdGluZyB1bml0IHRlc3RzKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBDREtURl9PVVRESVIgaWYgZGVmaW5lZCwgb3RoZXJ3aXNlIFwiY2RrdGYub3V0XCJcbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcj86IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhY2tUcmFjZXM/OiBib29sZWFuO1xuXG4gIHJlYWRvbmx5IGhjbE91dHB1dD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgY29udGV4dCB2YWx1ZXMgZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogQ29udGV4dCBzZXQgYnkgdGhlIENMSSBvciB0aGUgYGNvbnRleHRgIGtleSBpbiBgY2RrdGYuanNvbmAgaGFzIHByZWNlZGVuY2UuXG4gICAqXG4gICAqIENvbnRleHQgY2FuIGJlIHJlYWQgZnJvbSBhbnkgY29uc3RydWN0IHVzaW5nIGBub2RlLmdldENvbnRleHQoa2V5KWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBjb250ZXh0XG4gICAqL1xuICByZWFkb25seSBjb250ZXh0PzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBza2lwIGFsbCB2YWxpZGF0aW9ucyBkdXJpbmcgc3ludGhlc2lzIG9mIHRoZSBhcHBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcFZhbGlkYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNraXAgYmFja2VuZCB2YWxpZGF0aW9uIGR1cmluZyBzeW50aGVzaXMgb2YgdGhlIGFwcFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwQmFja2VuZFZhbGlkYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBjZGt0biBhcHBsaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFwcCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgb3V0cHV0IGRpcmVjdG9yeSBpbnRvIHdoaWNoIHJlc291cmNlcyB3aWxsIGJlIHN5bnRoZXNpemVkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG91dGRpcjogc3RyaW5nO1xuXG4gIHB1YmxpYyByZWFkb25seSBoY2xPdXRwdXQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFjayB3aGljaCB3aWxsIGJlIHN5bnRoZXNpemVkLiBJZiBub3Qgc2V0LCBhbGwgc3RhY2tzIHdpbGwgYmUgc3ludGhlc2l6ZWQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdGFyZ2V0U3RhY2tJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyByZWFkb25seSBtYW5pZmVzdDogTWFuaWZlc3Q7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2tpcCBhbGwgdmFsaWRhdGlvbnMgZHVyaW5nIHN5bnRoZXNpcyBvZiB0aGUgYXBwXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2tpcFZhbGlkYXRpb246IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2tpcCBiYWNrZW5kIHZhbGlkYXRpb24gZHVyaW5nIHN5bnRoZXNpcyBvZiB0aGUgYXBwXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2tpcEJhY2tlbmRWYWxpZGF0aW9uOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGFuIGFwcFxuICAgKiBAcGFyYW0gY29uZmlnIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQXBwQ29uZmlnID0ge30pIHtcbiAgICBzdXBlcih1bmRlZmluZWQgYXMgYW55LCBcIlwiKTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgQVBQX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMub3V0ZGlyID0gY29uZmlnLm91dGRpciA/PyBwcm9jZXNzLmVudi5DREtURl9PVVRESVIgPz8gXCJjZGt0Zi5vdXRcIjtcbiAgICBjb25zdCBlbnZIY2xPdXRwdXQgPSBwcm9jZXNzLmVudi5TWU5USF9IQ0xfT1VUUFVUO1xuICAgIGxldCBoY2xPdXRwdXQgPSBjb25maWcuaGNsT3V0cHV0IHx8IGZhbHNlO1xuICAgIGlmIChlbnZIY2xPdXRwdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaGNsT3V0cHV0ID0gZW52SGNsT3V0cHV0ID09PSBcInRydWVcIjtcbiAgICB9XG5cbiAgICB0aGlzLmhjbE91dHB1dCA9IGhjbE91dHB1dDtcbiAgICB0aGlzLnRhcmdldFN0YWNrSWQgPSBwcm9jZXNzLmVudi5DREtURl9UQVJHRVRfU1RBQ0tfSUQ7XG4gICAgdGhpcy5za2lwVmFsaWRhdGlvbiA9IGNvbmZpZy5za2lwVmFsaWRhdGlvbiB8fCBmYWxzZTtcbiAgICB0aGlzLnNraXBCYWNrZW5kVmFsaWRhdGlvbiA9IGNvbmZpZy5za2lwQmFja2VuZFZhbGlkYXRpb24gfHwgZmFsc2U7XG5cbiAgICB0aGlzLmxvYWRDb250ZXh0KGNvbmZpZy5jb250ZXh0KTtcblxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGU7XG4gICAgaWYgKGNvbmZpZy5zdGFja1RyYWNlcyA9PT0gZmFsc2UpIHtcbiAgICAgIG5vZGUuc2V0Q29udGV4dChESVNBQkxFX1NUQUNLX1RSQUNFX0lOX01FVEFEQVRBLCB0cnVlKTtcbiAgICB9XG5cbiAgICBub2RlLnNldENvbnRleHQoXCJjZGt0ZlZlcnNpb25cIiwgdmVyc2lvbik7XG5cbiAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5vdXRkaXIpKSB7XG4gICAgICBmcy5ta2RpclN5bmModGhpcy5vdXRkaXIpO1xuICAgIH1cbiAgICB0aGlzLm1hbmlmZXN0ID0gbmV3IE1hbmlmZXN0KHZlcnNpb24sIHRoaXMub3V0ZGlyLCB0aGlzLmhjbE91dHB1dCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGlzQXBwKHg6IGFueSk6IHggaXMgQXBwIHtcbiAgICByZXR1cm4geCAhPT0gbnVsbCAmJiB0eXBlb2YgeCA9PT0gXCJvYmplY3RcIiAmJiBBUFBfU1lNQk9MIGluIHg7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG9mKGNvbnN0cnVjdDogSUNvbnN0cnVjdCk6IEFwcCB7XG4gICAgcmV0dXJuIF9sb29rdXAoY29uc3RydWN0KTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc2RvYy9yZXF1aXJlLWpzZG9jXG4gICAgZnVuY3Rpb24gX2xvb2t1cChjOiBJQ29uc3RydWN0KTogQXBwIHtcbiAgICAgIGlmIChBcHAuaXNBcHAoYykpIHtcbiAgICAgICAgcmV0dXJuIGM7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5vZGUgPSBjLm5vZGU7XG5cbiAgICAgIGlmICghbm9kZS5zY29wZSkge1xuICAgICAgICB0aHJvdyBub0FwcEZvdW5kKGNvbnN0cnVjdC5ub2RlLnBhdGgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gX2xvb2t1cChub2RlLnNjb3BlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3ludGhlc2l6ZXMgYWxsIHJlc291cmNlcyB0byB0aGUgb3V0cHV0IGRpcmVjdG9yeVxuICAgKi9cbiAgcHVibGljIHN5bnRoKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlc3Npb246IElTeW50aGVzaXNTZXNzaW9uID0ge1xuICAgICAgb3V0ZGlyOiB0aGlzLm91dGRpcixcbiAgICAgIHNraXBWYWxpZGF0aW9uOiB0aGlzLnNraXBWYWxpZGF0aW9uLFxuICAgICAgbWFuaWZlc3Q6IHRoaXMubWFuaWZlc3QsXG4gICAgICBzdGFja3NQcmVwYXJlZDogdHJ1ZSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc3RhY2tzID0gdGhpcy5ub2RlXG4gICAgICAuZmluZEFsbCgpXG4gICAgICAuZmlsdGVyPFRlcnJhZm9ybVN0YWNrPihUZXJyYWZvcm1TdGFjay5pc1N0YWNrKTtcblxuICAgIGlmICh0aGlzLm5vZGUudHJ5R2V0Q29udGV4dChGQUlMX09OX0NPTlNUUlVDVFNfT1VUU0lERV9PRl9TVEFDS1MpKSB7XG4gICAgICBjb25zdCBvcnBoYW5zID0gdGhpcy5ub2RlLmNoaWxkcmVuLmZpbHRlcihcbiAgICAgICAgKGNoaWxkKSA9PiAhVGVycmFmb3JtU3RhY2suaXNTdGFjayhjaGlsZCksXG4gICAgICApO1xuICAgICAgaWYgKG9ycGhhbnMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aHJvdyBjb25zdHJ1Y3RzT3V0c2lkZU9mU3RhY2tzKG9ycGhhbnMubWFwKChvKSA9PiBvLm5vZGUucGF0aCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHN0YWNrcy5mb3JFYWNoKChzdGFjaykgPT4gc3RhY2sucHJlcGFyZVN0YWNrKCkpO1xuICAgIHN0YWNrcy5mb3JFYWNoKChzdGFjaykgPT4gc3RhY2suc3ludGhlc2l6ZXIuc3ludGhlc2l6ZShzZXNzaW9uKSk7XG5cbiAgICBpZiAoIXRoaXMuc2tpcFZhbGlkYXRpb24pIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25zID0gdGhpcy5ub2RlLnZhbGlkYXRlKCk7XG4gICAgICBpZiAodmFsaWRhdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGVycm9yTGlzdCA9IHZhbGlkYXRpb25zLmpvaW4oXCJcXG4gIFwiKTtcbiAgICAgICAgdGhyb3cgYXBwVmFsaWRhdGlvbkZhaWx1cmUoZXJyb3JMaXN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm1hbmlmZXN0LndyaXRlVG9GaWxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHJlZmVyZW5jZSBmcm9tIG9uZSBzdGFjayB0byBhbm90aGVyLCBpbnZva2VkIG9uIHByZXBhcmVTdGFjayBzaW5jZSBpdCBjcmVhdGVzIGV4dHJhIHJlc291cmNlc1xuICAgKi9cbiAgcHVibGljIGNyb3NzU3RhY2tSZWZlcmVuY2UoXG4gICAgZnJvbVN0YWNrOiBUZXJyYWZvcm1TdGFjayxcbiAgICB0b1N0YWNrOiBUZXJyYWZvcm1TdGFjayxcbiAgICBpZGVudGlmaWVyOiBzdHJpbmcsXG4gICk6IHN0cmluZyB7XG4gICAgdG9TdGFjay5hZGREZXBlbmRlbmN5KGZyb21TdGFjayk7XG4gICAgY29uc3Qgb3V0cHV0SWQgPVxuICAgICAgZnJvbVN0YWNrLnJlZ2lzdGVyT3V0Z29pbmdDcm9zc1N0YWNrUmVmZXJlbmNlKFxuICAgICAgICBpZGVudGlmaWVyLFxuICAgICAgKS5mcmllbmRseVVuaXF1ZUlkO1xuXG4gICAgY29uc3QgcmVtb3RlU3RhdGUgPSB0b1N0YWNrLnJlZ2lzdGVySW5jb21pbmdDcm9zc1N0YWNrUmVmZXJlbmNlKGZyb21TdGFjayk7XG5cbiAgICByZXR1cm4gcmVtb3RlU3RhdGUuZ2V0U3RyaW5nKG91dHB1dElkKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZENvbnRleHQoZGVmYXVsdHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fSkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGU7XG5cbiAgICAvLyBwcmltZSB3aXRoIGRlZmF1bHRzIHBhc3NlZCB0aHJvdWdoIGNvbnN0cnVjdG9yXG4gICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoZGVmYXVsdHMpKSB7XG4gICAgICBub2RlLnNldENvbnRleHQoaywgdik7XG4gICAgfVxuXG4gICAgLy8gcmVhZCBmcm9tIGVudmlyb25tZW50XG4gICAgY29uc3QgY29udGV4dEpzb24gPSBwcm9jZXNzLmVudltDT05URVhUX0VOVl07XG4gICAgY29uc3QgY29udGV4dEZyb21FbnZpcm9ubWVudCA9IGNvbnRleHRKc29uID8gSlNPTi5wYXJzZShjb250ZXh0SnNvbikgOiB7fTtcblxuICAgIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKGNvbnRleHRGcm9tRW52aXJvbm1lbnQpKSB7XG4gICAgICBub2RlLnNldENvbnRleHQoaywgdik7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FwcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQywyQ0FBbUQ7QUFDbkQsdUNBQXlCO0FBQ3pCLGtEQUEwQztBQUMxQywrQ0FBZ0U7QUFDaEUseUNBQXNDO0FBRXRDLHVEQUFtRDtBQUNuRCxxQ0FJa0I7QUFDbEIseUNBQWtFO0FBRWxFLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDOUIsUUFBQSxXQUFXLEdBQUcsb0JBQW9CLENBQUM7QUErQ2hEOztHQUVHO0FBQ0gsTUFBYSxHQUFJLFNBQVEsc0JBQVM7O0lBQ2hDOztPQUVHO0lBQ2EsTUFBTSxDQUFTO0lBRWYsU0FBUyxDQUFVO0lBRW5DOztPQUVHO0lBQ2EsYUFBYSxDQUFxQjtJQUVsQyxRQUFRLENBQVc7SUFFbkM7O09BRUc7SUFDYSxjQUFjLENBQVU7SUFFeEM7O09BRUc7SUFDYSxxQkFBcUIsQ0FBVTtJQUUvQzs7O09BR0c7SUFDSCxZQUFZLFNBQW9CLEVBQUU7UUFDaEMsS0FBSyxDQUFDLFNBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDNUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFekQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxJQUFJLFdBQVcsQ0FBQztRQUN2RSxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1FBQ2xELElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDO1FBQzFDLElBQUksWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQy9CLFNBQVMsR0FBRyxZQUFZLEtBQUssTUFBTSxDQUFDO1FBQ3RDLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUM7UUFDdkQsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxJQUFJLEtBQUssQ0FBQztRQUNyRCxJQUFJLENBQUMscUJBQXFCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixJQUFJLEtBQUssQ0FBQztRQUVuRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVqQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLElBQUksTUFBTSxDQUFDLFdBQVcsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsVUFBVSxDQUFDLDZDQUErQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxzQkFBTyxDQUFDLENBQUM7UUFFekMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDaEMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUIsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxtQkFBUSxDQUFDLHNCQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBTTtRQUN4QixPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLFVBQVUsSUFBSSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxFQUFFLENBQUMsU0FBcUI7UUFDcEMsT0FBTyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFMUIsK0NBQStDO1FBQy9DLFNBQVMsT0FBTyxDQUFDLENBQWE7WUFDNUIsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2pCLE9BQU8sQ0FBQyxDQUFDO1lBQ1gsQ0FBQztZQUVELE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFFcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDaEIsTUFBTSxJQUFBLG1CQUFVLEVBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxDQUFDO1lBRUQsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLO1FBQ1YsTUFBTSxPQUFPLEdBQXNCO1lBQ2pDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLGNBQWMsRUFBRSxJQUFJO1NBQ3JCLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSTthQUNyQixPQUFPLEVBQUU7YUFDVCxNQUFNLENBQWlCLGdDQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbEQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQywrQ0FBb0MsQ0FBQyxFQUFFLENBQUM7WUFDbEUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUN2QyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxnQ0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FDMUMsQ0FBQztZQUNGLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxJQUFBLGtDQUF5QixFQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNuRSxDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFakUsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ3pDLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN2QixNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUMzQyxNQUFNLElBQUEsNkJBQW9CLEVBQUMsU0FBUyxDQUFDLENBQUM7WUFDeEMsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNJLG1CQUFtQixDQUN4QixTQUF5QixFQUN6QixPQUF1QixFQUN2QixVQUFrQjtRQUVsQixPQUFPLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sUUFBUSxHQUNaLFNBQVMsQ0FBQyxtQ0FBbUMsQ0FDM0MsVUFBVSxDQUNYLENBQUMsZ0JBQWdCLENBQUM7UUFFckIsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTNFLE9BQU8sV0FBVyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU8sV0FBVyxDQUFDLFdBQXNDLEVBQUU7UUFDMUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUV2QixpREFBaUQ7UUFDakQsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM5QyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4QixDQUFDO1FBRUQsd0JBQXdCO1FBQ3hCLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQVcsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sc0JBQXNCLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFMUUsS0FBSyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDO1lBQzVELElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDOztBQTNKSCxrQkE0SkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQ29uc3RydWN0LCBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gXCIuLi9wYWNrYWdlLmpzb25cIjtcbmltcG9ydCB7IERJU0FCTEVfU1RBQ0tfVFJBQ0VfSU5fTUVUQURBVEEgfSBmcm9tIFwiLi9hbm5vdGF0aW9uc1wiO1xuaW1wb3J0IHsgTWFuaWZlc3QgfSBmcm9tIFwiLi9tYW5pZmVzdFwiO1xuaW1wb3J0IHsgSVN5bnRoZXNpc1Nlc3Npb24gfSBmcm9tIFwiLi9zeW50aGVzaXplXCI7XG5pbXBvcnQgeyBUZXJyYWZvcm1TdGFjayB9IGZyb20gXCIuL3RlcnJhZm9ybS1zdGFja1wiO1xuaW1wb3J0IHtcbiAgYXBwVmFsaWRhdGlvbkZhaWx1cmUsXG4gIGNvbnN0cnVjdHNPdXRzaWRlT2ZTdGFja3MsXG4gIG5vQXBwRm91bmQsXG59IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgRkFJTF9PTl9DT05TVFJVQ1RTX09VVFNJREVfT0ZfU1RBQ0tTIH0gZnJvbSBcIi4vZmVhdHVyZXNcIjtcblxuY29uc3QgQVBQX1NZTUJPTCA9IFN5bWJvbC5mb3IoXCJjZGt0Zi9BcHBcIik7XG5leHBvcnQgY29uc3QgQ09OVEVYVF9FTlYgPSBcIkNES1RGX0NPTlRFWFRfSlNPTlwiO1xuZXhwb3J0IGludGVyZmFjZSBBcHBDb25maWcge1xuICAvKipcbiAgICogVGhlIGRpcmVjdG9yeSB0byBvdXRwdXQgVGVycmFmb3JtIHJlc291cmNlcy5cbiAgICpcbiAgICogSWYgeW91IGFyZSB1c2luZyB0aGUgQ0RLVE4gQ0xJLCB0aGlzIHZhbHVlIGlzIGF1dG9tYXRpY2FsbHkgc2V0IGZyb20gb25lIG9mIHRoZSBmb2xsb3dpbmcgdGhyZWUgc291cmNlczpcbiAgICogLSBUaGUgYC1vYCAvIGAtLW91dHB1dGAgQ0xJIG9wdGlvblxuICAgKiAtIFRoZSBgQ0RLVEZfT1VURElSYCBlbnZpcm9ubWVudCB2YXJpYWJsZVxuICAgKiAtIFRoZSBgb3V0ZGlyYCBrZXkgaW4gYGNka3RmLmpzb25gXG4gICAqXG4gICAqIElmIHlvdSBhcmUgdXNpbmcgdGhlIENES1ROIENMSSBhbmQgd2FudCB0byBzZXQgYSBkaWZmZXJlbnQgdmFsdWUgaGVyZSwgeW91IHdpbGwgYWxzbyBuZWVkIHRvIHNldCB0aGUgc2FtZSB2YWx1ZSB2aWEgb25lIG9mIHRoZSB0aHJlZSB3YXlzIHNwZWNpZmllZCBhYm92ZS5cbiAgICpcbiAgICogVGhlIG1vc3QgY29tbW9uIGNhc2UgdG8gc2V0IHRoaXMgdmFsdWUgaXMgd2hlbiB5b3UgYXJlIHVzaW5nIHRoZSBDREtUTiBsaWJyYXJ5IGRpcmVjdGx5IChlLmcuIHdoZW4gd3JpdGluZyB1bml0IHRlc3RzKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBDREtURl9PVVRESVIgaWYgZGVmaW5lZCwgb3RoZXJ3aXNlIFwiY2RrdGYub3V0XCJcbiAgICovXG4gIHJlYWRvbmx5IG91dGRpcj86IHN0cmluZztcbiAgcmVhZG9ubHkgc3RhY2tUcmFjZXM/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" };
|
|
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
|
-
|
|
47
|
-
Aspects[_a] = { fqn: "cdktn.Aspects", version: "0.25.0-pre.8" };
|
|
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" };
|
|
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,180 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { AssetOptions, IAsset, IAssetBundler, IAssetPackaging } from "./assets";
|
|
3
|
+
import { IIgnoreStrategy } from "./ignore-strategy";
|
|
4
|
+
/**
|
|
5
|
+
* Context key for a value folded into every computed asset hash in the
|
|
6
|
+
* construct tree, alongside `extraHash`. A bulk cache-busting escape hatch —
|
|
7
|
+
* `extraHash` is scoped to one asset, this is scoped to the whole app.
|
|
8
|
+
*/
|
|
9
|
+
export declare const ASSET_HASH_SALT_CONTEXT_KEY = "cdktn:assetHashSalt";
|
|
10
|
+
/**
|
|
11
|
+
* Options for {@link AssetStaging}.
|
|
12
|
+
*/
|
|
13
|
+
export interface AssetStagingOptions extends AssetOptions {
|
|
14
|
+
/**
|
|
15
|
+
* Absolute path to the source file or directory. Resolving a relative path
|
|
16
|
+
* against `cdktf.json` is the caller's responsibility.
|
|
17
|
+
*/
|
|
18
|
+
readonly sourcePath: string;
|
|
19
|
+
/**
|
|
20
|
+
* How the staged result is produced and shaped. The caller decides this
|
|
21
|
+
* (e.g. from its own `AssetType`) — `AssetStaging` never infers or changes
|
|
22
|
+
* it based on `exclude`/`extraHash`.
|
|
23
|
+
*/
|
|
24
|
+
readonly packaging: IAssetPackaging;
|
|
25
|
+
/**
|
|
26
|
+
* Paths to exclude, relative to `sourcePath`. Cannot be combined with
|
|
27
|
+
* `ignoreStrategy`, which replaces this matcher rather than layering on
|
|
28
|
+
* top of it.
|
|
29
|
+
*
|
|
30
|
+
* @default - nothing is excluded
|
|
31
|
+
*/
|
|
32
|
+
readonly exclude?: string[];
|
|
33
|
+
/**
|
|
34
|
+
* Exclusion matching, for callers that need `.gitignore` / `.dockerignore`
|
|
35
|
+
* parity rather than the built-in exact-path / suffix / directory matcher.
|
|
36
|
+
*
|
|
37
|
+
* @default - `exclude` is used with the built-in matcher
|
|
38
|
+
*/
|
|
39
|
+
readonly ignoreStrategy?: IIgnoreStrategy;
|
|
40
|
+
/**
|
|
41
|
+
* Extra information to fold into the hash (e.g. build instructions and
|
|
42
|
+
* other inputs).
|
|
43
|
+
*
|
|
44
|
+
* @default - no extra hash
|
|
45
|
+
*/
|
|
46
|
+
readonly extraHash?: string;
|
|
47
|
+
/**
|
|
48
|
+
* A bundler that builds the source into an artifact before staging.
|
|
49
|
+
*
|
|
50
|
+
* Under the default `SOURCE` hashing the build is deferred to `stage()` and
|
|
51
|
+
* stays skippable; `OUTPUT` hashing builds eagerly at construction time to
|
|
52
|
+
* hash the artifact, forgoing skippability. The bundler's declared output
|
|
53
|
+
* shape must match the packaging: a `BundleResult.directory` needs a
|
|
54
|
+
* directory-accepting packaging, a `BundleResult.file` a single-file one
|
|
55
|
+
* (`AssetType.FILE`). The mismatch is caught once the build runs.
|
|
56
|
+
*
|
|
57
|
+
* @default - the source is staged verbatim, with no build step
|
|
58
|
+
*/
|
|
59
|
+
readonly bundler?: IAssetBundler;
|
|
60
|
+
/**
|
|
61
|
+
* Identifier used in error messages, so they name the user-facing construct
|
|
62
|
+
* (e.g. the `TerraformAsset`) rather than this internal staging child.
|
|
63
|
+
*
|
|
64
|
+
* @default - the staging construct's own id
|
|
65
|
+
*/
|
|
66
|
+
readonly displayName?: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Resolves an asset's identity and stages its content to disk.
|
|
70
|
+
*
|
|
71
|
+
* The hash is available immediately after construction; the filesystem write
|
|
72
|
+
* is deferred to `stage()`, the one window where it is safe. Hashing is
|
|
73
|
+
* cached per synth (see {@link hashCachesByRoot}) so an asset referenced from
|
|
74
|
+
* several places is walked once. Without a bundler, `SOURCE` and `OUTPUT` both
|
|
75
|
+
* hash the source; with one they diverge, as `AssetStagingOptions.bundler`
|
|
76
|
+
* describes.
|
|
77
|
+
*/
|
|
78
|
+
export declare class AssetStaging extends Construct implements IAsset {
|
|
79
|
+
private readonly sourcePath;
|
|
80
|
+
private readonly displayName;
|
|
81
|
+
private readonly ignoreStrategy;
|
|
82
|
+
private readonly hasExclusions;
|
|
83
|
+
private readonly hashCache;
|
|
84
|
+
private readonly bundler?;
|
|
85
|
+
/**
|
|
86
|
+
* Output of an eager `OUTPUT`-hash build, carried to `stage()` for reuse.
|
|
87
|
+
*
|
|
88
|
+
* Undefined on every other path, where the build is deferred or absent.
|
|
89
|
+
*/
|
|
90
|
+
private eagerBuild?;
|
|
91
|
+
/**
|
|
92
|
+
* Set once `stage()` has run, so a second call cannot rebuild. An eager
|
|
93
|
+
* `OUTPUT` build is captured at construction and consumed by the first
|
|
94
|
+
* `stage()`; without this guard a second call would fall through to the
|
|
95
|
+
* deferred build path and stage bytes that no longer match the hash.
|
|
96
|
+
*/
|
|
97
|
+
private staged;
|
|
98
|
+
readonly packaging: IAssetPackaging;
|
|
99
|
+
readonly isDirectory: boolean;
|
|
100
|
+
readonly assetHash: string;
|
|
101
|
+
constructor(scope: Construct, id: string, props: AssetStagingOptions);
|
|
102
|
+
private resolveAssetHash;
|
|
103
|
+
/**
|
|
104
|
+
* Hash the source tree, honoring the ignore strategy.
|
|
105
|
+
*
|
|
106
|
+
* Cached per synth so an asset referenced more than once is walked once.
|
|
107
|
+
*/
|
|
108
|
+
private hashSource;
|
|
109
|
+
/**
|
|
110
|
+
* Build the bundler's output eagerly and hash the built artifact.
|
|
111
|
+
*
|
|
112
|
+
* The output is stashed for `stage()` to reuse, so the build is not
|
|
113
|
+
* repeated. It is hashed verbatim: `exclude` filters the source a bundler
|
|
114
|
+
* reads, not the artifact it produces.
|
|
115
|
+
*/
|
|
116
|
+
private hashOutput;
|
|
117
|
+
/**
|
|
118
|
+
* Run the bundler against the filtered source and return its output.
|
|
119
|
+
*
|
|
120
|
+
* The bundler is handed an absolute `source` (its cwd is its own, so a
|
|
121
|
+
* relative path would resolve elsewhere) that has already had `exclude`
|
|
122
|
+
* applied. Materialising the filtered input here is what makes the bundler
|
|
123
|
+
* read exactly the tree the hash was taken over, which a raw source
|
|
124
|
+
* hand-off would not, since `hashSource` honours `exclude`.
|
|
125
|
+
*/
|
|
126
|
+
private runBundle;
|
|
127
|
+
/**
|
|
128
|
+
* Reject a bundler result whose declared shape does not match what is on
|
|
129
|
+
* disk, or does not match the packaging.
|
|
130
|
+
*
|
|
131
|
+
* Catching the mismatch here turns an opaque EISDIR/EPERM at pack time into
|
|
132
|
+
* a clear error naming the packaging the bundler's output shape needs.
|
|
133
|
+
*/
|
|
134
|
+
private validateOutputShape;
|
|
135
|
+
/**
|
|
136
|
+
* Whether the packaging stages a single file verbatim (AssetType.FILE).
|
|
137
|
+
*
|
|
138
|
+
* A verbatim-file packaging neither produces a directory nor reads one as
|
|
139
|
+
* its source. Derived from existing `IAssetPackaging` flags so out-of-tree
|
|
140
|
+
* packagings need no new interface member.
|
|
141
|
+
*/
|
|
142
|
+
private get stagesSingleFile();
|
|
143
|
+
/**
|
|
144
|
+
* Absolute path to the source the bundler should read.
|
|
145
|
+
*
|
|
146
|
+
* With no exclusions, or with a file source, the resolved source is handed
|
|
147
|
+
* over directly — a file has no children to filter, matching `hashSource`,
|
|
148
|
+
* which only ever applies the ignore strategy to a directory's entries and
|
|
149
|
+
* never to the root itself. Otherwise the excluded source tree is
|
|
150
|
+
* materialised into the scratch directory, so the bundler sees the same
|
|
151
|
+
* file set the hash was taken over.
|
|
152
|
+
*/
|
|
153
|
+
private filteredSource;
|
|
154
|
+
/**
|
|
155
|
+
* Stage the asset's content to `targetPath`.
|
|
156
|
+
*
|
|
157
|
+
* Called from the owning construct's `onSynthesize` hook. Without a bundler
|
|
158
|
+
* the source is packaged verbatim; with one, the bundler's output is, built
|
|
159
|
+
* eagerly for `OUTPUT` hashing or deferred to here for `SOURCE`.
|
|
160
|
+
*/
|
|
161
|
+
stage(targetPath: string): void;
|
|
162
|
+
/**
|
|
163
|
+
* Remove a bundler scratch directory and drop it from the exit-sweep set.
|
|
164
|
+
*/
|
|
165
|
+
private cleanupScratch;
|
|
166
|
+
/**
|
|
167
|
+
* Package a bundler's output into `targetPath`, verbatim.
|
|
168
|
+
*
|
|
169
|
+
* The output's shape was already validated against the packaging in
|
|
170
|
+
* {@link runBundle}, so the packaging handles the source directly — a file
|
|
171
|
+
* source for AssetType.FILE, a directory source otherwise.
|
|
172
|
+
*
|
|
173
|
+
* The ignore strategy is deliberately not applied. `exclude` filters the
|
|
174
|
+
* source a bundler reads, not its product: an install-style bundler
|
|
175
|
+
* (`npm install --production`, `pip install -t`) writes exactly the
|
|
176
|
+
* dependency directory a user excludes from source, and re-applying the
|
|
177
|
+
* exclusion would ship an artifact missing those dependencies.
|
|
178
|
+
*/
|
|
179
|
+
private packBundlerOutput;
|
|
180
|
+
}
|