@aws-cdk/toolkit-lib 1.2.3 → 1.3.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/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/actions/diff/index.d.ts +7 -0
- package/lib/actions/diff/index.js +1 -1
- package/lib/actions/diff/private/helpers.js +7 -1
- package/lib/actions/refactor/index.d.ts +15 -34
- package/lib/actions/refactor/index.js +1 -54
- package/lib/actions/refactor/private/mapping-helpers.d.ts +11 -0
- package/lib/actions/refactor/private/mapping-helpers.js +44 -0
- package/lib/api/cloud-assembly/private/context-aware-source.js +3 -16
- package/lib/api/cloud-assembly/private/exec.js +12 -3
- package/lib/api/cloud-assembly/private/prepare-source.d.ts +29 -5
- package/lib/api/cloud-assembly/private/prepare-source.js +45 -20
- package/lib/api/cloud-assembly/source-builder.d.ts +11 -0
- package/lib/api/cloud-assembly/source-builder.js +11 -10
- package/lib/api/cloud-assembly/stack-collection.js +2 -1
- package/lib/api/diff/diff-formatter.d.ts +8 -0
- package/lib/api/diff/diff-formatter.js +29 -7
- package/lib/api/io/private/message-maker.d.ts +5 -5
- package/lib/api/io/private/messages.d.ts +1 -0
- package/lib/api/io/private/messages.js +6 -1
- package/lib/api/io/toolkit-action.d.ts +1 -1
- package/lib/api/io/toolkit-action.js +1 -1
- package/lib/api/refactoring/cloudformation.d.ts +1 -0
- package/lib/api/refactoring/cloudformation.js +6 -4
- package/lib/api/refactoring/context.d.ts +4 -5
- package/lib/api/refactoring/context.js +122 -52
- package/lib/api/refactoring/digest.d.ts +7 -12
- package/lib/api/refactoring/digest.js +22 -42
- package/lib/api/refactoring/graph.d.ts +6 -1
- package/lib/api/refactoring/graph.js +21 -8
- package/lib/api/refactoring/index.d.ts +13 -4
- package/lib/api/refactoring/index.js +38 -18
- package/lib/api/tree.js +1 -1
- package/lib/context-providers/cc-api-provider.js +23 -14
- package/lib/index_bg.wasm +0 -0
- package/lib/payloads/refactor.d.ts +1 -1
- package/lib/payloads/refactor.js +1 -1
- package/lib/payloads/stack-details.d.ts +4 -0
- package/lib/payloads/stack-details.js +1 -1
- package/lib/toolkit/toolkit.d.ts +6 -2
- package/lib/toolkit/toolkit.js +114 -79
- package/lib/toolkit/types.d.ts +7 -0
- package/lib/toolkit/types.js +1 -1
- package/lib/util/arrays.d.ts +1 -0
- package/lib/util/arrays.js +16 -1
- package/lib/util/sets.d.ts +5 -0
- package/lib/util/sets.js +18 -0
- package/package.json +9 -9
|
@@ -5,10 +5,19 @@ import type { CloudFormationStack } from './cloudformation';
|
|
|
5
5
|
import { ResourceMapping } from './cloudformation';
|
|
6
6
|
import type { MappingGroup } from '../../actions';
|
|
7
7
|
export * from './exclude';
|
|
8
|
+
export * from './context';
|
|
9
|
+
interface StackGroup {
|
|
10
|
+
environment: cxapi.Environment;
|
|
11
|
+
localStacks: CloudFormationStack[];
|
|
12
|
+
deployedStacks: CloudFormationStack[];
|
|
13
|
+
}
|
|
8
14
|
export declare function usePrescribedMappings(mappingGroups: MappingGroup[], sdkProvider: SdkProvider): Promise<ResourceMapping[]>;
|
|
9
15
|
export declare function getDeployedStacks(sdkProvider: SdkProvider, environment: cxapi.Environment): Promise<CloudFormationStack[]>;
|
|
10
|
-
export declare function
|
|
11
|
-
export declare function formatTypedMappings(
|
|
12
|
-
export declare function
|
|
13
|
-
|
|
16
|
+
export declare function formatEnvironmentSectionHeader(environment: cxapi.Environment): string;
|
|
17
|
+
export declare function formatTypedMappings(mappings: TypedMapping[]): string;
|
|
18
|
+
export declare function formatAmbiguousMappings(paths: [string[], string[]][]): string;
|
|
19
|
+
/**
|
|
20
|
+
* Returns a list of stack groups, each containing the local stacks and the deployed stacks that match the given patterns.
|
|
21
|
+
*/
|
|
22
|
+
export declare function groupStacks(sdkProvider: SdkProvider, localStacks: CloudFormationStack[], additionalStackNames: string[]): Promise<StackGroup[]>;
|
|
14
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -16,17 +16,19 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.usePrescribedMappings = usePrescribedMappings;
|
|
18
18
|
exports.getDeployedStacks = getDeployedStacks;
|
|
19
|
-
exports.
|
|
19
|
+
exports.formatEnvironmentSectionHeader = formatEnvironmentSectionHeader;
|
|
20
20
|
exports.formatTypedMappings = formatTypedMappings;
|
|
21
|
-
exports.formatAmbiguitySectionHeader = formatAmbiguitySectionHeader;
|
|
22
21
|
exports.formatAmbiguousMappings = formatAmbiguousMappings;
|
|
22
|
+
exports.groupStacks = groupStacks;
|
|
23
23
|
const cloudformation_diff_1 = require("@aws-cdk/cloudformation-diff");
|
|
24
24
|
const util_1 = require("../../util");
|
|
25
25
|
const plugin_1 = require("../plugin");
|
|
26
26
|
const streams_1 = require("../streams");
|
|
27
27
|
const cloudformation_1 = require("./cloudformation");
|
|
28
|
+
const digest_1 = require("./digest");
|
|
28
29
|
const toolkit_error_1 = require("../../toolkit/toolkit-error");
|
|
29
30
|
__exportStar(require("./exclude"), exports);
|
|
31
|
+
__exportStar(require("./context"), exports);
|
|
30
32
|
async function usePrescribedMappings(mappingGroups, sdkProvider) {
|
|
31
33
|
const stackGroups = [];
|
|
32
34
|
for (const group of mappingGroups) {
|
|
@@ -109,27 +111,45 @@ async function getDeployedStacks(sdkProvider, environment) {
|
|
|
109
111
|
// eslint-disable-next-line @cdklabs/promiseall-no-unbounded-parallelism
|
|
110
112
|
return Promise.all(summaries.map(normalize));
|
|
111
113
|
}
|
|
112
|
-
function
|
|
113
|
-
|
|
114
|
+
function formatEnvironmentSectionHeader(environment) {
|
|
115
|
+
const env = `aws://${environment.account}/${environment.region}`;
|
|
116
|
+
return formatToStream(stream => (0, cloudformation_diff_1.formatEnvironmentSectionHeader)(stream, env));
|
|
114
117
|
}
|
|
115
|
-
function formatTypedMappings(
|
|
116
|
-
return formatToStream((stream) =>
|
|
117
|
-
const env = `aws://${environment.account}/${environment.region}`;
|
|
118
|
-
(0, cloudformation_diff_1.formatTypedMappings)(stream, mappings, env);
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
function formatAmbiguitySectionHeader() {
|
|
122
|
-
return formatToStream(cloudformation_diff_1.formatAmbiguitySectionHeader);
|
|
118
|
+
function formatTypedMappings(mappings) {
|
|
119
|
+
return formatToStream((stream) => (0, cloudformation_diff_1.formatTypedMappings)(stream, mappings));
|
|
123
120
|
}
|
|
124
|
-
function formatAmbiguousMappings(
|
|
125
|
-
return formatToStream((stream) =>
|
|
126
|
-
const env = `aws://${environment.account}/${environment.region}`;
|
|
127
|
-
(0, cloudformation_diff_1.formatAmbiguousMappings)(stream, paths, env);
|
|
128
|
-
});
|
|
121
|
+
function formatAmbiguousMappings(paths) {
|
|
122
|
+
return formatToStream((stream) => (0, cloudformation_diff_1.formatAmbiguousMappings)(stream, paths));
|
|
129
123
|
}
|
|
130
124
|
function formatToStream(cb) {
|
|
131
125
|
const stream = new streams_1.StringWriteStream();
|
|
132
126
|
cb(stream);
|
|
133
127
|
return stream.toString();
|
|
134
128
|
}
|
|
135
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBb0JBLHNEQXFGQztBQUVELDhDQTRCQztBQUVELG9EQUVDO0FBRUQsa0RBS0M7QUFFRCxvRUFFQztBQUVELDBEQUtDO0FBNUpELHNFQUtzQztBQUd0QyxxQ0FBa0Q7QUFFbEQsc0NBQWlDO0FBQ2pDLHdDQUErQztBQUUvQyxxREFBcUU7QUFFckUsK0RBQTJEO0FBRTNELDRDQUEwQjtBQUVuQixLQUFLLFVBQVUscUJBQXFCLENBQ3pDLGFBQTZCLEVBQzdCLFdBQXdCO0lBTXhCLE1BQU0sV0FBVyxHQUFpQixFQUFFLENBQUM7SUFDckMsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELEtBQUssSUFBSSxLQUFLLElBQUksV0FBVyxFQUFFLENBQUM7UUFDOUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUV2QyxLQUFLLE1BQU0sV0FBVyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDekQsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sSUFBSSw0QkFBWSxDQUNwQixtQ0FBbUMsV0FBVyxvQkFBb0IsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQ2xHLENBQUM7WUFDSixDQUFDO1lBQ0QsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoQyxD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QixFQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDMUMsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBZ0IsNEJBQTRCO0lBQzFDLE9BQU8sY0FBYyxDQUFDLGtEQUF5QixDQUFDLENBQUM7QUFDbkQsQ0FBQztBQUVELFNBQWdCLHVCQUF1QixDQUFDLFdBQThCLEVBQUUsS0FBNkI7SUFDbkcsT0FBTyxjQUFjLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtRQUMvQixNQUFNLEdBQUcsR0FBRyxTQUFTLFdBQVcsQ0FBQyxPQUFPLElBQUksV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2pFLElBQUEsNkNBQW9CLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxFQUEyQztJQUNqRSxNQUFNLE1BQU0sR0FBRyxJQUFJLDJCQUFpQixFQUFFLENBQUM7SUFDdkMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ1gsT0FBTyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHlwZWRNYXBwaW5nIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWRmb3JtYXRpb24tZGlmZic7XG5pbXBvcnQge1xuICBmb3JtYXRBbWJpZ3VvdXNNYXBwaW5ncyBhcyBmbXRBbWJpZ3VvdXNNYXBwaW5ncyxcbiAgZm9ybWF0TWFwcGluZ3NIZWFkZXIgYXMgZm10TWFwcGluZ3NIZWFkZXIsXG4gIGZvcm1hdFR5cGVkTWFwcGluZ3MgYXMgZm10VHlwZWRNYXBwaW5ncyxcbiAgZm9ybWF0QW1iaWd1aXR5U2VjdGlvbkhlYWRlciBhcyBmbXRBbWJpZ3VpdHlTZWN0aW9uSGVhZGVyLFxufSBmcm9tICdAYXdzLWNkay9jbG91ZGZvcm1hdGlvbi1kaWZmJztcbmltcG9ydCB0eXBlICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB0eXBlIHsgU3RhY2tTdW1tYXJ5IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IGRlc2VyaWFsaXplU3RydWN0dXJlIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyIH0gZnJvbSAnLi4vYXdzLWF1dGgvcHJpdmF0ZSc7XG5pbXBvcnQgeyBNb2RlIH0gZnJvbSAnLi4vcGx1Z2luJztcbmltcG9ydCB7IFN0cmluZ1dyaXRlU3RyZWFtIH0gZnJvbSAnLi4vc3RyZWFtcyc7XG5pbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uU3RhY2sgfSBmcm9tICcuL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IFJlc291cmNlTG9jYXRpb24sIFJlc291cmNlTWFwcGluZyB9IGZyb20gJy4vY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBNYXBwaW5nR3JvdXAgfSBmcm9tICcuLi8uLi9hY3Rpb25zJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vZXhjbHVkZSc7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1c2VQcmVzY3JpYmVkTWFwcGluZ3MoXG4gIG1hcHBpbmdHcm91cHM6IE1hcHBpbmdHcm91cFtdLFxuICBzZGtQcm92aWRlcjogU2RrUHJvdmlkZXIsXG4pOiBQcm9taXNlPFJlc291cmNlTWFwcGluZ1tdPiB7XG4gIGludGVyZmFjZSBTdGFja0dyb3VwIGV4dGVuZHMgTWFwcGluZ0dyb3VwIHtcbiAgICBzdGFja3M6IENsb3VkRm9ybWF0aW9uU3RhY2tbXTtcbiAgfVxuXG4gIGNvbnN0IHN0YWNrR3JvdXBzOiBTdGFja0dyb3VwW10gPSBbXTtcbiAgZm9yIChjb25zdCBncm91cCBvZiBtYXBwaW5nR3JvdXBzKSB7XG4gICAgc3RhY2tHcm91cHMucHVzaCh7XG4gICAgICAuLi5ncm91cCxcbiAgICAgIHN0YWNrczogYXdhaXQgZ2V0RGVwbG95ZWRTdGFja3Moc2RrUHJvdmlkZXIsIGVudmlyb25tZW50T2YoZ3JvdXApKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIHRoYXQgdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBkZXN0aW5hdGlvbnNcbiAgZm9yIChsZXQgZ3JvdXAgb2Ygc3RhY2tHcm91cHMpIHtcbiAgICBjb25zdCBkZXN0aW5hdGlvbnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGZvciAoY29uc3QgZGVzdGluYXRpb24gb2YgT2JqZWN0LnZhbHVlcyhncm91cC5yZXNvdXJjZXMpKSB7XG4gICAgICBpZiAoZGVzdGluYXRpb25zLmhhcyhkZXN0aW5hdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihcbiAgICAgICAgICBgRHVwbGljYXRlIGRlc3RpbmF0aW9uIHJlc291cmNlICcke2Rlc3RpbmF0aW9ufScgaW4gZW52aXJvbm1lbnQgJHtncm91cC5hY2NvdW50fS8ke2dyb3VwLnJlZ2lvbn1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgZGVzdGluYXRpb25zLmFkZChkZXN0aW5hdGlvbik7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBSZXNvdXJjZU1hcHBpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGdyb3VwIG9mIHN0YWNrR3JvdXBzKSB7XG4gICAgZm9yIChjb25zdCBbc291cmNlLCBkZXN0aW5hdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMoZ3JvdXAucmVzb3VyY2VzKSkge1xuICAgICAgaWYgKCFpblVzZShzb3VyY2UsIGdyb3VwLnN0YWNrcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgU291cmNlIHJlc291cmNlICcke3NvdXJjZX0nIGRvZXMgbm90IGV4aXN0IGluIGVudmlyb25tZW50ICR7Z3JvdXAuYWNjb3VudH0vJHtncm91cC5yZWdpb259YCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpblVzZShkZXN0aW5hdGlvbiwgZ3JvdXAuc3RhY2tzKSkge1xuICAgICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKFxuICAgICAgICAgIGBEZXN0aW5hdGlvbiByZXNvdXJjZSAnJHtkZXN0aW5hdGlvbn0nIGFscmVhZHkgaW4gdXNlIGluIGVudmlyb25tZW50ICR7Z3JvdXAuYWNjb3VudH0vJHtncm91cC5yZWdpb259YCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudE9mKGdyb3VwKTtcbiAgICAgIGNvbnN0IHNyYyA9IG1ha2VMb2NhdGlvbihzb3VyY2UsIGVudmlyb25tZW50LCBncm91cC5zdGFja3MpO1xuICAgICAgY29uc3QgZHN0ID0gbWFrZUxvY2F0aW9uKGRlc3RpbmF0aW9uLCBlbnZpcm9ubWVudCk7XG4gICAgICByZXN1bHQucHVzaChuZXcgUmVzb3VyY2VNYXBwaW5nKHNyYywgZHN0KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG5cbiAgZnVuY3Rpb24gaW5Vc2UobG9jYXRpb246IHN0cmluZywgc3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBbc3RhY2tOYW1lLCBsb2dpY2FsSWRdID0gbG9jYXRpb24uc3BsaXQoJy4nKTtcbiAgICBpZiAoc3RhY2tOYW1lID09IG51bGwgfHwgbG9naWNhbElkID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYEludmFsaWQgbG9jYXRpb24gJyR7bG9jYXRpb259J2ApO1xuICAgIH1cbiAgICBjb25zdCBzdGFjayA9IHN0YWNrcy5maW5kKChzKSA9PiBzLnN0YWNrTmFtZSA9PT0gc3RhY2tOYW1lKTtcbiAgICByZXR1cm4gc3RhY2sgIT0gbnVsbCAmJiBzdGFjay50ZW1wbGF0ZS5SZXNvdXJjZXM/Lltsb2dpY2FsSWRdICE9IG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBlbnZpcm9ubWVudE9mKGdyb3VwOiBNYXBwaW5nR3JvdXApIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudDogZ3JvdXAuYWNjb3VudCxcbiAgICAgIHJlZ2lvbjogZ3JvdXAucmVnaW9uLFxuICAgICAgbmFtZTogJycsXG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1ha2VMb2NhdGlvbihcbiAgICBsb2M6IHN0cmluZyxcbiAgICBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQsXG4gICAgc3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW10gPSBbXSxcbiAgKTogUmVzb3VyY2VMb2NhdGlvbiB7XG4gICAgY29uc3QgW3N0YWNrTmFtZSwgbG9naWNhbElkXSA9IGxvYy5zcGxpdCgnLicpO1xuICAgIGNvbnN0IHN0YWNrID0gc3RhY2tzLmZpbmQoKHMpID0+IHMuc3RhY2tOYW1lID09PSBzdGFja05hbWUpO1xuXG4gICAgcmV0dXJuIG5ldyBSZXNvdXJjZUxvY2F0aW9uKFxuICAgICAge1xuICAgICAgICBzdGFja05hbWUsXG4gICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICB0ZW1wbGF0ZTogc3RhY2s/LnRlbXBsYXRlID8/IHt9LFxuICAgICAgfSxcbiAgICAgIGxvZ2ljYWxJZCxcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXREZXBsb3llZFN0YWNrcyhcbiAgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLFxuICBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQsXG4pOiBQcm9taXNlPENsb3VkRm9ybWF0aW9uU3RhY2tbXT4ge1xuICBjb25zdCBjZm4gPSAoYXdhaXQgc2RrUHJvdmlkZXIuZm9yRW52aXJvbm1lbnQoZW52aXJvbm1lbnQsIE1vZGUuRm9yUmVhZGluZykpLnNkay5jbG91ZEZvcm1hdGlvbigpO1xuXG4gIGNvbnN0IHN1bW1hcmllcyA9IGF3YWl0IGNmbi5wYWdpbmF0ZWRMaXN0U3RhY2tzKHtcbiAgICBTdGFja1N0YXR1c0ZpbHRlcjogW1xuICAgICAgJ0NSRUFURV9DT01QTEVURScsXG4gICAgICAnVVBEQVRFX0NPTVBMRVRFJyxcbiAgICAgICdVUERBVEVfUk9MTEJBQ0tfQ09NUExFVEUnLFxuICAgICAgJ0lNUE9SVF9DT01QTEVURScsXG4gICAgICAnUk9MTEJBQ0tfQ09NUExFVEUnLFxuICAgIF0sXG4gIH0pO1xuXG4gIGNvbnN0IG5vcm1hbGl6ZSA9IGFzeW5jIChzdW1tYXJ5OiBTdGFja1N1bW1hcnkpID0+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZUNvbW1hbmRPdXRwdXQgPSBhd2FpdCBjZm4uZ2V0VGVtcGxhdGUoeyBTdGFja05hbWU6IHN1bW1hcnkuU3RhY2tOYW1lISB9KTtcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IGRlc2VyaWFsaXplU3RydWN0dXJlKHRlbXBsYXRlQ29tbWFuZE91dHB1dC5UZW1wbGF0ZUJvZHkgPz8gJ3t9Jyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudmlyb25tZW50LFxuICAgICAgc3RhY2tOYW1lOiBzdW1tYXJ5LlN0YWNrTmFtZSEsXG4gICAgICB0ZW1wbGF0ZSxcbiAgICB9O1xuICB9O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAY2RrbGFicy9wcm9taXNlYWxsLW5vLXVuYm91bmRlZC1wYXJhbGxlbGlzbVxuICByZXR1cm4gUHJvbWlzZS5hbGwoc3VtbWFyaWVzLm1hcChub3JtYWxpemUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdE1hcHBpbmdzSGVhZGVyKCk6IHN0cmluZyB7XG4gIHJldHVybiBmb3JtYXRUb1N0cmVhbShmbXRNYXBwaW5nc0hlYWRlcik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUeXBlZE1hcHBpbmdzKGVudmlyb25tZW50OiBjeGFwaS5FbnZpcm9ubWVudCwgbWFwcGluZ3M6IFR5cGVkTWFwcGluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZvcm1hdFRvU3RyZWFtKChzdHJlYW0pID0+IHtcbiAgICBjb25zdCBlbnYgPSBgYXdzOi8vJHtlbnZpcm9ubWVudC5hY2NvdW50fS8ke2Vudmlyb25tZW50LnJlZ2lvbn1gO1xuICAgIGZtdFR5cGVkTWFwcGluZ3Moc3RyZWFtLCBtYXBwaW5ncywgZW52KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRBbWJpZ3VpdHlTZWN0aW9uSGVhZGVyKCk6IHN0cmluZyB7XG4gIHJldHVybiBmb3JtYXRUb1N0cmVhbShmbXRBbWJpZ3VpdHlTZWN0aW9uSGVhZGVyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEFtYmlndW91c01hcHBpbmdzKGVudmlyb25tZW50OiBjeGFwaS5FbnZpcm9ubWVudCwgcGF0aHM6IFtzdHJpbmdbXSwgc3RyaW5nW11dW10pOiBzdHJpbmcge1xuICByZXR1cm4gZm9ybWF0VG9TdHJlYW0oKHN0cmVhbSkgPT4ge1xuICAgIGNvbnN0IGVudiA9IGBhd3M6Ly8ke2Vudmlyb25tZW50LmFjY291bnR9LyR7ZW52aXJvbm1lbnQucmVnaW9ufWA7XG4gICAgZm10QW1iaWd1b3VzTWFwcGluZ3Moc3RyZWFtLCBwYXRocywgZW52KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFRvU3RyZWFtKGNiOiAoc3RyZWFtOiBOb2RlSlMuV3JpdGFibGVTdHJlYW0pID0+IHZvaWQpOiBzdHJpbmcge1xuICBjb25zdCBzdHJlYW0gPSBuZXcgU3RyaW5nV3JpdGVTdHJlYW0oKTtcbiAgY2Ioc3RyZWFtKTtcbiAgcmV0dXJuIHN0cmVhbS50b1N0cmluZygpO1xufVxuIl19
|
|
129
|
+
/**
|
|
130
|
+
* Returns a list of stack groups, each containing the local stacks and the deployed stacks that match the given patterns.
|
|
131
|
+
*/
|
|
132
|
+
async function groupStacks(sdkProvider, localStacks, additionalStackNames) {
|
|
133
|
+
const environments = new Map();
|
|
134
|
+
for (const stack of localStacks) {
|
|
135
|
+
const environment = await sdkProvider.resolveEnvironment(stack.environment);
|
|
136
|
+
const key = (0, digest_1.hashObject)(environment);
|
|
137
|
+
environments.set(key, environment);
|
|
138
|
+
}
|
|
139
|
+
const localByEnvironment = await (0, util_1.indexBy)(localStacks, async (s) => (0, digest_1.hashObject)(await sdkProvider.resolveEnvironment(s.environment)));
|
|
140
|
+
const groups = [];
|
|
141
|
+
for (let key of localByEnvironment.keys()) {
|
|
142
|
+
const environment = environments.get(key);
|
|
143
|
+
const allDeployedStacks = await getDeployedStacks(sdkProvider, environment);
|
|
144
|
+
const local = localByEnvironment.get(key);
|
|
145
|
+
const hasLocalCounterpart = (s) => local.some((l) => l.stackName === s.stackName);
|
|
146
|
+
const wasExplicitlyProvided = (s) => additionalStackNames.includes(s.stackName);
|
|
147
|
+
groups.push({
|
|
148
|
+
environment,
|
|
149
|
+
deployedStacks: allDeployedStacks.filter(s => hasLocalCounterpart(s) || wasExplicitlyProvided(s)),
|
|
150
|
+
localStacks: local,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
return groups;
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBMkJBLHNEQXFGQztBQUVELDhDQTRCQztBQUVELHdFQUdDO0FBRUQsa0RBRUM7QUFFRCwwREFFQztBQVdELGtDQTZCQztBQWxNRCxzRUFJc0M7QUFHdEMscUNBQTJEO0FBRTNELHNDQUFpQztBQUNqQyx3Q0FBK0M7QUFFL0MscURBQXFFO0FBQ3JFLHFDQUFzQztBQUV0QywrREFBMkQ7QUFFM0QsNENBQTBCO0FBQzFCLDRDQUEwQjtBQVFuQixLQUFLLFVBQVUscUJBQXFCLENBQ3pDLGFBQTZCLEVBQzdCLFdBQXdCO0lBTXhCLE1BQU0sV0FBVyxHQUE2QixFQUFFLENBQUM7SUFDakQsS0FBSyxNQUFNLEtBQUssSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUNsQyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUMsV0FBVyxFQUFFLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuRSxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELEtBQUssSUFBSSxLQUFLLElBQUksV0FBVyxFQUFFLENBQUM7UUFDOUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUV2QyxLQUFLLE1BQU0sV0FBVyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDekQsSUFBSSxZQUFZLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sSUFBSSw0QkFBWSxDQUNwQixtQ0FBbUMsV0FBVyxvQkFBb0IsS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQ2xHLENBQUM7WUFDSixDQUFDO1lBQ0QsWUFBWSxDQUFDLEdBQUcs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SUFFRixNQUFNLE1BQU0sR0FBaUIsRUFBRSxDQUFDO0lBQ2hDLEtBQUssSUFBSSxHQUFHLElBQUksa0JBQWtCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMxQyxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDO1FBQzNDLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDNUUsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDO1FBQzNDLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFzQixFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2RyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBc0IsRUFBRSxFQUFFLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVyRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ1YsV0FBVztZQUNYLGNBQWMsRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqRyxXQUFXLEVBQUUsS0FBSztTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgVHlwZWRNYXBwaW5nIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWRmb3JtYXRpb24tZGlmZic7XG5pbXBvcnQge1xuICBmb3JtYXRBbWJpZ3VvdXNNYXBwaW5ncyBhcyBmbXRBbWJpZ3VvdXNNYXBwaW5ncyxcbiAgZm9ybWF0RW52aXJvbm1lbnRTZWN0aW9uSGVhZGVyIGFzIGZtdEVudmlyb25tZW50U2VjdGlvbkhlYWRlcixcbiAgZm9ybWF0VHlwZWRNYXBwaW5ncyBhcyBmbXRUeXBlZE1hcHBpbmdzLFxufSBmcm9tICdAYXdzLWNkay9jbG91ZGZvcm1hdGlvbi1kaWZmJztcbmltcG9ydCB0eXBlICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB0eXBlIHsgU3RhY2tTdW1tYXJ5IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IGRlc2VyaWFsaXplU3RydWN0dXJlLCBpbmRleEJ5IH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyIH0gZnJvbSAnLi4vYXdzLWF1dGgvcHJpdmF0ZSc7XG5pbXBvcnQgeyBNb2RlIH0gZnJvbSAnLi4vcGx1Z2luJztcbmltcG9ydCB7IFN0cmluZ1dyaXRlU3RyZWFtIH0gZnJvbSAnLi4vc3RyZWFtcyc7XG5pbXBvcnQgdHlwZSB7IENsb3VkRm9ybWF0aW9uU3RhY2sgfSBmcm9tICcuL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IFJlc291cmNlTG9jYXRpb24sIFJlc291cmNlTWFwcGluZyB9IGZyb20gJy4vY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgaGFzaE9iamVjdCB9IGZyb20gJy4vZGlnZXN0JztcbmltcG9ydCB0eXBlIHsgTWFwcGluZ0dyb3VwIH0gZnJvbSAnLi4vLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBUb29sa2l0RXJyb3IgfSBmcm9tICcuLi8uLi90b29sa2l0L3Rvb2xraXQtZXJyb3InO1xuXG5leHBvcnQgKiBmcm9tICcuL2V4Y2x1ZGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0JztcblxuaW50ZXJmYWNlIFN0YWNrR3JvdXAge1xuICBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQ7XG4gIGxvY2FsU3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW107XG4gIGRlcGxveWVkU3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW107XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB1c2VQcmVzY3JpYmVkTWFwcGluZ3MoXG4gIG1hcHBpbmdHcm91cHM6IE1hcHBpbmdHcm91cFtdLFxuICBzZGtQcm92aWRlcjogU2RrUHJvdmlkZXIsXG4pOiBQcm9taXNlPFJlc291cmNlTWFwcGluZ1tdPiB7XG4gIGludGVyZmFjZSBNYXBwaW5nR3JvdXBXaXRoU3RhY2tzIGV4dGVuZHMgTWFwcGluZ0dyb3VwIHtcbiAgICBzdGFja3M6IENsb3VkRm9ybWF0aW9uU3RhY2tbXTtcbiAgfVxuXG4gIGNvbnN0IHN0YWNrR3JvdXBzOiBNYXBwaW5nR3JvdXBXaXRoU3RhY2tzW10gPSBbXTtcbiAgZm9yIChjb25zdCBncm91cCBvZiBtYXBwaW5nR3JvdXBzKSB7XG4gICAgc3RhY2tHcm91cHMucHVzaCh7XG4gICAgICAuLi5ncm91cCxcbiAgICAgIHN0YWNrczogYXdhaXQgZ2V0RGVwbG95ZWRTdGFja3Moc2RrUHJvdmlkZXIsIGVudmlyb25tZW50T2YoZ3JvdXApKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFZhbGlkYXRlIHRoYXQgdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBkZXN0aW5hdGlvbnNcbiAgZm9yIChsZXQgZ3JvdXAgb2Ygc3RhY2tHcm91cHMpIHtcbiAgICBjb25zdCBkZXN0aW5hdGlvbnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGZvciAoY29uc3QgZGVzdGluYXRpb24gb2YgT2JqZWN0LnZhbHVlcyhncm91cC5yZXNvdXJjZXMpKSB7XG4gICAgICBpZiAoZGVzdGluYXRpb25zLmhhcyhkZXN0aW5hdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihcbiAgICAgICAgICBgRHVwbGljYXRlIGRlc3RpbmF0aW9uIHJlc291cmNlICcke2Rlc3RpbmF0aW9ufScgaW4gZW52aXJvbm1lbnQgJHtncm91cC5hY2NvdW50fS8ke2dyb3VwLnJlZ2lvbn1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgZGVzdGluYXRpb25zLmFkZChkZXN0aW5hdGlvbik7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVzdWx0OiBSZXNvdXJjZU1hcHBpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGdyb3VwIG9mIHN0YWNrR3JvdXBzKSB7XG4gICAgZm9yIChjb25zdCBbc291cmNlLCBkZXN0aW5hdGlvbl0gb2YgT2JqZWN0LmVudHJpZXMoZ3JvdXAucmVzb3VyY2VzKSkge1xuICAgICAgaWYgKCFpblVzZShzb3VyY2UsIGdyb3VwLnN0YWNrcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgU291cmNlIHJlc291cmNlICcke3NvdXJjZX0nIGRvZXMgbm90IGV4aXN0IGluIGVudmlyb25tZW50ICR7Z3JvdXAuYWNjb3VudH0vJHtncm91cC5yZWdpb259YCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChpblVzZShkZXN0aW5hdGlvbiwgZ3JvdXAuc3RhY2tzKSkge1xuICAgICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKFxuICAgICAgICAgIGBEZXN0aW5hdGlvbiByZXNvdXJjZSAnJHtkZXN0aW5hdGlvbn0nIGFscmVhZHkgaW4gdXNlIGluIGVudmlyb25tZW50ICR7Z3JvdXAuYWNjb3VudH0vJHtncm91cC5yZWdpb259YCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudE9mKGdyb3VwKTtcbiAgICAgIGNvbnN0IHNyYyA9IG1ha2VMb2NhdGlvbihzb3VyY2UsIGVudmlyb25tZW50LCBncm91cC5zdGFja3MpO1xuICAgICAgY29uc3QgZHN0ID0gbWFrZUxvY2F0aW9uKGRlc3RpbmF0aW9uLCBlbnZpcm9ubWVudCk7XG4gICAgICByZXN1bHQucHVzaChuZXcgUmVzb3VyY2VNYXBwaW5nKHNyYywgZHN0KSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG5cbiAgZnVuY3Rpb24gaW5Vc2UobG9jYXRpb246IHN0cmluZywgc3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW10pOiBib29sZWFuIHtcbiAgICBjb25zdCBbc3RhY2tOYW1lLCBsb2dpY2FsSWRdID0gbG9jYXRpb24uc3BsaXQoJy4nKTtcbiAgICBpZiAoc3RhY2tOYW1lID09IG51bGwgfHwgbG9naWNhbElkID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYEludmFsaWQgbG9jYXRpb24gJyR7bG9jYXRpb259J2ApO1xuICAgIH1cbiAgICBjb25zdCBzdGFjayA9IHN0YWNrcy5maW5kKChzKSA9PiBzLnN0YWNrTmFtZSA9PT0gc3RhY2tOYW1lKTtcbiAgICByZXR1cm4gc3RhY2sgIT0gbnVsbCAmJiBzdGFjay50ZW1wbGF0ZS5SZXNvdXJjZXM/Lltsb2dpY2FsSWRdICE9IG51bGw7XG4gIH1cblxuICBmdW5jdGlvbiBlbnZpcm9ubWVudE9mKGdyb3VwOiBNYXBwaW5nR3JvdXApIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudDogZ3JvdXAuYWNjb3VudCxcbiAgICAgIHJlZ2lvbjogZ3JvdXAucmVnaW9uLFxuICAgICAgbmFtZTogJycsXG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG1ha2VMb2NhdGlvbihcbiAgICBsb2M6IHN0cmluZyxcbiAgICBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQsXG4gICAgc3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW10gPSBbXSxcbiAgKTogUmVzb3VyY2VMb2NhdGlvbiB7XG4gICAgY29uc3QgW3N0YWNrTmFtZSwgbG9naWNhbElkXSA9IGxvYy5zcGxpdCgnLicpO1xuICAgIGNvbnN0IHN0YWNrID0gc3RhY2tzLmZpbmQoKHMpID0+IHMuc3RhY2tOYW1lID09PSBzdGFja05hbWUpO1xuXG4gICAgcmV0dXJuIG5ldyBSZXNvdXJjZUxvY2F0aW9uKFxuICAgICAge1xuICAgICAgICBzdGFja05hbWUsXG4gICAgICAgIGVudmlyb25tZW50LFxuICAgICAgICB0ZW1wbGF0ZTogc3RhY2s/LnRlbXBsYXRlID8/IHt9LFxuICAgICAgfSxcbiAgICAgIGxvZ2ljYWxJZCxcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXREZXBsb3llZFN0YWNrcyhcbiAgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLFxuICBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQsXG4pOiBQcm9taXNlPENsb3VkRm9ybWF0aW9uU3RhY2tbXT4ge1xuICBjb25zdCBjZm4gPSAoYXdhaXQgc2RrUHJvdmlkZXIuZm9yRW52aXJvbm1lbnQoZW52aXJvbm1lbnQsIE1vZGUuRm9yUmVhZGluZykpLnNkay5jbG91ZEZvcm1hdGlvbigpO1xuXG4gIGNvbnN0IHN1bW1hcmllcyA9IGF3YWl0IGNmbi5wYWdpbmF0ZWRMaXN0U3RhY2tzKHtcbiAgICBTdGFja1N0YXR1c0ZpbHRlcjogW1xuICAgICAgJ0NSRUFURV9DT01QTEVURScsXG4gICAgICAnVVBEQVRFX0NPTVBMRVRFJyxcbiAgICAgICdVUERBVEVfUk9MTEJBQ0tfQ09NUExFVEUnLFxuICAgICAgJ0lNUE9SVF9DT01QTEVURScsXG4gICAgICAnUk9MTEJBQ0tfQ09NUExFVEUnLFxuICAgIF0sXG4gIH0pO1xuXG4gIGNvbnN0IG5vcm1hbGl6ZSA9IGFzeW5jIChzdW1tYXJ5OiBTdGFja1N1bW1hcnkpID0+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZUNvbW1hbmRPdXRwdXQgPSBhd2FpdCBjZm4uZ2V0VGVtcGxhdGUoeyBTdGFja05hbWU6IHN1bW1hcnkuU3RhY2tOYW1lISB9KTtcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IGRlc2VyaWFsaXplU3RydWN0dXJlKHRlbXBsYXRlQ29tbWFuZE91dHB1dC5UZW1wbGF0ZUJvZHkgPz8gJ3t9Jyk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudmlyb25tZW50LFxuICAgICAgc3RhY2tOYW1lOiBzdW1tYXJ5LlN0YWNrTmFtZSEsXG4gICAgICB0ZW1wbGF0ZSxcbiAgICB9O1xuICB9O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAY2RrbGFicy9wcm9taXNlYWxsLW5vLXVuYm91bmRlZC1wYXJhbGxlbGlzbVxuICByZXR1cm4gUHJvbWlzZS5hbGwoc3VtbWFyaWVzLm1hcChub3JtYWxpemUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEVudmlyb25tZW50U2VjdGlvbkhlYWRlcihlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQpIHtcbiAgY29uc3QgZW52ID0gYGF3czovLyR7ZW52aXJvbm1lbnQuYWNjb3VudH0vJHtlbnZpcm9ubWVudC5yZWdpb259YDtcbiAgcmV0dXJuIGZvcm1hdFRvU3RyZWFtKHN0cmVhbSA9PiBmbXRFbnZpcm9ubWVudFNlY3Rpb25IZWFkZXIoc3RyZWFtLCBlbnYpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFR5cGVkTWFwcGluZ3MobWFwcGluZ3M6IFR5cGVkTWFwcGluZ1tdKTogc3RyaW5nIHtcbiAgcmV0dXJuIGZvcm1hdFRvU3RyZWFtKChzdHJlYW0pID0+IGZtdFR5cGVkTWFwcGluZ3Moc3RyZWFtLCBtYXBwaW5ncykpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0QW1iaWd1b3VzTWFwcGluZ3MocGF0aHM6IFtzdHJpbmdbXSwgc3RyaW5nW11dW10pOiBzdHJpbmcge1xuICByZXR1cm4gZm9ybWF0VG9TdHJlYW0oKHN0cmVhbSkgPT4gZm10QW1iaWd1b3VzTWFwcGluZ3Moc3RyZWFtLCBwYXRocykpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRUb1N0cmVhbShjYjogKHN0cmVhbTogTm9kZUpTLldyaXRhYmxlU3RyZWFtKSA9PiB2b2lkKTogc3RyaW5nIHtcbiAgY29uc3Qgc3RyZWFtID0gbmV3IFN0cmluZ1dyaXRlU3RyZWFtKCk7XG4gIGNiKHN0cmVhbSk7XG4gIHJldHVybiBzdHJlYW0udG9TdHJpbmcoKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgbGlzdCBvZiBzdGFjayBncm91cHMsIGVhY2ggY29udGFpbmluZyB0aGUgbG9jYWwgc3RhY2tzIGFuZCB0aGUgZGVwbG95ZWQgc3RhY2tzIHRoYXQgbWF0Y2ggdGhlIGdpdmVuIHBhdHRlcm5zLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ3JvdXBTdGFja3Moc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLCBsb2NhbFN0YWNrczogQ2xvdWRGb3JtYXRpb25TdGFja1tdLCBhZGRpdGlvbmFsU3RhY2tOYW1lczogc3RyaW5nW10pIHtcbiAgY29uc3QgZW52aXJvbm1lbnRzOiBNYXA8c3RyaW5nLCBjeGFwaS5FbnZpcm9ubWVudD4gPSBuZXcgTWFwKCk7XG5cbiAgZm9yIChjb25zdCBzdGFjayBvZiBsb2NhbFN0YWNrcykge1xuICAgIGNvbnN0IGVudmlyb25tZW50ID0gYXdhaXQgc2RrUHJvdmlkZXIucmVzb2x2ZUVudmlyb25tZW50KHN0YWNrLmVudmlyb25tZW50KTtcbiAgICBjb25zdCBrZXkgPSBoYXNoT2JqZWN0KGVudmlyb25tZW50KTtcbiAgICBlbnZpcm9ubWVudHMuc2V0KGtleSwgZW52aXJvbm1lbnQpO1xuICB9XG5cbiAgY29uc3QgbG9jYWxCeUVudmlyb25tZW50ID0gYXdhaXQgaW5kZXhCeShsb2NhbFN0YWNrcyxcbiAgICBhc3luYyAocykgPT4gaGFzaE9iamVjdChhd2FpdCBzZGtQcm92aWRlci5yZXNvbHZlRW52aXJvbm1lbnQocy5lbnZpcm9ubWVudCkpLFxuICApO1xuXG4gIGNvbnN0IGdyb3VwczogU3RhY2tHcm91cFtdID0gW107XG4gIGZvciAobGV0IGtleSBvZiBsb2NhbEJ5RW52aXJvbm1lbnQua2V5cygpKSB7XG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudHMuZ2V0KGtleSkhO1xuICAgIGNvbnN0IGFsbERlcGxveWVkU3RhY2tzID0gYXdhaXQgZ2V0RGVwbG95ZWRTdGFja3Moc2RrUHJvdmlkZXIsIGVudmlyb25tZW50KTtcbiAgICBjb25zdCBsb2NhbCA9IGxvY2FsQnlFbnZpcm9ubWVudC5nZXQoa2V5KSE7XG4gICAgY29uc3QgaGFzTG9jYWxDb3VudGVycGFydCA9IChzOiBDbG91ZEZvcm1hdGlvblN0YWNrKSA9PiBsb2NhbC5zb21lKChsKSA9PiBsLnN0YWNrTmFtZSA9PT0gcy5zdGFja05hbWUpO1xuICAgIGNvbnN0IHdhc0V4cGxpY2l0bHlQcm92aWRlZCA9IChzOiBDbG91ZEZvcm1hdGlvblN0YWNrKSA9PiBhZGRpdGlvbmFsU3RhY2tOYW1lcy5pbmNsdWRlcyhzLnN0YWNrTmFtZSk7XG5cbiAgICBncm91cHMucHVzaCh7XG4gICAgICBlbnZpcm9ubWVudCxcbiAgICAgIGRlcGxveWVkU3RhY2tzOiBhbGxEZXBsb3llZFN0YWNrcy5maWx0ZXIocyA9PiBoYXNMb2NhbENvdW50ZXJwYXJ0KHMpIHx8IHdhc0V4cGxpY2l0bHlQcm92aWRlZChzKSksXG4gICAgICBsb2NhbFN0YWNrczogbG9jYWwsXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gZ3JvdXBzO1xufVxuIl19
|
package/lib/api/tree.js
CHANGED
|
@@ -34,4 +34,4 @@ async function loadTreeFromDir(outdir, trace) {
|
|
|
34
34
|
return undefined;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE4QkEsb0JBTUM7QUFFRCw0QkFTQztBQUVELDBDQU9DO0FBeERELGtDQUFrQztBQUVsQywrQkFBK0I7QUF5Qi9COztHQUVHO0FBQ0gsU0FBZ0IsSUFBSSxDQUFDLElBQW1DLEVBQUUsU0FBNEM7SUFDcEcsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFFN0QsU0FBUyxjQUFjO1FBQ3JCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxRQUFRLENBQUMsUUFBdUIsRUFBRSxLQUFxQztJQUMzRixJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUM7UUFDdkMsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFFLEVBQXdCLENBQUM7SUFDbEcsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxNQUFNLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDO0FBRU0sS0FBSyxVQUFVLGVBQWUsQ0FBQyxNQUFjLEVBQUUsS0FBcUM7SUFDekYsSUFBSSxDQUFDO1FBQ0gsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzlELENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsTUFBTSxLQUFLLENBQUMsaUNBQWlDLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUMvRSxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB0eXBlIHsgQ2xvdWRBc3NlbWJseSB9IGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5cbi8qKlxuICogU291cmNlIGluZm9ybWF0aW9uIG9uIGEgY29uc3RydWN0IChjbGFzcyBmcW4gYW5kIHZlcnNpb24pXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0SW5mbyB7XG4gIHJlYWRvbmx5IGZxbjogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBub2RlIGluIHRoZSBjb25zdHJ1Y3QgdHJlZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25zdHJ1Y3RUcmVlTm9kZSB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiB7IFtrZXk6IHN0cmluZ106IENvbnN0cnVjdFRyZWVOb2RlIH07XG4gIHJlYWRvbmx5IGF0dHJpYnV0ZXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gIC8qKlxuICAgKiBJbmZvcm1hdGlvbiBvbiB0aGUgY29uc3RydWN0IGNsYXNzIHRoYXQgbGVkIHRvIHRoaXMgbm9kZSwgaWYgYXZhaWxhYmxlXG4gICAqL1xuICByZWFkb25seSBjb25zdHJ1Y3RJbmZvPzogQ29uc3RydWN0SW5mbztcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBwcm92aWRlZCBwcmVkaWNhdGUgaXMgdHJ1ZSBmb3IgYXQgbGVhc3Qgb25lIGVsZW1lbnQgaW4gdGhlIGNvbnN0cnVjdCAoc3ViLSl0cmVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc29tZShub2RlOiBDb25zdHJ1Y3RUcmVlTm9kZSB8IHVuZGVmaW5lZCwgcHJlZGljYXRlOiAobjogQ29uc3RydWN0VHJlZU5vZGUpID0+IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgcmV0dXJuIG5vZGUgIT0gbnVsbCAmJiAocHJlZGljYXRlKG5vZGUpIHx8IGZpbmRJbkNoaWxkcmVuKCkpO1xuXG4gIGZ1bmN0aW9uIGZpbmRJbkNoaWxkcmVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKG5vZGU/LmNoaWxkcmVuID8/IHt9KS5zb21lKGNoaWxkID0+
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE4QkEsb0JBTUM7QUFFRCw0QkFTQztBQUVELDBDQU9DO0FBeERELGtDQUFrQztBQUVsQywrQkFBK0I7QUF5Qi9COztHQUVHO0FBQ0gsU0FBZ0IsSUFBSSxDQUFDLElBQW1DLEVBQUUsU0FBNEM7SUFDcEcsT0FBTyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFFN0QsU0FBUyxjQUFjO1FBQ3JCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxRQUFRLENBQUMsUUFBdUIsRUFBRSxLQUFxQztJQUMzRixJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBQ2xDLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUM7UUFDdkMsT0FBTyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFFLEVBQXdCLENBQUM7SUFDbEcsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxNQUFNLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDO0FBRU0sS0FBSyxVQUFVLGVBQWUsQ0FBQyxNQUFjLEVBQUUsS0FBcUM7SUFDekYsSUFBSSxDQUFDO1FBQ0gsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzlELENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsTUFBTSxLQUFLLENBQUMsaUNBQWlDLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUMvRSxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB0eXBlIHsgQ2xvdWRBc3NlbWJseSB9IGZyb20gJ0Bhd3MtY2RrL2N4LWFwaSc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcy1leHRyYSc7XG5cbi8qKlxuICogU291cmNlIGluZm9ybWF0aW9uIG9uIGEgY29uc3RydWN0IChjbGFzcyBmcW4gYW5kIHZlcnNpb24pXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0SW5mbyB7XG4gIHJlYWRvbmx5IGZxbjogc3RyaW5nO1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBub2RlIGluIHRoZSBjb25zdHJ1Y3QgdHJlZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25zdHJ1Y3RUcmVlTm9kZSB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiB7IFtrZXk6IHN0cmluZ106IENvbnN0cnVjdFRyZWVOb2RlIH07XG4gIHJlYWRvbmx5IGF0dHJpYnV0ZXM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gIC8qKlxuICAgKiBJbmZvcm1hdGlvbiBvbiB0aGUgY29uc3RydWN0IGNsYXNzIHRoYXQgbGVkIHRvIHRoaXMgbm9kZSwgaWYgYXZhaWxhYmxlXG4gICAqL1xuICByZWFkb25seSBjb25zdHJ1Y3RJbmZvPzogQ29uc3RydWN0SW5mbztcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBwcm92aWRlZCBwcmVkaWNhdGUgaXMgdHJ1ZSBmb3IgYXQgbGVhc3Qgb25lIGVsZW1lbnQgaW4gdGhlIGNvbnN0cnVjdCAoc3ViLSl0cmVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc29tZShub2RlOiBDb25zdHJ1Y3RUcmVlTm9kZSB8IHVuZGVmaW5lZCwgcHJlZGljYXRlOiAobjogQ29uc3RydWN0VHJlZU5vZGUpID0+IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgcmV0dXJuIG5vZGUgIT0gbnVsbCAmJiAocHJlZGljYXRlKG5vZGUpIHx8IGZpbmRJbkNoaWxkcmVuKCkpO1xuXG4gIGZ1bmN0aW9uIGZpbmRJbkNoaWxkcmVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKG5vZGU/LmNoaWxkcmVuID8/IHt9KS5zb21lKGNoaWxkID0+IHNvbWUoY2hpbGQsIHByZWRpY2F0ZSkpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkVHJlZShhc3NlbWJseTogQ2xvdWRBc3NlbWJseSwgdHJhY2U6IChtc2c6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPik6IFByb21pc2U8Q29uc3RydWN0VHJlZU5vZGUgfCB1bmRlZmluZWQ+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBvdXRkaXIgPSBhc3NlbWJseS5kaXJlY3Rvcnk7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBhc3NlbWJseS50cmVlKCk/LmZpbGU7XG4gICAgcmV0dXJuIGZpbGVOYW1lID8gZnMucmVhZEpTT05TeW5jKHBhdGguam9pbihvdXRkaXIsIGZpbGVOYW1lKSkudHJlZSA6ICh7fSBhcyBDb25zdHJ1Y3RUcmVlTm9kZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBhd2FpdCB0cmFjZShgRmFpbGVkIHRvIGdldCB0cmVlLmpzb24gZmlsZTogJHtlfS4gUHJvY2VlZGluZyB3aXRoIGVtcHR5IHRyZWUuYCk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZFRyZWVGcm9tRGlyKG91dGRpcjogc3RyaW5nLCB0cmFjZTogKG1zZzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+KTogUHJvbWlzZTxDb25zdHJ1Y3RUcmVlTm9kZSB8IHVuZGVmaW5lZD4ge1xuICB0cnkge1xuICAgIHJldHVybiBmcy5yZWFkSlNPTlN5bmMocGF0aC5qb2luKG91dGRpciwgJ3RyZWUuanNvbicpKS50cmVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgYXdhaXQgdHJhY2UoYEZhaWxlZCB0byBnZXQgdHJlZS5qc29uIGZpbGU6ICR7ZX0uIFByb2NlZWRpbmcgd2l0aCBlbXB0eSB0cmVlLmApO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -89,23 +89,32 @@ class CcApiContextProviderPlugin {
|
|
|
89
89
|
*/
|
|
90
90
|
async listResources(cc, typeName, propertyMatch, expectedMatchCount) {
|
|
91
91
|
try {
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const actual = (0, util_1.findJsonValue)(r.properties, propPath);
|
|
100
|
-
return propertyMatchesFilter(actual, expected);
|
|
92
|
+
const found = [];
|
|
93
|
+
let nextToken = undefined;
|
|
94
|
+
do {
|
|
95
|
+
const result = await cc.listResources({
|
|
96
|
+
TypeName: typeName,
|
|
97
|
+
MaxResults: 100,
|
|
98
|
+
...nextToken ? { NextToken: nextToken } : {},
|
|
101
99
|
});
|
|
102
|
-
|
|
100
|
+
found.push(...(result.ResourceDescriptions ?? [])
|
|
101
|
+
.map(foundResourceFromCcApi)
|
|
102
|
+
.filter((r) => {
|
|
103
|
+
return Object.entries(propertyMatch).every(([propPath, expected]) => {
|
|
104
|
+
const actual = (0, util_1.findJsonValue)(r.properties, propPath);
|
|
105
|
+
return propertyMatchesFilter(actual, expected);
|
|
106
|
+
});
|
|
107
|
+
}));
|
|
108
|
+
nextToken = result.NextToken;
|
|
109
|
+
// This allows us to error out early, before we have consumed all pages.
|
|
110
|
+
if ((expectedMatchCount === 'at-most-one' || expectedMatchCount === 'exactly-one') && found.length > 1) {
|
|
111
|
+
const atLeast = nextToken ? 'at least ' : '';
|
|
112
|
+
throw new toolkit_error_1.ContextProviderError(`Found ${atLeast}${found.length} resources matching ${JSON.stringify(propertyMatch)}; expected ${expectedMatchCountText(expectedMatchCount)}. Please narrow the search criteria`);
|
|
113
|
+
}
|
|
114
|
+
} while (nextToken);
|
|
103
115
|
if ((expectedMatchCount === 'at-least-one' || expectedMatchCount === 'exactly-one') && found.length === 0) {
|
|
104
116
|
throw new toolkit_error_1.NoResultsFoundError(`Could not find any resources matching ${JSON.stringify(propertyMatch)}; expected ${expectedMatchCountText(expectedMatchCount)}.`);
|
|
105
117
|
}
|
|
106
|
-
if ((expectedMatchCount === 'at-most-one' || expectedMatchCount === 'exactly-one') && found.length > 1) {
|
|
107
|
-
throw new toolkit_error_1.ContextProviderError(`Found ${found.length} resources matching ${JSON.stringify(propertyMatch)}; expected ${expectedMatchCountText(expectedMatchCount)}. Please narrow the search criteria`);
|
|
108
|
-
}
|
|
109
118
|
return found;
|
|
110
119
|
}
|
|
111
120
|
catch (err) {
|
|
@@ -151,4 +160,4 @@ function expectedMatchCountText(expectation) {
|
|
|
151
160
|
return expectation;
|
|
152
161
|
}
|
|
153
162
|
}
|
|
154
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2MtYXBpLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2MtYXBpLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHNFQUF5RTtBQUV6RSxxREFBaUU7QUFFakUsNERBQXFGO0FBQ3JGLGtDQUFzRDtBQUV0RCxNQUFhLDBCQUEwQjtJQUNSO0lBQTdCLFlBQTZCLEdBQWdCO1FBQWhCLFFBQUcsR0FBSCxHQUFHLENBQWE7SUFDN0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUF1QjtRQUMzQyxpQkFBaUI7UUFDakIsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUksb0NBQW9CLENBQUMsK0ZBQStGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pKLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQywyQkFBMkIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RFLE1BQU0sSUFBSSxvQ0FBb0IsQ0FBQyxzR0FBc0csSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEssQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzNHLE1BQU0sSUFBSSxvQ0FBb0IsQ0FBQyx3RUFBd0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdJLENBQUM7UUFFRCxnQkFBZ0I7UUFDaEIsTUFBTSxZQUFZLEdBQUcsQ0FB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QUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDY0FwaUNvbnRleHRRdWVyeSB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlRGVzY3JpcHRpb24gfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRjb250cm9sJztcbmltcG9ydCB7IFJlc291cmNlTm90Rm91bmRFeGNlcHRpb24gfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRjb250cm9sJztcbmltcG9ydCB0eXBlIHsgSUNsb3VkQ29udHJvbENsaWVudCwgU2RrUHJvdmlkZXIgfSBmcm9tICcuLi9hcGkvYXdzLWF1dGgvcHJpdmF0ZSc7XG5pbXBvcnQgeyBpbml0Q29udGV4dFByb3ZpZGVyU2RrIH0gZnJvbSAnLi4vYXBpL2F3cy1hdXRoL3ByaXZhdGUnO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0UHJvdmlkZXJQbHVnaW4gfSBmcm9tICcuLi9hcGkvcGx1Z2luJztcbmltcG9ydCB7IENvbnRleHRQcm92aWRlckVycm9yLCBOb1Jlc3VsdHNGb3VuZEVycm9yIH0gZnJvbSAnLi4vdG9vbGtpdC90b29sa2l0LWVycm9yJztcbmltcG9ydCB7IGZpbmRKc29uVmFsdWUsIGdldFJlc3VsdE9iaiB9IGZyb20gJy4uL3V0aWwnO1xuXG5leHBvcnQgY2xhc3MgQ2NBcGlDb250ZXh0UHJvdmlkZXJQbHVnaW4gaW1wbGVtZW50cyBDb250ZXh0UHJvdmlkZXJQbHVnaW4ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGF3czogU2RrUHJvdmlkZXIpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHJldHVybnMgYSBkYXRhIG9iamVjdCB3aXRoIHRoZSB2YWx1ZSBmcm9tIENsb3VkQ29udHJvbCBBUEkgcmVzdWx0LlxuICAgKlxuICAgKiBTZWUgdGhlIGRvY3VtZW50YXRpb24gaW4gdGhlIENsb3VkIEFzc2VtYmx5IFNjaGVtYSBmb3IgdGhlIHNlbWFudGljcyBvZlxuICAgKiBlYWNoIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRWYWx1ZShhcmdzOiBDY0FwaUNvbnRleHRRdWVyeSkge1xuICAgIC8vIFZhbGlkYXRlIGlucHV0XG4gICAgaWYgKGFyZ3MuZXhhY3RJZGVudGlmaWVyICYmIGFyZ3MucHJvcGVydHlNYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IENvbnRleHRQcm92aWRlckVycm9yKGBQcm92aWRlciBwcm90b2NvbCBlcnJvcjogc3BlY2lmeSBlaXRoZXIgZXhhY3RJZGVudGlmaWVyIG9yIHByb3BlcnR5TWF0Y2gsIGJ1dCBub3QgYm90aCAoZ290ICR7SlNPTi5zdHJpbmdpZnkoYXJncyl9KWApO1xuICAgIH1cbiAgICBpZiAoYXJncy5pZ25vcmVFcnJvck9uTWlzc2luZ0NvbnRleHQgJiYgYXJncy5kdW1teVZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZXh0UHJvdmlkZXJFcnJvcihgUHJvdmlkZXIgcHJvdG9jb2wgZXJyb3I6IGlmIGlnbm9yZUVycm9yT25NaXNzaW5nQ29udGV4dCBpcyBzZXQsIGEgZHVtbXlWYWx1ZSBtdXN0IGJlIHN1cHBsaWVkIChnb3QgJHtKU09OLnN0cmluZ2lmeShhcmdzKX0pYCk7XG4gICAgfVxuICAgIGlmIChhcmdzLmR1bW15VmFsdWUgIT09IHVuZGVmaW5lZCAmJiAoIUFycmF5LmlzQXJyYXkoYXJncy5kdW1teVZhbHVlKSB8fCAhYXJncy5kdW1teVZhbHVlLmV2ZXJ5KGlzT2JqZWN0KSkpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZXh0UHJvdmlkZXJFcnJvcihgUHJvdmlkZXIgcHJvdG9jb2wgZXJyb3I6IGR1bW15VmFsdWUgbXVzdCBiZSBhbiBhcnJheSBvZiBvYmplY3RzIChnb3QgJHtKU09OLnN0cmluZ2lmeShhcmdzLmR1bW15VmFsdWUpfSlgKTtcbiAgICB9XG5cbiAgICAvLyBEbyB0aGUgbG9va3VwXG4gICAgY29uc3QgY2xvdWRDb250cm9sID0gKGF3YWl0IGluaXRDb250ZXh0UHJvdmlkZXJTZGsodGhpcy5hd3MsIGFyZ3MpKS5jbG91ZENvbnRyb2woKTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgcmVzb3VyY2VzOiBGb3VuZFJlc291cmNlW107XG4gICAgICBpZiAoYXJncy5leGFjdElkZW50aWZpZXIpIHtcbiAgICAgICAgLy8gdXNlIGdldFJlc291cmNlIHRvIGdldCB0aGUgZXhhY3QgaWRlbnRpZmllclxuICAgICAgICByZXNvdXJjZXMgPSBhd2FpdCB0aGlzLmdldFJlc291cmNlKGNsb3VkQ29udHJvbCwgYXJncy50eXBlTmFtZSwgYXJncy5leGFjdElkZW50aWZpZXIpO1xuICAgICAgfSBlbHNlIGlmIChhcmdzLnByb3BlcnR5TWF0Y2gpIHtcbiAgICAgICAgLy8gdXNlIGxpc3RSZXNvdXJjZVxuICAgICAgICByZXNvdXJjZXMgPSBhd2FpdCB0aGlzLmxpc3RSZXNvdXJjZXMoY2xvdWRDb250cm9sLCBhcmdzLnR5cGVOYW1lLCBhcmdzLnByb3BlcnR5TWF0Y2gsIGFyZ3MuZXhwZWN0ZWRNYXRjaENvdW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBDb250ZXh0UHJvdmlkZXJFcnJvcihgUHJvdmlkZXIgcHJvdG9jb2wgZXJyb3I6IG5laXRoZXIgZXhhY3RJZGVudGlmaWVyIG5vciBwcm9wZXJ0eU1hdGNoIGlzIHNwZWNpZmllZCBpbiAke0pTT04uc3RyaW5naWZ5KGFyZ3MpfS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc291cmNlcy5tYXAoKHIpID0+IGdldFJlc3VsdE9iaihyLnByb3BlcnRpZXMsIHIuaWRlbnRpZmllciwgYXJncy5wcm9wZXJ0aWVzVG9SZXR1cm4pKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChDb250ZXh0UHJvdmlkZXJFcnJvci5pc05vUmVzdWx0c0ZvdW5kRXJyb3IoZXJyKSAmJiBhcmdzLmlnbm9yZUVycm9yT25NaXNzaW5nQ29udGV4dCkge1xuICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IHR5cGUtY2hlY2tlZCBkdW1teVZhbHVlLlxuICAgICAgICByZXR1cm4gYXJncy5kdW1teVZhbHVlO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxscyBnZXRSZXNvdXJjZSBmcm9tIENDIEFQSSB0byBnZXQgdGhlIHJlc291cmNlLlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2NsaS9sYXRlc3QvcmVmZXJlbmNlL2Nsb3VkY29udHJvbC9nZXQtcmVzb3VyY2UuaHRtbFxuICAgKlxuICAgKiBXaWxsIGFsd2F5cyByZXR1cm4gZXhhY3RseSBvbmUgcmVzb3VyY2UsIG9yIGZhaWwuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdldFJlc291cmNlKFxuICAgIGNjOiBJQ2xvdWRDb250cm9sQ2xpZW50LFxuICAgIHR5cGVOYW1lOiBzdHJpbmcsXG4gICAgZXhhY3RJZGVudGlmaWVyOiBzdHJpbmcsXG4gICk6IFByb21pc2U8Rm91bmRSZXNvdXJjZVtdPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNjLmdldFJlc291cmNlKHtcbiAgICAgICAgVHlwZU5hbWU6IHR5cGVOYW1lLFxuICAgICAgICBJZGVudGlmaWVyOiBleGFjdElkZW50aWZpZXIsXG4gICAgICB9KTtcbiAgICAgIGlmICghcmVzdWx0LlJlc291cmNlRGVzY3JpcHRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbnRleHRQcm92aWRlckVycm9yKCdVbmV4cGVjdGVkIENsb3VkQ29udHJvbCBBUEkgYmVoYXZpb3I6IHJldHVybmVkIGVtcHR5IHJlc3BvbnNlJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbZm91bmRSZXNvdXJjZUZyb21DY0FwaShyZXN1bHQuUmVzb3VyY2VEZXNjcmlwdGlvbildO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgUmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbiB8fCAoZXJyIGFzIGFueSkubmFtZSA9PT0gJ1Jlc291cmNlTm90Rm91bmRFeGNlcHRpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBOb1Jlc3VsdHNGb3VuZEVycm9yKGBObyByZXNvdXJjZSBvZiB0eXBlICR7dHlwZU5hbWV9IHdpdGggaWRlbnRpZmllcjogJHtleGFjdElkZW50aWZpZXJ9YCk7XG4gICAgICB9XG4gICAgICBpZiAoIUNvbnRleHRQcm92aWRlckVycm9yLmlzQ29udGV4dFByb3ZpZGVyRXJyb3IoZXJyKSkge1xuICAgICAgICB0aHJvdyBDb250ZXh0UHJvdmlkZXJFcnJvci53aXRoQ2F1c2UoYEVuY291bnRlcmVkIENDIEFQSSBlcnJvciB3aGlsZSBnZXR0aW5nICR7dHlwZU5hbWV9IHJlc291cmNlICR7ZXhhY3RJZGVudGlmaWVyfWAsIGVycik7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIGxpc3RSZXNvdXJjZXMgZnJvbSBDQyBBUEkgdG8gZ2V0IHRoZSByZXNvdXJjZXMgYW5kIGFwcGx5IGFyZ3MucHJvcGVydHlNYXRjaCB0byBmaW5kIHRoZSByZXNvdXJjZXMuXG4gICAqIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2xpL2xhdGVzdC9yZWZlcmVuY2UvY2xvdWRjb250cm9sL2xpc3QtcmVzb3VyY2VzLmh0bWxcbiAgICpcbiAgICogV2lsbCByZXR1cm4gMCBvciBtb3JlIHJlc291cmNlcy5cbiAgICpcbiAgICogRG9lcyBub3QgY3VycmVudGx5IHBhZ2luYXRlIHRocm91Z2ggbW9yZSB0aGFuIG9uZSByZXN1bHQgcGFnZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgbGlzdFJlc291cmNlcyhcbiAgICBjYzogSUNsb3VkQ29udHJvbENsaWVudCxcbiAgICB0eXBlTmFtZTogc3RyaW5nLFxuICAgIHByb3BlcnR5TWF0Y2g6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIGV4cGVjdGVkTWF0Y2hDb3VudD86IENjQXBpQ29udGV4dFF1ZXJ5WydleHBlY3RlZE1hdGNoQ291bnQnXSxcbiAgKTogUHJvbWlzZTxGb3VuZFJlc291cmNlW10+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY2MubGlzdFJlc291cmNlcyh7XG4gICAgICAgIFR5cGVOYW1lOiB0eXBlTmFtZSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZm91bmQgPSAocmVzdWx0LlJlc291cmNlRGVzY3JpcHRpb25zID8/IFtdKVxuICAgICAgICAubWFwKGZvdW5kUmVzb3VyY2VGcm9tQ2NBcGkpXG4gICAgICAgIC5maWx0ZXIoKHIpID0+IHtcbiAgICAgICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMocHJvcGVydHlNYXRjaCkuZXZlcnkoKFtwcm9wUGF0aCwgZXhwZWN0ZWRdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhY3R1YWwgPSBmaW5kSnNvblZhbHVlKHIucHJvcGVydGllcywgcHJvcFBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuIHByb3BlcnR5TWF0Y2hlc0ZpbHRlcihhY3R1YWwsIGV4cGVjdGVkKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgIGlmICgoZXhwZWN0ZWRNYXRjaENvdW50ID09PSAnYXQtbGVhc3Qtb25lJyB8fCBleHBlY3RlZE1hdGNoQ291bnQgPT09ICdleGFjdGx5LW9uZScpICYmIGZvdW5kLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgTm9SZXN1bHRzRm91bmRFcnJvcihgQ291bGQgbm90IGZpbmQgYW55IHJlc291cmNlcyBtYXRjaGluZyAke0pTT04uc3RyaW5naWZ5KHByb3BlcnR5TWF0Y2gpfTsgZXhwZWN0ZWQgJHtleHBlY3RlZE1hdGNoQ291bnRUZXh0KGV4cGVjdGVkTWF0Y2hDb3VudCl9LmApO1xuICAgICAgfVxuICAgICAgaWYgKChleHBlY3RlZE1hdGNoQ291bnQgPT09ICdhdC1tb3N0LW9uZScgfHwgZXhwZWN0ZWRNYXRjaENvdW50ID09PSAnZXhhY3RseS1vbmUnKSAmJiBmb3VuZC5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRocm93IG5ldyBDb250ZXh0UHJvdmlkZXJFcnJvcihgRm91bmQgJHtmb3VuZC5sZW5ndGh9IHJlc291cmNlcyBtYXRjaGluZyAke0pTT04uc3RyaW5naWZ5KHByb3BlcnR5TWF0Y2gpfTsgZXhwZWN0ZWQgJHtleHBlY3RlZE1hdGNoQ291bnRUZXh0KGV4cGVjdGVkTWF0Y2hDb3VudCl9LiBQbGVhc2UgbmFycm93IHRoZSBzZWFyY2ggY3JpdGVyaWFgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZvdW5kO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBpZiAoIUNvbnRleHRQcm92aWRlckVycm9yLmlzQ29udGV4dFByb3ZpZGVyRXJyb3IoZXJyKSkge1xuICAgICAgICB0aHJvdyBDb250ZXh0UHJvdmlkZXJFcnJvci53aXRoQ2F1c2UoYEVuY291bnRlcmVkIENDIEFQSSBlcnJvciB3aGlsZSBsaXN0aW5nICR7dHlwZU5hbWV9IHJlc291cmNlcyBtYXRjaGluZyAke0pTT04uc3RyaW5naWZ5KHByb3BlcnR5TWF0Y2gpfWAsIGVycik7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ29udmVydCBhIENDIEFQSSByZXNwb25zZSBvYmplY3QgaW50byBhIG5pY2VyIG9iamVjdCAocGFyc2UgdGhlIEpTT04pXG4gKi9cbmZ1bmN0aW9uIGZvdW5kUmVzb3VyY2VGcm9tQ2NBcGkoZGVzYzogUmVzb3VyY2VEZXNjcmlwdGlvbik6IEZvdW5kUmVzb3VyY2Uge1xuICByZXR1cm4ge1xuICAgIGlkZW50aWZpZXI6IGRlc2MuSWRlbnRpZmllciA/PyAnKk1JU1NJTkcqJyxcbiAgICBwcm9wZXJ0aWVzOiBKU09OLnBhcnNlKGRlc2MuUHJvcGVydGllcyA/PyAne30nKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBnaXZlbiBwcm9wZXJ0eSB2YWx1ZSBtYXRjaGVzIHRoZSBnaXZlbiBmaWx0ZXJcbiAqXG4gKiBGb3Igbm93IHdlIGp1c3QgY2hlY2sgZm9yIHN0cmljdCBlcXVhbGl0eSwgYnV0IHdlIGNhbiBpbXBsZW1lbnQgcGF0dGVybiBtYXRjaGluZyBhbmQgZnV6enkgbWF0Y2hpbmcgaGVyZSBsYXRlclxuICovXG5mdW5jdGlvbiBwcm9wZXJ0eU1hdGNoZXNGaWx0ZXIoYWN0dWFsOiB1bmtub3duLCBleHBlY3RlZDogdW5rbm93bikge1xuICByZXR1cm4gZXhwZWN0ZWQgPT09IGFjdHVhbDtcbn1cblxuZnVuY3Rpb24gaXNPYmplY3QoeDogdW5rbm93bik6IHggaXMgeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0ge1xuICByZXR1cm4gdHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkoeCk7XG59XG5cbmZ1bmN0aW9uIGV4cGVjdGVkTWF0Y2hDb3VudFRleHQoZXhwZWN0YXRpb246IE5vbk51bGxhYmxlPENjQXBpQ29udGV4dFF1ZXJ5WydleHBlY3RlZE1hdGNoQ291bnQnXT4pOiBzdHJpbmcge1xuICBzd2l0Y2ggKGV4cGVjdGF0aW9uKSB7XG4gICAgY2FzZSAnYXQtbGVhc3Qtb25lJzpcbiAgICAgIHJldHVybiAnYXQgbGVhc3Qgb25lJztcbiAgICBjYXNlICdhdC1tb3N0LW9uZSc6XG4gICAgICByZXR1cm4gJ2F0IG1vc3Qgb25lJztcbiAgICBjYXNlICdleGFjdGx5LW9uZSc6XG4gICAgICByZXR1cm4gJ2V4YWN0bHkgb25lJztcbiAgICBjYXNlICdhbnknOlxuICAgICAgcmV0dXJuICdhbnkgbnVtYmVyJztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGV4cGVjdGF0aW9uO1xuICB9XG59XG5cbi8qKlxuICogQSBwYXJzZWQgdmVyc2lvbiBvZiB0aGUgcmV0dXJuIHZhbHVlIGZyb20gQ0NBUElcbiAqL1xuaW50ZXJmYWNlIEZvdW5kUmVzb3VyY2Uge1xuICByZWFkb25seSBpZGVudGlmaWVyOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuIl19
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2MtYXBpLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2MtYXBpLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLHNFQUF5RTtBQUV6RSxxREFBaUU7QUFFakUsNERBQXFGO0FBQ3JGLGtDQUFzRDtBQUV0RCxNQUFhLDBCQUEwQjtJQUNSO0lBQTdCLFlBQTZCLEdBQWdCO1FBQWhCLFFBQUcsR0FBSCxHQUFHLENBQWE7SUFDN0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUF1QjtRQUMzQyxpQkFBaUI7UUFDakIsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUksb0NBQW9CLENBQUMsK0ZBQStGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pKLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQywyQkFBMkIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3RFLE1BQU0sSUFBSSxvQ0FBb0IsQ0FBQyxzR0FBc0csSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEssQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzNHLE1BQU0sSUFBSSxvQ0FBb0IsQ0FBQyx3RUFBd0UsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdJLENBQUM7UUFFRCxnQkFBZ0I7UUFDaEIsTUFBTSxZQUFZLEdBQUcsQ0FB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LENBQVU7SUFDMUIsT0FBTyxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELFNBQVMsc0JBQXNCLENBQUMsV0FBaUU7SUFDL0YsUUFBUSxXQUFXLEVBQUUsQ0FBQztRQUNwQixLQUFLLGNBQWM7WUFDakIsT0FBTyxjQUFjLENBQUM7UUFDeEIsS0FBSyxhQUFhO1lBQ2hCLE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLEtBQUssYUFBYTtZQUNoQixPQUFPLGFBQWEsQ0FBQztRQUN2QixLQUFLLEtBQUs7WUFDUixPQUFPLFlBQVksQ0FBQztRQUN0QjtZQUNFLE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDY0FwaUNvbnRleHRRdWVyeSB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlRGVzY3JpcHRpb24gfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRjb250cm9sJztcbmltcG9ydCB7IFJlc291cmNlTm90Rm91bmRFeGNlcHRpb24gfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRjb250cm9sJztcbmltcG9ydCB0eXBlIHsgSUNsb3VkQ29udHJvbENsaWVudCwgU2RrUHJvdmlkZXIgfSBmcm9tICcuLi9hcGkvYXdzLWF1dGgvcHJpdmF0ZSc7XG5pbXBvcnQgeyBpbml0Q29udGV4dFByb3ZpZGVyU2RrIH0gZnJvbSAnLi4vYXBpL2F3cy1hdXRoL3ByaXZhdGUnO1xuaW1wb3J0IHR5cGUgeyBDb250ZXh0UHJvdmlkZXJQbHVnaW4gfSBmcm9tICcuLi9hcGkvcGx1Z2luJztcbmltcG9ydCB7IENvbnRleHRQcm92aWRlckVycm9yLCBOb1Jlc3VsdHNGb3VuZEVycm9yIH0gZnJvbSAnLi4vdG9vbGtpdC90b29sa2l0LWVycm9yJztcbmltcG9ydCB7IGZpbmRKc29uVmFsdWUsIGdldFJlc3VsdE9iaiB9IGZyb20gJy4uL3V0aWwnO1xuXG5leHBvcnQgY2xhc3MgQ2NBcGlDb250ZXh0UHJvdmlkZXJQbHVnaW4gaW1wbGVtZW50cyBDb250ZXh0UHJvdmlkZXJQbHVnaW4ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGF3czogU2RrUHJvdmlkZXIpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHJldHVybnMgYSBkYXRhIG9iamVjdCB3aXRoIHRoZSB2YWx1ZSBmcm9tIENsb3VkQ29udHJvbCBBUEkgcmVzdWx0LlxuICAgKlxuICAgKiBTZWUgdGhlIGRvY3VtZW50YXRpb24gaW4gdGhlIENsb3VkIEFzc2VtYmx5IFNjaGVtYSBmb3IgdGhlIHNlbWFudGljcyBvZlxuICAgKiBlYWNoIHF1ZXJ5IHBhcmFtZXRlci5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRWYWx1ZShhcmdzOiBDY0FwaUNvbnRleHRRdWVyeSkge1xuICAgIC8vIFZhbGlkYXRlIGlucHV0XG4gICAgaWYgKGFyZ3MuZXhhY3RJZGVudGlmaWVyICYmIGFyZ3MucHJvcGVydHlNYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IENvbnRleHRQcm92aWRlckVycm9yKGBQcm92aWRlciBwcm90b2NvbCBlcnJvcjogc3BlY2lmeSBlaXRoZXIgZXhhY3RJZGVudGlmaWVyIG9yIHByb3BlcnR5TWF0Y2gsIGJ1dCBub3QgYm90aCAoZ290ICR7SlNPTi5zdHJpbmdpZnkoYXJncyl9KWApO1xuICAgIH1cbiAgICBpZiAoYXJncy5pZ25vcmVFcnJvck9uTWlzc2luZ0NvbnRleHQgJiYgYXJncy5kdW1teVZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZXh0UHJvdmlkZXJFcnJvcihgUHJvdmlkZXIgcHJvdG9jb2wgZXJyb3I6IGlmIGlnbm9yZUVycm9yT25NaXNzaW5nQ29udGV4dCBpcyBzZXQsIGEgZHVtbXlWYWx1ZSBtdXN0IGJlIHN1cHBsaWVkIChnb3QgJHtKU09OLnN0cmluZ2lmeShhcmdzKX0pYCk7XG4gICAgfVxuICAgIGlmIChhcmdzLmR1bW15VmFsdWUgIT09IHVuZGVmaW5lZCAmJiAoIUFycmF5LmlzQXJyYXkoYXJncy5kdW1teVZhbHVlKSB8fCAhYXJncy5kdW1teVZhbHVlLmV2ZXJ5KGlzT2JqZWN0KSkpIHtcbiAgICAgIHRocm93IG5ldyBDb250ZXh0UHJvdmlkZXJFcnJvcihgUHJvdmlkZXIgcHJvdG9jb2wgZXJyb3I6IGR1bW15VmFsdWUgbXVzdCBiZSBhbiBhcnJheSBvZiBvYmplY3RzIChnb3QgJHtKU09OLnN0cmluZ2lmeShhcmdzLmR1bW15VmFsdWUpfSlgKTtcbiAgICB9XG5cbiAgICAvLyBEbyB0aGUgbG9va3VwXG4gICAgY29uc3QgY2xvdWRDb250cm9sID0gKGF3YWl0IGluaXRDb250ZXh0UHJvdmlkZXJTZGsodGhpcy5hd3MsIGFyZ3MpKS5jbG91ZENvbnRyb2woKTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgcmVzb3VyY2VzOiBGb3VuZFJlc291cmNlW107XG4gICAgICBpZiAoYXJncy5leGFjdElkZW50aWZpZXIpIHtcbiAgICAgICAgLy8gdXNlIGdldFJlc291cmNlIHRvIGdldCB0aGUgZXhhY3QgaWRlbnRpZmllclxuICAgICAgICByZXNvdXJjZXMgPSBhd2FpdCB0aGlzLmdldFJlc291cmNlKGNsb3VkQ29udHJvbCwgYXJncy50eXBlTmFtZSwgYXJncy5leGFjdElkZW50aWZpZXIpO1xuICAgICAgfSBlbHNlIGlmIChhcmdzLnByb3BlcnR5TWF0Y2gpIHtcbiAgICAgICAgLy8gdXNlIGxpc3RSZXNvdXJjZVxuICAgICAgICByZXNvdXJjZXMgPSBhd2FpdCB0aGlzLmxpc3RSZXNvdXJjZXMoY2xvdWRDb250cm9sLCBhcmdzLnR5cGVOYW1lLCBhcmdzLnByb3BlcnR5TWF0Y2gsIGFyZ3MuZXhwZWN0ZWRNYXRjaENvdW50KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBDb250ZXh0UHJvdmlkZXJFcnJvcihgUHJvdmlkZXIgcHJvdG9jb2wgZXJyb3I6IG5laXRoZXIgZXhhY3RJZGVudGlmaWVyIG5vciBwcm9wZXJ0eU1hdGNoIGlzIHNwZWNpZmllZCBpbiAke0pTT04uc3RyaW5naWZ5KGFyZ3MpfS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc291cmNlcy5tYXAoKHIpID0+IGdldFJlc3VsdE9iaihyLnByb3BlcnRpZXMsIHIuaWRlbnRpZmllciwgYXJncy5wcm9wZXJ0aWVzVG9SZXR1cm4pKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChDb250ZXh0UHJvdmlkZXJFcnJvci5pc05vUmVzdWx0c0ZvdW5kRXJyb3IoZXJyKSAmJiBhcmdzLmlnbm9yZUVycm9yT25NaXNzaW5nQ29udGV4dCkge1xuICAgICAgICAvLyBXZSd2ZSBhbHJlYWR5IHR5cGUtY2hlY2tlZCBkdW1teVZhbHVlLlxuICAgICAgICByZXR1cm4gYXJncy5kdW1teVZhbHVlO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxscyBnZXRSZXNvdXJjZSBmcm9tIENDIEFQSSB0byBnZXQgdGhlIHJlc291cmNlLlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2NsaS9sYXRlc3QvcmVmZXJlbmNlL2Nsb3VkY29udHJvbC9nZXQtcmVzb3VyY2UuaHRtbFxuICAgKlxuICAgKiBXaWxsIGFsd2F5cyByZXR1cm4gZXhhY3RseSBvbmUgcmVzb3VyY2UsIG9yIGZhaWwuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdldFJlc291cmNlKFxuICAgIGNjOiBJQ2xvdWRDb250cm9sQ2xpZW50LFxuICAgIHR5cGVOYW1lOiBzdHJpbmcsXG4gICAgZXhhY3RJZGVudGlmaWVyOiBzdHJpbmcsXG4gICk6IFByb21pc2U8Rm91bmRSZXNvdXJjZVtdPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNjLmdldFJlc291cmNlKHtcbiAgICAgICAgVHlwZU5hbWU6IHR5cGVOYW1lLFxuICAgICAgICBJZGVudGlmaWVyOiBleGFjdElkZW50aWZpZXIsXG4gICAgICB9KTtcbiAgICAgIGlmICghcmVzdWx0LlJlc291cmNlRGVzY3JpcHRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbnRleHRQcm92aWRlckVycm9yKCdVbmV4cGVjdGVkIENsb3VkQ29udHJvbCBBUEkgYmVoYXZpb3I6IHJldHVybmVkIGVtcHR5IHJlc3BvbnNlJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbZm91bmRSZXNvdXJjZUZyb21DY0FwaShyZXN1bHQuUmVzb3VyY2VEZXNjcmlwdGlvbildO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgUmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbiB8fCAoZXJyIGFzIGFueSkubmFtZSA9PT0gJ1Jlc291cmNlTm90Rm91bmRFeGNlcHRpb24nKSB7XG4gICAgICAgIHRocm93IG5ldyBOb1Jlc3VsdHNGb3VuZEVycm9yKGBObyByZXNvdXJjZSBvZiB0eXBlICR7dHlwZU5hbWV9IHdpdGggaWRlbnRpZmllcjogJHtleGFjdElkZW50aWZpZXJ9YCk7XG4gICAgICB9XG4gICAgICBpZiAoIUNvbnRleHRQcm92aWRlckVycm9yLmlzQ29udGV4dFByb3ZpZGVyRXJyb3IoZXJyKSkge1xuICAgICAgICB0aHJvdyBDb250ZXh0UHJvdmlkZXJFcnJvci53aXRoQ2F1c2UoYEVuY291bnRlcmVkIENDIEFQSSBlcnJvciB3aGlsZSBnZXR0aW5nICR7dHlwZU5hbWV9IHJlc291cmNlICR7ZXhhY3RJZGVudGlmaWVyfWAsIGVycik7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIGxpc3RSZXNvdXJjZXMgZnJvbSBDQyBBUEkgdG8gZ2V0IHRoZSByZXNvdXJjZXMgYW5kIGFwcGx5IGFyZ3MucHJvcGVydHlNYXRjaCB0byBmaW5kIHRoZSByZXNvdXJjZXMuXG4gICAqIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2xpL2xhdGVzdC9yZWZlcmVuY2UvY2xvdWRjb250cm9sL2xpc3QtcmVzb3VyY2VzLmh0bWxcbiAgICpcbiAgICogV2lsbCByZXR1cm4gMCBvciBtb3JlIHJlc291cmNlcy5cbiAgICpcbiAgICogRG9lcyBub3QgY3VycmVudGx5IHBhZ2luYXRlIHRocm91Z2ggbW9yZSB0aGFuIG9uZSByZXN1bHQgcGFnZS5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgbGlzdFJlc291cmNlcyhcbiAgICBjYzogSUNsb3VkQ29udHJvbENsaWVudCxcbiAgICB0eXBlTmFtZTogc3RyaW5nLFxuICAgIHByb3BlcnR5TWF0Y2g6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIGV4cGVjdGVkTWF0Y2hDb3VudD86IENjQXBpQ29udGV4dFF1ZXJ5WydleHBlY3RlZE1hdGNoQ291bnQnXSxcbiAgKTogUHJvbWlzZTxGb3VuZFJlc291cmNlW10+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZm91bmQ6IEZvdW5kUmVzb3VyY2VbXSA9IFtdO1xuICAgICAgbGV0IG5leHRUb2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgICBkbyB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNjLmxpc3RSZXNvdXJjZXMoe1xuICAgICAgICAgIFR5cGVOYW1lOiB0eXBlTmFtZSxcbiAgICAgICAgICBNYXhSZXN1bHRzOiAxMDAsXG4gICAgICAgICAgLi4ubmV4dFRva2VuID8geyBOZXh0VG9rZW46IG5leHRUb2tlbiB9IDoge30sXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZvdW5kLnB1c2goXG4gICAgICAgICAgLi4uKHJlc3VsdC5SZXNvdXJjZURlc2NyaXB0aW9ucyA/PyBbXSlcbiAgICAgICAgICAgIC5tYXAoZm91bmRSZXNvdXJjZUZyb21DY0FwaSlcbiAgICAgICAgICAgIC5maWx0ZXIoKHIpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHByb3BlcnR5TWF0Y2gpLmV2ZXJ5KChbcHJvcFBhdGgsIGV4cGVjdGVkXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdHVhbCA9IGZpbmRKc29uVmFsdWUoci5wcm9wZXJ0aWVzLCBwcm9wUGF0aCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BlcnR5TWF0Y2hlc0ZpbHRlcihhY3R1YWwsIGV4cGVjdGVkKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgKTtcblxuICAgICAgICBuZXh0VG9rZW4gPSByZXN1bHQuTmV4dFRva2VuO1xuXG4gICAgICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRvIGVycm9yIG91dCBlYXJseSwgYmVmb3JlIHdlIGhhdmUgY29uc3VtZWQgYWxsIHBhZ2VzLlxuICAgICAgICBpZiAoKGV4cGVjdGVkTWF0Y2hDb3VudCA9PT0gJ2F0LW1vc3Qtb25lJyB8fCBleHBlY3RlZE1hdGNoQ291bnQgPT09ICdleGFjdGx5LW9uZScpICYmIGZvdW5kLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBjb25zdCBhdExlYXN0ID0gbmV4dFRva2VuID8gJ2F0IGxlYXN0ICcgOiAnJztcbiAgICAgICAgICB0aHJvdyBuZXcgQ29udGV4dFByb3ZpZGVyRXJyb3IoYEZvdW5kICR7YXRMZWFzdH0ke2ZvdW5kLmxlbmd0aH0gcmVzb3VyY2VzIG1hdGNoaW5nICR7SlNPTi5zdHJpbmdpZnkocHJvcGVydHlNYXRjaCl9OyBleHBlY3RlZCAke2V4cGVjdGVkTWF0Y2hDb3VudFRleHQoZXhwZWN0ZWRNYXRjaENvdW50KX0uIFBsZWFzZSBuYXJyb3cgdGhlIHNlYXJjaCBjcml0ZXJpYWApO1xuICAgICAgICB9XG4gICAgICB9IHdoaWxlIChuZXh0VG9rZW4pO1xuXG4gICAgICBpZiAoKGV4cGVjdGVkTWF0Y2hDb3VudCA9PT0gJ2F0LWxlYXN0LW9uZScgfHwgZXhwZWN0ZWRNYXRjaENvdW50ID09PSAnZXhhY3RseS1vbmUnKSAmJiBmb3VuZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vUmVzdWx0c0ZvdW5kRXJyb3IoYENvdWxkIG5vdCBmaW5kIGFueSByZXNvdXJjZXMgbWF0Y2hpbmcgJHtKU09OLnN0cmluZ2lmeShwcm9wZXJ0eU1hdGNoKX07IGV4cGVjdGVkICR7ZXhwZWN0ZWRNYXRjaENvdW50VGV4dChleHBlY3RlZE1hdGNoQ291bnQpfS5gKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZvdW5kO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBpZiAoIUNvbnRleHRQcm92aWRlckVycm9yLmlzQ29udGV4dFByb3ZpZGVyRXJyb3IoZXJyKSkge1xuICAgICAgICB0aHJvdyBDb250ZXh0UHJvdmlkZXJFcnJvci53aXRoQ2F1c2UoYEVuY291bnRlcmVkIENDIEFQSSBlcnJvciB3aGlsZSBsaXN0aW5nICR7dHlwZU5hbWV9IHJlc291cmNlcyBtYXRjaGluZyAke0pTT04uc3RyaW5naWZ5KHByb3BlcnR5TWF0Y2gpfWAsIGVycik7XG4gICAgICB9XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ29udmVydCBhIENDIEFQSSByZXNwb25zZSBvYmplY3QgaW50byBhIG5pY2VyIG9iamVjdCAocGFyc2UgdGhlIEpTT04pXG4gKi9cbmZ1bmN0aW9uIGZvdW5kUmVzb3VyY2VGcm9tQ2NBcGkoZGVzYzogUmVzb3VyY2VEZXNjcmlwdGlvbik6IEZvdW5kUmVzb3VyY2Uge1xuICByZXR1cm4ge1xuICAgIGlkZW50aWZpZXI6IGRlc2MuSWRlbnRpZmllciA/PyAnKk1JU1NJTkcqJyxcbiAgICBwcm9wZXJ0aWVzOiBKU09OLnBhcnNlKGRlc2MuUHJvcGVydGllcyA/PyAne30nKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBnaXZlbiBwcm9wZXJ0eSB2YWx1ZSBtYXRjaGVzIHRoZSBnaXZlbiBmaWx0ZXJcbiAqXG4gKiBGb3Igbm93IHdlIGp1c3QgY2hlY2sgZm9yIHN0cmljdCBlcXVhbGl0eSwgYnV0IHdlIGNhbiBpbXBsZW1lbnQgcGF0dGVybiBtYXRjaGluZyBhbmQgZnV6enkgbWF0Y2hpbmcgaGVyZSBsYXRlclxuICovXG5mdW5jdGlvbiBwcm9wZXJ0eU1hdGNoZXNGaWx0ZXIoYWN0dWFsOiB1bmtub3duLCBleHBlY3RlZDogdW5rbm93bikge1xuICByZXR1cm4gZXhwZWN0ZWQgPT09IGFjdHVhbDtcbn1cblxuZnVuY3Rpb24gaXNPYmplY3QoeDogdW5rbm93bik6IHggaXMgeyBba2V5OiBzdHJpbmddOiB1bmtub3duIH0ge1xuICByZXR1cm4gdHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkoeCk7XG59XG5cbmZ1bmN0aW9uIGV4cGVjdGVkTWF0Y2hDb3VudFRleHQoZXhwZWN0YXRpb246IE5vbk51bGxhYmxlPENjQXBpQ29udGV4dFF1ZXJ5WydleHBlY3RlZE1hdGNoQ291bnQnXT4pOiBzdHJpbmcge1xuICBzd2l0Y2ggKGV4cGVjdGF0aW9uKSB7XG4gICAgY2FzZSAnYXQtbGVhc3Qtb25lJzpcbiAgICAgIHJldHVybiAnYXQgbGVhc3Qgb25lJztcbiAgICBjYXNlICdhdC1tb3N0LW9uZSc6XG4gICAgICByZXR1cm4gJ2F0IG1vc3Qgb25lJztcbiAgICBjYXNlICdleGFjdGx5LW9uZSc6XG4gICAgICByZXR1cm4gJ2V4YWN0bHkgb25lJztcbiAgICBjYXNlICdhbnknOlxuICAgICAgcmV0dXJuICdhbnkgbnVtYmVyJztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGV4cGVjdGF0aW9uO1xuICB9XG59XG5cbi8qKlxuICogQSBwYXJzZWQgdmVyc2lvbiBvZiB0aGUgcmV0dXJuIHZhbHVlIGZyb20gQ0NBUElcbiAqL1xuaW50ZXJmYWNlIEZvdW5kUmVzb3VyY2Uge1xuICByZWFkb25seSBpZGVudGlmaWVyOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuIl19
|
package/lib/index_bg.wasm
CHANGED
|
Binary file
|
package/lib/payloads/refactor.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZWZhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUeXBlZE1hcHBpbmcgfSBmcm9tICdAYXdzLWNkay9jbG91ZGZvcm1hdGlvbi1kaWZmJztcblxuLyoqXG4gKiBPdXRwdXQgb2YgdGhlIHJlZmFjdG9yIGNvbW1hbmRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWZhY3RvclJlc3VsdCB7XG4gIC8qKlxuICAgKiBNYXBwaW5ncyBhbG9uZyB3aXRoIHRoZSByZXNvdXJjZSB0eXBlXG4gICAqL1xuICByZWFkb25seSB0eXBlZE1hcHBpbmdzPzogVHlwZWRNYXBwaW5nW107XG5cbiAgLyoqXG4gICAqIEFtYmlndW91cyBwYXRoIGNvcnJlc3BvbmRlbmNlcywgaWYgYW55XG4gICAqL1xuICBhbWJpZ3VvdXNQYXRocz86IFtzdHJpbmdbXSwgc3RyaW5nW11dW107XG59XG4iXX0=
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type * as cxschema from '@aws-cdk/cloud-assembly-schema';
|
|
1
2
|
import type * as cxapi from '@aws-cdk/cx-api';
|
|
2
3
|
/**
|
|
3
4
|
* The dependencies of a stack.
|
|
@@ -13,6 +14,9 @@ export interface StackDetails {
|
|
|
13
14
|
id: string;
|
|
14
15
|
name: string;
|
|
15
16
|
environment: cxapi.Environment;
|
|
17
|
+
metadata?: {
|
|
18
|
+
[path: string]: cxschema.MetadataEntry[];
|
|
19
|
+
};
|
|
16
20
|
dependencies: StackDependency[];
|
|
17
21
|
}
|
|
18
22
|
//# sourceMappingURL=stack-details.d.ts.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stZGV0YWlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0YWNrLWRldGFpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlICogYXMgY3hzY2hlbWEgZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hJztcbmltcG9ydCB0eXBlICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcblxuLyoqXG4gKiBUaGUgZGVwZW5kZW5jaWVzIG9mIGEgc3RhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tEZXBlbmRlbmN5IHtcbiAgaWQ6IHN0cmluZztcbiAgZGVwZW5kZW5jaWVzOiBTdGFja0RlcGVuZGVuY3lbXTtcbn1cblxuLyoqXG4gKiBEZXRhaWxzIG9mIGEgc3RhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tEZXRhaWxzIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQ7XG4gIG1ldGFkYXRhPzogeyBbcGF0aDogc3RyaW5nXTogY3hzY2hlbWEuTWV0YWRhdGFFbnRyeVtdIH07XG4gIGRlcGVuZGVuY2llczogU3RhY2tEZXBlbmRlbmN5W107XG59XG5cbiJdfQ==
|
package/lib/toolkit/toolkit.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import '../private/dispose-polyfill';
|
|
2
2
|
import type { TemplateDiff } from '@aws-cdk/cloudformation-diff';
|
|
3
|
-
import type { DeployResult, DestroyResult, RollbackResult } from './types';
|
|
3
|
+
import type { FeatureFlag, DeployResult, DestroyResult, RollbackResult } from './types';
|
|
4
4
|
import type { BootstrapEnvironments, BootstrapOptions, BootstrapResult } from '../actions/bootstrap';
|
|
5
5
|
import { type DeployOptions } from '../actions/deploy';
|
|
6
6
|
import { type DestroyOptions } from '../actions/destroy';
|
|
@@ -75,7 +75,7 @@ export interface ToolkitOptions {
|
|
|
75
75
|
* Names of toolkit features that are still under development, and may change in
|
|
76
76
|
* the future.
|
|
77
77
|
*/
|
|
78
|
-
export type UnstableFeature = 'refactor';
|
|
78
|
+
export type UnstableFeature = 'refactor' | 'flags';
|
|
79
79
|
/**
|
|
80
80
|
* The AWS CDK Programmatic Toolkit
|
|
81
81
|
*/
|
|
@@ -182,6 +182,10 @@ export declare class Toolkit extends CloudAssemblySourceBuilder {
|
|
|
182
182
|
*/
|
|
183
183
|
private deploymentsForAction;
|
|
184
184
|
private invokeDeployFromWatch;
|
|
185
|
+
/**
|
|
186
|
+
* Retrieve feature flag information from the cloud assembly
|
|
187
|
+
*/
|
|
188
|
+
flags(cx: ICloudAssemblySource): Promise<FeatureFlag[]>;
|
|
185
189
|
private requireUnstableFeature;
|
|
186
190
|
}
|
|
187
191
|
//# sourceMappingURL=toolkit.d.ts.map
|