@aws-cdk/toolkit-lib 0.3.3 → 0.3.5
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/api-extractor.json +8 -2
- package/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/actions/bootstrap/private/helpers.js +3 -3
- package/lib/actions/diff/index.d.ts +2 -2
- package/lib/actions/diff/index.js +1 -1
- package/lib/actions/diff/private/helpers.js +8 -8
- package/lib/actions/refactor/index.d.ts +44 -0
- package/lib/actions/refactor/index.js +1 -1
- package/lib/api/aws-auth/awscli-compatible.d.ts +6 -5
- package/lib/api/aws-auth/awscli-compatible.js +2 -2
- package/lib/api/aws-auth/credential-plugins.d.ts +2 -2
- package/lib/api/aws-auth/credential-plugins.js +2 -2
- package/lib/api/aws-auth/provider-caching.d.ts +3 -3
- package/lib/api/aws-auth/provider-caching.js +1 -1
- package/lib/api/aws-auth/sdk-logger.d.ts +8 -2
- package/lib/api/aws-auth/sdk-logger.js +4 -4
- package/lib/api/aws-auth/sdk-provider.d.ts +4 -3
- package/lib/api/aws-auth/sdk-provider.js +2 -2
- package/lib/api/aws-auth/sdk.d.ts +7 -6
- package/lib/api/aws-auth/sdk.js +4 -4
- package/lib/api/aws-auth/tracing.d.ts +2 -2
- package/lib/api/aws-auth/tracing.js +1 -1
- package/lib/api/aws-auth/types.d.ts +3 -3
- package/lib/api/aws-auth/types.js +1 -1
- package/lib/api/bootstrap/bootstrap-environment.js +2 -2
- package/lib/api/bootstrap/bootstrap-template.yaml +12 -1
- package/lib/api/cloud-assembly/environment.js +1 -1
- package/lib/api/cloud-assembly/index.d.ts +2 -1
- package/lib/api/cloud-assembly/index.js +3 -2
- package/lib/api/cloud-assembly/private/context-aware-source.js +3 -3
- package/lib/api/cloud-assembly/private/exec.js +3 -3
- package/lib/api/cloud-assembly/private/prepare-source.js +4 -4
- package/lib/api/cloud-assembly/private/source-builder.d.ts +14 -12
- package/lib/api/cloud-assembly/private/source-builder.js +40 -23
- package/lib/api/cloud-assembly/private/stack-assembly.js +7 -7
- package/lib/api/cloud-assembly/source-builder.d.ts +19 -0
- package/lib/api/cloud-assembly/source-builder.js +1 -1
- package/lib/api/cloud-assembly/stack-collection.js +2 -2
- package/lib/api/cloudformation/evaluate-cloudformation-template.d.ts +1 -1
- package/lib/api/cloudformation/evaluate-cloudformation-template.js +2 -2
- package/lib/api/cloudformation/stack-helpers.js +2 -2
- package/lib/api/cloudformation/template-body-parameter.js +2 -2
- package/lib/api/context.js +2 -2
- package/lib/api/deployments/asset-publishing.js +2 -2
- package/lib/api/deployments/assets.js +5 -6
- package/lib/api/deployments/cfn-api.js +3 -3
- package/lib/api/deployments/checks.js +2 -2
- package/lib/api/deployments/deploy-stack.js +2 -2
- package/lib/api/deployments/deployment-result.js +2 -2
- package/lib/api/deployments/deployments.js +3 -3
- package/lib/api/diff/diff-formatter.js +2 -2
- package/lib/api/environment/environment-access.js +2 -2
- package/lib/api/environment/environment-resources.js +2 -2
- package/lib/api/environment/placeholders.js +1 -1
- package/lib/api/garbage-collection/garbage-collector.js +2 -2
- package/lib/api/garbage-collection/progress-printer.js +2 -2
- package/lib/api/garbage-collection/stack-refresh.js +2 -2
- package/lib/api/hotswap/appsync-mapping-templates.js +2 -2
- package/lib/api/hotswap/common.d.ts +2 -1
- package/lib/api/hotswap/common.js +9 -3
- package/lib/api/hotswap/ecs-services.js +3 -2
- package/lib/api/hotswap/hotswap-deployments.js +2 -2
- package/lib/api/hotswap/lambda-functions.js +2 -2
- package/lib/api/index.d.ts +0 -1
- package/lib/api/index.js +1 -2
- package/lib/api/io/private/index.d.ts +0 -1
- package/lib/api/io/private/index.js +1 -2
- package/lib/api/io/private/level-priority.js +1 -1
- package/lib/api/io/private/span.js +1 -1
- package/lib/api/logs-monitor/logs-monitor.js +2 -2
- package/lib/api/notices/cached-data-source.d.ts +13 -0
- package/lib/api/notices/cached-data-source.js +77 -0
- package/lib/api/notices/filter.d.ts +59 -0
- package/lib/api/notices/filter.js +189 -0
- package/lib/api/notices/index.d.ts +1 -0
- package/lib/api/{private.js → notices/index.js} +2 -2
- package/lib/api/notices/notices.d.ts +111 -0
- package/lib/api/notices/notices.js +131 -0
- package/lib/api/notices/types.d.ts +37 -0
- package/lib/api/notices/types.js +3 -0
- package/lib/api/notices/web-data-source.d.ts +9 -0
- package/lib/api/notices/web-data-source.js +70 -0
- package/lib/api/plugin/context-provider-plugin.js +1 -1
- package/lib/api/plugin/plugin.d.ts +4 -6
- package/lib/api/plugin/plugin.js +8 -13
- package/lib/api/refactoring/cloudformation.d.ts +23 -0
- package/lib/api/refactoring/cloudformation.js +54 -1
- package/lib/api/refactoring/exclude.d.ts +29 -0
- package/lib/api/refactoring/exclude.js +94 -0
- package/lib/api/refactoring/execution.d.ts +7 -0
- package/lib/api/refactoring/execution.js +43 -0
- package/lib/api/refactoring/index.d.ts +6 -23
- package/lib/api/refactoring/index.js +89 -60
- package/lib/api/resource-import/importer.js +2 -2
- package/lib/api/rwlock.js +2 -2
- package/lib/api/settings.js +2 -2
- package/lib/api/shared-private.js +31 -6186
- package/lib/api/toolkit-info.js +2 -2
- package/lib/api/work-graph/work-graph-builder.js +3 -3
- package/lib/api/work-graph/work-graph.js +2 -2
- package/lib/context-providers/ami.js +2 -2
- package/lib/context-providers/cc-api-provider.js +2 -2
- package/lib/context-providers/hosted-zones.js +2 -2
- package/lib/context-providers/index.js +4 -4
- package/lib/context-providers/keys.js +2 -2
- package/lib/context-providers/load-balancers.js +2 -2
- package/lib/context-providers/security-groups.js +2 -2
- package/lib/context-providers/ssm-parameters.js +2 -2
- package/lib/context-providers/vpcs.js +3 -3
- package/lib/index.d.ts +3 -1
- package/lib/index.js +4 -2
- package/lib/index_bg.wasm +0 -0
- package/lib/payloads/deploy.d.ts +8 -1
- package/lib/payloads/deploy.js +1 -1
- package/lib/payloads/hotswap.d.ts +1 -0
- package/lib/payloads/hotswap.js +1 -1
- package/lib/private/activity-printer/base.js +1 -1
- package/lib/toolkit/non-interactive-io-host.js +5 -4
- package/lib/toolkit/toolkit.d.ts +2 -2
- package/lib/toolkit/toolkit.js +82 -37
- package/lib/util/directories.js +2 -2
- package/lib/util/index.d.ts +1 -0
- package/lib/util/index.js +2 -1
- package/lib/util/json.js +1 -1
- package/lib/util/net.d.ts +9 -0
- package/lib/util/net.js +60 -0
- package/lib/util/objects.js +2 -2
- package/lib/util/types.js +1 -1
- package/lib/util/version-range.js +2 -2
- package/package.json +31 -31
- package/tsdoc.json +20 -0
- package/lib/api/io/private/sdk-logger.d.ts +0 -3
- package/lib/api/io/private/sdk-logger.js +0 -124
- package/lib/api/notices.d.ts +0 -210
- package/lib/api/notices.js +0 -430
- package/lib/api/private.d.ts +0 -1
- package/lib/api/shared-private.js.map +0 -7
- package/lib/api/shared-public.d.ts +0 -2139
- package/lib/api/shared-public.js +0 -3272
- package/lib/api/shared-public.js.map +0 -7
- package/lib/private/util.d.ts +0 -1
- package/lib/private/util.js +0 -787
- package/lib/private/util.js.map +0 -7
- /package/lib/{api → toolkit}/toolkit-error.d.ts +0 -0
- /package/lib/{api → toolkit}/toolkit-error.js +0 -0
|
@@ -4,4 +4,4 @@ exports.isContextProviderPlugin = isContextProviderPlugin;
|
|
|
4
4
|
function isContextProviderPlugin(x) {
|
|
5
5
|
return typeof x === 'object' && !!x && !!x.getValue;
|
|
6
6
|
}
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1wcm92aWRlci1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb250ZXh0LXByb3ZpZGVyLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUlBLDBEQUVDO0FBRkQsU0FBZ0IsdUJBQXVCLENBQUMsQ0FBVTtJQUNoRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBRSxDQUFTLENBQUMsUUFBUSxDQUFDO0FBQy9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENvbnRleHRQcm92aWRlclBsdWdpbiB7XG4gIGdldFZhbHVlKGFyZ3M6IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiBQcm9taXNlPGFueT47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnRleHRQcm92aWRlclBsdWdpbih4OiB1bmtub3duKTogeCBpcyBDb250ZXh0UHJvdmlkZXJQbHVnaW4ge1xuICByZXR1cm4gdHlwZW9mIHggPT09ICdvYmplY3QnICYmICEheCAmJiAhISh4IGFzIGFueSkuZ2V0VmFsdWU7XG59XG4iXX0=
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { CredentialProviderSource, IPluginHost } from '@aws-cdk/cli-plugin-contract';
|
|
2
2
|
import { type ContextProviderPlugin } from './context-provider-plugin';
|
|
3
3
|
import type { IIoHost } from '../io';
|
|
4
|
-
export declare let TESTING: boolean;
|
|
5
|
-
export declare function markTesting(): void;
|
|
6
4
|
/**
|
|
7
5
|
* Class to manage a plugin collection
|
|
8
6
|
*
|
|
@@ -24,16 +22,16 @@ export declare class PluginHost implements IPluginHost {
|
|
|
24
22
|
*
|
|
25
23
|
* Will use `require.resolve()` to get the most accurate representation of what
|
|
26
24
|
* code will get loaded in error messages. As such, it will not work in
|
|
27
|
-
* unit tests with Jest virtual modules becauase of
|
|
25
|
+
* unit tests with Jest virtual modules becauase of \<https://github.com/jestjs/jest/issues/9543\>.
|
|
28
26
|
*
|
|
29
|
-
* @param moduleSpec the specification (path or name) of the plug-in module to be loaded.
|
|
30
|
-
* @param ioHost the I/O host to use for printing progress information
|
|
27
|
+
* @param moduleSpec - the specification (path or name) of the plug-in module to be loaded.
|
|
28
|
+
* @param ioHost - the I/O host to use for printing progress information
|
|
31
29
|
*/
|
|
32
30
|
load(moduleSpec: string, ioHost?: IIoHost): void;
|
|
33
31
|
/**
|
|
34
32
|
* Allows plug-ins to register new CredentialProviderSources.
|
|
35
33
|
*
|
|
36
|
-
* @param source a new CredentialProviderSource to register.
|
|
34
|
+
* @param source - a new CredentialProviderSource to register.
|
|
37
35
|
*/
|
|
38
36
|
registerCredentialProviderSource(source: CredentialProviderSource): void;
|
|
39
37
|
/**
|
package/lib/api/plugin/plugin.js
CHANGED
|
@@ -1,15 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PluginHost =
|
|
4
|
-
exports.markTesting = markTesting;
|
|
3
|
+
exports.PluginHost = void 0;
|
|
5
4
|
const util_1 = require("util");
|
|
6
5
|
const context_provider_plugin_1 = require("./context-provider-plugin");
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
exports.TESTING = false;
|
|
10
|
-
function markTesting() {
|
|
11
|
-
exports.TESTING = true;
|
|
12
|
-
}
|
|
6
|
+
const toolkit_error_1 = require("../../toolkit/toolkit-error");
|
|
7
|
+
const private_1 = require("../io/private");
|
|
13
8
|
/**
|
|
14
9
|
* Class to manage a plugin collection
|
|
15
10
|
*
|
|
@@ -31,10 +26,10 @@ class PluginHost {
|
|
|
31
26
|
*
|
|
32
27
|
* Will use `require.resolve()` to get the most accurate representation of what
|
|
33
28
|
* code will get loaded in error messages. As such, it will not work in
|
|
34
|
-
* unit tests with Jest virtual modules becauase of
|
|
29
|
+
* unit tests with Jest virtual modules becauase of \<https://github.com/jestjs/jest/issues/9543\>.
|
|
35
30
|
*
|
|
36
|
-
* @param moduleSpec the specification (path or name) of the plug-in module to be loaded.
|
|
37
|
-
* @param ioHost the I/O host to use for printing progress information
|
|
31
|
+
* @param moduleSpec - the specification (path or name) of the plug-in module to be loaded.
|
|
32
|
+
* @param ioHost - the I/O host to use for printing progress information
|
|
38
33
|
*/
|
|
39
34
|
load(moduleSpec, ioHost) {
|
|
40
35
|
try {
|
|
@@ -83,7 +78,7 @@ class PluginHost {
|
|
|
83
78
|
/**
|
|
84
79
|
* Allows plug-ins to register new CredentialProviderSources.
|
|
85
80
|
*
|
|
86
|
-
* @param source a new CredentialProviderSource to register.
|
|
81
|
+
* @param source - a new CredentialProviderSource to register.
|
|
87
82
|
*/
|
|
88
83
|
registerCredentialProviderSource(source) {
|
|
89
84
|
// Forward to the right credentials-related plugin host
|
|
@@ -129,4 +124,4 @@ class PluginHost {
|
|
|
129
124
|
}
|
|
130
125
|
}
|
|
131
126
|
exports.PluginHost = PluginHost;
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsicGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUUvQix1RUFBZ0c7QUFDaEcsK0RBQTJEO0FBRTNELDJDQUE0RDtBQUU1RDs7Ozs7O0dBTUc7QUFDSCxNQUFhLFVBQVU7SUFDckI7OztPQUdHO0lBQ2EseUJBQXlCLEdBQUcsSUFBSSxLQUFLLEVBQTRCLENBQUM7SUFFbEUsc0JBQXNCLEdBQTBDLEVBQUUsQ0FBQztJQUU1RSxNQUFNLENBQVc7SUFFUCxhQUFhLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUVuRDs7Ozs7Ozs7O09BU0c7SUFDSSxJQUFJLENBQUMsVUFBa0IsRUFBRSxNQUFnQjtRQUM5QyxJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzdDLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsSUFBSSwyQkFBaUIsQ0FBQyxrQkFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLFFBQVEsU0FBUyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ3RILENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsK0VBQStFO1lBQy9FLHlFQUF5RTtZQUN6RSxnRkFBZ0Y7WUFDaEYsd0VBQXdFO1lBQ3hFLE1BQU0sSUFBSSw0QkFBWSxDQUFDLGtEQUFrRCxVQUFVLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoRyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxPQUFPLENBQUMsUUFBZ0I7UUFDN0IsSUFBSSxDQUFDO1lBQ0gsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUNyQyxPQUFPO1lBQ1QsQ0FBQztZQUVELDBEQUEwRDtZQUMxRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsbUJBQW1CO1lBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxJQUFJLDRCQUFZLENBQUMsVUFBVSxRQUFRLHlEQUF5RCxDQUFDLENBQUM7WUFDdEcsQ0FBQztZQUNELElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNoQixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLENBQUM7WUFFRCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNuQyxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLDRCQUFZLENBQUMsU0FBUyxDQUFDLDJCQUEyQixRQUFRLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRSxDQUFDO1FBRUQsU0FBUyxRQUFRLENBQUMsQ0FBTTtZQUN0QixPQUFPLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLE9BQU8sS0FBSyxHQUFHLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksZ0NBQWdDLENBQUMsTUFBZ0M7UUFDdEUsdURBQXVEO1FBQ3ZELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BK0JHO0lBQ0ksNEJBQTRCLENBQUMsa0JBQTBCLEVBQUUsUUFBK0I7UUFDN0YsSUFBSSxDQUFDLElBQUEsaURBQXVCLEVBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxNQUFNLElBQUksNEJBQVksQ0FBQyxrRUFBa0UsSUFBQSxjQUFPLEVBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hILENBQUM7UUFDRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDN0QsQ0FBQztDQUNGO0FBdEhELGdDQXNIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluc3BlY3QgfSBmcm9tICd1dGlsJztcbmltcG9ydCB0eXBlIHsgQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlLCBJUGx1Z2luSG9zdCwgUGx1Z2luIH0gZnJvbSAnQGF3cy1jZGsvY2xpLXBsdWdpbi1jb250cmFjdCc7XG5pbXBvcnQgeyB0eXBlIENvbnRleHRQcm92aWRlclBsdWdpbiwgaXNDb250ZXh0UHJvdmlkZXJQbHVnaW4gfSBmcm9tICcuL2NvbnRleHQtcHJvdmlkZXItcGx1Z2luJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5pbXBvcnQgdHlwZSB7IElJb0hvc3QgfSBmcm9tICcuLi9pbyc7XG5pbXBvcnQgeyBJb0RlZmF1bHRNZXNzYWdlcywgSW9IZWxwZXIgfSBmcm9tICcuLi9pby9wcml2YXRlJztcblxuLyoqXG4gKiBDbGFzcyB0byBtYW5hZ2UgYSBwbHVnaW4gY29sbGVjdGlvblxuICpcbiAqIEl0IHByb3ZpZGVzIGEgYGxvYWQoKWAgZnVuY3Rpb24gdGhhdCBsb2FkcyBhIEphdmFTY3JpcHRcbiAqIG1vZHVsZSBmcm9tIGRpc2ssIGFuZCBnaXZlcyBpdCBhY2Nlc3MgdG8gdGhlIGBJUGx1Z2luSG9zdGAgaW50ZXJmYWNlXG4gKiB0byByZWdpc3RlciBpdHNlbGYuXG4gKi9cbmV4cG9ydCBjbGFzcyBQbHVnaW5Ib3N0IGltcGxlbWVudHMgSVBsdWdpbkhvc3Qge1xuICAvKipcbiAgICogQWNjZXNzIHRoZSBjdXJyZW50bHkgcmVnaXN0ZXJlZCBDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2VzLiBOZXcgc291cmNlcyBjYW5cbiAgICogYmUgcmVnaXN0ZXJlZCB1c2luZyB0aGUgK3JlZ2lzdGVyQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlKyBtZXRob2QuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlZGVudGlhbFByb3ZpZGVyU291cmNlcyA9IG5ldyBBcnJheTxDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2U+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGNvbnRleHRQcm92aWRlclBsdWdpbnM6IFJlY29yZDxzdHJpbmcsIENvbnRleHRQcm92aWRlclBsdWdpbj4gPSB7fTtcblxuICBwdWJsaWMgaW9Ib3N0PzogSUlvSG9zdDtcblxuICBwcml2YXRlIHJlYWRvbmx5IGFscmVhZHlMb2FkZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAvKipcbiAgICogTG9hZHMgYSBwbHVnLWluIGludG8gdGhpcyBQbHVnaW5Ib3N0LlxuICAgKlxuICAgKiBXaWxsIHVzZSBgcmVxdWlyZS5yZXNvbHZlKClgIHRvIGdldCB0aGUgbW9zdCBhY2N1cmF0ZSByZXByZXNlbnRhdGlvbiBvZiB3aGF0XG4gICAqIGNvZGUgd2lsbCBnZXQgbG9hZGVkIGluIGVycm9yIG1lc3NhZ2VzLiBBcyBzdWNoLCBpdCB3aWxsIG5vdCB3b3JrIGluXG4gICAqIHVuaXQgdGVzdHMgd2l0aCBKZXN0IHZpcnR1YWwgbW9kdWxlcyBiZWNhdWFzZSBvZiBcXDxodHRwczovL2dpdGh1Yi5jb20vamVzdGpzL2plc3QvaXNzdWVzLzk1NDNcXD4uXG4gICAqXG4gICAqIEBwYXJhbSBtb2R1bGVTcGVjIC0gdGhlIHNwZWNpZmljYXRpb24gKHBhdGggb3IgbmFtZSkgb2YgdGhlIHBsdWctaW4gbW9kdWxlIHRvIGJlIGxvYWRlZC5cbiAgICogQHBhcmFtIGlvSG9zdCAtIHRoZSBJL08gaG9zdCB0byB1c2UgZm9yIHByaW50aW5nIHByb2dyZXNzIGluZm9ybWF0aW9uXG4gICAqL1xuICBwdWJsaWMgbG9hZChtb2R1bGVTcGVjOiBzdHJpbmcsIGlvSG9zdD86IElJb0hvc3QpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzb2x2ZWQgPSByZXF1aXJlLnJlc29sdmUobW9kdWxlU3BlYyk7XG4gICAgICBpZiAoaW9Ib3N0KSB7XG4gICAgICAgIG5ldyBJb0RlZmF1bHRNZXNzYWdlcyhJb0hlbHBlci5mcm9tSW9Ib3N0KGlvSG9zdCwgJ2luaXQnKSkuZGVidWcoYExvYWRpbmcgcGx1Zy1pbjogJHtyZXNvbHZlZH0gZnJvbSAke21vZHVsZVNwZWN9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5fZG9Mb2FkKHJlc29sdmVkKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIC8vIGFjY29yZGluZyB0byBOb2RlLmpzIGRvY3MgYE1PRFVMRV9OT1RfRk9VTkRgIGlzIHRoZSBvbmx5IHBvc3NpYmxlIGVycm9yIGhlcmVcbiAgICAgIC8vIEBzZWUgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9tb2R1bGVzLmh0bWwjcmVxdWlyZXJlc29sdmVyZXF1ZXN0LW9wdGlvbnNcbiAgICAgIC8vIE5vdCB1c2luZyBgd2l0aENhdXNlKClgIGhlcmUsIHNpbmNlIHRoZSBub2RlIGVycm9yIGNvbnRhaW5zIGEgXCJSZXF1aXJlIFN0YWNrXCJcbiAgICAgIC8vIGFzIHBhcnQgb2YgdGhlIGVycm9yIG1lc3NhZ2UgdGhhdCBpcyBpbmhlcmVudGx5IHVzZWxlc3MgdG8gb3VyIHVzZXJzLlxuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgVW5hYmxlIHRvIHJlc29sdmUgcGx1Zy1pbjogQ2Fubm90IGZpbmQgbW9kdWxlICcke21vZHVsZVNwZWN9JzogJHtlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBEbyB0aGUgbG9hZGluZyBnaXZlbiBhbiBhbHJlYWR5LXJlc29sdmVkIG1vZHVsZSBuYW1lXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9kb0xvYWQocmVzb2x2ZWQ6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBpZiAodGhpcy5hbHJlYWR5TG9hZGVkLmhhcyhyZXNvbHZlZCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzICovXG4gICAgICBjb25zdCBwbHVnaW4gPSByZXF1aXJlKHJlc29sdmVkKTtcbiAgICAgIC8qIGVzbGludC1lbmFibGUgKi9cbiAgICAgIGlmICghaXNQbHVnaW4ocGx1Z2luKSkge1xuICAgICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBNb2R1bGUgJHtyZXNvbHZlZH0gaXMgbm90IGEgdmFsaWQgcGx1Zy1pbiwgb3IgaGFzIGFuIHVuc3VwcG9ydGVkIHZlcnNpb24uYCk7XG4gICAgICB9XG4gICAgICBpZiAocGx1Z2luLmluaXQpIHtcbiAgICAgICAgcGx1Z2luLmluaXQodGhpcyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWxyZWFkeUxvYWRlZC5hZGQocmVzb2x2ZWQpO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgVG9vbGtpdEVycm9yLndpdGhDYXVzZShgVW5hYmxlIHRvIGxvYWQgcGx1Zy1pbiAnJHtyZXNvbHZlZH0nYCwgZSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaXNQbHVnaW4oeDogYW55KTogeCBpcyBQbHVnaW4ge1xuICAgICAgcmV0dXJuIHggIT0gbnVsbCAmJiB4LnZlcnNpb24gPT09ICcxJztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWxsb3dzIHBsdWctaW5zIHRvIHJlZ2lzdGVyIG5ldyBDcmVkZW50aWFsUHJvdmlkZXJTb3VyY2VzLlxuICAgKlxuICAgKiBAcGFyYW0gc291cmNlIC0gYSBuZXcgQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlIHRvIHJlZ2lzdGVyLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlKHNvdXJjZTogQ3JlZGVudGlhbFByb3ZpZGVyU291cmNlKSB7XG4gICAgLy8gRm9yd2FyZCB0byB0aGUgcmlnaHQgY3JlZGVudGlhbHMtcmVsYXRlZCBwbHVnaW4gaG9zdFxuICAgIHRoaXMuY3JlZGVudGlhbFByb3ZpZGVyU291cmNlcy5wdXNoKHNvdXJjZSk7XG4gIH1cblxuICAvKipcbiAgICogKEVYUEVSSU1FTlRBTCkgQWxsb3cgcGx1Z2lucyB0byByZWdpc3RlciBjb250ZXh0IHByb3ZpZGVyc1xuICAgKlxuICAgKiBDb250ZXh0IHByb3ZpZGVycyBhcmUgb2JqZWN0cyB3aXRoIHRoZSBmb2xsb3dpbmcgbWV0aG9kOlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiAgIGdldFZhbHVlKGFyZ3M6IHtba2V5OiBzdHJpbmddOiBhbnl9KTogUHJvbWlzZTxhbnk+O1xuICAgKiBgYGBcbiAgICpcbiAgICogQ3VycmVudGx5LCB0aGV5IGNhbm5vdCByZXVzZSB0aGUgQ0RLJ3MgYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcywgc28gdGhleVxuICAgKiBtdXN0IGJlIHByZXBhcmVkIHRvIGVpdGhlciBub3QgbWFrZSBBV1MgY2FsbHMgb3IgdXNlIHRoZWlyIG93biBzb3VyY2Ugb2ZcbiAgICogQVdTIGNyZWRlbnRpYWxzLlxuICAgKlxuICAgKiBUaGlzIGZlYXR1cmUgaXMgZXhwZXJpbWVudGFsLCBhbmQgb25seSBpbnRlbmRlZCB0byBiZSB1c2VkIGludGVybmFsbHkgYXQgQW1hem9uXG4gICAqIGFzIGEgdHJpYWwuXG4gICAqXG4gICAqIEFmdGVyIHJlZ2lzdGVyaW5nIHdpdGggJ215LXBsdWdpbi1uYW1lJywgdGhlIHByb3ZpZGVyIG11c3QgYmUgYWRkcmVzc2VkIGFzIGZvbGxvd3M6XG4gICAqXG4gICAqIGBgYHRzXG4gICAqIGNvbnN0IHZhbHVlID0gQ29udGV4dFByb3ZpZGVyLmdldFZhbHVlKHRoaXMsIHtcbiAgICogICBwcm92aWRlck5hbWU6ICdwbHVnaW4nLFxuICAgKiAgIHByb3BzOiB7XG4gICAqICAgICBwbHVnaW5OYW1lOiAnbXktcGx1Z2luLW5hbWUnLFxuICAgKiAgICAgbXlQYXJhbWV0ZXIxOiAneHl6JyxcbiAgICogICB9LFxuICAgKiAgIGluY2x1ZGVFbnZpcm9ubWVudDogdHJ1ZSB8IGZhbHNlLFxuICAgKiAgIGR1bW15VmFsdWU6ICd3aGF0LXRvLXJldHVybi1vbi10aGUtZmlyc3QtcGFzcycsXG4gICAqIH0pXG4gICAqIGBgYFxuICAgKlxuICAgKiBAZXhwZXJpbWVudGFsXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJDb250ZXh0UHJvdmlkZXJBbHBoYShwbHVnaW5Qcm92aWRlck5hbWU6IHN0cmluZywgcHJvdmlkZXI6IENvbnRleHRQcm92aWRlclBsdWdpbikge1xuICAgIGlmICghaXNDb250ZXh0UHJvdmlkZXJQbHVnaW4ocHJvdmlkZXIpKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBPYmplY3QgeW91IGdhdmUgbWUgZG9lcyBub3QgbG9vayBsaWtlIGEgQ29udGV4dFByb3ZpZGVyUGx1Z2luOiAke2luc3BlY3QocHJvdmlkZXIpfWApO1xuICAgIH1cbiAgICB0aGlzLmNvbnRleHRQcm92aWRlclBsdWdpbnNbcGx1Z2luUHJvdmlkZXJOYW1lXSA9IHByb3ZpZGVyO1xuICB9XG59XG4iXX0=
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TypedMapping } from '@aws-cdk/cloudformation-diff';
|
|
1
2
|
import type * as cxapi from '@aws-cdk/cx-api';
|
|
2
3
|
export interface CloudFormationTemplate {
|
|
3
4
|
Resources?: {
|
|
@@ -13,3 +14,25 @@ export interface CloudFormationStack {
|
|
|
13
14
|
readonly stackName: string;
|
|
14
15
|
readonly template: CloudFormationTemplate;
|
|
15
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* This class mirrors the `ResourceLocation` interface from CloudFormation,
|
|
19
|
+
* but is richer, since it has a reference to the stack object, rather than
|
|
20
|
+
* merely the stack name.
|
|
21
|
+
*/
|
|
22
|
+
export declare class ResourceLocation {
|
|
23
|
+
readonly stack: CloudFormationStack;
|
|
24
|
+
readonly logicalResourceId: string;
|
|
25
|
+
constructor(stack: CloudFormationStack, logicalResourceId: string);
|
|
26
|
+
toPath(): string;
|
|
27
|
+
getType(): string;
|
|
28
|
+
equalTo(other: ResourceLocation): boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* A mapping between a source and a destination location.
|
|
32
|
+
*/
|
|
33
|
+
export declare class ResourceMapping {
|
|
34
|
+
readonly source: ResourceLocation;
|
|
35
|
+
readonly destination: ResourceLocation;
|
|
36
|
+
constructor(source: ResourceLocation, destination: ResourceLocation);
|
|
37
|
+
toTypedMapping(): TypedMapping;
|
|
38
|
+
}
|
|
@@ -1,3 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
3
|
+
exports.ResourceMapping = exports.ResourceLocation = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* This class mirrors the `ResourceLocation` interface from CloudFormation,
|
|
6
|
+
* but is richer, since it has a reference to the stack object, rather than
|
|
7
|
+
* merely the stack name.
|
|
8
|
+
*/
|
|
9
|
+
class ResourceLocation {
|
|
10
|
+
stack;
|
|
11
|
+
logicalResourceId;
|
|
12
|
+
constructor(stack, logicalResourceId) {
|
|
13
|
+
this.stack = stack;
|
|
14
|
+
this.logicalResourceId = logicalResourceId;
|
|
15
|
+
}
|
|
16
|
+
toPath() {
|
|
17
|
+
const stack = this.stack;
|
|
18
|
+
const resource = stack.template.Resources?.[this.logicalResourceId];
|
|
19
|
+
const result = resource?.Metadata?.['aws:cdk:path'];
|
|
20
|
+
if (result != null) {
|
|
21
|
+
return result;
|
|
22
|
+
}
|
|
23
|
+
// If the path is not available, we can use stack name and logical ID
|
|
24
|
+
return `${stack.stackName}.${this.logicalResourceId}`;
|
|
25
|
+
}
|
|
26
|
+
getType() {
|
|
27
|
+
const resource = this.stack.template.Resources?.[this.logicalResourceId ?? ''];
|
|
28
|
+
return resource?.Type ?? 'Unknown';
|
|
29
|
+
}
|
|
30
|
+
equalTo(other) {
|
|
31
|
+
return this.logicalResourceId === other.logicalResourceId && this.stack.stackName === other.stack.stackName;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.ResourceLocation = ResourceLocation;
|
|
35
|
+
/**
|
|
36
|
+
* A mapping between a source and a destination location.
|
|
37
|
+
*/
|
|
38
|
+
class ResourceMapping {
|
|
39
|
+
source;
|
|
40
|
+
destination;
|
|
41
|
+
constructor(source, destination) {
|
|
42
|
+
this.source = source;
|
|
43
|
+
this.destination = destination;
|
|
44
|
+
}
|
|
45
|
+
toTypedMapping() {
|
|
46
|
+
return {
|
|
47
|
+
// the type is the same in both source and destination,
|
|
48
|
+
// so we can use either one
|
|
49
|
+
type: this.source.getType(),
|
|
50
|
+
sourcePath: this.source.toPath(),
|
|
51
|
+
destinationPath: this.destination.toPath(),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.ResourceMapping = ResourceMapping;
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmb3JtYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjbG91ZGZvcm1hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFtQkE7Ozs7R0FJRztBQUNILE1BQWEsZ0JBQWdCO0lBQ0M7SUFBNEM7SUFBeEUsWUFBNEIsS0FBMEIsRUFBa0IsaUJBQXlCO1FBQXJFLFVBQUssR0FBTCxLQUFLLENBQXFCO1FBQWtCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBUTtJQUNqRyxDQUFDO0lBRU0sTUFBTTtRQUNYLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNwRSxNQUFNLE1BQU0sR0FBRyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFcEQsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDbkIsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUVELHFFQUFxRTtRQUNyRSxPQUFPLEdBQUcsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUN4RCxDQUFDO0lBRU0sT0FBTztRQUNaLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUMvRSxPQUFPLFFBQVEsRUFBRSxJQUFJLElBQUksU0FBUyxDQUFDO0lBQ3JDLENBQUM7SUFFTSxPQUFPLENBQUMsS0FBdUI7UUFDcEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEtBQUssS0FBSyxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQzlHLENBQUM7Q0FDRjtBQXpCRCw0Q0F5QkM7QUFFRDs7R0FFRztBQUNILE1BQWEsZUFBZTtJQUNFO0lBQTBDO0lBQXRFLFlBQTRCLE1BQXdCLEVBQWtCLFdBQTZCO1FBQXZFLFdBQU0sR0FBTixNQUFNLENBQWtCO1FBQWtCLGdCQUFXLEdBQVgsV0FBVyxDQUFrQjtJQUNuRyxDQUFDO0lBRU0sY0FBYztRQUNuQixPQUFPO1lBQ0wsdURBQXVEO1lBQ3ZELDJCQUEyQjtZQUMzQixJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7WUFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1lBQ2hDLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtTQUMzQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBYkQsMENBYUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFR5cGVkTWFwcGluZyB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkZm9ybWF0aW9uLWRpZmYnO1xuaW1wb3J0IHR5cGUgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkRm9ybWF0aW9uVGVtcGxhdGUge1xuICBSZXNvdXJjZXM/OiB7XG4gICAgW2xvZ2ljYWxJZDogc3RyaW5nXToge1xuICAgICAgVHlwZTogc3RyaW5nO1xuICAgICAgUHJvcGVydGllcz86IGFueTtcbiAgICAgIE1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkRm9ybWF0aW9uU3RhY2sge1xuICByZWFkb25seSBlbnZpcm9ubWVudDogY3hhcGkuRW52aXJvbm1lbnQ7XG4gIHJlYWRvbmx5IHN0YWNrTmFtZTogc3RyaW5nO1xuICByZWFkb25seSB0ZW1wbGF0ZTogQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZTtcbn1cblxuLyoqXG4gKiBUaGlzIGNsYXNzIG1pcnJvcnMgdGhlIGBSZXNvdXJjZUxvY2F0aW9uYCBpbnRlcmZhY2UgZnJvbSBDbG91ZEZvcm1hdGlvbixcbiAqIGJ1dCBpcyByaWNoZXIsIHNpbmNlIGl0IGhhcyBhIHJlZmVyZW5jZSB0byB0aGUgc3RhY2sgb2JqZWN0LCByYXRoZXIgdGhhblxuICogbWVyZWx5IHRoZSBzdGFjayBuYW1lLlxuICovXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VMb2NhdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBzdGFjazogQ2xvdWRGb3JtYXRpb25TdGFjaywgcHVibGljIHJlYWRvbmx5IGxvZ2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpIHtcbiAgfVxuXG4gIHB1YmxpYyB0b1BhdGgoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdGFjayA9IHRoaXMuc3RhY2s7XG4gICAgY29uc3QgcmVzb3VyY2UgPSBzdGFjay50ZW1wbGF0ZS5SZXNvdXJjZXM/Llt0aGlzLmxvZ2ljYWxSZXNvdXJjZUlkXTtcbiAgICBjb25zdCByZXN1bHQgPSByZXNvdXJjZT8uTWV0YWRhdGE/LlsnYXdzOmNkazpwYXRoJ107XG5cbiAgICBpZiAocmVzdWx0ICE9IG51bGwpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIHBhdGggaXMgbm90IGF2YWlsYWJsZSwgd2UgY2FuIHVzZSBzdGFjayBuYW1lIGFuZCBsb2dpY2FsIElEXG4gICAgcmV0dXJuIGAke3N0YWNrLnN0YWNrTmFtZX0uJHt0aGlzLmxvZ2ljYWxSZXNvdXJjZUlkfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0VHlwZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IHJlc291cmNlID0gdGhpcy5zdGFjay50ZW1wbGF0ZS5SZXNvdXJjZXM/Llt0aGlzLmxvZ2ljYWxSZXNvdXJjZUlkID8/ICcnXTtcbiAgICByZXR1cm4gcmVzb3VyY2U/LlR5cGUgPz8gJ1Vua25vd24nO1xuICB9XG5cbiAgcHVibGljIGVxdWFsVG8ob3RoZXI6IFJlc291cmNlTG9jYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sb2dpY2FsUmVzb3VyY2VJZCA9PT0gb3RoZXIubG9naWNhbFJlc291cmNlSWQgJiYgdGhpcy5zdGFjay5zdGFja05hbWUgPT09IG90aGVyLnN0YWNrLnN0YWNrTmFtZTtcbiAgfVxufVxuXG4vKipcbiAqIEEgbWFwcGluZyBiZXR3ZWVuIGEgc291cmNlIGFuZCBhIGRlc3RpbmF0aW9uIGxvY2F0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VNYXBwaW5nIHtcbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHNvdXJjZTogUmVzb3VyY2VMb2NhdGlvbiwgcHVibGljIHJlYWRvbmx5IGRlc3RpbmF0aW9uOiBSZXNvdXJjZUxvY2F0aW9uKSB7XG4gIH1cblxuICBwdWJsaWMgdG9UeXBlZE1hcHBpbmcoKTogVHlwZWRNYXBwaW5nIHtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gdGhlIHR5cGUgaXMgdGhlIHNhbWUgaW4gYm90aCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uLFxuICAgICAgLy8gc28gd2UgY2FuIHVzZSBlaXRoZXIgb25lXG4gICAgICB0eXBlOiB0aGlzLnNvdXJjZS5nZXRUeXBlKCksXG4gICAgICBzb3VyY2VQYXRoOiB0aGlzLnNvdXJjZS50b1BhdGgoKSxcbiAgICAgIGRlc3RpbmF0aW9uUGF0aDogdGhpcy5kZXN0aW5hdGlvbi50b1BhdGgoKSxcbiAgICB9O1xuICB9XG59XG5cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AssemblyManifest } from '@aws-cdk/cloud-assembly-schema';
|
|
2
|
+
import type { ResourceLocation } from './cloudformation';
|
|
3
|
+
export interface ExcludeList {
|
|
4
|
+
isExcluded(location: ResourceLocation): boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare class ManifestExcludeList implements ExcludeList {
|
|
7
|
+
private readonly excludedLocations;
|
|
8
|
+
constructor(manifest: AssemblyManifest);
|
|
9
|
+
private getExcludedLocations;
|
|
10
|
+
isExcluded(location: ResourceLocation): boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare class InMemoryExcludeList implements ExcludeList {
|
|
13
|
+
private readonly excludedLocations;
|
|
14
|
+
private readonly excludedPaths;
|
|
15
|
+
constructor(items: string[]);
|
|
16
|
+
isExcluded(location: ResourceLocation): boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare class UnionExcludeList implements ExcludeList {
|
|
19
|
+
private readonly excludeLists;
|
|
20
|
+
constructor(excludeLists: ExcludeList[]);
|
|
21
|
+
isExcluded(location: ResourceLocation): boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare class NeverExclude implements ExcludeList {
|
|
24
|
+
isExcluded(_location: ResourceLocation): boolean;
|
|
25
|
+
}
|
|
26
|
+
export declare class AlwaysExclude implements ExcludeList {
|
|
27
|
+
isExcluded(_location: ResourceLocation): boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare function fromManifestAndExclusionList(manifest: AssemblyManifest, exclude?: string[]): ExcludeList;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AlwaysExclude = exports.NeverExclude = exports.UnionExcludeList = exports.InMemoryExcludeList = exports.ManifestExcludeList = void 0;
|
|
4
|
+
exports.fromManifestAndExclusionList = fromManifestAndExclusionList;
|
|
5
|
+
const cloud_assembly_schema_1 = require("@aws-cdk/cloud-assembly-schema");
|
|
6
|
+
class ManifestExcludeList {
|
|
7
|
+
excludedLocations;
|
|
8
|
+
constructor(manifest) {
|
|
9
|
+
this.excludedLocations = this.getExcludedLocations(manifest);
|
|
10
|
+
}
|
|
11
|
+
getExcludedLocations(asmManifest) {
|
|
12
|
+
// First, we need to filter the artifacts to only include CloudFormation stacks
|
|
13
|
+
const stackManifests = Object.entries(asmManifest.artifacts ?? {}).filter(([_, manifest]) => manifest.type === cloud_assembly_schema_1.ArtifactType.AWS_CLOUDFORMATION_STACK);
|
|
14
|
+
const result = [];
|
|
15
|
+
for (let [stackName, manifest] of stackManifests) {
|
|
16
|
+
const locations = Object.values(manifest.metadata ?? {})
|
|
17
|
+
// Then pick only the resources in each stack marked with DO_NOT_REFACTOR
|
|
18
|
+
.filter((entries) => entries.some((entry) => entry.type === cloud_assembly_schema_1.ArtifactMetadataEntryType.DO_NOT_REFACTOR && entry.data === true))
|
|
19
|
+
// Finally, get the logical ID of each resource
|
|
20
|
+
.map((entries) => {
|
|
21
|
+
const logicalIdEntry = entries.find((entry) => entry.type === cloud_assembly_schema_1.ArtifactMetadataEntryType.LOGICAL_ID);
|
|
22
|
+
const location = {
|
|
23
|
+
StackName: stackName,
|
|
24
|
+
LogicalResourceId: logicalIdEntry.data,
|
|
25
|
+
};
|
|
26
|
+
return location;
|
|
27
|
+
});
|
|
28
|
+
result.push(...locations);
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
isExcluded(location) {
|
|
33
|
+
return this.excludedLocations.some((loc) => loc.StackName === location.stack.stackName && loc.LogicalResourceId === location.logicalResourceId);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.ManifestExcludeList = ManifestExcludeList;
|
|
37
|
+
class InMemoryExcludeList {
|
|
38
|
+
excludedLocations;
|
|
39
|
+
excludedPaths;
|
|
40
|
+
constructor(items) {
|
|
41
|
+
this.excludedLocations = [];
|
|
42
|
+
this.excludedPaths = [];
|
|
43
|
+
if (items.length === 0) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const locationRegex = /^[A-Za-z0-9]+\.[A-Za-z0-9]+$/;
|
|
47
|
+
items.forEach((item) => {
|
|
48
|
+
if (locationRegex.test(item)) {
|
|
49
|
+
const [stackName, logicalId] = item.split('.');
|
|
50
|
+
this.excludedLocations.push({
|
|
51
|
+
StackName: stackName,
|
|
52
|
+
LogicalResourceId: logicalId,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
this.excludedPaths.push(item);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
isExcluded(location) {
|
|
61
|
+
const containsLocation = this.excludedLocations.some((loc) => {
|
|
62
|
+
return loc.StackName === location.stack.stackName && loc.LogicalResourceId === location.logicalResourceId;
|
|
63
|
+
});
|
|
64
|
+
const containsPath = this.excludedPaths.some((path) => location.toPath() === path);
|
|
65
|
+
return containsLocation || containsPath;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.InMemoryExcludeList = InMemoryExcludeList;
|
|
69
|
+
class UnionExcludeList {
|
|
70
|
+
excludeLists;
|
|
71
|
+
constructor(excludeLists) {
|
|
72
|
+
this.excludeLists = excludeLists;
|
|
73
|
+
}
|
|
74
|
+
isExcluded(location) {
|
|
75
|
+
return this.excludeLists.some((excludeList) => excludeList.isExcluded(location));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.UnionExcludeList = UnionExcludeList;
|
|
79
|
+
class NeverExclude {
|
|
80
|
+
isExcluded(_location) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
exports.NeverExclude = NeverExclude;
|
|
85
|
+
class AlwaysExclude {
|
|
86
|
+
isExcluded(_location) {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.AlwaysExclude = AlwaysExclude;
|
|
91
|
+
function fromManifestAndExclusionList(manifest, exclude) {
|
|
92
|
+
return new UnionExcludeList([new ManifestExcludeList(manifest), new InMemoryExcludeList(exclude ?? [])]);
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjbHVkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImV4Y2x1ZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBNEdBLG9FQUVDO0FBN0dELDBFQUF5RjtBQVF6RixNQUFhLG1CQUFtQjtJQUNiLGlCQUFpQixDQUF3QjtJQUUxRCxZQUFZLFFBQTBCO1FBQ3BDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVPLG9CQUFvQixDQUFDLFdBQTZCO1FBQ3hELCtFQUErRTtRQUMvRSxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUN2RSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxLQUFLLG9DQUFZLENBQUMsd0JBQXdCLENBQzNFLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBMEIsRUFBRSxDQUFDO1FBQ3pDLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNqRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO2dCQUN0RCx5RUFBeUU7aUJBQ3hFLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssaURBQXlCLENBQUMsZUFBZSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQ3pHO2dCQUNELCtDQUErQztpQkFDOUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQ2YsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLElBQUks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LENBQUMsU0FBMkI7UUFDcEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUFKRCxvQ0FJQztBQUVELE1BQWEsYUFBYTtJQUN4QixVQUFVLENBQUMsU0FBMkI7UUFDcEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFKRCxzQ0FJQztBQUVELFNBQWdCLDRCQUE0QixDQUFDLFFBQTBCLEVBQUUsT0FBa0I7SUFDekYsT0FBTyxJQUFJLGdCQUFnQixDQUFDLENBQUMsSUFBSSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLG1CQUFtQixDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0csQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQXNzZW1ibHlNYW5pZmVzdCB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgeyBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLCBBcnRpZmFjdFR5cGUgfSBmcm9tICdAYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZUxvY2F0aW9uIGFzIENmblJlc291cmNlTG9jYXRpb24gfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBSZXNvdXJjZUxvY2F0aW9uIH0gZnJvbSAnLi9jbG91ZGZvcm1hdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhjbHVkZUxpc3Qge1xuICBpc0V4Y2x1ZGVkKGxvY2F0aW9uOiBSZXNvdXJjZUxvY2F0aW9uKTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIE1hbmlmZXN0RXhjbHVkZUxpc3QgaW1wbGVtZW50cyBFeGNsdWRlTGlzdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXhjbHVkZWRMb2NhdGlvbnM6IENmblJlc291cmNlTG9jYXRpb25bXTtcblxuICBjb25zdHJ1Y3RvcihtYW5pZmVzdDogQXNzZW1ibHlNYW5pZmVzdCkge1xuICAgIHRoaXMuZXhjbHVkZWRMb2NhdGlvbnMgPSB0aGlzLmdldEV4Y2x1ZGVkTG9jYXRpb25zKG1hbmlmZXN0KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXhjbHVkZWRMb2NhdGlvbnMoYXNtTWFuaWZlc3Q6IEFzc2VtYmx5TWFuaWZlc3QpOiBDZm5SZXNvdXJjZUxvY2F0aW9uW10ge1xuICAgIC8vIEZpcnN0LCB3ZSBuZWVkIHRvIGZpbHRlciB0aGUgYXJ0aWZhY3RzIHRvIG9ubHkgaW5jbHVkZSBDbG91ZEZvcm1hdGlvbiBzdGFja3NcbiAgICBjb25zdCBzdGFja01hbmlmZXN0cyA9IE9iamVjdC5lbnRyaWVzKGFzbU1hbmlmZXN0LmFydGlmYWN0cyA/PyB7fSkuZmlsdGVyKFxuICAgICAgKFtfLCBtYW5pZmVzdF0pID0+IG1hbmlmZXN0LnR5cGUgPT09IEFydGlmYWN0VHlwZS5BV1NfQ0xPVURGT1JNQVRJT05fU1RBQ0ssXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdDogQ2ZuUmVzb3VyY2VMb2NhdGlvbltdID0gW107XG4gICAgZm9yIChsZXQgW3N0YWNrTmFtZSwgbWFuaWZlc3RdIG9mIHN0YWNrTWFuaWZlc3RzKSB7XG4gICAgICBjb25zdCBsb2NhdGlvbnMgPSBPYmplY3QudmFsdWVzKG1hbmlmZXN0Lm1ldGFkYXRhID8/IHt9KVxuICAgICAgICAvLyBUaGVuIHBpY2sgb25seSB0aGUgcmVzb3VyY2VzIGluIGVhY2ggc3RhY2sgbWFya2VkIHdpdGggRE9fTk9UX1JFRkFDVE9SXG4gICAgICAgIC5maWx0ZXIoKGVudHJpZXMpID0+XG4gICAgICAgICAgZW50cmllcy5zb21lKChlbnRyeSkgPT4gZW50cnkudHlwZSA9PT0gQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5ET19OT1RfUkVGQUNUT1IgJiYgZW50cnkuZGF0YSA9PT0gdHJ1ZSksXG4gICAgICAgIClcbiAgICAgICAgLy8gRmluYWxseSwgZ2V0IHRoZSBsb2dpY2FsIElEIG9mIGVhY2ggcmVzb3VyY2VcbiAgICAgICAgLm1hcCgoZW50cmllcykgPT4ge1xuICAgICAgICAgIGNvbnN0IGxvZ2ljYWxJZEVudHJ5ID0gZW50cmllcy5maW5kKChlbnRyeSkgPT4gZW50cnkudHlwZSA9PT0gQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5MT0dJQ0FMX0lEKTtcbiAgICAgICAgICBjb25zdCBsb2NhdGlvbjogQ2ZuUmVzb3VyY2VMb2NhdGlvbiA9IHtcbiAgICAgICAgICAgIFN0YWNrTmFtZTogc3RhY2tOYW1lLFxuICAgICAgICAgICAgTG9naWNhbFJlc291cmNlSWQ6IGxvZ2ljYWxJZEVudHJ5IS5kYXRhISBhcyBzdHJpbmcsXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gbG9jYXRpb247XG4gICAgICAgIH0pO1xuICAgICAgcmVzdWx0LnB1c2goLi4ubG9jYXRpb25zKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGlzRXhjbHVkZWQobG9jYXRpb246IFJlc291cmNlTG9jYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5leGNsdWRlZExvY2F0aW9ucy5zb21lKFxuICAgICAgKGxvYykgPT4gbG9jLlN0YWNrTmFtZSA9PT0gbG9jYXRpb24uc3RhY2suc3RhY2tOYW1lICYmIGxvYy5Mb2dpY2FsUmVzb3VyY2VJZCA9PT0gbG9jYXRpb24ubG9naWNhbFJlc291cmNlSWQsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgSW5NZW1vcnlFeGNsdWRlTGlzdCBpbXBsZW1lbnRzIEV4Y2x1ZGVMaXN0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBleGNsdWRlZExvY2F0aW9uczogQ2ZuUmVzb3VyY2VMb2NhdGlvbltdO1xuICBwcml2YXRlIHJlYWRvbmx5IGV4Y2x1ZGVkUGF0aHM6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKGl0ZW1zOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuZXhjbHVkZWRMb2NhdGlvbnMgPSBbXTtcbiAgICB0aGlzLmV4Y2x1ZGVkUGF0aHMgPSBbXTtcblxuICAgIGlmIChpdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsb2NhdGlvblJlZ2V4ID0gL15bQS1aYS16MC05XStcXC5bQS1aYS16MC05XSskLztcblxuICAgIGl0ZW1zLmZvckVhY2goKGl0ZW06IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGxvY2F0aW9uUmVnZXgudGVzdChpdGVtKSkge1xuICAgICAgICBjb25zdCBbc3RhY2tOYW1lLCBsb2dpY2FsSWRdID0gaXRlbS5zcGxpdCgnLicpO1xuICAgICAgICB0aGlzLmV4Y2x1ZGVkTG9jYXRpb25zLnB1c2goe1xuICAgICAgICAgIFN0YWNrTmFtZTogc3RhY2tOYW1lLFxuICAgICAgICAgIExvZ2ljYWxSZXNvdXJjZUlkOiBsb2dpY2FsSWQsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5leGNsdWRlZFBhdGhzLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpc0V4Y2x1ZGVkKGxvY2F0aW9uOiBSZXNvdXJjZUxvY2F0aW9uKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29udGFpbnNMb2NhdGlvbiA9IHRoaXMuZXhjbHVkZWRMb2NhdGlvbnMuc29tZSgobG9jKSA9PiB7XG4gICAgICByZXR1cm4gbG9jLlN0YWNrTmFtZSA9PT0gbG9jYXRpb24uc3RhY2suc3RhY2tOYW1lICYmIGxvYy5Mb2dpY2FsUmVzb3VyY2VJZCA9PT0gbG9jYXRpb24ubG9naWNhbFJlc291cmNlSWQ7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb250YWluc1BhdGggPSB0aGlzLmV4Y2x1ZGVkUGF0aHMuc29tZSgocGF0aCkgPT4gbG9jYXRpb24udG9QYXRoKCkgPT09IHBhdGgpO1xuICAgIHJldHVybiBjb250YWluc0xvY2F0aW9uIHx8IGNvbnRhaW5zUGF0aDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVW5pb25FeGNsdWRlTGlzdCBpbXBsZW1lbnRzIEV4Y2x1ZGVMaXN0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBleGNsdWRlTGlzdHM6IEV4Y2x1ZGVMaXN0W10pIHtcbiAgfVxuXG4gIGlzRXhjbHVkZWQobG9jYXRpb246IFJlc291cmNlTG9jYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5leGNsdWRlTGlzdHMuc29tZSgoZXhjbHVkZUxpc3QpID0+IGV4Y2x1ZGVMaXN0LmlzRXhjbHVkZWQobG9jYXRpb24pKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTmV2ZXJFeGNsdWRlIGltcGxlbWVudHMgRXhjbHVkZUxpc3Qge1xuICBpc0V4Y2x1ZGVkKF9sb2NhdGlvbjogUmVzb3VyY2VMb2NhdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWx3YXlzRXhjbHVkZSBpbXBsZW1lbnRzIEV4Y2x1ZGVMaXN0IHtcbiAgaXNFeGNsdWRlZChfbG9jYXRpb246IFJlc291cmNlTG9jYXRpb24pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJvbU1hbmlmZXN0QW5kRXhjbHVzaW9uTGlzdChtYW5pZmVzdDogQXNzZW1ibHlNYW5pZmVzdCwgZXhjbHVkZT86IHN0cmluZ1tdKTogRXhjbHVkZUxpc3Qge1xuICByZXR1cm4gbmV3IFVuaW9uRXhjbHVkZUxpc3QoW25ldyBNYW5pZmVzdEV4Y2x1ZGVMaXN0KG1hbmlmZXN0KSwgbmV3IEluTWVtb3J5RXhjbHVkZUxpc3QoZXhjbHVkZSA/PyBbXSldKTtcbn1cblxuIl19
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { StackDefinition } from '@aws-sdk/client-cloudformation';
|
|
2
|
+
import type { CloudFormationStack, ResourceMapping } from './cloudformation';
|
|
3
|
+
/**
|
|
4
|
+
* Generates a list of stack definitions to be sent to the CloudFormation API
|
|
5
|
+
* by applying each mapping to the corresponding stack template(s).
|
|
6
|
+
*/
|
|
7
|
+
export declare function generateStackDefinitions(mappings: ResourceMapping[], deployedStacks: CloudFormationStack[]): StackDefinition[];
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateStackDefinitions = generateStackDefinitions;
|
|
4
|
+
const toolkit_error_1 = require("../../toolkit/toolkit-error");
|
|
5
|
+
/**
|
|
6
|
+
* Generates a list of stack definitions to be sent to the CloudFormation API
|
|
7
|
+
* by applying each mapping to the corresponding stack template(s).
|
|
8
|
+
*/
|
|
9
|
+
function generateStackDefinitions(mappings, deployedStacks) {
|
|
10
|
+
const templates = Object.fromEntries(deployedStacks
|
|
11
|
+
.filter((s) => mappings.some((m) =>
|
|
12
|
+
// We only care about stacks that are part of the mappings
|
|
13
|
+
m.source.stack.stackName === s.stackName || m.destination.stack.stackName === s.stackName))
|
|
14
|
+
.map((s) => [s.stackName, JSON.parse(JSON.stringify(s.template))]));
|
|
15
|
+
mappings.forEach((mapping) => {
|
|
16
|
+
const sourceStackName = mapping.source.stack.stackName;
|
|
17
|
+
const sourceLogicalId = mapping.source.logicalResourceId;
|
|
18
|
+
const sourceTemplate = templates[sourceStackName];
|
|
19
|
+
const destinationStackName = mapping.destination.stack.stackName;
|
|
20
|
+
const destinationLogicalId = mapping.destination.logicalResourceId;
|
|
21
|
+
if (templates[destinationStackName] == null) {
|
|
22
|
+
// The API doesn't allow anything in the template other than the resources
|
|
23
|
+
// that are part of the mappings. So we need to create an empty template
|
|
24
|
+
// to start adding resources to.
|
|
25
|
+
templates[destinationStackName] = { Resources: {} };
|
|
26
|
+
}
|
|
27
|
+
const destinationTemplate = templates[destinationStackName];
|
|
28
|
+
// Do the move
|
|
29
|
+
destinationTemplate.Resources[destinationLogicalId] = sourceTemplate.Resources[sourceLogicalId];
|
|
30
|
+
delete sourceTemplate.Resources[sourceLogicalId];
|
|
31
|
+
});
|
|
32
|
+
// CloudFormation doesn't allow empty stacks
|
|
33
|
+
for (const [stackName, template] of Object.entries(templates)) {
|
|
34
|
+
if (Object.keys(template.Resources ?? {}).length === 0) {
|
|
35
|
+
throw new toolkit_error_1.ToolkitError(`Stack ${stackName} has no resources after refactor. You must add a resource to this stack. This resource can be a simple one, like a waitCondition resource type.`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return Object.entries(templates).map(([stackName, template]) => ({
|
|
39
|
+
StackName: stackName,
|
|
40
|
+
TemplateBody: JSON.stringify(template),
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBUUEsNERBNENDO0FBbERELCtEQUEyRDtBQUUzRDs7O0dBR0c7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxRQUEyQixFQUFFLGNBQXFDO0lBQ3pHLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQ2xDLGNBQWM7U0FDWCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNaLFFBQVEsQ0FBQyxJQUFJLENBQ1gsQ0FBQyxDQUFDLEVBQUUsRUFBRTtJQUNKLDBEQUEwRDtJQUMxRCxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLFNBQVMsSUFBSSxDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLFNBQVMsQ0FDNUYsQ0FDRjtTQUNBLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3JFLENBQUM7SUFFRixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDM0IsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ3ZELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7UUFDekQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWxELE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ2pFLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztRQUNuRSxJQUFJLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQzVDLDBFQUEwRTtZQUMxRSx3RUFBd0U7WUFDeEUsZ0NBQWdDO1lBQ2hDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3RELENBQUM7UUFDRCxNQUFNLG1CQUFtQixHQUFHLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRTVELGNBQWM7UUFDZCxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLENBQUMsR0FBRyxjQUFjLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hHLE9BQU8sY0FBYyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztJQUVILDRDQUE0QztJQUM1QyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQzlELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxNQUFNLElBQUksNEJBQVksQ0FBQyxTQUFTLFNBQVMsaUpBQWlKLENBQUMsQ0FBQztRQUM5TCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvRCxTQUFTLEVBQUUsU0FBUztRQUNwQixZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUM7S0FDdkMsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdGFja0RlZmluaXRpb24gfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHR5cGUgeyBDbG91ZEZvcm1hdGlvblN0YWNrLCBSZXNvdXJjZU1hcHBpbmcgfSBmcm9tICcuL2Nsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgbGlzdCBvZiBzdGFjayBkZWZpbml0aW9ucyB0byBiZSBzZW50IHRvIHRoZSBDbG91ZEZvcm1hdGlvbiBBUElcbiAqIGJ5IGFwcGx5aW5nIGVhY2ggbWFwcGluZyB0byB0aGUgY29ycmVzcG9uZGluZyBzdGFjayB0ZW1wbGF0ZShzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlU3RhY2tEZWZpbml0aW9ucyhtYXBwaW5nczogUmVzb3VyY2VNYXBwaW5nW10sIGRlcGxveWVkU3RhY2tzOiBDbG91ZEZvcm1hdGlvblN0YWNrW10pOiBTdGFja0RlZmluaXRpb25bXSB7XG4gIGNvbnN0IHRlbXBsYXRlcyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBkZXBsb3llZFN0YWNrc1xuICAgICAgLmZpbHRlcigocykgPT5cbiAgICAgICAgbWFwcGluZ3Muc29tZShcbiAgICAgICAgICAobSkgPT5cbiAgICAgICAgICAgIC8vIFdlIG9ubHkgY2FyZSBhYm91dCBzdGFja3MgdGhhdCBhcmUgcGFydCBvZiB0aGUgbWFwcGluZ3NcbiAgICAgICAgICAgIG0uc291cmNlLnN0YWNrLnN0YWNrTmFtZSA9PT0gcy5zdGFja05hbWUgfHwgbS5kZXN0aW5hdGlvbi5zdGFjay5zdGFja05hbWUgPT09IHMuc3RhY2tOYW1lLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgLm1hcCgocykgPT4gW3Muc3RhY2tOYW1lLCBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHMudGVtcGxhdGUpKV0pLFxuICApO1xuXG4gIG1hcHBpbmdzLmZvckVhY2goKG1hcHBpbmcpID0+IHtcbiAgICBjb25zdCBzb3VyY2VTdGFja05hbWUgPSBtYXBwaW5nLnNvdXJjZS5zdGFjay5zdGFja05hbWU7XG4gICAgY29uc3Qgc291cmNlTG9naWNhbElkID0gbWFwcGluZy5zb3VyY2UubG9naWNhbFJlc291cmNlSWQ7XG4gICAgY29uc3Qgc291cmNlVGVtcGxhdGUgPSB0ZW1wbGF0ZXNbc291cmNlU3RhY2tOYW1lXTtcblxuICAgIGNvbnN0IGRlc3RpbmF0aW9uU3RhY2tOYW1lID0gbWFwcGluZy5kZXN0aW5hdGlvbi5zdGFjay5zdGFja05hbWU7XG4gICAgY29uc3QgZGVzdGluYXRpb25Mb2dpY2FsSWQgPSBtYXBwaW5nLmRlc3RpbmF0aW9uLmxvZ2ljYWxSZXNvdXJjZUlkO1xuICAgIGlmICh0ZW1wbGF0ZXNbZGVzdGluYXRpb25TdGFja05hbWVdID09IG51bGwpIHtcbiAgICAgIC8vIFRoZSBBUEkgZG9lc24ndCBhbGxvdyBhbnl0aGluZyBpbiB0aGUgdGVtcGxhdGUgb3RoZXIgdGhhbiB0aGUgcmVzb3VyY2VzXG4gICAgICAvLyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSBtYXBwaW5ncy4gU28gd2UgbmVlZCB0byBjcmVhdGUgYW4gZW1wdHkgdGVtcGxhdGVcbiAgICAgIC8vIHRvIHN0YXJ0IGFkZGluZyByZXNvdXJjZXMgdG8uXG4gICAgICB0ZW1wbGF0ZXNbZGVzdGluYXRpb25TdGFja05hbWVdID0geyBSZXNvdXJjZXM6IHt9IH07XG4gICAgfVxuICAgIGNvbnN0IGRlc3RpbmF0aW9uVGVtcGxhdGUgPSB0ZW1wbGF0ZXNbZGVzdGluYXRpb25TdGFja05hbWVdO1xuXG4gICAgLy8gRG8gdGhlIG1vdmVcbiAgICBkZXN0aW5hdGlvblRlbXBsYXRlLlJlc291cmNlc1tkZXN0aW5hdGlvbkxvZ2ljYWxJZF0gPSBzb3VyY2VUZW1wbGF0ZS5SZXNvdXJjZXNbc291cmNlTG9naWNhbElkXTtcbiAgICBkZWxldGUgc291cmNlVGVtcGxhdGUuUmVzb3VyY2VzW3NvdXJjZUxvZ2ljYWxJZF07XG4gIH0pO1xuXG4gIC8vIENsb3VkRm9ybWF0aW9uIGRvZXNuJ3QgYWxsb3cgZW1wdHkgc3RhY2tzXG4gIGZvciAoY29uc3QgW3N0YWNrTmFtZSwgdGVtcGxhdGVdIG9mIE9iamVjdC5lbnRyaWVzKHRlbXBsYXRlcykpIHtcbiAgICBpZiAoT2JqZWN0LmtleXModGVtcGxhdGUuUmVzb3VyY2VzID8/IHt9KS5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoYFN0YWNrICR7c3RhY2tOYW1lfSBoYXMgbm8gcmVzb3VyY2VzIGFmdGVyIHJlZmFjdG9yLiBZb3UgbXVzdCBhZGQgYSByZXNvdXJjZSB0byB0aGlzIHN0YWNrLiBUaGlzIHJlc291cmNlIGNhbiBiZSBhIHNpbXBsZSBvbmUsIGxpa2UgYSB3YWl0Q29uZGl0aW9uIHJlc291cmNlIHR5cGUuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRlbXBsYXRlcykubWFwKChbc3RhY2tOYW1lLCB0ZW1wbGF0ZV0pID0+ICh7XG4gICAgU3RhY2tOYW1lOiBzdGFja05hbWUsXG4gICAgVGVtcGxhdGVCb2R5OiBKU09OLnN0cmluZ2lmeSh0ZW1wbGF0ZSksXG4gIH0pKTtcbn1cbiJdfQ==
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { TypedMapping } from '@aws-cdk/cloudformation-diff';
|
|
2
2
|
import type { SdkProvider } from '../aws-auth/private';
|
|
3
3
|
import type { CloudFormationStack } from './cloudformation';
|
|
4
|
+
import { ResourceLocation, ResourceMapping } from './cloudformation';
|
|
5
|
+
import { type ExcludeList } from './exclude';
|
|
6
|
+
import type { MappingGroup } from '../../actions';
|
|
7
|
+
export * from './exclude';
|
|
4
8
|
/**
|
|
5
9
|
* Represents a set of possible movements of a resource from one location
|
|
6
10
|
* to another. In the ideal case, there is only one source and only one
|
|
@@ -12,28 +16,7 @@ export declare class AmbiguityError extends Error {
|
|
|
12
16
|
constructor(movements: ResourceMovement[]);
|
|
13
17
|
paths(): [string[], string[]][];
|
|
14
18
|
}
|
|
15
|
-
|
|
16
|
-
* This class mirrors the `ResourceLocation` interface from CloudFormation,
|
|
17
|
-
* but is richer, since it has a reference to the stack object, rather than
|
|
18
|
-
* merely the stack name.
|
|
19
|
-
*/
|
|
20
|
-
export declare class ResourceLocation {
|
|
21
|
-
readonly stack: CloudFormationStack;
|
|
22
|
-
readonly logicalResourceId: string;
|
|
23
|
-
constructor(stack: CloudFormationStack, logicalResourceId: string);
|
|
24
|
-
toPath(): string;
|
|
25
|
-
getType(): string;
|
|
26
|
-
equalTo(other: ResourceLocation): boolean;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* A mapping between a source and a destination location.
|
|
30
|
-
*/
|
|
31
|
-
export declare class ResourceMapping {
|
|
32
|
-
readonly source: ResourceLocation;
|
|
33
|
-
readonly destination: ResourceLocation;
|
|
34
|
-
constructor(source: ResourceLocation, destination: ResourceLocation);
|
|
35
|
-
toTypedMapping(): TypedMapping;
|
|
36
|
-
}
|
|
19
|
+
export declare function usePrescribedMappings(mappingGroups: MappingGroup[], sdkProvider: SdkProvider): Promise<ResourceMapping[]>;
|
|
37
20
|
export declare function resourceMovements(before: CloudFormationStack[], after: CloudFormationStack[]): ResourceMovement[];
|
|
38
21
|
export declare function ambiguousMovements(movements: ResourceMovement[]): ResourceMovement[];
|
|
39
22
|
/**
|
|
@@ -46,6 +29,6 @@ export declare function resourceMappings(movements: ResourceMovement[], stacks?:
|
|
|
46
29
|
* that were moved from one location (stack + logical ID) to another. The comparison
|
|
47
30
|
* is done per environment.
|
|
48
31
|
*/
|
|
49
|
-
export declare function findResourceMovements(stacks: CloudFormationStack[], sdkProvider: SdkProvider): Promise<ResourceMovement[]>;
|
|
32
|
+
export declare function findResourceMovements(stacks: CloudFormationStack[], sdkProvider: SdkProvider, exclude?: ExcludeList): Promise<ResourceMovement[]>;
|
|
50
33
|
export declare function formatTypedMappings(mappings: TypedMapping[]): string;
|
|
51
34
|
export declare function formatAmbiguousMappings(paths: [string[], string[]][]): string;
|