@cdktn/cli-core 0.23.0-pre.4 → 0.23.0-pre.40
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/ambient.d.ts +0 -1
- package/build/lib/cdktf-config.d.ts.map +1 -0
- package/build/lib/cdktf-config.js +108 -0
- package/build/lib/cdktf-project-io-handler.d.ts.map +1 -0
- package/build/lib/cdktf-project-io-handler.js +84 -0
- package/build/lib/cdktf-project.d.ts.map +1 -0
- package/build/lib/cdktf-project.js +371 -0
- package/{src → build}/lib/cdktf-stack.d.ts +1 -0
- package/build/lib/cdktf-stack.d.ts.map +1 -0
- package/build/lib/cdktf-stack.js +386 -0
- package/build/lib/convert.d.ts.map +1 -0
- package/build/lib/convert.js +51 -0
- package/build/lib/dependencies/cdktf-config-manager.d.ts.map +1 -0
- package/build/lib/dependencies/cdktf-config-manager.js +36 -0
- package/build/lib/dependencies/dependency-manager.d.ts.map +1 -0
- package/build/lib/dependencies/dependency-manager.js +393 -0
- package/build/lib/dependencies/package-manager.d.ts.map +1 -0
- package/build/lib/dependencies/package-manager.js +581 -0
- package/build/lib/dependencies/prebuilt-providers.d.ts.map +1 -0
- package/build/lib/dependencies/prebuilt-providers.js +221 -0
- package/build/lib/dependencies/registry-api.d.ts.map +1 -0
- package/build/lib/dependencies/registry-api.js +77 -0
- package/build/lib/dependencies/version-constraints.d.ts.map +1 -0
- package/build/lib/dependencies/version-constraints.js +95 -0
- package/build/lib/error-reporting.d.ts.map +1 -0
- package/build/lib/error-reporting.js +133 -0
- package/build/lib/errors.d.ts.map +1 -0
- package/build/lib/errors.js +10 -0
- package/build/lib/execution-logs.d.ts.map +1 -0
- package/build/lib/execution-logs.js +47 -0
- package/build/lib/get.d.ts.map +1 -0
- package/build/lib/get.js +90 -0
- package/build/lib/helpers/stack-helpers.d.ts.map +1 -0
- package/build/lib/helpers/stack-helpers.js +155 -0
- package/build/lib/index.d.ts.map +1 -0
- package/{src → build}/lib/index.js +1 -2
- package/build/lib/init.d.ts.map +1 -0
- package/build/lib/init.js +131 -0
- package/build/lib/local-provider-constraints.d.ts.map +1 -0
- package/build/lib/local-provider-constraints.js +95 -0
- package/build/lib/local-provider-versions.d.ts.map +1 -0
- package/build/lib/local-provider-versions.js +73 -0
- package/{src → build}/lib/models/deploy-machine.d.ts +3 -11
- package/build/lib/models/deploy-machine.d.ts.map +1 -0
- package/build/lib/models/deploy-machine.js +283 -0
- package/build/lib/models/interactive-process.d.ts +28 -0
- package/build/lib/models/interactive-process.d.ts.map +1 -0
- package/build/lib/models/interactive-process.js +59 -0
- package/{src → build}/lib/models/schema.d.ts.map +1 -1
- package/build/lib/models/schema.js +181 -0
- package/{src → build}/lib/models/terraform-cli.d.ts +1 -0
- package/build/lib/models/terraform-cli.d.ts.map +1 -0
- package/build/lib/models/terraform-cli.js +355 -0
- package/build/lib/models/terraform.d.ts.map +1 -0
- package/build/lib/models/terraform.js +72 -0
- package/build/lib/output.d.ts.map +1 -0
- package/build/lib/output.js +211 -0
- package/build/lib/provider-add.d.ts.map +1 -0
- package/build/lib/provider-add.js +30 -0
- package/build/lib/server/terraform-logs.d.ts.map +1 -0
- package/build/lib/server/terraform-logs.js +19 -0
- package/{src → build}/lib/synth-stack.d.ts +1 -0
- package/build/lib/synth-stack.d.ts.map +1 -0
- package/build/lib/synth-stack.js +251 -0
- package/build/lib/synth.d.ts.map +1 -0
- package/build/lib/synth.js +67 -0
- package/{src → build}/lib/terraform-json.d.ts.map +1 -1
- package/build/lib/terraform-json.js +82 -0
- package/build/lib/terraform-provider-lock.d.ts.map +1 -0
- package/build/lib/terraform-provider-lock.js +95 -0
- package/{src → build}/lib/watch.d.ts +1 -0
- package/build/lib/watch.d.ts.map +1 -0
- package/build/lib/watch.js +155 -0
- package/eslint.config.mjs +2 -66
- package/package.json +32 -44
- package/templates/go/go.mod +1 -1
- package/templates/python/Pipfile +1 -1
- package/templates/typescript/.hooks.sscaff.js +1 -1
- package/src/lib/cdktf-config.d.ts.map +0 -1
- package/src/lib/cdktf-config.js +0 -108
- package/src/lib/cdktf-project-io-handler.d.ts.map +0 -1
- package/src/lib/cdktf-project-io-handler.js +0 -84
- package/src/lib/cdktf-project.d.ts.map +0 -1
- package/src/lib/cdktf-project.js +0 -371
- package/src/lib/cdktf-stack.d.ts.map +0 -1
- package/src/lib/cdktf-stack.js +0 -386
- package/src/lib/convert.d.ts.map +0 -1
- package/src/lib/convert.js +0 -51
- package/src/lib/dependencies/cdktf-config-manager.d.ts.map +0 -1
- package/src/lib/dependencies/cdktf-config-manager.js +0 -36
- package/src/lib/dependencies/dependency-manager.d.ts.map +0 -1
- package/src/lib/dependencies/dependency-manager.js +0 -393
- package/src/lib/dependencies/package-manager.d.ts.map +0 -1
- package/src/lib/dependencies/package-manager.js +0 -581
- package/src/lib/dependencies/prebuilt-providers.d.ts.map +0 -1
- package/src/lib/dependencies/prebuilt-providers.js +0 -220
- package/src/lib/dependencies/registry-api.d.ts.map +0 -1
- package/src/lib/dependencies/registry-api.js +0 -77
- package/src/lib/dependencies/version-constraints.d.ts.map +0 -1
- package/src/lib/dependencies/version-constraints.js +0 -95
- package/src/lib/error-reporting.d.ts.map +0 -1
- package/src/lib/error-reporting.js +0 -133
- package/src/lib/errors.d.ts.map +0 -1
- package/src/lib/errors.js +0 -10
- package/src/lib/execution-logs.d.ts.map +0 -1
- package/src/lib/execution-logs.js +0 -47
- package/src/lib/get.d.ts.map +0 -1
- package/src/lib/get.js +0 -90
- package/src/lib/helpers/stack-helpers.d.ts.map +0 -1
- package/src/lib/helpers/stack-helpers.js +0 -155
- package/src/lib/index.d.ts.map +0 -1
- package/src/lib/init.d.ts.map +0 -1
- package/src/lib/init.js +0 -131
- package/src/lib/local-provider-constraints.d.ts.map +0 -1
- package/src/lib/local-provider-constraints.js +0 -95
- package/src/lib/local-provider-versions.d.ts.map +0 -1
- package/src/lib/local-provider-versions.js +0 -73
- package/src/lib/models/deploy-machine.d.ts.map +0 -1
- package/src/lib/models/deploy-machine.js +0 -280
- package/src/lib/models/pty-process.d.ts +0 -29
- package/src/lib/models/pty-process.d.ts.map +0 -1
- package/src/lib/models/pty-process.js +0 -132
- package/src/lib/models/schema.js +0 -181
- package/src/lib/models/terraform-cli.d.ts.map +0 -1
- package/src/lib/models/terraform-cli.js +0 -357
- package/src/lib/models/terraform.d.ts.map +0 -1
- package/src/lib/models/terraform.js +0 -72
- package/src/lib/output.d.ts.map +0 -1
- package/src/lib/output.js +0 -211
- package/src/lib/provider-add.d.ts.map +0 -1
- package/src/lib/provider-add.js +0 -30
- package/src/lib/server/terraform-logs.d.ts.map +0 -1
- package/src/lib/server/terraform-logs.js +0 -19
- package/src/lib/synth-stack.d.ts.map +0 -1
- package/src/lib/synth-stack.js +0 -251
- package/src/lib/synth.d.ts.map +0 -1
- package/src/lib/synth.js +0 -67
- package/src/lib/terraform-json.js +0 -82
- package/src/lib/terraform-provider-lock.d.ts.map +0 -1
- package/src/lib/terraform-provider-lock.js +0 -95
- package/src/lib/watch.d.ts.map +0 -1
- package/src/lib/watch.js +0 -155
- /package/{src → build}/lib/cdktf-config.d.ts +0 -0
- /package/{src → build}/lib/cdktf-project-io-handler.d.ts +0 -0
- /package/{src → build}/lib/cdktf-project.d.ts +0 -0
- /package/{src → build}/lib/convert.d.ts +0 -0
- /package/{src → build}/lib/dependencies/cdktf-config-manager.d.ts +0 -0
- /package/{src → build}/lib/dependencies/dependency-manager.d.ts +0 -0
- /package/{src → build}/lib/dependencies/package-manager.d.ts +0 -0
- /package/{src → build}/lib/dependencies/prebuilt-providers.d.ts +0 -0
- /package/{src → build}/lib/dependencies/registry-api.d.ts +0 -0
- /package/{src → build}/lib/dependencies/version-constraints.d.ts +0 -0
- /package/{src → build}/lib/error-reporting.d.ts +0 -0
- /package/{src → build}/lib/errors.d.ts +0 -0
- /package/{src → build}/lib/execution-logs.d.ts +0 -0
- /package/{src → build}/lib/get.d.ts +0 -0
- /package/{src → build}/lib/helpers/stack-helpers.d.ts +0 -0
- /package/{src → build}/lib/index.d.ts +0 -0
- /package/{src → build}/lib/init.d.ts +0 -0
- /package/{src → build}/lib/local-provider-constraints.d.ts +0 -0
- /package/{src → build}/lib/local-provider-versions.d.ts +0 -0
- /package/{src → build}/lib/models/schema.d.ts +0 -0
- /package/{src → build}/lib/models/terraform.d.ts +0 -0
- /package/{src → build}/lib/output.d.ts +0 -0
- /package/{src → build}/lib/provider-add.d.ts +0 -0
- /package/{src → build}/lib/server/terraform-logs.d.ts +0 -0
- /package/{src → build}/lib/synth.d.ts +0 -0
- /package/{src → build}/lib/terraform-json.d.ts +0 -0
- /package/{src → build}/lib/terraform-provider-lock.d.ts +0 -0
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createEnhanceLogMessage = void 0;
|
|
4
|
-
// Copyright (c) HashiCorp, Inc
|
|
5
|
-
// SPDX-License-Identifier: MPL-2.0
|
|
6
|
-
const commons_1 = require("@cdktn/commons");
|
|
7
|
-
// escapes any special charaters used in regex
|
|
8
|
-
const escapeRegexSpecialChars = (str) => str.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&");
|
|
9
|
-
// uses word boundary to match the whole of the tfIdentifer
|
|
10
|
-
const lineHasExactMatch = (line, tfIdentifier) => new RegExp(`\\b${escapeRegexSpecialChars(tfIdentifier)}\\b`).test(line);
|
|
11
|
-
function createEnhanceLogMessage(stack) {
|
|
12
|
-
// we never want to throw, if it does not work we just do as if it did not happen
|
|
13
|
-
const pathMapping = {};
|
|
14
|
-
try {
|
|
15
|
-
const json = JSON.parse(stack.content);
|
|
16
|
-
["data", "resource"].forEach((type) => {
|
|
17
|
-
Object.entries(json[type] || {}).forEach(([resourceType, resourceInstances]) => {
|
|
18
|
-
Object.entries(resourceInstances || {}).forEach(([resourceName, resource]) => {
|
|
19
|
-
// Some constructs don't have this metadata
|
|
20
|
-
if (resource["//"] &&
|
|
21
|
-
resource["//"].metadata &&
|
|
22
|
-
resource["//"].metadata.path) {
|
|
23
|
-
pathMapping[`${resourceType}.${resourceName}`] = resource["//"].metadata.path.replace(`${stack.name}/`, "");
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
});
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
catch (e) {
|
|
30
|
-
commons_1.logger.debug(`Could not enhance log message: ${e}`);
|
|
31
|
-
}
|
|
32
|
-
return (message) => {
|
|
33
|
-
return message
|
|
34
|
-
.split("\n")
|
|
35
|
-
.map((line) => {
|
|
36
|
-
const matchingEntry = Object.entries(pathMapping).find(([tfIdentifier]) => lineHasExactMatch(line, tfIdentifier));
|
|
37
|
-
if (!matchingEntry) {
|
|
38
|
-
return line;
|
|
39
|
-
}
|
|
40
|
-
const [id, cdkPath] = matchingEntry;
|
|
41
|
-
return line.replace(id, `${id} (${cdkPath})`);
|
|
42
|
-
})
|
|
43
|
-
.join("\n");
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
exports.createEnhanceLogMessage = createEnhanceLogMessage;
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLWxvZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJleGVjdXRpb24tbG9ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDRDQUF3QztBQW9CeEMsOENBQThDO0FBQzlDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUM5QyxHQUFHLENBQUMsT0FBTyxDQUFDLHVCQUF1QixFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRS9DLDJEQUEyRDtBQUMzRCxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBWSxFQUFFLFlBQW9CLEVBQUUsRUFBRSxDQUMvRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFMUUsU0FBZ0IsdUJBQXVCLENBQ3JDLEtBQXVCO0lBRXZCLGlGQUFpRjtJQUNqRixNQUFNLFdBQVcsR0FBNEMsRUFBRSxDQUFDO0lBQ2hFLElBQUksQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBVyxDQUFDO1FBRWpELENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ3BDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQTJCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQzdELENBQUMsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxFQUFFO2dCQUNwQyxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FDN0MsQ0FBQyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFO29CQUMzQiwyQ0FBMkM7b0JBQzNDLElBQ0UsUUFBUSxDQUFDLElBQUksQ0FBQzt3QkFDZCxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUTt3QkFDdkIsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQzVCLENBQUM7d0JBQ0QsV0FBVyxDQUFDLEdBQUcsWUFBWSxJQUFJLFlBQVksRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUN2RCxJQUFJLENBQ0wsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDaEQsQ0FBQztnQkFDSCxDQUFDLENBQ0YsQ0FBQztZQUNKLENBQUMsQ0FDRixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLGdCQUFNLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxPQUFPLENBQUMsT0FBZSxFQUFFLEVBQUU7UUFDekIsT0FBTyxPQUFPO2FBQ1gsS0FBSyxDQUFDLElBQUksQ0FBQzthQUNYLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ1osTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQ3BELENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUMxRCxDQUFDO1lBQ0YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNuQixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLGFBQWEsQ0FBQztZQUNwQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLE9BQU8sR0FBRyxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDO2FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUMsQ0FBQztBQUNKLENBQUM7QUEvQ0QsMERBK0NDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHsgU3ludGhlc2l6ZWRTdGFjayB9IGZyb20gXCIuL3N5bnRoLXN0YWNrXCI7XG50eXBlIFRGSWRlbnRpZmllciA9IHN0cmluZztcbnR5cGUgQ0RLVEZSZXNvdXJjZVBhdGggPSBzdHJpbmc7XG50eXBlIFRmUmVzb3VyY2UgPSBSZWNvcmQ8XG4gIHN0cmluZyxcbiAge1xuICAgIFtcIi8vXCJdPzoge1xuICAgICAgbWV0YWRhdGE/OiB7XG4gICAgICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgICB9O1xuICAgIH07XG4gIH1cbj47XG50eXBlIFRmUmVzb3VyY2VUeXBlID0gUmVjb3JkPHN0cmluZywgVGZSZXNvdXJjZT47XG50eXBlIFRGSnNvbiA9IHtcbiAgZGF0YTogVGZSZXNvdXJjZVR5cGU7XG4gIHJlc291cmNlOiBUZlJlc291cmNlVHlwZTtcbn07XG5cbi8vIGVzY2FwZXMgYW55IHNwZWNpYWwgY2hhcmF0ZXJzIHVzZWQgaW4gcmVnZXhcbmNvbnN0IGVzY2FwZVJlZ2V4U3BlY2lhbENoYXJzID0gKHN0cjogc3RyaW5nKSA9PlxuICBzdHIucmVwbGFjZSgvWy0vXFxcXF4kKis/LigpfFtcXF17fV0vZywgXCJcXFxcJCZcIik7XG5cbi8vIHVzZXMgd29yZCBib3VuZGFyeSB0byBtYXRjaCB0aGUgd2hvbGUgb2YgdGhlIHRmSWRlbnRpZmVyXG5jb25zdCBsaW5lSGFzRXhhY3RNYXRjaCA9IChsaW5lOiBzdHJpbmcsIHRmSWRlbnRpZmllcjogc3RyaW5nKSA9PlxuICBuZXcgUmVnRXhwKGBcXFxcYiR7ZXNjYXBlUmVnZXhTcGVjaWFsQ2hhcnModGZJZGVudGlmaWVyKX1cXFxcYmApLnRlc3QobGluZSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFbmhhbmNlTG9nTWVzc2FnZShcbiAgc3RhY2s6IFN5bnRoZXNpemVkU3RhY2ssXG4pOiAobWVzc2FnZTogc3RyaW5nKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAvLyB3ZSBuZXZlciB3YW50IHRvIHRocm93LCBpZiBpdCBkb2VzIG5vdCB3b3JrIHdlIGp1c3QgZG8gYXMgaWYgaXQgZGlkIG5vdCBoYXBwZW5cbiAgY29uc3QgcGF0aE1hcHBpbmc6IFJlY29yZDxURklkZW50aWZpZXIsIENES1RGUmVzb3VyY2VQYXRoPiA9IHt9O1xuICB0cnkge1xuICAgIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKHN0YWNrLmNvbnRlbnQpIGFzIFRGSnNvbjtcblxuICAgIFtcImRhdGFcIiwgXCJyZXNvdXJjZVwiXS5mb3JFYWNoKCh0eXBlKSA9PiB7XG4gICAgICBPYmplY3QuZW50cmllcyhqc29uW3R5cGUgYXMgXCJkYXRhXCIgfCBcInJlc291cmNlXCJdIHx8IHt9KS5mb3JFYWNoKFxuICAgICAgICAoW3Jlc291cmNlVHlwZSwgcmVzb3VyY2VJbnN0YW5jZXNdKSA9PiB7XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMocmVzb3VyY2VJbnN0YW5jZXMgfHwge30pLmZvckVhY2goXG4gICAgICAgICAgICAoW3Jlc291cmNlTmFtZSwgcmVzb3VyY2VdKSA9PiB7XG4gICAgICAgICAgICAgIC8vIFNvbWUgY29uc3RydWN0cyBkb24ndCBoYXZlIHRoaXMgbWV0YWRhdGFcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHJlc291cmNlW1wiLy9cIl0gJiZcbiAgICAgICAgICAgICAgICByZXNvdXJjZVtcIi8vXCJdLm1ldGFkYXRhICYmXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VbXCIvL1wiXS5tZXRhZGF0YS5wYXRoXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHBhdGhNYXBwaW5nW2Ake3Jlc291cmNlVHlwZX0uJHtyZXNvdXJjZU5hbWV9YF0gPSByZXNvdXJjZVtcbiAgICAgICAgICAgICAgICAgIFwiLy9cIlxuICAgICAgICAgICAgICAgIF0ubWV0YWRhdGEucGF0aC5yZXBsYWNlKGAke3N0YWNrLm5hbWV9L2AsIFwiXCIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH0sXG4gICAgICApO1xuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBDb3VsZCBub3QgZW5oYW5jZSBsb2cgbWVzc2FnZTogJHtlfWApO1xuICB9XG5cbiAgcmV0dXJuIChtZXNzYWdlOiBzdHJpbmcpID0+IHtcbiAgICByZXR1cm4gbWVzc2FnZVxuICAgICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgICAubWFwKChsaW5lKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hdGNoaW5nRW50cnkgPSBPYmplY3QuZW50cmllcyhwYXRoTWFwcGluZykuZmluZChcbiAgICAgICAgICAoW3RmSWRlbnRpZmllcl0pID0+IGxpbmVIYXNFeGFjdE1hdGNoKGxpbmUsIHRmSWRlbnRpZmllciksXG4gICAgICAgICk7XG4gICAgICAgIGlmICghbWF0Y2hpbmdFbnRyeSkge1xuICAgICAgICAgIHJldHVybiBsaW5lO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFtpZCwgY2RrUGF0aF0gPSBtYXRjaGluZ0VudHJ5O1xuICAgICAgICByZXR1cm4gbGluZS5yZXBsYWNlKGlkLCBgJHtpZH0gKCR7Y2RrUGF0aH0pYCk7XG4gICAgICB9KVxuICAgICAgLmpvaW4oXCJcXG5cIik7XG4gIH07XG59XG4iXX0=
|
package/src/lib/get.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["get.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAEL,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,EAC9B,MAAM,gBAAgB,CAAC;AAMxB,oBAAY,SAAS;IACnB,QAAQ,aAAa;IACrB,WAAW,qDAAqD;IAChE,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,KAAK,0BAA0B,GAC3B,yBAAyB,GACzB,2BAA2B,GAC3B,6BAA6B,CAAC;AAElC,UAAU,SAAS;IAEjB,WAAW,EAAE,0BAA0B,EAAE,CAAC;IAE1C,qBAAqB,CAAC,EAAE,0BAA0B,EAAE,CAAC;IACrD,iBAAiB,EAAE,UAAU,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,KAAK,IAAI,CAAC;IACxC,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE;QAC5B,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACtC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB;AAED,wBAAsB,GAAG,CAAC,EACxB,iBAAiB,EACjB,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,uBAAuB,EACvB,QAA0B,EAC1B,eAAuC,GACxC,EAAE,SAAS,iBAsCX;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,UAAO,iBAiB1D"}
|
package/src/lib/get.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
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 (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.runGetInDir = exports.get = exports.GetStatus = void 0;
|
|
27
|
-
// Copyright (c) HashiCorp, Inc
|
|
28
|
-
// SPDX-License-Identifier: MPL-2.0
|
|
29
|
-
const provider_generator_1 = require("@cdktn/provider-generator");
|
|
30
|
-
const commons_1 = require("@cdktn/commons");
|
|
31
|
-
const fs = __importStar(require("fs-extra"));
|
|
32
|
-
const commons_2 = require("@cdktn/commons");
|
|
33
|
-
const path = __importStar(require("path"));
|
|
34
|
-
const cdktf_config_1 = require("./cdktf-config");
|
|
35
|
-
var GetStatus;
|
|
36
|
-
(function (GetStatus) {
|
|
37
|
-
GetStatus["STARTING"] = "starting";
|
|
38
|
-
GetStatus["DOWNLOADING"] = "downloading and generating modules and providers";
|
|
39
|
-
GetStatus["DONE"] = "done";
|
|
40
|
-
GetStatus["ERROR"] = "error";
|
|
41
|
-
})(GetStatus || (exports.GetStatus = GetStatus = {}));
|
|
42
|
-
async function get({ constructsOptions, constraints, constraintsToGenerate, cleanDirectory, providerSchemaCachePath, onUpdate = () => undefined, reportTelemetry = async () => undefined, }) {
|
|
43
|
-
commons_2.logger.debug(`Starting get with outdir ${constructsOptions.codeMakerOutput}`);
|
|
44
|
-
const constructsMaker = new provider_generator_1.ConstructsMaker(constructsOptions, providerSchemaCachePath, reportTelemetry);
|
|
45
|
-
if (cleanDirectory) {
|
|
46
|
-
await fs.remove(constructsOptions.codeMakerOutput);
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
// Remove all providers that are not in the new list
|
|
50
|
-
await constructsMaker.removeFoldersThatShouldNotExist(constraints);
|
|
51
|
-
if (constructsOptions.targetLanguage === commons_1.Language.TYPESCRIPT) {
|
|
52
|
-
// Remove all modules
|
|
53
|
-
await fs.remove(path.resolve(constructsOptions.codeMakerOutput, "modules"));
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
// Filter constraints to generate
|
|
57
|
-
const toGenerate = constraintsToGenerate ||
|
|
58
|
-
(await constructsMaker.filterAlreadyGenerated(constraints));
|
|
59
|
-
onUpdate(GetStatus.DOWNLOADING);
|
|
60
|
-
commons_2.logger.debug("Generating provider bindings");
|
|
61
|
-
await constructsMaker.generate(constraints, toGenerate);
|
|
62
|
-
commons_2.logger.debug("Provider bindings generated");
|
|
63
|
-
if (!(await fs.pathExists(constructsOptions.codeMakerOutput))) {
|
|
64
|
-
onUpdate(GetStatus.ERROR);
|
|
65
|
-
commons_2.logger.debug("Failed to generate provider bindings");
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
onUpdate(GetStatus.DONE);
|
|
69
|
-
commons_2.logger.debug("Provider bindings generated");
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
exports.get = get;
|
|
73
|
-
async function runGetInDir(dir, clean = true) {
|
|
74
|
-
const config = cdktf_config_1.CdktfConfig.read(dir);
|
|
75
|
-
const constraints = [
|
|
76
|
-
...config.terraformProviders.map((c) => new commons_1.TerraformProviderConstraint(c)),
|
|
77
|
-
...config.terraformModules.map((c) => new commons_1.TerraformModuleConstraint(c)),
|
|
78
|
-
];
|
|
79
|
-
await get({
|
|
80
|
-
constraints,
|
|
81
|
-
constructsOptions: {
|
|
82
|
-
codeMakerOutput: path.resolve(dir, config.codeMakerOutput),
|
|
83
|
-
targetLanguage: config.language,
|
|
84
|
-
jsiiParallelism: 1,
|
|
85
|
-
},
|
|
86
|
-
cleanDirectory: clean,
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
exports.runGetInDir = runGetInDir;
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQStCO0FBQy9CLG1DQUFtQztBQUNuQyxrRUFBd0U7QUFDeEUsNENBS3dCO0FBQ3hCLDZDQUErQjtBQUMvQiw0Q0FBd0M7QUFDeEMsMkNBQTZCO0FBQzdCLGlEQUE2QztBQUU3QyxJQUFZLFNBS1g7QUFMRCxXQUFZLFNBQVM7SUFDbkIsa0NBQXFCLENBQUE7SUFDckIsNkVBQWdFLENBQUE7SUFDaEUsMEJBQWEsQ0FBQTtJQUNiLDRCQUFlLENBQUE7QUFDakIsQ0FBQyxFQUxXLFNBQVMseUJBQVQsU0FBUyxRQUtwQjtBQXNCTSxLQUFLLFVBQVUsR0FBRyxDQUFDLEVBQ3hCLGlCQUFpQixFQUNqQixXQUFXLEVBQ1gscUJBQXFCLEVBQ3JCLGNBQWMsRUFDZCx1QkFBdUIsRUFDdkIsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLFNBQVMsRUFDMUIsZUFBZSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUMsU0FBUyxHQUM3QjtJQUNWLGdCQUFNLENBQUMsS0FBSyxDQUFDLDRCQUE0QixpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQzlFLE1BQU0sZUFBZSxHQUFHLElBQUksb0NBQWUsQ0FDekMsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixlQUFlLENBQ2hCLENBQUM7SUFFRixJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ25CLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNyRCxDQUFDO1NBQU0sQ0FBQztRQUNOLG9EQUFvRDtRQUNwRCxNQUFNLGVBQWUsQ0FBQywrQkFBK0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNuRSxJQUFJLGlCQUFpQixDQUFDLGNBQWMsS0FBSyxrQkFBUSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQzdELHFCQUFxQjtZQUNyQixNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsU0FBUyxDQUFDLENBQzNELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELGlDQUFpQztJQUNqQyxNQUFNLFVBQVUsR0FDZCxxQkFBcUI7UUFDckIsQ0FBQyxNQUFNLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBRTlELFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDaEMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUM3QyxNQUFNLGVBQWUsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3hELGdCQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFFNUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5RCxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLGdCQUFNLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztTQUFNLENBQUM7UUFDTixRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLGdCQUFNLENBQUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDOUMsQ0FBQztBQUNILENBQUM7QUE5Q0Qsa0JBOENDO0FBRU0sS0FBSyxVQUFVLFdBQVcsQ0FBQyxHQUFXLEVBQUUsS0FBSyxHQUFHLElBQUk7SUFDekQsTUFBTSxNQUFNLEdBQUcsMEJBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFckMsTUFBTSxXQUFXLEdBQUc7UUFDbEIsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLHFDQUEyQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzNFLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxtQ0FBeUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN4RSxDQUFDO0lBRUYsTUFBTSxHQUFHLENBQUM7UUFDUixXQUFXO1FBQ1gsaUJBQWlCLEVBQUU7WUFDakIsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxlQUFlLENBQUM7WUFDMUQsY0FBYyxFQUFFLE1BQU0sQ0FBQyxRQUFRO1lBQy9CLGVBQWUsRUFBRSxDQUFDO1NBQ25CO1FBQ0QsY0FBYyxFQUFFLEtBQUs7S0FDdEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQWpCRCxrQ0FpQkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIEhhc2hpQ29ycCwgSW5jXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuaW1wb3J0IHsgQ29uc3RydWN0c01ha2VyLCBHZXRPcHRpb25zIH0gZnJvbSBcIkBjZGt0bi9wcm92aWRlci1nZW5lcmF0b3JcIjtcbmltcG9ydCB7XG4gIExhbmd1YWdlLFxuICBUZXJyYWZvcm1Nb2R1bGVDb25zdHJhaW50LFxuICBUZXJyYWZvcm1Qcm92aWRlckNvbnN0cmFpbnQsXG4gIFRlcnJhZm9ybURlcGVuZGVuY3lDb25zdHJhaW50LFxufSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSBcIkBjZGt0bi9jb21tb25zXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBDZGt0ZkNvbmZpZyB9IGZyb20gXCIuL2Nka3RmLWNvbmZpZ1wiO1xuXG5leHBvcnQgZW51bSBHZXRTdGF0dXMge1xuICBTVEFSVElORyA9IFwic3RhcnRpbmdcIixcbiAgRE9XTkxPQURJTkcgPSBcImRvd25sb2FkaW5nIGFuZCBnZW5lcmF0aW5nIG1vZHVsZXMgYW5kIHByb3ZpZGVyc1wiLFxuICBET05FID0gXCJkb25lXCIsXG4gIEVSUk9SID0gXCJlcnJvclwiLFxufVxuXG50eXBlIFBhcnNlZERlcGVuZGVuY3lDb25zdHJhaW50ID1cbiAgfCBUZXJyYWZvcm1Nb2R1bGVDb25zdHJhaW50XG4gIHwgVGVycmFmb3JtUHJvdmlkZXJDb25zdHJhaW50XG4gIHwgVGVycmFmb3JtRGVwZW5kZW5jeUNvbnN0cmFpbnQ7XG5cbmludGVyZmFjZSBHZXRDb25maWcge1xuICAvLyBBbGwgZXhpc3RpbmcgY29uc3RyYWludHMgKHRvIGJlIGFibGUgdG8gcmVtb3ZlIG5vIGxvbmdlciB1c2VkIG9uZXMpXG4gIGNvbnN0cmFpbnRzOiBQYXJzZWREZXBlbmRlbmN5Q29uc3RyYWludFtdO1xuICAvLyBUaGUgY29uc3RyYWludHMgdGhhdCBzaG91bGQgYmUgZ2VuZXJhdGVkXG4gIGNvbnN0cmFpbnRzVG9HZW5lcmF0ZT86IFBhcnNlZERlcGVuZGVuY3lDb25zdHJhaW50W107XG4gIGNvbnN0cnVjdHNPcHRpb25zOiBHZXRPcHRpb25zO1xuICBjbGVhbkRpcmVjdG9yeT86IGJvb2xlYW47XG4gIHByb3ZpZGVyU2NoZW1hQ2FjaGVQYXRoPzogc3RyaW5nO1xuICBvblVwZGF0ZT86IChwYXlsb2FkOiBHZXRTdGF0dXMpID0+IHZvaWQ7XG4gIHJlcG9ydFRlbGVtZXRyeT86ICh0ZWxlbWV0cnk6IHtcbiAgICB0YXJnZXRMYW5ndWFnZTogc3RyaW5nO1xuICAgIHRyYWNraW5nUGF5bG9hZDogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgfSkgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldCh7XG4gIGNvbnN0cnVjdHNPcHRpb25zLFxuICBjb25zdHJhaW50cyxcbiAgY29uc3RyYWludHNUb0dlbmVyYXRlLFxuICBjbGVhbkRpcmVjdG9yeSxcbiAgcHJvdmlkZXJTY2hlbWFDYWNoZVBhdGgsXG4gIG9uVXBkYXRlID0gKCkgPT4gdW5kZWZpbmVkLFxuICByZXBvcnRUZWxlbWV0cnkgPSBhc3luYyAoKSA9PiB1bmRlZmluZWQsXG59OiBHZXRDb25maWcpIHtcbiAgbG9nZ2VyLmRlYnVnKGBTdGFydGluZyBnZXQgd2l0aCBvdXRkaXIgJHtjb25zdHJ1Y3RzT3B0aW9ucy5jb2RlTWFrZXJPdXRwdXR9YCk7XG4gIGNvbnN0IGNvbnN0cnVjdHNNYWtlciA9IG5ldyBDb25zdHJ1Y3RzTWFrZXIoXG4gICAgY29uc3RydWN0c09wdGlvbnMsXG4gICAgcHJvdmlkZXJTY2hlbWFDYWNoZVBhdGgsXG4gICAgcmVwb3J0VGVsZW1ldHJ5LFxuICApO1xuXG4gIGlmIChjbGVhbkRpcmVjdG9yeSkge1xuICAgIGF3YWl0IGZzLnJlbW92ZShjb25zdHJ1Y3RzT3B0aW9ucy5jb2RlTWFrZXJPdXRwdXQpO1xuICB9IGVsc2Uge1xuICAgIC8vIFJlbW92ZSBhbGwgcHJvdmlkZXJzIHRoYXQgYXJlIG5vdCBpbiB0aGUgbmV3IGxpc3RcbiAgICBhd2FpdCBjb25zdHJ1Y3RzTWFrZXIucmVtb3ZlRm9sZGVyc1RoYXRTaG91bGROb3RFeGlzdChjb25zdHJhaW50cyk7XG4gICAgaWYgKGNvbnN0cnVjdHNPcHRpb25zLnRhcmdldExhbmd1YWdlID09PSBMYW5ndWFnZS5UWVBFU0NSSVBUKSB7XG4gICAgICAvLyBSZW1vdmUgYWxsIG1vZHVsZXNcbiAgICAgIGF3YWl0IGZzLnJlbW92ZShcbiAgICAgICAgcGF0aC5yZXNvbHZlKGNvbnN0cnVjdHNPcHRpb25zLmNvZGVNYWtlck91dHB1dCwgXCJtb2R1bGVzXCIpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvLyBGaWx0ZXIgY29uc3RyYWludHMgdG8gZ2VuZXJhdGVcbiAgY29uc3QgdG9HZW5lcmF0ZSA9XG4gICAgY29uc3RyYWludHNUb0dlbmVyYXRlIHx8XG4gICAgKGF3YWl0IGNvbnN0cnVjdHNNYWtlci5maWx0ZXJBbHJlYWR5R2VuZXJhdGVkKGNvbnN0cmFpbnRzKSk7XG5cbiAgb25VcGRhdGUoR2V0U3RhdHVzLkRPV05MT0FESU5HKTtcbiAgbG9nZ2VyLmRlYnVnKFwiR2VuZXJhdGluZyBwcm92aWRlciBiaW5kaW5nc1wiKTtcbiAgYXdhaXQgY29uc3RydWN0c01ha2VyLmdlbmVyYXRlKGNvbnN0cmFpbnRzLCB0b0dlbmVyYXRlKTtcbiAgbG9nZ2VyLmRlYnVnKFwiUHJvdmlkZXIgYmluZGluZ3MgZ2VuZXJhdGVkXCIpO1xuXG4gIGlmICghKGF3YWl0IGZzLnBhdGhFeGlzdHMoY29uc3RydWN0c09wdGlvbnMuY29kZU1ha2VyT3V0cHV0KSkpIHtcbiAgICBvblVwZGF0ZShHZXRTdGF0dXMuRVJST1IpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcIkZhaWxlZCB0byBnZW5lcmF0ZSBwcm92aWRlciBiaW5kaW5nc1wiKTtcbiAgfSBlbHNlIHtcbiAgICBvblVwZGF0ZShHZXRTdGF0dXMuRE9ORSk7XG4gICAgbG9nZ2VyLmRlYnVnKFwiUHJvdmlkZXIgYmluZGluZ3MgZ2VuZXJhdGVkXCIpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBydW5HZXRJbkRpcihkaXI6IHN0cmluZywgY2xlYW4gPSB0cnVlKSB7XG4gIGNvbnN0IGNvbmZpZyA9IENka3RmQ29uZmlnLnJlYWQoZGlyKTtcblxuICBjb25zdCBjb25zdHJhaW50cyA9IFtcbiAgICAuLi5jb25maWcudGVycmFmb3JtUHJvdmlkZXJzLm1hcCgoYykgPT4gbmV3IFRlcnJhZm9ybVByb3ZpZGVyQ29uc3RyYWludChjKSksXG4gICAgLi4uY29uZmlnLnRlcnJhZm9ybU1vZHVsZXMubWFwKChjKSA9PiBuZXcgVGVycmFmb3JtTW9kdWxlQ29uc3RyYWludChjKSksXG4gIF07XG5cbiAgYXdhaXQgZ2V0KHtcbiAgICBjb25zdHJhaW50cyxcbiAgICBjb25zdHJ1Y3RzT3B0aW9uczoge1xuICAgICAgY29kZU1ha2VyT3V0cHV0OiBwYXRoLnJlc29sdmUoZGlyLCBjb25maWcuY29kZU1ha2VyT3V0cHV0KSxcbiAgICAgIHRhcmdldExhbmd1YWdlOiBjb25maWcubGFuZ3VhZ2UsXG4gICAgICBqc2lpUGFyYWxsZWxpc206IDEsXG4gICAgfSxcbiAgICBjbGVhbkRpcmVjdG9yeTogY2xlYW4sXG4gIH0pO1xufVxuIl19
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stack-helpers.d.ts","sourceRoot":"","sources":["stack-helpers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,wBAAgB,cAAc,CAC5B,MAAM,EAAE,gBAAgB,EAAE,EAC1B,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,oBA4BtB;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,gBAAgB,EAAE,EAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,EACnB,YAAY,CAAC,EAAE,MAAM,sBA0BtB;AAMD,wBAAsB,+BAA+B,CACnD,cAAc,EAAE,UAAU,EAAE,GAC3B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAyCjC;AAWD,wBAAgB,4BAA4B,CAC1C,cAAc,EAAE,UAAU,EAAE,EAC5B,SAAS,EAAE,MAAM,EACjB,wBAAwB,GAAE,GAAG,CAAC,MAAM,CAAa,GAChD,UAAU,EAAE,CAkBd;AAGD,wBAAsB,6BAA6B,CACjD,cAAc,EAAE,UAAU,EAAE,GAC3B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAmCjC;AAGD,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,gBAAgB,EAAE,EAC/B,SAAS,EAAE,gBAAgB,EAAE,QAsB9B;AAED;;;;;EAKE;AACF,wBAAgB,iCAAiC,CAC/C,WAAW,EAAE,gBAAgB,EAAE,QAoBhC"}
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
// Copyright (c) HashiCorp, Inc
|
|
3
|
-
// SPDX-License-Identifier: MPL-2.0
|
|
4
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
-
};
|
|
7
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
-
exports.checkIfAllDependenciesAreIncluded = exports.checkIfAllDependantsAreIncluded = exports.getStackWithNoUnmetDependants = exports.findAllNestedDependantStacks = exports.getStackWithNoUnmetDependencies = exports.getMultipleStacks = exports.getSingleStack = void 0;
|
|
9
|
-
const commons_1 = require("@cdktn/commons");
|
|
10
|
-
const minimatch_1 = __importDefault(require("minimatch"));
|
|
11
|
-
function getSingleStack(stacks, stackName, targetAction) {
|
|
12
|
-
if (!stacks) {
|
|
13
|
-
throw commons_1.Errors.Internal("Trying to access a stack before it has been synthesized");
|
|
14
|
-
}
|
|
15
|
-
if (stackName) {
|
|
16
|
-
const stack = stacks.find((s) => s.name === stackName);
|
|
17
|
-
if (!stack) {
|
|
18
|
-
throw commons_1.Errors.Usage("Could not find stack: " + stackName);
|
|
19
|
-
}
|
|
20
|
-
return stack;
|
|
21
|
-
}
|
|
22
|
-
if (stacks.length === 1) {
|
|
23
|
-
return stacks[0];
|
|
24
|
-
}
|
|
25
|
-
throw commons_1.Errors.Usage(`Found more than one stack, please specify a target stack. Run cdktn ${targetAction || "<verb>"} <stack> with one of these stacks: ${stacks
|
|
26
|
-
.map((s) => s.name)
|
|
27
|
-
.join(", ")} `);
|
|
28
|
-
}
|
|
29
|
-
exports.getSingleStack = getSingleStack;
|
|
30
|
-
function getMultipleStacks(stacks, patterns, targetAction) {
|
|
31
|
-
if (!patterns || !patterns.length) {
|
|
32
|
-
if (stacks.length === 1) {
|
|
33
|
-
return [stacks[0]];
|
|
34
|
-
}
|
|
35
|
-
throw commons_1.Errors.Usage(`Found more than one stack, please specify a target stack. Run cdktn ${targetAction || "<verb>"} <stack> with one of these stacks: ${stacks
|
|
36
|
-
.map((s) => s.name)
|
|
37
|
-
.join(", ")} `);
|
|
38
|
-
}
|
|
39
|
-
return patterns.flatMap((pattern) => {
|
|
40
|
-
const matchingStacks = stacks.filter((stack) => (0, minimatch_1.default)(stack.name, pattern));
|
|
41
|
-
if (matchingStacks.length === 0) {
|
|
42
|
-
throw commons_1.Errors.Usage(`Could not find stack for pattern '${pattern}'`);
|
|
43
|
-
}
|
|
44
|
-
return matchingStacks;
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
exports.getMultipleStacks = getMultipleStacks;
|
|
48
|
-
// Returns the first stack that has no unmet dependencies
|
|
49
|
-
// An unmet dependency is a dependency that has not been deployed yet
|
|
50
|
-
// If there is no unfinished stack, returns undefined
|
|
51
|
-
// If there is no stack ready to be worked on, it returns a promise that will resolve as soon as there is a follow-up stack available
|
|
52
|
-
async function getStackWithNoUnmetDependencies(stackExecutors) {
|
|
53
|
-
commons_1.logger.debug("Checking for stacks with unmet dependencies");
|
|
54
|
-
commons_1.logger.debug("stack executors:", stackExecutors);
|
|
55
|
-
const pendingStacks = stackExecutors.filter((executor) => executor.isPending);
|
|
56
|
-
commons_1.logger.debug("pending stacks:", stackExecutors);
|
|
57
|
-
if (pendingStacks.length === 0) {
|
|
58
|
-
return undefined;
|
|
59
|
-
}
|
|
60
|
-
const currentlyReadyStack = pendingStacks.find((executor) => executor.stack.dependencies.every((dependency) => {
|
|
61
|
-
var _a;
|
|
62
|
-
return ((_a = stackExecutors.find((executor) => executor.stack.name === dependency)) === null || _a === void 0 ? void 0 : _a.currentState) === "done";
|
|
63
|
-
}));
|
|
64
|
-
if (currentlyReadyStack) {
|
|
65
|
-
commons_1.logger.debug("Found a stack with no unmet dependencies");
|
|
66
|
-
return currentlyReadyStack;
|
|
67
|
-
}
|
|
68
|
-
const stackExecutionPromises = stackExecutors
|
|
69
|
-
.filter((ex) => ex.currentWorkPromise)
|
|
70
|
-
.map((ex) => ex.currentWorkPromise);
|
|
71
|
-
commons_1.logger.debug(`${stackExecutionPromises.length} stacks are currently busy, waiting for one to finish`);
|
|
72
|
-
if (!stackExecutionPromises.length) {
|
|
73
|
-
return undefined;
|
|
74
|
-
}
|
|
75
|
-
await (0, commons_1.ensureAllSettledBeforeThrowing)(Promise.race(stackExecutionPromises), stackExecutionPromises);
|
|
76
|
-
return await getStackWithNoUnmetDependencies(stackExecutors);
|
|
77
|
-
}
|
|
78
|
-
exports.getStackWithNoUnmetDependencies = getStackWithNoUnmetDependencies;
|
|
79
|
-
function findAllDependantStacks(stackExecutors, stackName) {
|
|
80
|
-
return stackExecutors.filter((innerExecutor) => innerExecutor.stack.dependencies.includes(stackName));
|
|
81
|
-
}
|
|
82
|
-
function findAllNestedDependantStacks(stackExecutors, stackName, knownDependantStackNames = new Set()) {
|
|
83
|
-
const dependantStacks = findAllDependantStacks(stackExecutors, stackName);
|
|
84
|
-
dependantStacks.forEach((stack) => {
|
|
85
|
-
if (knownDependantStackNames.has(stack.stack.name)) {
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
knownDependantStackNames.add(stack.stack.name);
|
|
89
|
-
findAllNestedDependantStacks(stackExecutors, stack.stack.name, knownDependantStackNames);
|
|
90
|
-
});
|
|
91
|
-
return stackExecutors.filter((executor) => knownDependantStackNames.has(executor.stack.name));
|
|
92
|
-
}
|
|
93
|
-
exports.findAllNestedDependantStacks = findAllNestedDependantStacks;
|
|
94
|
-
// Returns the first stack that has no dependents that need to be destroyed first
|
|
95
|
-
async function getStackWithNoUnmetDependants(stackExecutors) {
|
|
96
|
-
commons_1.logger.debug("Checking for stacks with unmet dependants");
|
|
97
|
-
commons_1.logger.debug("stack executors:", stackExecutors);
|
|
98
|
-
const pendingStacks = stackExecutors.filter((executor) => executor.isPending);
|
|
99
|
-
commons_1.logger.debug("pending stacks:", stackExecutors);
|
|
100
|
-
if (pendingStacks.length === 0) {
|
|
101
|
-
return undefined;
|
|
102
|
-
}
|
|
103
|
-
const currentlyReadyStack = pendingStacks.find((executor) => {
|
|
104
|
-
const dependantStacks = findAllDependantStacks(stackExecutors, executor.stack.name);
|
|
105
|
-
return dependantStacks.every((stack) => stack.currentState === "done");
|
|
106
|
-
});
|
|
107
|
-
if (currentlyReadyStack) {
|
|
108
|
-
commons_1.logger.debug("Found a stack with no unmet dependants");
|
|
109
|
-
return currentlyReadyStack;
|
|
110
|
-
}
|
|
111
|
-
const stackExecutionPromises = stackExecutors
|
|
112
|
-
.filter((ex) => ex.currentWorkPromise)
|
|
113
|
-
.map((ex) => ex.currentWorkPromise);
|
|
114
|
-
commons_1.logger.debug(`${stackExecutionPromises.length} stacks are currently busy, waiting for one to finish`);
|
|
115
|
-
if (!stackExecutionPromises.length) {
|
|
116
|
-
return undefined;
|
|
117
|
-
}
|
|
118
|
-
await Promise.race(stackExecutionPromises);
|
|
119
|
-
return await getStackWithNoUnmetDependants(stackExecutors);
|
|
120
|
-
}
|
|
121
|
-
exports.getStackWithNoUnmetDependants = getStackWithNoUnmetDependants;
|
|
122
|
-
// Throws an error if there is a dependant stack that is not included
|
|
123
|
-
function checkIfAllDependantsAreIncluded(stacksToRun, allStacks) {
|
|
124
|
-
const allDependants = new Set();
|
|
125
|
-
stacksToRun
|
|
126
|
-
.map((stack) => allStacks.filter((s) => s.dependencies.includes(stack.name)))
|
|
127
|
-
.flat()
|
|
128
|
-
.forEach((dependant) => allDependants.add(dependant.name));
|
|
129
|
-
const stackNames = stacksToRun.map((stack) => stack.name);
|
|
130
|
-
const missingDependants = [...allDependants].filter((dependant) => !stackNames.includes(dependant));
|
|
131
|
-
if (missingDependants.length > 0) {
|
|
132
|
-
throw commons_1.Errors.Usage(`The following dependant stacks are not included in the stacks to run: ${missingDependants.join(", ")}. Either add them or add the --ignore-missing-stack-dependencies flag.`);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
exports.checkIfAllDependantsAreIncluded = checkIfAllDependantsAreIncluded;
|
|
136
|
-
/**
|
|
137
|
-
Throws an error if there is a dependency that is not included
|
|
138
|
-
Cycles are detected on dependency creation at synthesis time
|
|
139
|
-
Running this prevents us from being in a situation where we
|
|
140
|
-
have to wait for a stack to be deployed that is not included to be run
|
|
141
|
-
*/
|
|
142
|
-
function checkIfAllDependenciesAreIncluded(stacksToRun) {
|
|
143
|
-
const allDependencies = new Set();
|
|
144
|
-
stacksToRun
|
|
145
|
-
.map((stack) => stack.dependencies)
|
|
146
|
-
.flat()
|
|
147
|
-
.forEach((dependency) => allDependencies.add(dependency));
|
|
148
|
-
const stackNames = stacksToRun.map((stack) => stack.name);
|
|
149
|
-
const missingDependencies = [...allDependencies].filter((dependency) => !stackNames.includes(dependency));
|
|
150
|
-
if (missingDependencies.length > 0) {
|
|
151
|
-
throw commons_1.Errors.Usage(`The following dependencies are not included in the stacks to run: ${missingDependencies.join(", ")}. Either add them or add the --ignore-missing-stack-dependencies flag.`);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
exports.checkIfAllDependenciesAreIncluded = checkIfAllDependenciesAreIncluded;
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2staGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0YWNrLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7Ozs7OztBQUVuQyw0Q0FBZ0Y7QUFDaEYsMERBQWtDO0FBSWxDLFNBQWdCLGNBQWMsQ0FDNUIsTUFBMEIsRUFDMUIsU0FBa0IsRUFDbEIsWUFBcUI7SUFFckIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxnQkFBTSxDQUFDLFFBQVEsQ0FDbkIseURBQXlELENBQzFELENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsTUFBTSxnQkFBTSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxNQUFNLGdCQUFNLENBQUMsS0FBSyxDQUNoQix1RUFDRSxZQUFZLElBQUksUUFDbEIsc0NBQXNDLE1BQU07U0FDekMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNqQixDQUFDO0FBQ0osQ0FBQztBQS9CRCx3Q0ErQkM7QUFFRCxTQUFnQixpQkFBaUIsQ0FDL0IsTUFBMEIsRUFDMUIsUUFBbUIsRUFDbkIsWUFB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QUM3RixJQUFJLENBQ0wsd0VBQXdFLENBQzFFLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQXhCRCwwRUF3QkM7QUFFRDs7Ozs7RUFLRTtBQUNGLFNBQWdCLGlDQUFpQyxDQUMvQyxXQUErQjtJQUUvQixNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQzFDLFdBQVc7U0FDUixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7U0FDbEMsSUFBSSxFQUFFO1NBQ04sT0FBTyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFFNUQsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFELE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FDckQsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FDakQsQ0FBQztJQUVGLElBQUksbUJBQW1CLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sZ0JBQU0sQ0FBQyxLQUFLLENBQ2hCLHFFQUFxRSxtQkFBbUIsQ0FBQyxJQUFJLENBQzNGLElBQUksQ0FDTCx3RUFBd0UsQ0FDMUUsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBckJELDhFQXFCQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5cbmltcG9ydCB7IGVuc3VyZUFsbFNldHRsZWRCZWZvcmVUaHJvd2luZywgRXJyb3JzLCBsb2dnZXIgfSBmcm9tIFwiQGNka3RuL2NvbW1vbnNcIjtcbmltcG9ydCBtaW5pbWF0Y2ggZnJvbSBcIm1pbmltYXRjaFwiO1xuaW1wb3J0IHsgQ2RrdGZTdGFjayB9IGZyb20gXCIuLi9jZGt0Zi1zdGFja1wiO1xuaW1wb3J0IHsgU3ludGhlc2l6ZWRTdGFjayB9IGZyb20gXCIuLi9zeW50aC1zdGFja1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2luZ2xlU3RhY2soXG4gIHN0YWNrczogU3ludGhlc2l6ZWRTdGFja1tdLFxuICBzdGFja05hbWU/OiBzdHJpbmcsXG4gIHRhcmdldEFjdGlvbj86IHN0cmluZyxcbikge1xuICBpZiAoIXN0YWNrcykge1xuICAgIHRocm93IEVycm9ycy5JbnRlcm5hbChcbiAgICAgIFwiVHJ5aW5nIHRvIGFjY2VzcyBhIHN0YWNrIGJlZm9yZSBpdCBoYXMgYmVlbiBzeW50aGVzaXplZFwiLFxuICAgICk7XG4gIH1cblxuICBpZiAoc3RhY2tOYW1lKSB7XG4gICAgY29uc3Qgc3RhY2sgPSBzdGFja3MuZmluZCgocykgPT4gcy5uYW1lID09PSBzdGFja05hbWUpO1xuICAgIGlmICghc3RhY2spIHtcbiAgICAgIHRocm93IEVycm9ycy5Vc2FnZShcIkNvdWxkIG5vdCBmaW5kIHN0YWNrOiBcIiArIHN0YWNrTmFtZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YWNrO1xuICB9XG5cbiAgaWYgKHN0YWNrcy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gc3RhY2tzWzBdO1xuICB9XG5cbiAgdGhyb3cgRXJyb3JzLlVzYWdlKFxuICAgIGBGb3VuZCBtb3JlIHRoYW4gb25lIHN0YWNrLCBwbGVhc2Ugc3BlY2lmeSBhIHRhcmdldCBzdGFjay4gUnVuIGNka3RuICR7XG4gICAgICB0YXJnZXRBY3Rpb24gfHwgXCI8dmVyYj5cIlxuICAgIH0gPHN0YWNrPiB3aXRoIG9uZSBvZiB0aGVzZSBzdGFja3M6ICR7c3RhY2tzXG4gICAgICAubWFwKChzKSA9PiBzLm5hbWUpXG4gICAgICAuam9pbihcIiwgXCIpfSBgLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TXVsdGlwbGVTdGFja3MoXG4gIHN0YWNrczogU3ludGhlc2l6ZWRTdGFja1tdLFxuICBwYXR0ZXJucz86IHN0cmluZ1tdLFxuICB0YXJnZXRBY3Rpb24/OiBzdHJpbmcsXG4pIHtcbiAgaWYgKCFwYXR0ZXJucyB8fCAhcGF0dGVybnMubGVuZ3RoKSB7XG4gICAgaWYgKHN0YWNrcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBbc3RhY2tzWzBdXTtcbiAgICB9XG4gICAgdGhyb3cgRXJyb3JzLlVzYWdlKFxuICAgICAgYEZvdW5kIG1vcmUgdGhhbiBvbmUgc3RhY2ssIHBsZWFzZSBzcGVjaWZ5IGEgdGFyZ2V0IHN0YWNrLiBSdW4gY2RrdG4gJHtcbiAgICAgICAgdGFyZ2V0QWN0aW9uIHx8IFwiPHZlcmI+XCJcbiAgICAgIH0gPHN0YWNrPiB3aXRoIG9uZSBvZiB0aGVzZSBzdGFja3M6ICR7c3RhY2tzXG4gICAgICAgIC5tYXAoKHMpID0+IHMubmFtZSlcbiAgICAgICAgLmpvaW4oXCIsIFwiKX0gYCxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHBhdHRlcm5zLmZsYXRNYXAoKHBhdHRlcm4pID0+IHtcbiAgICBjb25zdCBtYXRjaGluZ1N0YWNrcyA9IHN0YWNrcy5maWx0ZXIoKHN0YWNrKSA9PlxuICAgICAgbWluaW1hdGNoKHN0YWNrLm5hbWUsIHBhdHRlcm4pLFxuICAgICk7XG5cbiAgICBpZiAobWF0Y2hpbmdTdGFja3MubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBFcnJvcnMuVXNhZ2UoYENvdWxkIG5vdCBmaW5kIHN0YWNrIGZvciBwYXR0ZXJuICcke3BhdHRlcm59J2ApO1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaGluZ1N0YWNrcztcbiAgfSk7XG59XG5cbi8vIFJldHVybnMgdGhlIGZpcnN0IHN0YWNrIHRoYXQgaGFzIG5vIHVubWV0IGRlcGVuZGVuY2llc1xuLy8gQW4gdW5tZXQgZGVwZW5kZW5jeSBpcyBhIGRlcGVuZGVuY3kgdGhhdCBoYXMgbm90IGJlZW4gZGVwbG95ZWQgeWV0XG4vLyBJZiB0aGVyZSBpcyBubyB1bmZpbmlzaGVkIHN0YWNrLCByZXR1cm5zIHVuZGVmaW5lZFxuLy8gSWYgdGhlcmUgaXMgbm8gc3RhY2sgcmVhZHkgdG8gYmUgd29ya2VkIG9uLCBpdCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IHdpbGwgcmVzb2x2ZSBhcyBzb29uIGFzIHRoZXJlIGlzIGEgZm9sbG93LXVwIHN0YWNrIGF2YWlsYWJsZVxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFN0YWNrV2l0aE5vVW5tZXREZXBlbmRlbmNpZXMoXG4gIHN0YWNrRXhlY3V0b3JzOiBDZGt0ZlN0YWNrW10sXG4pOiBQcm9taXNlPENka3RmU3RhY2sgfCB1bmRlZmluZWQ+IHtcbiAgbG9nZ2VyLmRlYnVnKFwiQ2hlY2tpbmcgZm9yIHN0YWNrcyB3aXRoIHVubWV0IGRlcGVuZGVuY2llc1wiKTtcbiAgbG9nZ2VyLmRlYnVnKFwic3RhY2sgZXhlY3V0b3JzOlwiLCBzdGFja0V4ZWN1dG9ycyk7XG4gIGNvbnN0IHBlbmRpbmdTdGFja3MgPSBzdGFja0V4ZWN1dG9ycy5maWx0ZXIoKGV4ZWN1dG9yKSA9PiBleGVjdXRvci5pc1BlbmRpbmcpO1xuICBsb2dnZXIuZGVidWcoXCJwZW5kaW5nIHN0YWNrczpcIiwgc3RhY2tFeGVjdXRvcnMpO1xuXG4gIGlmIChwZW5kaW5nU3RhY2tzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCBjdXJyZW50bHlSZWFkeVN0YWNrID0gcGVuZGluZ1N0YWNrcy5maW5kKChleGVjdXRvcikgPT5cbiAgICBleGVjdXRvci5zdGFjay5kZXBlbmRlbmNpZXMuZXZlcnkoXG4gICAgICAoZGVwZW5kZW5jeSkgPT5cbiAgICAgICAgc3RhY2tFeGVjdXRvcnMuZmluZCgoZXhlY3V0b3IpID0+IGV4ZWN1dG9yLnN0YWNrLm5hbWUgPT09IGRlcGVuZGVuY3kpXG4gICAgICAgICAgPy5jdXJyZW50U3RhdGUgPT09IFwiZG9uZVwiLFxuICAgICksXG4gICk7XG5cbiAgaWYgKGN1cnJlbnRseVJlYWR5U3RhY2spIHtcbiAgICBsb2dnZXIuZGVidWcoXCJGb3VuZCBhIHN0YWNrIHdpdGggbm8gdW5tZXQgZGVwZW5kZW5jaWVzXCIpO1xuICAgIHJldHVybiBjdXJyZW50bHlSZWFkeVN0YWNrO1xuICB9XG5cbiAgY29uc3Qgc3RhY2tFeGVjdXRpb25Qcm9taXNlcyA9IHN0YWNrRXhlY3V0b3JzXG4gICAgLmZpbHRlcigoZXgpID0+IGV4LmN1cnJlbnRXb3JrUHJvbWlzZSlcbiAgICAubWFwKChleCkgPT4gZXguY3VycmVudFdvcmtQcm9taXNlKTtcblxuICBsb2dnZXIuZGVidWcoXG4gICAgYCR7c3RhY2tFeGVjdXRpb25Qcm9taXNlcy5sZW5ndGh9IHN0YWNrcyBhcmUgY3VycmVudGx5IGJ1c3ksIHdhaXRpbmcgZm9yIG9uZSB0byBmaW5pc2hgLFxuICApO1xuXG4gIGlmICghc3RhY2tFeGVjdXRpb25Qcm9taXNlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgYXdhaXQgZW5zdXJlQWxsU2V0dGxlZEJlZm9yZVRocm93aW5nKFxuICAgIFByb21pc2UucmFjZShzdGFja0V4ZWN1dGlvblByb21pc2VzKSxcbiAgICBzdGFja0V4ZWN1dGlvblByb21pc2VzLFxuICApO1xuXG4gIHJldHVybiBhd2FpdCBnZXRTdGFja1dpdGhOb1VubWV0RGVwZW5kZW5jaWVzKHN0YWNrRXhlY3V0b3JzKTtcbn1cblxuZnVuY3Rpb24gZmluZEFsbERlcGVuZGFudFN0YWNrcyhcbiAgc3RhY2tFeGVjdXRvcnM6IENka3RmU3RhY2tbXSxcbiAgc3RhY2tOYW1lOiBzdHJpbmcsXG4pOiBDZGt0ZlN0YWNrW10ge1xuICByZXR1cm4gc3RhY2tFeGVjdXRvcnMuZmlsdGVyKChpbm5lckV4ZWN1dG9yKSA9PlxuICAgIGlubmVyRXhlY3V0b3Iuc3RhY2suZGVwZW5kZW5jaWVzLmluY2x1ZGVzKHN0YWNrTmFtZSksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kQWxsTmVzdGVkRGVwZW5kYW50U3RhY2tzKFxuICBzdGFja0V4ZWN1dG9yczogQ2RrdGZTdGFja1tdLFxuICBzdGFja05hbWU6IHN0cmluZyxcbiAga25vd25EZXBlbmRhbnRTdGFja05hbWVzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKSxcbik6IENka3RmU3RhY2tbXSB7XG4gIGNvbnN0IGRlcGVuZGFudFN0YWNrcyA9IGZpbmRBbGxEZXBlbmRhbnRTdGFja3Moc3RhY2tFeGVjdXRvcnMsIHN0YWNrTmFtZSk7XG4gIGRlcGVuZGFudFN0YWNrcy5mb3JFYWNoKChzdGFjaykgPT4ge1xuICAgIGlmIChrbm93bkRlcGVuZGFudFN0YWNrTmFtZXMuaGFzKHN0YWNrLnN0YWNrLm5hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAga25vd25EZXBlbmRhbnRTdGFja05hbWVzLmFkZChzdGFjay5zdGFjay5uYW1lKTtcbiAgICBmaW5kQWxsTmVzdGVkRGVwZW5kYW50U3RhY2tzKFxuICAgICAgc3RhY2tFeGVjdXRvcnMsXG4gICAgICBzdGFjay5zdGFjay5uYW1lLFxuICAgICAga25vd25EZXBlbmRhbnRTdGFja05hbWVzLFxuICAgICk7XG4gIH0pO1xuXG4gIHJldHVybiBzdGFja0V4ZWN1dG9ycy5maWx0ZXIoKGV4ZWN1dG9yKSA9PlxuICAgIGtub3duRGVwZW5kYW50U3RhY2tOYW1lcy5oYXMoZXhlY3V0b3Iuc3RhY2submFtZSksXG4gICk7XG59XG5cbi8vIFJldHVybnMgdGhlIGZpcnN0IHN0YWNrIHRoYXQgaGFzIG5vIGRlcGVuZGVudHMgdGhhdCBuZWVkIHRvIGJlIGRlc3Ryb3llZCBmaXJzdFxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFN0YWNrV2l0aE5vVW5tZXREZXBlbmRhbnRzKFxuICBzdGFja0V4ZWN1dG9yczogQ2RrdGZTdGFja1tdLFxuKTogUHJvbWlzZTxDZGt0ZlN0YWNrIHwgdW5kZWZpbmVkPiB7XG4gIGxvZ2dlci5kZWJ1ZyhcIkNoZWNraW5nIGZvciBzdGFja3Mgd2l0aCB1bm1ldCBkZXBlbmRhbnRzXCIpO1xuICBsb2dnZXIuZGVidWcoXCJzdGFjayBleGVjdXRvcnM6XCIsIHN0YWNrRXhlY3V0b3JzKTtcbiAgY29uc3QgcGVuZGluZ1N0YWNrcyA9IHN0YWNrRXhlY3V0b3JzLmZpbHRlcigoZXhlY3V0b3IpID0+IGV4ZWN1dG9yLmlzUGVuZGluZyk7XG4gIGxvZ2dlci5kZWJ1ZyhcInBlbmRpbmcgc3RhY2tzOlwiLCBzdGFja0V4ZWN1dG9ycyk7XG5cbiAgaWYgKHBlbmRpbmdTdGFja3MubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRseVJlYWR5U3RhY2sgPSBwZW5kaW5nU3RhY2tzLmZpbmQoKGV4ZWN1dG9yKSA9PiB7XG4gICAgY29uc3QgZGVwZW5kYW50U3RhY2tzID0gZmluZEFsbERlcGVuZGFudFN0YWNrcyhcbiAgICAgIHN0YWNrRXhlY3V0b3JzLFxuICAgICAgZXhlY3V0b3Iuc3RhY2submFtZSxcbiAgICApO1xuICAgIHJldHVybiBkZXBlbmRhbnRTdGFja3MuZXZlcnkoKHN0YWNrKSA9PiBzdGFjay5jdXJyZW50U3RhdGUgPT09IFwiZG9uZVwiKTtcbiAgfSk7XG5cbiAgaWYgKGN1cnJlbnRseVJlYWR5U3RhY2spIHtcbiAgICBsb2dnZXIuZGVidWcoXCJGb3VuZCBhIHN0YWNrIHdpdGggbm8gdW5tZXQgZGVwZW5kYW50c1wiKTtcbiAgICByZXR1cm4gY3VycmVudGx5UmVhZHlTdGFjaztcbiAgfVxuICBjb25zdCBzdGFja0V4ZWN1dGlvblByb21pc2VzID0gc3RhY2tFeGVjdXRvcnNcbiAgICAuZmlsdGVyKChleCkgPT4gZXguY3VycmVudFdvcmtQcm9taXNlKVxuICAgIC5tYXAoKGV4KSA9PiBleC5jdXJyZW50V29ya1Byb21pc2UpO1xuXG4gIGxvZ2dlci5kZWJ1ZyhcbiAgICBgJHtzdGFja0V4ZWN1dGlvblByb21pc2VzLmxlbmd0aH0gc3RhY2tzIGFyZSBjdXJyZW50bHkgYnVzeSwgd2FpdGluZyBmb3Igb25lIHRvIGZpbmlzaGAsXG4gICk7XG4gIGlmICghc3RhY2tFeGVjdXRpb25Qcm9taXNlcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgYXdhaXQgUHJvbWlzZS5yYWNlKHN0YWNrRXhlY3V0aW9uUHJvbWlzZXMpO1xuICByZXR1cm4gYXdhaXQgZ2V0U3RhY2tXaXRoTm9Vbm1ldERlcGVuZGFudHMoc3RhY2tFeGVjdXRvcnMpO1xufVxuXG4vLyBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlcmUgaXMgYSBkZXBlbmRhbnQgc3RhY2sgdGhhdCBpcyBub3QgaW5jbHVkZWRcbmV4cG9ydCBmdW5jdGlvbiBjaGVja0lmQWxsRGVwZW5kYW50c0FyZUluY2x1ZGVkKFxuICBzdGFja3NUb1J1bjogU3ludGhlc2l6ZWRTdGFja1tdLFxuICBhbGxTdGFja3M6IFN5bnRoZXNpemVkU3RhY2tbXSxcbikge1xuICBjb25zdCBhbGxEZXBlbmRhbnRzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIHN0YWNrc1RvUnVuXG4gICAgLm1hcCgoc3RhY2spID0+XG4gICAgICBhbGxTdGFja3MuZmlsdGVyKChzKSA9PiBzLmRlcGVuZGVuY2llcy5pbmNsdWRlcyhzdGFjay5uYW1lKSksXG4gICAgKVxuICAgIC5mbGF0KClcbiAgICAuZm9yRWFjaCgoZGVwZW5kYW50KSA9PiBhbGxEZXBlbmRhbnRzLmFkZChkZXBlbmRhbnQubmFtZSkpO1xuXG4gIGNvbnN0IHN0YWNrTmFtZXMgPSBzdGFja3NUb1J1bi5tYXAoKHN0YWNrKSA9PiBzdGFjay5uYW1lKTtcbiAgY29uc3QgbWlzc2luZ0RlcGVuZGFudHMgPSBbLi4uYWxsRGVwZW5kYW50c10uZmlsdGVyKFxuICAgIChkZXBlbmRhbnQpID0+ICFzdGFja05hbWVzLmluY2x1ZGVzKGRlcGVuZGFudCksXG4gICk7XG5cbiAgaWYgKG1pc3NpbmdEZXBlbmRhbnRzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBFcnJvcnMuVXNhZ2UoXG4gICAgICBgVGhlIGZvbGxvd2luZyBkZXBlbmRhbnQgc3RhY2tzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHN0YWNrcyB0byBydW46ICR7bWlzc2luZ0RlcGVuZGFudHMuam9pbihcbiAgICAgICAgXCIsIFwiLFxuICAgICAgKX0uIEVpdGhlciBhZGQgdGhlbSBvciBhZGQgdGhlIC0taWdub3JlLW1pc3Npbmctc3RhY2stZGVwZW5kZW5jaWVzIGZsYWcuYCxcbiAgICApO1xuICB9XG59XG5cbi8qKiBcbiAgVGhyb3dzIGFuIGVycm9yIGlmIHRoZXJlIGlzIGEgZGVwZW5kZW5jeSB0aGF0IGlzIG5vdCBpbmNsdWRlZFxuICBDeWNsZXMgYXJlIGRldGVjdGVkIG9uIGRlcGVuZGVuY3kgY3JlYXRpb24gYXQgc3ludGhlc2lzIHRpbWVcbiAgUnVubmluZyB0aGlzIHByZXZlbnRzIHVzIGZyb20gYmVpbmcgaW4gYSBzaXR1YXRpb24gd2hlcmUgd2UgXG4gIGhhdmUgdG8gd2FpdCBmb3IgYSBzdGFjayB0byBiZSBkZXBsb3llZCB0aGF0IGlzIG5vdCBpbmNsdWRlZCB0byBiZSBydW5cbiovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tJZkFsbERlcGVuZGVuY2llc0FyZUluY2x1ZGVkKFxuICBzdGFja3NUb1J1bjogU3ludGhlc2l6ZWRTdGFja1tdLFxuKSB7XG4gIGNvbnN0IGFsbERlcGVuZGVuY2llcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBzdGFja3NUb1J1blxuICAgIC5tYXAoKHN0YWNrKSA9PiBzdGFjay5kZXBlbmRlbmNpZXMpXG4gICAgLmZsYXQoKVxuICAgIC5mb3JFYWNoKChkZXBlbmRlbmN5KSA9PiBhbGxEZXBlbmRlbmNpZXMuYWRkKGRlcGVuZGVuY3kpKTtcblxuICBjb25zdCBzdGFja05hbWVzID0gc3RhY2tzVG9SdW4ubWFwKChzdGFjaykgPT4gc3RhY2submFtZSk7XG4gIGNvbnN0IG1pc3NpbmdEZXBlbmRlbmNpZXMgPSBbLi4uYWxsRGVwZW5kZW5jaWVzXS5maWx0ZXIoXG4gICAgKGRlcGVuZGVuY3kpID0+ICFzdGFja05hbWVzLmluY2x1ZGVzKGRlcGVuZGVuY3kpLFxuICApO1xuXG4gIGlmIChtaXNzaW5nRGVwZW5kZW5jaWVzLmxlbmd0aCA+IDApIHtcbiAgICB0aHJvdyBFcnJvcnMuVXNhZ2UoXG4gICAgICBgVGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgc3RhY2tzIHRvIHJ1bjogJHttaXNzaW5nRGVwZW5kZW5jaWVzLmpvaW4oXG4gICAgICAgIFwiLCBcIixcbiAgICAgICl9LiBFaXRoZXIgYWRkIHRoZW0gb3IgYWRkIHRoZSAtLWlnbm9yZS1taXNzaW5nLXN0YWNrLWRlcGVuZGVuY2llcyBmbGFnLmAsXG4gICAgKTtcbiAgfVxufVxuIl19
|
package/src/lib/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC1E,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,mBAAmB,GACpB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,iBAAiB,EACjB,2BAA2B,EAC3B,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,GAChB,MAAM,oBAAoB,CAAC"}
|
package/src/lib/init.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["init.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,EAAE,MAAM,CAAC;CACjC;AACD,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,aAAa,CAAC;AAEnD,MAAM,MAAM,QAAQ,GAAG;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,YAAY,QAAgD,CAAC;AAK1E,eAAO,MAAM,SAAS,EAAE,MAAM,EAAO,CAAC;AAKtC,wBAAsB,IAAI,CAAC,EACzB,YAAY,EACZ,WAAW,EACX,IAAI,EACJ,SAAS,EACT,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,MAAM,GACP,EAAE,QAAQ,oBA4BV;AAED,MAAM,WAAW,IAAI;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AACD,wBAAsB,aAAa,CACjC,OAAO,GAAE,MAAoB,EAC7B,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAqEf"}
|
package/src/lib/init.js
DELETED
|
@@ -1,131 +0,0 @@
|
|
|
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 (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.determineDeps = exports.init = exports.templates = exports.templatesDir = void 0;
|
|
27
|
-
// Copyright (c) HashiCorp, Inc
|
|
28
|
-
// SPDX-License-Identifier: MPL-2.0
|
|
29
|
-
const path = __importStar(require("path"));
|
|
30
|
-
const fs = __importStar(require("fs-extra"));
|
|
31
|
-
const pkgUp = __importStar(require("pkg-up"));
|
|
32
|
-
const commons_1 = require("@cdktn/commons");
|
|
33
|
-
const sscaff_1 = require("sscaff");
|
|
34
|
-
const features_1 = require("cdktn/lib/features");
|
|
35
|
-
const cdktf_config_1 = require("./cdktf-config");
|
|
36
|
-
const provider_add_1 = require("./provider-add");
|
|
37
|
-
const readPackageJson = () => {
|
|
38
|
-
const pkgPath = pkgUp.sync({ cwd: __dirname });
|
|
39
|
-
if (!pkgPath) {
|
|
40
|
-
throw new Error("unable to find package.json");
|
|
41
|
-
}
|
|
42
|
-
return JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
|
|
43
|
-
};
|
|
44
|
-
const pkg = readPackageJson();
|
|
45
|
-
const constructsVersion = pkg.dependencies.constructs;
|
|
46
|
-
exports.templatesDir = path.join(__dirname, "..", "..", "templates");
|
|
47
|
-
const availableTemplates = fs
|
|
48
|
-
.readdirSync(exports.templatesDir)
|
|
49
|
-
.filter((x) => !x.startsWith("."));
|
|
50
|
-
exports.templates = [];
|
|
51
|
-
for (const template of availableTemplates) {
|
|
52
|
-
exports.templates.push(template);
|
|
53
|
-
}
|
|
54
|
-
async function init({ cdktfVersion, destination, dist, projectId, projectInfo, templatePath, sendCrashReports, providers, providersForceLocal, silent, }) {
|
|
55
|
-
const deps = await determineDeps(cdktfVersion, dist);
|
|
56
|
-
const futureFlags = Object.entries(features_1.FUTURE_FLAGS)
|
|
57
|
-
.map(([key, value]) => ` "${key}": "${value}"`)
|
|
58
|
-
.join(`,\n`);
|
|
59
|
-
await (0, sscaff_1.sscaff)(templatePath, destination, {
|
|
60
|
-
...deps,
|
|
61
|
-
...projectInfo,
|
|
62
|
-
futureFlags,
|
|
63
|
-
projectId,
|
|
64
|
-
sendCrashReports,
|
|
65
|
-
silent,
|
|
66
|
-
});
|
|
67
|
-
const cdktfConfig = cdktf_config_1.CdktfConfig.read(destination);
|
|
68
|
-
let needsGet = false;
|
|
69
|
-
if (providers && providers.length) {
|
|
70
|
-
needsGet = await (0, provider_add_1.providerAdd)({
|
|
71
|
-
providers: providers,
|
|
72
|
-
language: cdktfConfig.language,
|
|
73
|
-
projectDirectory: destination,
|
|
74
|
-
forceLocal: providersForceLocal,
|
|
75
|
-
dist,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
return needsGet;
|
|
79
|
-
}
|
|
80
|
-
exports.init = init;
|
|
81
|
-
async function determineDeps(version = pkg.version, dist) {
|
|
82
|
-
// TS: cdktf-0.10.1-dev.2160938258
|
|
83
|
-
// Py: cdktf-0.10.1.dev1658821493.whl
|
|
84
|
-
const pythonVersion = version
|
|
85
|
-
.replace(/-pre\./g, ".dev")
|
|
86
|
-
.replace(/-dev\./g, ".dev");
|
|
87
|
-
if (dist) {
|
|
88
|
-
// TODO: What about existing cdktf TS/PY dependencies?
|
|
89
|
-
const ret = {
|
|
90
|
-
npm_cdktf: path.resolve(dist, "js", `cdktn@${version}.jsii.tgz`),
|
|
91
|
-
npm_cdktf_cli: path.resolve(dist, "js", `cdktn-cli-${version}.tgz`),
|
|
92
|
-
pypi_cdktf: path.resolve(dist, "python", `cdktn-${pythonVersion}-py3-none-any.whl`),
|
|
93
|
-
mvn_cdktf: path.resolve(dist, "java", `io/cdktn/cdktn/${version}/cdktn-${version}.jar`),
|
|
94
|
-
nuget_cdktf: path.resolve(dist, "dotnet", `Io.Cdktn.${version}.nupkg`),
|
|
95
|
-
go_cdktf: path.resolve(dist, "go", `cdktn`),
|
|
96
|
-
};
|
|
97
|
-
for (const file of Object.values(ret)) {
|
|
98
|
-
if (!(await fs.pathExists(file))) {
|
|
99
|
-
throw commons_1.Errors.Internal(`unable to find ${file} under the "dist" directory (${dist})`, new Error(), { version });
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
const versions = {
|
|
103
|
-
cdktf_version: version,
|
|
104
|
-
constructs_version: constructsVersion,
|
|
105
|
-
};
|
|
106
|
-
return {
|
|
107
|
-
...ret,
|
|
108
|
-
...versions,
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
if (version === "0.0.0") {
|
|
112
|
-
throw commons_1.Errors.Usage(`cannot use version 0.0.0, use --cdktf-version, --dist or CDKTF_DIST to install from a "dist" directory`);
|
|
113
|
-
}
|
|
114
|
-
// determine if we want a specific pinned version or a version range we take
|
|
115
|
-
// a pinned version if version includes a hyphen which means it is a
|
|
116
|
-
// pre-release (e.g. "0.12.0-pre.e6834d3"). otherwise, we require a caret
|
|
117
|
-
// version.
|
|
118
|
-
const ver = version.includes("-") ? version : `^${version}`;
|
|
119
|
-
return {
|
|
120
|
-
cdktf_version: version,
|
|
121
|
-
constructs_version: constructsVersion,
|
|
122
|
-
npm_cdktf: `cdktn@${ver}`,
|
|
123
|
-
npm_cdktf_cli: `cdktn-cli@${ver}`,
|
|
124
|
-
pypi_cdktf: `cdktn~=${pythonVersion}`,
|
|
125
|
-
mvn_cdktf: version,
|
|
126
|
-
nuget_cdktf: version,
|
|
127
|
-
go_cdktf: `v${version}`,
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
exports.determineDeps = determineDeps;
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImluaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQkFBK0I7QUFDL0IsbUNBQW1DO0FBQ25DLDJDQUE2QjtBQUM3Qiw2Q0FBK0I7QUFDL0IsOENBQWdDO0FBQ2hDLDRDQUF3QztBQUV4QyxtQ0FBZ0M7QUFDaEMsaURBQWtEO0FBQ2xELGlEQUE2QztBQUM3QyxpREFBNkM7QUFFN0MsTUFBTSxlQUFlLEdBQUcsR0FBRyxFQUFFO0lBQzNCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUMvQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELENBQUMsQ0FBQztBQUNGLE1BQU0sR0FBRyxHQUFHLGVBQWUsRUFBRSxDQUFDO0FBQzlCLE1BQU0saUJBQWlCLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUM7QUEyQnpDLFFBQUEsWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFFMUUsTUFBTSxrQkFBa0IsR0FBRyxFQUFFO0tBQzFCLFdBQVcsQ0FBQyxvQkFBWSxDQUFDO0tBQ3pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDeEIsUUFBQSxTQUFTLEdBQWEsRUFBRSxDQUFDO0FBQ3RDLEtBQUssTUFBTSxRQUFR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Q0FBQyxRQUFRLENBQ25CLGtCQUFrQixJQUFJLGdDQUFnQyxJQUFJLEdBQUcsRUFDN0QsSUFBSSxLQUFLLEVBQUUsRUFDWCxFQUFFLE9BQU8sRUFBRSxDQUNaLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHO1lBQ2YsYUFBYSxFQUFFLE9BQU87WUFDdEIsa0JBQWtCLEVBQUUsaUJBQWlCO1NBQ3RDLENBQUM7UUFFRixPQUFPO1lBQ0wsR0FBRyxHQUFHO1lBQ04sR0FBRyxRQUFRO1NBQ1osQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLE9BQU8sS0FBSyxPQUFPLEVBQUUsQ0FBQztRQUN4QixNQUFNLGdCQUFNLENBQUMsS0FBSyxDQUNoQix3R0FBd0csQ0FDekcsQ0FBQztJQUNKLENBQUM7SUFFRCw0RUFBNEU7SUFDNUUsb0VBQW9FO0lBQ3BFLHlFQUF5RTtJQUN6RSxXQUFXO0lBQ1gsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBRTVELE9BQU87UUFDTCxhQUFhLEVBQUUsT0FBTztRQUN0QixrQkFBa0IsRUFBRSxpQkFBaUI7UUFDckMsU0FBUyxFQUFFLFNBQVMsR0FBRyxFQUFFO1FBQ3pCLGFBQWEsRUFBRSxhQUFhLEdBQUcsRUFBRTtRQUNqQyxVQUFVLEVBQUUsVUFBVSxhQUFhLEVBQUU7UUFDckMsU0FBUyxFQUFFLE9BQU87UUFDbEIsV0FBVyxFQUFFLE9BQU87UUFDcEIsUUFBUSxFQUFFLElBQUksT0FBTyxFQUFFO0tBQ3hCLENBQUM7QUFDSixDQUFDO0FBeEVELHNDQXdFQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgSGFzaGlDb3JwLCBJbmNcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNUEwtMi4wXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCAqIGFzIHBrZ1VwIGZyb20gXCJwa2ctdXBcIjtcbmltcG9ydCB7IEVycm9ycyB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuXG5pbXBvcnQgeyBzc2NhZmYgfSBmcm9tIFwic3NjYWZmXCI7XG5pbXBvcnQgeyBGVVRVUkVfRkxBR1MgfSBmcm9tIFwiY2RrdG4vbGliL2ZlYXR1cmVzXCI7XG5pbXBvcnQgeyBDZGt0ZkNvbmZpZyB9IGZyb20gXCIuL2Nka3RmLWNvbmZpZ1wiO1xuaW1wb3J0IHsgcHJvdmlkZXJBZGQgfSBmcm9tIFwiLi9wcm92aWRlci1hZGRcIjtcblxuY29uc3QgcmVhZFBhY2thZ2VKc29uID0gKCkgPT4ge1xuICBjb25zdCBwa2dQYXRoID0gcGtnVXAuc3luYyh7IGN3ZDogX19kaXJuYW1lIH0pO1xuICBpZiAoIXBrZ1BhdGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1bmFibGUgdG8gZmluZCBwYWNrYWdlLmpzb25cIik7XG4gIH1cblxuICByZXR1cm4gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMocGtnUGF0aCwgXCJ1dGYtOFwiKSk7XG59O1xuY29uc3QgcGtnID0gcmVhZFBhY2thZ2VKc29uKCk7XG5jb25zdCBjb25zdHJ1Y3RzVmVyc2lvbiA9IHBrZy5kZXBlbmRlbmNpZXMuY29uc3RydWN0cztcblxuZXhwb3J0IGludGVyZmFjZSBMb2NhbFByb2plY3Qge1xuICBEZXNjcmlwdGlvbjogc3RyaW5nO1xuICBOYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVtb3RlUHJvamVjdCBleHRlbmRzIExvY2FsUHJvamVjdCB7XG4gIE9yZ2FuaXphdGlvbk5hbWU6IHN0cmluZztcbiAgV29ya3NwYWNlTmFtZTogc3RyaW5nO1xuICBUZXJyYWZvcm1SZW1vdGVIb3N0bmFtZTogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgUHJvamVjdCA9IExvY2FsUHJvamVjdCB8IFJlbW90ZVByb2plY3Q7XG5cbmV4cG9ydCB0eXBlIEluaXRBcmdzID0ge1xuICBjZGt0ZlZlcnNpb24/OiBzdHJpbmc7XG4gIGRlc3RpbmF0aW9uOiBzdHJpbmc7XG4gIGRpc3Q/OiBzdHJpbmc7XG4gIHByb3ZpZGVycz86IHN0cmluZ1tdO1xuICBwcm92aWRlcnNGb3JjZUxvY2FsPzogYm9vbGVhbjtcbiAgcHJvamVjdElkOiBzdHJpbmc7XG4gIHByb2plY3RJbmZvOiBQcm9qZWN0O1xuICB0ZW1wbGF0ZVBhdGg6IHN0cmluZztcbiAgc2VuZENyYXNoUmVwb3J0czogYm9vbGVhbjtcbiAgc2lsZW50PzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCB0ZW1wbGF0ZXNEaXIgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uXCIsIFwiLi5cIiwgXCJ0ZW1wbGF0ZXNcIik7XG5cbmNvbnN0IGF2YWlsYWJsZVRlbXBsYXRlcyA9IGZzXG4gIC5yZWFkZGlyU3luYyh0ZW1wbGF0ZXNEaXIpXG4gIC5maWx0ZXIoKHgpID0+ICF4LnN0YXJ0c1dpdGgoXCIuXCIpKTtcbmV4cG9ydCBjb25zdCB0ZW1wbGF0ZXM6IHN0cmluZ1tdID0gW107XG5mb3IgKGNvbnN0IHRlbXBsYXRlIG9mIGF2YWlsYWJsZVRlbXBsYXRlcykge1xuICB0ZW1wbGF0ZXMucHVzaCh0ZW1wbGF0ZSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbml0KHtcbiAgY2RrdGZWZXJzaW9uLFxuICBkZXN0aW5hdGlvbixcbiAgZGlzdCxcbiAgcHJvamVjdElkLFxuICBwcm9qZWN0SW5mbyxcbiAgdGVtcGxhdGVQYXRoLFxuICBzZW5kQ3Jhc2hSZXBvcnRzLFxuICBwcm92aWRlcnMsXG4gIHByb3ZpZGVyc0ZvcmNlTG9jYWwsXG4gIHNpbGVudCxcbn06IEluaXRBcmdzKSB7XG4gIGNvbnN0IGRlcHM6IGFueSA9IGF3YWl0IGRldGVybWluZURlcHMoY2RrdGZWZXJzaW9uLCBkaXN0KTtcblxuICBjb25zdCBmdXR1cmVGbGFncyA9IE9iamVjdC5lbnRyaWVzKEZVVFVSRV9GTEFHUylcbiAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAgICAgXCIke2tleX1cIjogXCIke3ZhbHVlfVwiYClcbiAgICAuam9pbihgLFxcbmApO1xuXG4gIGF3YWl0IHNzY2FmZih0ZW1wbGF0ZVBhdGgsIGRlc3RpbmF0aW9uLCB7XG4gICAgLi4uZGVwcyxcbiAgICAuLi5wcm9qZWN0SW5mbyxcbiAgICBmdXR1cmVGbGFncyxcbiAgICBwcm9qZWN0SWQsXG4gICAgc2VuZENyYXNoUmVwb3J0cyxcbiAgICBzaWxlbnQsXG4gIH0pO1xuICBjb25zdCBjZGt0ZkNvbmZpZyA9IENka3RmQ29uZmlnLnJlYWQoZGVzdGluYXRpb24pO1xuXG4gIGxldCBuZWVkc0dldCA9IGZhbHNlO1xuICBpZiAocHJvdmlkZXJzICYmIHByb3ZpZGVycy5sZW5ndGgpIHtcbiAgICBuZWVkc0dldCA9IGF3YWl0IHByb3ZpZGVyQWRkKHtcbiAgICAgIHByb3ZpZGVyczogcHJvdmlkZXJzLFxuICAgICAgbGFuZ3VhZ2U6IGNka3RmQ29uZmlnLmxhbmd1YWdlLFxuICAgICAgcHJvamVjdERpcmVjdG9yeTogZGVzdGluYXRpb24sXG4gICAgICBmb3JjZUxvY2FsOiBwcm92aWRlcnNGb3JjZUxvY2FsLFxuICAgICAgZGlzdCxcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbmVlZHNHZXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVwcyB7XG4gIG5wbV9jZGt0Zjogc3RyaW5nO1xuICBucG1fY2RrdGZfY2xpOiBzdHJpbmc7XG4gIHB5cGlfY2RrdGY6IHN0cmluZztcbiAgbXZuX2Nka3RmOiBzdHJpbmc7XG4gIG51Z2V0X2Nka3RmOiBzdHJpbmc7XG4gIGdvX2Nka3RmOiBzdHJpbmc7XG4gIGNka3RmX3ZlcnNpb246IHN0cmluZztcbiAgY29uc3RydWN0c192ZXJzaW9uOiBzdHJpbmc7XG59XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZGV0ZXJtaW5lRGVwcyhcbiAgdmVyc2lvbjogc3RyaW5nID0gcGtnLnZlcnNpb24sXG4gIGRpc3Q/OiBzdHJpbmcsXG4pOiBQcm9taXNlPERlcHM+IHtcbiAgLy8gVFM6IGNka3RmLTAuMTAuMS1kZXYuMjE2MDkzODI1OFxuICAvLyBQeTogY2RrdGYtMC4xMC4xLmRldjE2NTg4MjE0OTMud2hsXG4gIGNvbnN0IHB5dGhvblZlcnNpb24gPSB2ZXJzaW9uXG4gICAgLnJlcGxhY2UoLy1wcmVcXC4vZywgXCIuZGV2XCIpXG4gICAgLnJlcGxhY2UoLy1kZXZcXC4vZywgXCIuZGV2XCIpO1xuXG4gIGlmIChkaXN0KSB7XG4gICAgLy8gVE9ETzogV2hhdCBhYm91dCBleGlzdGluZyBjZGt0ZiBUUy9QWSBkZXBlbmRlbmNpZXM/XG4gICAgY29uc3QgcmV0ID0ge1xuICAgICAgbnBtX2Nka3RmOiBwYXRoLnJlc29sdmUoZGlzdCwgXCJqc1wiLCBgY2RrdG5AJHt2ZXJzaW9ufS5qc2lpLnRnemApLFxuICAgICAgbnBtX2Nka3RmX2NsaTogcGF0aC5yZXNvbHZlKGRpc3QsIFwianNcIiwgYGNka3RuLWNsaS0ke3ZlcnNpb259LnRnemApLFxuICAgICAgcHlwaV9jZGt0ZjogcGF0aC5yZXNvbHZlKFxuICAgICAgICBkaXN0LFxuICAgICAgICBcInB5dGhvblwiLFxuICAgICAgICBgY2RrdG4tJHtweXRob25WZXJzaW9ufS1weTMtbm9uZS1hbnkud2hsYCxcbiAgICAgICksXG4gICAgICBtdm5fY2RrdGY6IHBhdGgucmVzb2x2ZShcbiAgICAgICAgZGlzdCxcbiAgICAgICAgXCJqYXZhXCIsXG4gICAgICAgIGBpby9jZGt0bi9jZGt0bi8ke3ZlcnNpb259L2Nka3RuLSR7dmVyc2lvbn0uamFyYCxcbiAgICAgICksXG4gICAgICBudWdldF9jZGt0ZjogcGF0aC5yZXNvbHZlKGRpc3QsIFwiZG90bmV0XCIsIGBJby5DZGt0bi4ke3ZlcnNpb259Lm51cGtnYCksXG4gICAgICBnb19jZGt0ZjogcGF0aC5yZXNvbHZlKGRpc3QsIFwiZ29cIiwgYGNka3RuYCksXG4gICAgfTtcblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBPYmplY3QudmFsdWVzKHJldCkpIHtcbiAgICAgIGlmICghKGF3YWl0IGZzLnBhdGhFeGlzdHMoZmlsZSkpKSB7XG4gICAgICAgIHRocm93IEVycm9ycy5JbnRlcm5hbChcbiAgICAgICAgICBgdW5hYmxlIHRvIGZpbmQgJHtmaWxlfSB1bmRlciB0aGUgXCJkaXN0XCIgZGlyZWN0b3J5ICgke2Rpc3R9KWAsXG4gICAgICAgICAgbmV3IEVycm9yKCksXG4gICAgICAgICAgeyB2ZXJzaW9uIH0sXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdmVyc2lvbnMgPSB7XG4gICAgICBjZGt0Zl92ZXJzaW9uOiB2ZXJzaW9uLFxuICAgICAgY29uc3RydWN0c192ZXJzaW9uOiBjb25zdHJ1Y3RzVmVyc2lvbixcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnJldCxcbiAgICAgIC4uLnZlcnNpb25zLFxuICAgIH07XG4gIH1cblxuICBpZiAodmVyc2lvbiA9PT0gXCIwLjAuMFwiKSB7XG4gICAgdGhyb3cgRXJyb3JzLlVzYWdlKFxuICAgICAgYGNhbm5vdCB1c2UgdmVyc2lvbiAwLjAuMCwgdXNlIC0tY2RrdGYtdmVyc2lvbiwgLS1kaXN0IG9yIENES1RGX0RJU1QgdG8gaW5zdGFsbCBmcm9tIGEgXCJkaXN0XCIgZGlyZWN0b3J5YCxcbiAgICApO1xuICB9XG5cbiAgLy8gZGV0ZXJtaW5lIGlmIHdlIHdhbnQgYSBzcGVjaWZpYyBwaW5uZWQgdmVyc2lvbiBvciBhIHZlcnNpb24gcmFuZ2Ugd2UgdGFrZVxuICAvLyBhIHBpbm5lZCB2ZXJzaW9uIGlmIHZlcnNpb24gaW5jbHVkZXMgYSBoeXBoZW4gd2hpY2ggbWVhbnMgaXQgaXMgYVxuICAvLyBwcmUtcmVsZWFzZSAoZS5nLiBcIjAuMTIuMC1wcmUuZTY4MzRkM1wiKS4gb3RoZXJ3aXNlLCB3ZSByZXF1aXJlIGEgY2FyZXRcbiAgLy8gdmVyc2lvbi5cbiAgY29uc3QgdmVyID0gdmVyc2lvbi5pbmNsdWRlcyhcIi1cIikgPyB2ZXJzaW9uIDogYF4ke3ZlcnNpb259YDtcblxuICByZXR1cm4ge1xuICAgIGNka3RmX3ZlcnNpb246IHZlcnNpb24sXG4gICAgY29uc3RydWN0c192ZXJzaW9uOiBjb25zdHJ1Y3RzVmVyc2lvbixcbiAgICBucG1fY2RrdGY6IGBjZGt0bkAke3Zlcn1gLFxuICAgIG5wbV9jZGt0Zl9jbGk6IGBjZGt0bi1jbGlAJHt2ZXJ9YCxcbiAgICBweXBpX2Nka3RmOiBgY2RrdG5+PSR7cHl0aG9uVmVyc2lvbn1gLFxuICAgIG12bl9jZGt0ZjogdmVyc2lvbixcbiAgICBudWdldF9jZGt0ZjogdmVyc2lvbixcbiAgICBnb19jZGt0ZjogYHYke3ZlcnNpb259YCxcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local-provider-constraints.d.ts","sourceRoot":"","sources":["local-provider-constraints.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,QAAA,MAAM,eAAe;;;;;;;;;EAGnB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAI1D;;;GAGG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,WAAW,CAA0B;IAE7C,OAAO,KAAK,YAAY,GAGvB;YAEa,wBAAwB;IA+BzB,0BAA0B;;;;IAU1B,qBAAqB,CAChC,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAe1B"}
|
|
@@ -1,95 +0,0 @@
|
|
|
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 (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.LocalProviderConstraints = void 0;
|
|
30
|
-
// Copyright (c) HashiCorp, Inc
|
|
31
|
-
// SPDX-License-Identifier: MPL-2.0
|
|
32
|
-
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
33
|
-
const path_1 = __importDefault(require("path"));
|
|
34
|
-
const commons_1 = require("@cdktn/commons");
|
|
35
|
-
const cdktf_config_1 = require("./cdktf-config");
|
|
36
|
-
const z = __importStar(require("zod"));
|
|
37
|
-
const constraintsType = z.object({
|
|
38
|
-
cdktf: z.string(),
|
|
39
|
-
providers: z.record(z.string()),
|
|
40
|
-
});
|
|
41
|
-
// TODO: move this to @cdktn/commons
|
|
42
|
-
// tracked here https://github.com/hashicorp/terraform-cdk/issues/1814
|
|
43
|
-
/**
|
|
44
|
-
* Class to help with reading `constraints.json` file
|
|
45
|
-
* published by `provider get` or `provider add` commands
|
|
46
|
-
*/
|
|
47
|
-
class LocalProviderConstraints {
|
|
48
|
-
get jsonFilePath() {
|
|
49
|
-
const config = cdktf_config_1.CdktfConfig.read();
|
|
50
|
-
return path_1.default.resolve(config.codeMakerOutput, "constraints.json");
|
|
51
|
-
}
|
|
52
|
-
async readLocalConstraintsJson() {
|
|
53
|
-
let constraintsJson;
|
|
54
|
-
try {
|
|
55
|
-
constraintsJson = await fs_extra_1.default.readFile(this.jsonFilePath, "utf8");
|
|
56
|
-
}
|
|
57
|
-
catch (e) {
|
|
58
|
-
// If we cannot read the constraints.json file, it may not exist
|
|
59
|
-
commons_1.logger.debug("constraints.json file reading error: ", e);
|
|
60
|
-
this.constraints = undefined;
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
let providerConstraints;
|
|
64
|
-
try {
|
|
65
|
-
providerConstraints = constraintsType.parse(JSON.parse(constraintsJson));
|
|
66
|
-
providerConstraints.providers = Object.fromEntries(Object.entries(providerConstraints.providers).map(([name, constraint]) => {
|
|
67
|
-
return [name.toLowerCase(), constraint];
|
|
68
|
-
}));
|
|
69
|
-
}
|
|
70
|
-
catch (e) {
|
|
71
|
-
throw commons_1.Errors.External("constraints.json file is malformed. The root must be a JSON object.", e);
|
|
72
|
-
}
|
|
73
|
-
this.constraints = providerConstraints;
|
|
74
|
-
}
|
|
75
|
-
async constraintsForAllProviders() {
|
|
76
|
-
if (this.constraints) {
|
|
77
|
-
return this.constraints;
|
|
78
|
-
}
|
|
79
|
-
await this.readLocalConstraintsJson();
|
|
80
|
-
return this.constraints;
|
|
81
|
-
}
|
|
82
|
-
async constraintForProvider(providerName) {
|
|
83
|
-
const constraints = await this.constraintsForAllProviders();
|
|
84
|
-
if (!constraints) {
|
|
85
|
-
return null;
|
|
86
|
-
}
|
|
87
|
-
const providerConstraint = constraints.providers[providerName.toLowerCase()];
|
|
88
|
-
if (!providerName) {
|
|
89
|
-
return null;
|
|
90
|
-
}
|
|
91
|
-
return providerConstraint;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
exports.LocalProviderConstraints = LocalProviderConstraints;
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtcHJvdmlkZXItY29uc3RyYWludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJsb2NhbC1wcm92aWRlci1jb25zdHJhaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtCQUErQjtBQUMvQixtQ0FBbUM7QUFDbkMsd0RBQTBCO0FBQzFCLGdEQUF3QjtBQUN4Qiw0Q0FBZ0Q7QUFDaEQsaURBQTZDO0FBRTdDLHVDQUF5QjtBQUV6QixNQUFNLGVBQWUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQy9CLEtBQUssRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2pCLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztDQUNoQyxDQUFDLENBQUM7QUFJSCxvQ0FBb0M7QUFDcEMsc0VBQXNFO0FBQ3RFOzs7R0FHRztBQUNILE1BQWEsd0JBQXdCO0lBR25DLElBQVksWUFBWTtRQUN0QixNQUFNLE1BQU0sR0FBRywwQkFBVyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2xDLE9BQU8sY0FBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLEtBQUssQ0FBQyx3QkFBd0I7UUFDcEMsSUFBSSxlQUFlLENBQUM7UUFDcEIsSUFBSSxDQUFDO1lBQ0gsZUFBZSxHQUFHLE1BQU0sa0JBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLGdFQUFnRTtZQUNoRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN6RCxJQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztZQUM3QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksbUJBQW1CLENBQUM7UUFDeEIsSUFBSSxDQUFDO1lBQ0gsbUJBQW1CLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFDekUsbUJBQW1CLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ2hELE1BQU0sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUMvQyxDQUFDLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUNGLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sZ0JBQU0sQ0FBQyxRQUFRLENBQ25CLHFFQUFxRSxFQUNyRSxDQUFDLENBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLG1CQUFtQixDQUFDO0lBQ3pDLENBQUM7SUFFTSxLQUFLLENBQUMsMEJBQTBCO1FBQ3JDLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxQixDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztRQUV0QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUVNLEtBQUssQ0FBQyxxQkFBcUIsQ0FDaEMsWUFBb0I7UUFFcEIsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUU1RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxrQkFBa0IsR0FDdEIsV0FBVyxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDbEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxrQkFBa0IsQ0FBQztJQUM1QixDQUFDO0NBQ0Y7QUFsRUQsNERBa0VDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSBIYXNoaUNvcnAsIEluY1xuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1QTC0yLjBcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgeyBFcnJvcnMsIGxvZ2dlciB9IGZyb20gXCJAY2RrdG4vY29tbW9uc1wiO1xuaW1wb3J0IHsgQ2RrdGZDb25maWcgfSBmcm9tIFwiLi9jZGt0Zi1jb25maWdcIjtcblxuaW1wb3J0ICogYXMgeiBmcm9tIFwiem9kXCI7XG5cbmNvbnN0IGNvbnN0cmFpbnRzVHlwZSA9IHoub2JqZWN0KHtcbiAgY2RrdGY6IHouc3RyaW5nKCksXG4gIHByb3ZpZGVyczogei5yZWNvcmQoei5zdHJpbmcoKSksXG59KTtcblxuZXhwb3J0IHR5cGUgQ29uc3RyYWludHMgPSB6LmluZmVyPHR5cGVvZiBjb25zdHJhaW50c1R5cGU+O1xuXG4vLyBUT0RPOiBtb3ZlIHRoaXMgdG8gQGNka3RuL2NvbW1vbnNcbi8vIHRyYWNrZWQgaGVyZSBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1jZGsvaXNzdWVzLzE4MTRcbi8qKlxuICogQ2xhc3MgdG8gaGVscCB3aXRoIHJlYWRpbmcgYGNvbnN0cmFpbnRzLmpzb25gIGZpbGVcbiAqIHB1Ymxpc2hlZCBieSBgcHJvdmlkZXIgZ2V0YCBvciBgcHJvdmlkZXIgYWRkYCBjb21tYW5kc1xuICovXG5leHBvcnQgY2xhc3MgTG9jYWxQcm92aWRlckNvbnN0cmFpbnRzIHtcbiAgcHJpdmF0ZSBjb25zdHJhaW50czogQ29uc3RyYWludHMgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBnZXQganNvbkZpbGVQYXRoKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29uZmlnID0gQ2RrdGZDb25maWcucmVhZCgpO1xuICAgIHJldHVybiBwYXRoLnJlc29sdmUoY29uZmlnLmNvZGVNYWtlck91dHB1dCwgXCJjb25zdHJhaW50cy5qc29uXCIpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWFkTG9jYWxDb25zdHJhaW50c0pzb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IGNvbnN0cmFpbnRzSnNvbjtcbiAgICB0cnkge1xuICAgICAgY29uc3RyYWludHNKc29uID0gYXdhaXQgZnMucmVhZEZpbGUodGhpcy5qc29uRmlsZVBhdGgsIFwidXRmOFwiKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBJZiB3ZSBjYW5ub3QgcmVhZCB0aGUgY29uc3RyYWludHMuanNvbiBmaWxlLCBpdCBtYXkgbm90IGV4aXN0XG4gICAgICBsb2dnZXIuZGVidWcoXCJjb25zdHJhaW50cy5qc29uIGZpbGUgcmVhZGluZyBlcnJvcjogXCIsIGUpO1xuICAgICAgdGhpcy5jb25zdHJhaW50cyA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgcHJvdmlkZXJDb25zdHJhaW50cztcbiAgICB0cnkge1xuICAgICAgcHJvdmlkZXJDb25zdHJhaW50cyA9IGNvbnN0cmFpbnRzVHlwZS5wYXJzZShKU09OLnBhcnNlKGNvbnN0cmFpbnRzSnNvbikpO1xuICAgICAgcHJvdmlkZXJDb25zdHJhaW50cy5wcm92aWRlcnMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByb3ZpZGVyQ29uc3RyYWludHMucHJvdmlkZXJzKS5tYXAoXG4gICAgICAgICAgKFtuYW1lLCBjb25zdHJhaW50XSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIFtuYW1lLnRvTG93ZXJDYXNlKCksIGNvbnN0cmFpbnRdO1xuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgRXJyb3JzLkV4dGVybmFsKFxuICAgICAgICBcImNvbnN0cmFpbnRzLmpzb24gZmlsZSBpcyBtYWxmb3JtZWQuIFRoZSByb290IG11c3QgYmUgYSBKU09OIG9iamVjdC5cIixcbiAgICAgICAgZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5jb25zdHJhaW50cyA9IHByb3ZpZGVyQ29uc3RyYWludHM7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY29uc3RyYWludHNGb3JBbGxQcm92aWRlcnMoKSB7XG4gICAgaWYgKHRoaXMuY29uc3RyYWludHMpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnN0cmFpbnRzO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMucmVhZExvY2FsQ29uc3RyYWludHNKc29uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5jb25zdHJhaW50cztcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjb25zdHJhaW50Rm9yUHJvdmlkZXIoXG4gICAgcHJvdmlkZXJOYW1lOiBzdHJpbmcsXG4gICk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgIGNvbnN0IGNvbnN0cmFpbnRzID0gYXdhaXQgdGhpcy5jb25zdHJhaW50c0ZvckFsbFByb3ZpZGVycygpO1xuXG4gICAgaWYgKCFjb25zdHJhaW50cykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvdmlkZXJDb25zdHJhaW50ID1cbiAgICAgIGNvbnN0cmFpbnRzLnByb3ZpZGVyc1twcm92aWRlck5hbWUudG9Mb3dlckNhc2UoKV07XG4gICAgaWYgKCFwcm92aWRlck5hbWUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBwcm92aWRlckNvbnN0cmFpbnQ7XG4gIH1cbn1cbiJdfQ==
|