@aws-cdk/toolkit-lib 0.4.0 → 1.1.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/README.md +65 -51
- package/build-info.json +2 -2
- package/db.json.gz +0 -0
- package/lib/actions/diff/private/helpers.d.ts +2 -2
- package/lib/actions/diff/private/helpers.js +3 -3
- package/lib/actions/drift/index.d.ts +4 -2
- package/lib/actions/drift/index.js +1 -1
- package/lib/actions/refactor/index.d.ts +25 -21
- package/lib/actions/refactor/index.js +54 -1
- package/lib/actions/watch/index.d.ts +26 -3
- package/lib/actions/watch/index.js +1 -1
- package/lib/actions/watch/private/helpers.d.ts +6 -4
- package/lib/actions/watch/private/helpers.js +37 -6
- package/lib/api/aws-auth/account-cache.d.ts +1 -1
- package/lib/api/aws-auth/account-cache.js +2 -2
- package/lib/api/aws-auth/awscli-compatible.d.ts +1 -1
- package/lib/api/aws-auth/awscli-compatible.js +2 -2
- package/lib/api/cloud-assembly/environment.d.ts +1 -1
- package/lib/api/cloud-assembly/environment.js +2 -2
- package/lib/api/cloud-assembly/private/prepare-source.js +2 -2
- package/lib/api/cloudformation/template-body-parameter.d.ts +2 -2
- package/lib/api/cloudformation/template-body-parameter.js +3 -3
- package/lib/api/deployments/cfn-api.d.ts +8 -8
- package/lib/api/deployments/cfn-api.js +15 -15
- package/lib/api/drift/drift-formatter.d.ts +4 -4
- package/lib/api/drift/drift-formatter.js +5 -5
- package/lib/api/hotswap/hotswap-deployments.js +2 -2
- package/lib/api/io/private/level-priority.d.ts +2 -2
- package/lib/api/io/private/level-priority.js +3 -3
- package/lib/api/io/toolkit-action.d.ts +1 -1
- package/lib/api/io/toolkit-action.js +1 -1
- package/lib/api/logs-monitor/logs-monitor.d.ts +1 -0
- package/lib/api/logs-monitor/logs-monitor.js +5 -3
- package/lib/api/notices/notices.d.ts +1 -1
- package/lib/api/notices/notices.js +2 -2
- package/lib/api/refactoring/context.d.ts +22 -0
- package/lib/api/refactoring/context.js +129 -0
- package/lib/api/refactoring/exclude.d.ts +11 -6
- package/lib/api/refactoring/exclude.js +14 -10
- package/lib/api/refactoring/execution.d.ts +1 -1
- package/lib/api/refactoring/execution.js +50 -25
- package/lib/api/refactoring/index.d.ts +7 -28
- package/lib/api/refactoring/index.js +23 -146
- package/lib/api/resource-import/importer.d.ts +5 -5
- package/lib/api/resource-import/importer.js +6 -6
- package/lib/api/resource-metadata/resource-metadata.d.ts +2 -2
- package/lib/api/resource-metadata/resource-metadata.js +3 -3
- package/lib/context-providers/cc-api-provider.js +23 -14
- package/lib/context-providers/ssm-parameters.d.ts +4 -4
- package/lib/context-providers/ssm-parameters.js +5 -5
- package/lib/index_bg.wasm +0 -0
- package/lib/toolkit/private/index.d.ts +2 -2
- package/lib/toolkit/private/index.js +3 -3
- package/lib/toolkit/toolkit-error.d.ts +16 -2
- package/lib/toolkit/toolkit-error.js +33 -9
- package/lib/toolkit/toolkit.d.ts +15 -22
- package/lib/toolkit/toolkit.js +94 -68
- package/lib/util/bool.d.ts +1 -1
- package/lib/util/bool.js +2 -2
- package/lib/util/bytes.d.ts +2 -2
- package/lib/util/bytes.js +3 -3
- package/lib/util/cloudformation.d.ts +2 -2
- package/lib/util/cloudformation.js +3 -3
- package/lib/util/format-error.d.ts +1 -1
- package/lib/util/format-error.js +6 -2
- package/lib/util/net.d.ts +1 -1
- package/lib/util/net.js +2 -2
- package/lib/util/objects.d.ts +3 -3
- package/lib/util/objects.js +4 -4
- package/lib/util/yaml-cfn.d.ts +2 -2
- package/lib/util/yaml-cfn.js +3 -3
- package/package.json +16 -16
package/README.md
CHANGED
|
@@ -1,20 +1,4 @@
|
|
|
1
1
|
# AWS CDK Toolkit Library
|
|
2
|
-
<!--BEGIN STABILITY BANNER-->
|
|
3
|
-
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-

|
|
7
|
-
|
|
8
|
-
> The APIs in this module are experimental and under active development.
|
|
9
|
-
> They are subject to non-backward compatible changes or removal in future versions.
|
|
10
|
-
> The package follows the [Semantic Versioning](https://semver.org/) model for [major version zero](https://semver.org/#spec-item-4).
|
|
11
|
-
> Accordingly, breaking changes will be introduced in minor versions and announced in the release notes.
|
|
12
|
-
> This means that while you may use them, you may need to update
|
|
13
|
-
> your source code when upgrading to a newer version of this package.
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
<!--END STABILITY BANNER-->
|
|
18
2
|
|
|
19
3
|
The AWS Cloud Development Kit (AWS CDK) Toolkit Library enables you to perform CDK actions requiring programmatic access on AWS. You can use the AWS CDK Toolkit Library to implement actions such as bootstrapping, synthesizing, and deploying through code rather than command-line interface (CLI) commands. With this library, you can create custom tools, build specialized CLI applications, and integrate CDK programmatic access capabilities into your development workflows.
|
|
20
4
|
|
|
@@ -54,7 +38,7 @@ The _Cloud Assembly Source_ is a fundamental CDK Toolkit component that defines
|
|
|
54
38
|
For example, CDK apps may need to be synthesized multiple times with additional context values before they are ready.
|
|
55
39
|
Once created, you can use your _Cloud Assembly Source_ to perform actions with the CDK Toolkit.
|
|
56
40
|
|
|
57
|
-
The following is an example of creating a _Cloud Assembly Source_ using
|
|
41
|
+
The following is an example of creating a _Cloud Assembly Source_ using the _assembly builder function_:
|
|
58
42
|
|
|
59
43
|
```ts
|
|
60
44
|
import * as core from 'aws-cdk-lib/core';
|
|
@@ -112,24 +96,25 @@ because the _Cloud Assembly_ does not have to be produced multiple times.
|
|
|
112
96
|
|
|
113
97
|
```ts
|
|
114
98
|
declare const cdk: Toolkit;
|
|
115
|
-
declare const
|
|
99
|
+
declare const source: ICloudAssemblySource;
|
|
116
100
|
|
|
117
101
|
// Will run the CDK app defined in the Cloud Assembly Source
|
|
118
102
|
// This is an expensive and slow operation
|
|
119
|
-
|
|
103
|
+
// But its result can be stored and re-used
|
|
104
|
+
const cx = await cdk.synth(source, {
|
|
120
105
|
validateStacks: true, // set to `false` to not throw an error if stacks in the assembly contain error annotations
|
|
121
106
|
})
|
|
122
107
|
|
|
123
108
|
// Will use the previously synthesized Cloud Assembly
|
|
124
109
|
// This is now a cheap and fast operation
|
|
125
|
-
const
|
|
110
|
+
const appDetails = await cdk.list(cx);
|
|
126
111
|
```
|
|
127
112
|
|
|
128
|
-
You can also
|
|
113
|
+
You can also query information about the synthesized _Cloud Assembly_:
|
|
129
114
|
|
|
130
115
|
```ts
|
|
131
|
-
|
|
132
|
-
|
|
116
|
+
const cloudAssembly = await cx.produce();
|
|
117
|
+
const template = cloudAssembly.getStackByName("my-stack").template;
|
|
133
118
|
```
|
|
134
119
|
|
|
135
120
|
### list
|
|
@@ -149,6 +134,23 @@ const details = await cdk.list(cx, {
|
|
|
149
134
|
});
|
|
150
135
|
```
|
|
151
136
|
|
|
137
|
+
### diff
|
|
138
|
+
|
|
139
|
+
You can create a diff of your app to gain detailed insights into what will be changing in the next deployment.
|
|
140
|
+
|
|
141
|
+
```ts
|
|
142
|
+
declare const cdk: Toolkit;
|
|
143
|
+
declare const cx: ICloudAssemblySource;
|
|
144
|
+
|
|
145
|
+
const stackDiffs = await cdk.diff(cx, {
|
|
146
|
+
// optionally provide a stack selector to control which stacks you want to create a diff for
|
|
147
|
+
stacks: {
|
|
148
|
+
strategy: StackSelectionStrategy.PATTERN_MUST_MATCH,
|
|
149
|
+
patterns: ["my-stack"],
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
```
|
|
153
|
+
|
|
152
154
|
### deploy
|
|
153
155
|
|
|
154
156
|
Deployment is the process of provisioning or updating your infrastructure in AWS using the CloudFormation templates and assets produced during synthesis.
|
|
@@ -194,6 +196,28 @@ await cdk.watch(cx, {
|
|
|
194
196
|
})
|
|
195
197
|
```
|
|
196
198
|
|
|
199
|
+
### drift
|
|
200
|
+
|
|
201
|
+
Drift detection is crucial for maintaining infrastructure reliability.
|
|
202
|
+
It identifies when your deployed resources have been modified outside of your CDK code.
|
|
203
|
+
This allows you to quickly address unauthorized changes.
|
|
204
|
+
Such changes could lead to security vulnerabilities, compliance issues, or unexpected behavior in your cloud environment.
|
|
205
|
+
|
|
206
|
+
Use the drift operation to detect such drift in your CDK applications:
|
|
207
|
+
|
|
208
|
+
```ts
|
|
209
|
+
declare const cdk: Toolkit;
|
|
210
|
+
declare const cx: ICloudAssemblySource;
|
|
211
|
+
|
|
212
|
+
const stackDrifts = await cdk.drift(cx, {
|
|
213
|
+
// optionally provide a stack selector to control which stacks are checked for drift
|
|
214
|
+
stacks: {
|
|
215
|
+
strategy: StackSelectionStrategy.PATTERN_MUST_MATCH,
|
|
216
|
+
patterns: ["my-stack"],
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
```
|
|
220
|
+
|
|
197
221
|
### destroy
|
|
198
222
|
|
|
199
223
|
Use the destroy feature to remove CDK stacks and their associated resources from AWS:
|
|
@@ -247,36 +271,40 @@ The CDK Toolkit awaits the completion of each call, allowing clients to perform
|
|
|
247
271
|
When you implement an `IoHost` interface, you can either process these communications (for example, logging to CloudWatch or prompting users for input) or return immediately without taking action.
|
|
248
272
|
If your implementation doesn’t provide a response to a request, the CDK Toolkit proceeds with a default value.
|
|
249
273
|
|
|
250
|
-
#### Default
|
|
274
|
+
#### Default `NonInteractiveIoHost`
|
|
251
275
|
|
|
252
|
-
By default the CDK Toolkit Library will use a `
|
|
276
|
+
By default the CDK Toolkit Library will use a `NonInteractiveIoHost ` implementation that mimics the behavior of the AWS CDK Toolkit CLI.
|
|
277
|
+
This `NonInteractiveIoHost` is available for you as a base implementation to extend on.
|
|
253
278
|
|
|
254
279
|
### Configure your AWS profile
|
|
255
280
|
|
|
256
281
|
The Toolkit internally uses AWS SDK Clients to make necessary API calls to AWS.
|
|
257
|
-
Authentication configuration is loaded automatically from the environment, but you can explicitly specify the
|
|
282
|
+
Authentication configuration is loaded automatically from the environment, but you can explicitly specify the base credentials to be used:
|
|
258
283
|
|
|
259
284
|
```ts
|
|
260
|
-
import { Toolkit } from '@aws-cdk/toolkit-lib';
|
|
285
|
+
import { Toolkit, BaseCredentials } from '@aws-cdk/toolkit-lib';
|
|
261
286
|
|
|
262
287
|
const cdk = new Toolkit({
|
|
263
|
-
sdkConfig: {
|
|
288
|
+
sdkConfig: {
|
|
289
|
+
baseCredentials: BaseCredentials.awsCliCompatible({ profile: "my-profile" })
|
|
290
|
+
},
|
|
264
291
|
});
|
|
265
292
|
```
|
|
266
293
|
|
|
267
294
|
### Configure a proxy for SDK calls
|
|
268
295
|
|
|
269
296
|
The Toolkit internally uses AWS SDK Clients to make necessary API calls to AWS.
|
|
270
|
-
You can specify a
|
|
297
|
+
You can specify a Node.js Agent to configure SDK calls.
|
|
298
|
+
This allows you to configure third-party packages like [`proxy-agent`](https://www.npmjs.com/package/proxy-agent) to proxy all SDK calls:
|
|
271
299
|
|
|
272
300
|
```ts
|
|
301
|
+
import { ProxyAgent } from 'proxy-agent';
|
|
273
302
|
import { Toolkit } from '@aws-cdk/toolkit-lib';
|
|
274
303
|
|
|
275
304
|
const cdk = new Toolkit({
|
|
276
305
|
sdkConfig: {
|
|
277
306
|
httpOptions: {
|
|
278
|
-
|
|
279
|
-
caBundlePath: "path/to/ca/bundle",
|
|
307
|
+
agent: new ProxyAgent(),
|
|
280
308
|
},
|
|
281
309
|
},
|
|
282
310
|
});
|
|
@@ -316,7 +344,8 @@ await cdk.fromCdkApp("ts-node app.ts");
|
|
|
316
344
|
await cdk.fromCdkApp("python app.py");
|
|
317
345
|
```
|
|
318
346
|
|
|
319
|
-
|
|
347
|
+
The `AssemblyBuilder` function provides basic Toolkit features like Lookups, but otherwise allows you to implement any custom source.
|
|
348
|
+
For example you build an inline CDK app on-the-fly:
|
|
320
349
|
|
|
321
350
|
```ts
|
|
322
351
|
declare const cdk: Toolkit;
|
|
@@ -412,26 +441,11 @@ try {
|
|
|
412
441
|
});
|
|
413
442
|
|
|
414
443
|
} catch (error) {
|
|
415
|
-
|
|
416
|
-
if (ToolkitError.
|
|
417
|
-
|
|
418
|
-
console.error('AWS credentials error:', error.message);
|
|
419
|
-
|
|
420
|
-
} else if (ToolkitError.isAssemblyError(error)) {
|
|
421
|
-
// Handle errors from your CDK app
|
|
422
|
-
console.error('CDK app error:', error.message);
|
|
423
|
-
|
|
424
|
-
} else if (ToolkitError.isContextProviderError(error)) {
|
|
425
|
-
// Handle errors from context providers
|
|
426
|
-
console.error('Context provider error:', error.message);
|
|
427
|
-
|
|
428
|
-
} else if (ToolkitError.isToolkitError(error)) {
|
|
429
|
-
// Handle all other Toolkit errors
|
|
430
|
-
console.error('Generic Toolkit error:', error.message);
|
|
431
|
-
|
|
444
|
+
// Handle user error
|
|
445
|
+
if (ToolkitError.isToolkitError(error) && error.source === 'user') {
|
|
446
|
+
console.error('Hey, something is wrong with your app!', error.message);
|
|
432
447
|
} else {
|
|
433
|
-
|
|
434
|
-
console.error('Unexpected error:', error);
|
|
448
|
+
throw error;
|
|
435
449
|
}
|
|
436
450
|
}
|
|
437
451
|
```
|
package/build-info.json
CHANGED
package/db.json.gz
CHANGED
|
Binary file
|
|
@@ -9,8 +9,8 @@ export declare function prepareDiff(ioHelper: IoHelper, stacks: StackCollection,
|
|
|
9
9
|
* Appends all properties from obj2 to obj1.
|
|
10
10
|
* obj2 values take priority in the case of collisions.
|
|
11
11
|
*
|
|
12
|
-
* @param obj1 The object to modify
|
|
13
|
-
* @param obj2 The object to consume
|
|
12
|
+
* @param obj1 - The object to modify
|
|
13
|
+
* @param obj2 - The object to consume
|
|
14
14
|
*
|
|
15
15
|
* @returns obj1 with all properties from obj2
|
|
16
16
|
*/
|
|
@@ -103,8 +103,8 @@ async function changeSetDiff(ioHelper, deployments, stack, sdkProvider, resource
|
|
|
103
103
|
* Appends all properties from obj2 to obj1.
|
|
104
104
|
* obj2 values take priority in the case of collisions.
|
|
105
105
|
*
|
|
106
|
-
* @param obj1 The object to modify
|
|
107
|
-
* @param obj2 The object to consume
|
|
106
|
+
* @param obj1 - The object to modify
|
|
107
|
+
* @param obj2 - The object to consume
|
|
108
108
|
*
|
|
109
109
|
* @returns obj1 with all properties from obj2
|
|
110
110
|
*/
|
|
@@ -116,4 +116,4 @@ function appendObject(obj1, obj2) {
|
|
|
116
116
|
// Return the modified obj1
|
|
117
117
|
return obj1;
|
|
118
118
|
}
|
|
119
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkEsa0NBaUJDO0FBb0lELG9DQVdDO0FBL0tELCtCQUErQjtBQUMvQiw2QkFBNkI7QUFFN0IsMEJBQWdDO0FBSWhDLDJEQUEyRDtBQUkzRCxrRUFBMEY7QUFDMUYsa0VBQThEO0FBQzlELHdDQUF5RTtBQUV6RSxTQUFnQixXQUFXLENBQ3pCLFFBQWtCLEVBQ2xCLE1BQXVCLEVBQ3ZCLFdBQXdCLEVBQ3hCLFdBQXdCLEVBQ3hCLE9BQW9CO0lBRXBCLFFBQVEsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksY0FBVSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hFLEtBQUssWUFBWTtZQUNmLE9BQU8sYUFBYSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN4QyxLQUFLLGVBQWU7WUFDbEIsT0FBTyxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3RSxLQUFLLFlBQVk7WUFDZixPQUFPLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVFO1lBQ0UsTUFBTSxJQUFJLDRCQUFZLENBQUMsSUFBQSx5QkFBa0IsRUFBQyx1QkFBdUIsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0FBQ0gsQ0FBQztBQUVELEtBQUssVUFBVSxhQUFhLENBQUMsTUFBdUIsRUFBRSxPQUFvQjtJQUN4RSxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBeUIsQ0FBQztJQUU5RSw4Q0FBOEM7SUFDOUMsSUFBSSxNQUFNLENBQUMsVUFB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QUEyQjtJQUUzQiwwREFBMEQ7SUFDMUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcbmltcG9ydCB0eXBlIHsgQ2hhbmdlU2V0RGlmZk9wdGlvbnMsIERpZmZPcHRpb25zLCBMb2NhbEZpbGVEaWZmT3B0aW9ucyB9IGZyb20gJy4uJztcbmltcG9ydCB7IERpZmZNZXRob2QgfSBmcm9tICcuLic7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vYXBpL2F3cy1hdXRoL3ByaXZhdGUnO1xuaW1wb3J0IHR5cGUgeyBTdGFja0NvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9hcGkvY2xvdWQtYXNzZW1ibHkvc3RhY2stY29sbGVjdGlvbic7XG5pbXBvcnQgdHlwZSB7IERlcGxveW1lbnRzIH0gZnJvbSAnLi4vLi4vLi4vYXBpL2RlcGxveW1lbnRzJztcbmltcG9ydCAqIGFzIGNmbkFwaSBmcm9tICcuLi8uLi8uLi9hcGkvZGVwbG95bWVudHMvY2ZuLWFwaSc7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlSW5mbyB9IGZyb20gJy4uLy4uLy4uL2FwaS9kaWZmJztcbmltcG9ydCB0eXBlIHsgSW9IZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9hcGkvaW8vcHJpdmF0ZSc7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlc1RvSW1wb3J0IH0gZnJvbSAnLi4vLi4vLi4vYXBpL3Jlc291cmNlLWltcG9ydCc7XG5pbXBvcnQgeyByZW1vdmVOb25JbXBvcnRSZXNvdXJjZXMsIFJlc291cmNlTWlncmF0b3IgfSBmcm9tICcuLi8uLi8uLi9hcGkvcmVzb3VyY2UtaW1wb3J0JztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5pbXBvcnQgeyBkZXNlcmlhbGl6ZVN0cnVjdHVyZSwgZm9ybWF0RXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlRGlmZihcbiAgaW9IZWxwZXI6IElvSGVscGVyLFxuICBzdGFja3M6IFN0YWNrQ29sbGVjdGlvbixcbiAgZGVwbG95bWVudHM6IERlcGxveW1lbnRzLFxuICBzZGtQcm92aWRlcjogU2RrUHJvdmlkZXIsXG4gIG9wdGlvbnM6IERpZmZPcHRpb25zLFxuKTogUHJvbWlzZTxUZW1wbGF0ZUluZm9bXT4ge1xuICBzd2l0Y2ggKG9wdGlvbnMubWV0aG9kPy5tZXRob2QgPz8gRGlmZk1ldGhvZC5DaGFuZ2VTZXQoKS5tZXRob2QpIHtcbiAgICBjYXNlICdsb2NhbC1maWxlJzpcbiAgICAgIHJldHVybiBsb2NhbEZpbGVEaWZmKHN0YWNrcywgb3B0aW9ucyk7XG4gICAgY2FzZSAndGVtcGxhdGUtb25seSc6XG4gICAgICByZXR1cm4gY2ZuRGlmZihpb0hlbHBlciwgc3RhY2tzLCBkZXBsb3ltZW50cywgb3B0aW9ucywgc2RrUHJvdmlkZXIsIGZhbHNlKTtcbiAgICBjYXNlICdjaGFuZ2Utc2V0JzpcbiAgICAgIHJldHVybiBjZm5EaWZmKGlvSGVscGVyLCBzdGFja3MsIGRlcGxveW1lbnRzLCBvcHRpb25zLCBzZGtQcm92aWRlciwgdHJ1ZSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoZm9ybWF0RXJyb3JNZXNzYWdlKGBVbmtub3duIGRpZmYgbWV0aG9kICR7b3B0aW9ucy5tZXRob2R9YCkpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxvY2FsRmlsZURpZmYoc3RhY2tzOiBTdGFja0NvbGxlY3Rpb24sIG9wdGlvbnM6IERpZmZPcHRpb25zKTogUHJvbWlzZTxUZW1wbGF0ZUluZm9bXT4ge1xuICBjb25zdCBtZXRob2RPcHRpb25zID0gKG9wdGlvbnMubWV0aG9kPy5vcHRpb25zID8/IHt9KSBhcyBMb2NhbEZpbGVEaWZmT3B0aW9ucztcblxuICAvLyBDb21wYXJlIHNpbmdsZSBzdGFjayBhZ2FpbnN0IGZpeGVkIHRlbXBsYXRlXG4gIGlmIChzdGFja3Muc3RhY2tDb3VudCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoXG4gICAgICAnQ2FuIG9ubHkgc2VsZWN0IG9uZSBzdGFjayB3aGVuIGNvbXBhcmluZyB0byBmaXhlZCB0ZW1wbGF0ZS4gVXNlIC0tZXhjbHVzaXZlbHkgdG8gYXZvaWQgc2VsZWN0aW5nIG11bHRpcGxlIHN0YWNrcy4nLFxuICAgICk7XG4gIH1cblxuICBpZiAoIShhd2FpdCBmcy5wYXRoRXhpc3RzKG1ldGhvZE9wdGlvbnMucGF0aCkpKSB7XG4gICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgVGhlcmUgaXMgbm8gZmlsZSBhdCAke21ldGhvZE9wdGlvbnMucGF0aH1gKTtcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSBmcy5yZWFkRmlsZVN5bmMobWV0aG9kT3B0aW9ucy5wYXRoKS50b1N0cmluZygpO1xuICBjb25zdCB0ZW1wbGF0ZSA9IGRlc2VyaWFsaXplU3RydWN0dXJlKGZpbGUpO1xuXG4gIHJldHVybiBbe1xuICAgIG9sZFRlbXBsYXRlOiB0ZW1wbGF0ZSxcbiAgICBuZXdUZW1wbGF0ZTogc3RhY2tzLmZpcnN0U3RhY2ssXG4gIH1dO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjZm5EaWZmKFxuICBpb0hlbHBlcjogSW9IZWxwZXIsXG4gIHN0YWNrczogU3RhY2tDb2xsZWN0aW9uLFxuICBkZXBsb3ltZW50czogRGVwbG95bWVudHMsXG4gIG9wdGlvbnM6IERpZmZPcHRpb25zLFxuICBzZGtQcm92aWRlcjogU2RrUHJvdmlkZXIsXG4gIGluY2x1ZGVDaGFuZ2VTZXQ6IGJvb2xlYW4sXG4pOiBQcm9taXNlPFRlbXBsYXRlSW5mb1tdPiB7XG4gIGNvbnN0IHRlbXBsYXRlSW5mb3MgPSBbXTtcbiAgY29uc3QgbWV0aG9kT3B0aW9ucyA9IChvcHRpb25zLm1ldGhvZD8ub3B0aW9ucyA/PyB7fSkgYXMgQ2hhbmdlU2V0RGlmZk9wdGlvbnM7XG5cbiAgLy8gQ29tcGFyZSBOIHN0YWNrcyBhZ2FpbnN0IGRlcGxveWVkIHRlbXBsYXRlc1xuICBmb3IgKGNvbnN0IHN0YWNrIG9mIHN0YWNrcy5zdGFja0FydGlmYWN0cykge1xuICAgIGNvbnN0IHRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrcyA9IGF3YWl0IGRlcGxveW1lbnRzLnJlYWRDdXJyZW50VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzKFxuICAgICAgc3RhY2ssXG4gICAgICBtZXRob2RPcHRpb25zLmNvbXBhcmVBZ2FpbnN0UHJvY2Vzc2VkVGVtcGxhdGUsXG4gICAgKTtcbiAgICBjb25zdCBjdXJyZW50VGVtcGxhdGUgPSB0ZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja3MuZGVwbG95ZWRSb290VGVtcGxhdGU7XG4gICAgY29uc3QgbmVzdGVkU3RhY2tzID0gdGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzLm5lc3RlZFN0YWNrcztcblxuICAgIGNvbnN0IG1pZ3JhdG9yID0gbmV3IFJlc291cmNlTWlncmF0b3IoeyBkZXBsb3ltZW50cywgaW9IZWxwZXIgfSk7XG4gICAgY29uc3QgcmVzb3VyY2VzVG9JbXBvcnQgPSBhd2FpdCBtaWdyYXRvci50cnlHZXRSZXNvdXJjZXMoYXdhaXQgZGVwbG95bWVudHMucmVzb2x2ZUVudmlyb25tZW50KHN0YWNrKSk7XG4gICAgaWYgKHJlc291cmNlc1RvSW1wb3J0KSB7XG4gICAgICByZW1vdmVOb25JbXBvcnRSZXNvdXJjZXMoc3RhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGNoYW5nZVNldCA9IGluY2x1ZGVDaGFuZ2VTZXQgPyBhd2FpdCBjaGFuZ2VTZXREaWZmKFxuICAgICAgaW9IZWxwZXIsXG4gICAgICBkZXBsb3ltZW50cyxcbiAgICAgIHN0YWNrLFxuICAgICAgc2RrUHJvdmlkZXIsXG4gICAgICByZXNvdXJjZXNUb0ltcG9ydCxcbiAgICAgIG1ldGhvZE9wdGlvbnMucGFyYW1ldGVycyxcbiAgICAgIG1ldGhvZE9wdGlvbnMuZmFsbGJhY2tUb1RlbXBsYXRlLFxuICAgICAgbWV0aG9kT3B0aW9ucy5pbXBvcnRFeGlzdGluZ1Jlc291cmNlcyxcbiAgICApIDogdW5kZWZpbmVkO1xuXG4gICAgdGVtcGxhdGVJbmZvcy5wdXNoKHtcbiAgICAgIG9sZFRlbXBsYXRlOiBjdXJyZW50VGVtcGxhdGUsXG4gICAgICBuZXdUZW1wbGF0ZTogc3RhY2ssXG4gICAgICBpc0ltcG9ydDogISFyZXNvdXJjZXNUb0ltcG9ydCxcbiAgICAgIG5lc3RlZFN0YWNrcyxcbiAgICAgIGNoYW5nZVNldCxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0ZW1wbGF0ZUluZm9zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjaGFuZ2VTZXREaWZmKFxuICBpb0hlbHBlcjogSW9IZWxwZXIsXG4gIGRlcGxveW1lbnRzOiBEZXBsb3ltZW50cyxcbiAgc3RhY2s6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCxcbiAgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLFxuICByZXNvdXJjZXNUb0ltcG9ydD86IFJlc291cmNlc1RvSW1wb3J0LFxuICBwYXJhbWV0ZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSA9IHt9LFxuICBmYWxsQmFja1RvVGVtcGxhdGU6IGJvb2xlYW4gPSB0cnVlLFxuICBpbXBvcnRFeGlzdGluZ1Jlc291cmNlczogYm9vbGVhbiA9IGZhbHNlLFxuKTogUHJvbWlzZTxhbnkgfCB1bmRlZmluZWQ+IHtcbiAgbGV0IHN0YWNrRXhpc3RzID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgc3RhY2tFeGlzdHMgPSBhd2FpdCBkZXBsb3ltZW50cy5zdGFja0V4aXN0cyh7XG4gICAgICBzdGFjayxcbiAgICAgIGRlcGxveU5hbWU6IHN0YWNrLnN0YWNrTmFtZSxcbiAgICAgIHRyeUxvb2t1cFJvbGU6IHRydWUsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIGlmICghZmFsbEJhY2tUb1RlbXBsYXRlKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBkZXNjcmliZVN0YWNrcyBjYWxsIGZhaWxlZCB3aXRoICR7ZX0gZm9yICR7c3RhY2suc3RhY2tOYW1lfSwgc2V0IGZhbGxCYWNrVG9UZW1wbGF0ZSB0byB0cnVlIG9yIHVzZSBEaWZmTWV0aG9kLnRlbXBsYXRlT25seSB0byBiYXNlIHRoZSBkaWZmIG9uIHRlbXBsYXRlIGRpZmZlcmVuY2VzLmApO1xuICAgIH1cblxuICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKGBDaGVja2luZyBpZiB0aGUgc3RhY2sgJHtzdGFjay5zdGFja05hbWV9IGV4aXN0cyBiZWZvcmUgY3JlYXRpbmcgdGhlIGNoYW5nZXNldCBoYXMgZmFpbGVkLCB3aWxsIGJhc2UgdGhlIGRpZmYgb24gdGVtcGxhdGUgZGlmZmVyZW5jZXMuXFxuYCk7XG4gICAgYXdhaXQgaW9IZWxwZXIuZGVmYXVsdHMuZGVidWcoZm9ybWF0RXJyb3JNZXNzYWdlKGUpKTtcbiAgICBzdGFja0V4aXN0cyA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHN0YWNrRXhpc3RzKSB7XG4gICAgcmV0dXJuIGNmbkFwaS5jcmVhdGVEaWZmQ2hhbmdlU2V0KGlvSGVscGVyLCB7XG4gICAgICBzdGFjayxcbiAgICAgIHV1aWQ6IHV1aWQudjQoKSxcbiAgICAgIGRlcGxveW1lbnRzLFxuICAgICAgd2lsbEV4ZWN1dGU6IGZhbHNlLFxuICAgICAgc2RrUHJvdmlkZXIsXG4gICAgICBwYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzLFxuICAgICAgcmVzb3VyY2VzVG9JbXBvcnQsXG4gICAgICBmYWlsT25FcnJvcjogIWZhbGxCYWNrVG9UZW1wbGF0ZSxcbiAgICAgIGltcG9ydEV4aXN0aW5nUmVzb3VyY2VzLFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGlmICghZmFsbEJhY2tUb1RlbXBsYXRlKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGB0aGUgc3RhY2sgJyR7c3RhY2suc3RhY2tOYW1lfScgaGFzIG5vdCBiZWVuIGRlcGxveWVkIHRvIENsb3VkRm9ybWF0aW9uLCBzZXQgZmFsbEJhY2tUb1RlbXBsYXRlIHRvIHRydWUgb3IgdXNlIERpZmZNZXRob2QudGVtcGxhdGVPbmx5IHRvIGJhc2UgdGhlIGRpZmYgb24gdGVtcGxhdGUgZGlmZmVyZW5jZXMuYCk7XG4gICAgfVxuXG4gICAgYXdhaXQgaW9IZWxwZXIuZGVmYXVsdHMuZGVidWcoYHRoZSBzdGFjayAnJHtzdGFjay5zdGFja05hbWV9JyBoYXMgbm90IGJlZW4gZGVwbG95ZWQgdG8gQ2xvdWRGb3JtYXRpb24sIHNraXBwaW5nIGNoYW5nZXNldCBjcmVhdGlvbi5gKTtcbiAgICByZXR1cm47XG4gIH1cbn1cblxuLyoqXG4gKiBBcHBlbmRzIGFsbCBwcm9wZXJ0aWVzIGZyb20gb2JqMiB0byBvYmoxLlxuICogb2JqMiB2YWx1ZXMgdGFrZSBwcmlvcml0eSBpbiB0aGUgY2FzZSBvZiBjb2xsaXNpb25zLlxuICpcbiAqIEBwYXJhbSBvYmoxIFRoZSBvYmplY3QgdG8gbW9kaWZ5XG4gKiBAcGFyYW0gb2JqMiBUaGUgb2JqZWN0IHRvIGNvbnN1bWVcbiAqXG4gKiBAcmV0dXJucyBvYmoxIHdpdGggYWxsIHByb3BlcnRpZXMgZnJvbSBvYmoyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRPYmplY3Q8VD4oXG4gIG9iajE6IHsgW25hbWU6IHN0cmluZ106IFQgfSxcbiAgb2JqMjogeyBbbmFtZTogc3RyaW5nXTogVCB9LFxuKTogeyBbbmFtZTogc3RyaW5nXTogVCB9IHtcbiAgLy8gRGlyZWN0bHkgbW9kaWZ5IG9iajEgYnkgYWRkaW5nIGFsbCBwcm9wZXJ0aWVzIGZyb20gb2JqMlxuICBmb3IgKGNvbnN0IGtleSBpbiBvYmoyKSB7XG4gICAgb2JqMVtrZXldID0gb2JqMltrZXldO1xuICB9XG5cbiAgLy8gUmV0dXJuIHRoZSBtb2RpZmllZCBvYmoxXG4gIHJldHVybiBvYmoxO1xufVxuIl19
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFnQkEsa0NBaUJDO0FBb0lELG9DQVdDO0FBL0tELCtCQUErQjtBQUMvQiw2QkFBNkI7QUFFN0IsMEJBQWdDO0FBSWhDLDJEQUEyRDtBQUkzRCxrRUFBMEY7QUFDMUYsa0VBQThEO0FBQzlELHdDQUF5RTtBQUV6RSxTQUFnQixXQUFXLENBQ3pCLFFBQWtCLEVBQ2xCLE1BQXVCLEVBQ3ZCLFdBQXdCLEVBQ3hCLFdBQXdCLEVBQ3hCLE9BQW9CO0lBRXBCLFFBQVEsT0FBTyxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksY0FBVSxDQUFDLFNBQVMsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hFLEtBQUssWUFBWTtZQUNmLE9BQU8sYUFBYSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN4QyxLQUFLLGVBQWU7WUFDbEIsT0FBTyxPQUFPLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM3RSxLQUFLLFlBQVk7WUFDZixPQUFPLE9BQU8sQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzVFO1lBQ0UsTUFBTSxJQUFJLDRCQUFZLENBQUMsSUFBQSx5QkFBa0IsRUFBQyx1QkFBdUIsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0FBQ0gsQ0FBQztBQUVELEtBQUssVUFBVSxhQUFhLENBQUMsTUFBdUIsRUFBRSxPQUFvQjtJQUN4RSxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBeUIsQ0FBQztJQUU5RSw4Q0FBOEM7SUFDOUMsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSw0QkFBWSxDQUNwQixtSEFBbUgsQ0FDcEgsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMvQyxNQUFNLElBQUksNEJBQVksQ0FBQyx1QkFBdUIsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVELE1BQU0sUUFBUSxHQUFHLElBQUEsMkJBQW9CLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFFNUMsT0FBTyxDQUFDO1lBQ04sV0FBVyxFQUFFLFFBQVE7WUFDckIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxVQUFVO1NBQy9CLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxLQUFLLFVBQVUsT0FBTyxDQUNwQixRQUFrQixFQUNsQixNQUF1QixFQUN2QixXQUF3QixFQUN4QixPQUFvQixFQUNwQixXQUF3QixFQUN4QixnQkFBeUI7SUFFekIsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLElBQUksRUFBRSxDQUF5QixDQUFDO0lBRTlFLDhDQUE4QztJQUM5QyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQyxNQUFNLHdCQUF3QixHQUFHLE1BQU0sV0FBVyxDQUFDLG1DQUFtQyxDQUNwRixLQUFLLEVBQ0wsYUFBYSxDQUFDLCtCQUErQixDQUM5QyxDQUFDO1FBQ0YsTUFBTSxlQUFlLEdBQUcsd0JBQXdCLENBQUMsb0JBQW9CLENBQUM7UUFDdEUsTUFBTSxZQUFZLEdBQUcsd0JBQXdCLENBQUMsWUFBWSxDQUFDO1FBRTNELE1BQU0sUUFBUSxHQUFHLElBQUksa0NBQWdCLENBQUMsRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNqRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3RHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztZQUN0QixJQUFBLDBDQUF3QixFQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2xDLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsTUFBTSxhQUFhLENBQ3RELFFBQVEsRUFDUixXQUFXLEVBQ1gsS0FBSyxFQUNMLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsYUFBYSxDQUFDLFVBQVUsRUFDeEIsYUFBYSxDQUFDLGtCQUFrQixFQUNoQyxhQUFhLENBQUMsdUJBQXVCLENBQ3RDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUVkLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFDakIsV0FBVyxFQUFFLGVBQWU7WUFDNUIsV0FBVyxFQUFFLEtBQUs7WUFDbEIsUUFBUSxFQUFFLENBQUMsQ0FBQyxpQkFBaUI7WUFDN0IsWUFBWTtZQUNaLFNBQVM7U0FDVixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsT0FBTyxhQUFhLENBQUM7QUFDdkIsQ0FBQztBQUVELEtBQUssVUFBVSxhQUFhLENBQzFCLFFBQWtCLEVBQ2xCLFdBQXdCLEVBQ3hCLEtBQXdDLEVBQ3hDLFdBQXdCLEVBQ3hCLGlCQUFxQyxFQUNyQyxhQUFxRCxFQUFFLEVBQ3ZELHFCQUE4QixJQUFJLEVBQ2xDLDBCQUFtQyxLQUFLO0lBRXhDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztJQUN4QixJQUFJLENBQUM7UUFDSCxXQUFXLEdBQUcsTUFBTSxXQUFXLENBQUMsV0FBVyxDQUFDO1lBQzFDLEtBQUs7WUFDTCxVQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDM0IsYUFBYSxFQUFFLElBQUk7U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLDRCQUFZLENBQUMsbUNBQW1DLENBQUMsUUFBUSxLQUFLLENBQUMsU0FBUywyR0FBMkcsQ0FBQyxDQUFDO1FBQ2pNLENBQUM7UUFFRCxNQUFNLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLHlCQUF5QixLQUFLLENBQUMsU0FBUyxpR0FBaUcsQ0FBQyxDQUFDO1FBQ3pLLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBQSx5QkFBa0IsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JELFdBQVcsR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEIsT0FBTyxNQUFNLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFO1lBQzFDLEtBQUs7WUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtZQUNmLFdBQVc7WUFDWCxXQUFXLEVBQUUsS0FBSztZQUNsQixXQUFXO1lBQ1gsVUFBVSxFQUFFLFVBQVU7WUFDdEIsaUJBQWlCO1lBQ2pCLFdBQVcsRUFBRSxDQUFDLGtCQUFrQjtZQUNoQyx1QkFBdUI7U0FDeEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztTQUFNLENBQUM7UUFDTixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUN4QixNQUFNLElBQUksNEJBQVksQ0FBQyxjQUFjLEtBQUssQ0FBQyxTQUFTLG9KQUFvSixDQUFDLENBQUM7UUFDNU0sQ0FBQztRQUVELE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBYyxLQUFLLENBQUMsU0FBUyx5RUFBeUUsQ0FBQyxDQUFDO1FBQ3RJLE9BQU87SUFDVCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsWUFBWSxDQUMxQixJQUEyQixFQUMzQixJQUEyQjtJQUUzQiwwREFBMEQ7SUFDMUQsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCwyQkFBMkI7SUFDM0IsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgKiBhcyBjeGFwaSBmcm9tICdAYXdzLWNkay9jeC1hcGknO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuaW1wb3J0ICogYXMgdXVpZCBmcm9tICd1dWlkJztcbmltcG9ydCB0eXBlIHsgQ2hhbmdlU2V0RGlmZk9wdGlvbnMsIERpZmZPcHRpb25zLCBMb2NhbEZpbGVEaWZmT3B0aW9ucyB9IGZyb20gJy4uJztcbmltcG9ydCB7IERpZmZNZXRob2QgfSBmcm9tICcuLic7XG5pbXBvcnQgdHlwZSB7IFNka1Byb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vYXBpL2F3cy1hdXRoL3ByaXZhdGUnO1xuaW1wb3J0IHR5cGUgeyBTdGFja0NvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9hcGkvY2xvdWQtYXNzZW1ibHkvc3RhY2stY29sbGVjdGlvbic7XG5pbXBvcnQgdHlwZSB7IERlcGxveW1lbnRzIH0gZnJvbSAnLi4vLi4vLi4vYXBpL2RlcGxveW1lbnRzJztcbmltcG9ydCAqIGFzIGNmbkFwaSBmcm9tICcuLi8uLi8uLi9hcGkvZGVwbG95bWVudHMvY2ZuLWFwaSc7XG5pbXBvcnQgdHlwZSB7IFRlbXBsYXRlSW5mbyB9IGZyb20gJy4uLy4uLy4uL2FwaS9kaWZmJztcbmltcG9ydCB0eXBlIHsgSW9IZWxwZXIgfSBmcm9tICcuLi8uLi8uLi9hcGkvaW8vcHJpdmF0ZSc7XG5pbXBvcnQgdHlwZSB7IFJlc291cmNlc1RvSW1wb3J0IH0gZnJvbSAnLi4vLi4vLi4vYXBpL3Jlc291cmNlLWltcG9ydCc7XG5pbXBvcnQgeyByZW1vdmVOb25JbXBvcnRSZXNvdXJjZXMsIFJlc291cmNlTWlncmF0b3IgfSBmcm9tICcuLi8uLi8uLi9hcGkvcmVzb3VyY2UtaW1wb3J0JztcbmltcG9ydCB7IFRvb2xraXRFcnJvciB9IGZyb20gJy4uLy4uLy4uL3Rvb2xraXQvdG9vbGtpdC1lcnJvcic7XG5pbXBvcnQgeyBkZXNlcmlhbGl6ZVN0cnVjdHVyZSwgZm9ybWF0RXJyb3JNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlRGlmZihcbiAgaW9IZWxwZXI6IElvSGVscGVyLFxuICBzdGFja3M6IFN0YWNrQ29sbGVjdGlvbixcbiAgZGVwbG95bWVudHM6IERlcGxveW1lbnRzLFxuICBzZGtQcm92aWRlcjogU2RrUHJvdmlkZXIsXG4gIG9wdGlvbnM6IERpZmZPcHRpb25zLFxuKTogUHJvbWlzZTxUZW1wbGF0ZUluZm9bXT4ge1xuICBzd2l0Y2ggKG9wdGlvbnMubWV0aG9kPy5tZXRob2QgPz8gRGlmZk1ldGhvZC5DaGFuZ2VTZXQoKS5tZXRob2QpIHtcbiAgICBjYXNlICdsb2NhbC1maWxlJzpcbiAgICAgIHJldHVybiBsb2NhbEZpbGVEaWZmKHN0YWNrcywgb3B0aW9ucyk7XG4gICAgY2FzZSAndGVtcGxhdGUtb25seSc6XG4gICAgICByZXR1cm4gY2ZuRGlmZihpb0hlbHBlciwgc3RhY2tzLCBkZXBsb3ltZW50cywgb3B0aW9ucywgc2RrUHJvdmlkZXIsIGZhbHNlKTtcbiAgICBjYXNlICdjaGFuZ2Utc2V0JzpcbiAgICAgIHJldHVybiBjZm5EaWZmKGlvSGVscGVyLCBzdGFja3MsIGRlcGxveW1lbnRzLCBvcHRpb25zLCBzZGtQcm92aWRlciwgdHJ1ZSk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoZm9ybWF0RXJyb3JNZXNzYWdlKGBVbmtub3duIGRpZmYgbWV0aG9kICR7b3B0aW9ucy5tZXRob2R9YCkpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGxvY2FsRmlsZURpZmYoc3RhY2tzOiBTdGFja0NvbGxlY3Rpb24sIG9wdGlvbnM6IERpZmZPcHRpb25zKTogUHJvbWlzZTxUZW1wbGF0ZUluZm9bXT4ge1xuICBjb25zdCBtZXRob2RPcHRpb25zID0gKG9wdGlvbnMubWV0aG9kPy5vcHRpb25zID8/IHt9KSBhcyBMb2NhbEZpbGVEaWZmT3B0aW9ucztcblxuICAvLyBDb21wYXJlIHNpbmdsZSBzdGFjayBhZ2FpbnN0IGZpeGVkIHRlbXBsYXRlXG4gIGlmIChzdGFja3Muc3RhY2tDb3VudCAhPT0gMSkge1xuICAgIHRocm93IG5ldyBUb29sa2l0RXJyb3IoXG4gICAgICAnQ2FuIG9ubHkgc2VsZWN0IG9uZSBzdGFjayB3aGVuIGNvbXBhcmluZyB0byBmaXhlZCB0ZW1wbGF0ZS4gVXNlIC0tZXhjbHVzaXZlbHkgdG8gYXZvaWQgc2VsZWN0aW5nIG11bHRpcGxlIHN0YWNrcy4nLFxuICAgICk7XG4gIH1cblxuICBpZiAoIShhd2FpdCBmcy5wYXRoRXhpc3RzKG1ldGhvZE9wdGlvbnMucGF0aCkpKSB7XG4gICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcihgVGhlcmUgaXMgbm8gZmlsZSBhdCAke21ldGhvZE9wdGlvbnMucGF0aH1gKTtcbiAgfVxuXG4gIGNvbnN0IGZpbGUgPSBmcy5yZWFkRmlsZVN5bmMobWV0aG9kT3B0aW9ucy5wYXRoKS50b1N0cmluZygpO1xuICBjb25zdCB0ZW1wbGF0ZSA9IGRlc2VyaWFsaXplU3RydWN0dXJlKGZpbGUpO1xuXG4gIHJldHVybiBbe1xuICAgIG9sZFRlbXBsYXRlOiB0ZW1wbGF0ZSxcbiAgICBuZXdUZW1wbGF0ZTogc3RhY2tzLmZpcnN0U3RhY2ssXG4gIH1dO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjZm5EaWZmKFxuICBpb0hlbHBlcjogSW9IZWxwZXIsXG4gIHN0YWNrczogU3RhY2tDb2xsZWN0aW9uLFxuICBkZXBsb3ltZW50czogRGVwbG95bWVudHMsXG4gIG9wdGlvbnM6IERpZmZPcHRpb25zLFxuICBzZGtQcm92aWRlcjogU2RrUHJvdmlkZXIsXG4gIGluY2x1ZGVDaGFuZ2VTZXQ6IGJvb2xlYW4sXG4pOiBQcm9taXNlPFRlbXBsYXRlSW5mb1tdPiB7XG4gIGNvbnN0IHRlbXBsYXRlSW5mb3MgPSBbXTtcbiAgY29uc3QgbWV0aG9kT3B0aW9ucyA9IChvcHRpb25zLm1ldGhvZD8ub3B0aW9ucyA/PyB7fSkgYXMgQ2hhbmdlU2V0RGlmZk9wdGlvbnM7XG5cbiAgLy8gQ29tcGFyZSBOIHN0YWNrcyBhZ2FpbnN0IGRlcGxveWVkIHRlbXBsYXRlc1xuICBmb3IgKGNvbnN0IHN0YWNrIG9mIHN0YWNrcy5zdGFja0FydGlmYWN0cykge1xuICAgIGNvbnN0IHRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrcyA9IGF3YWl0IGRlcGxveW1lbnRzLnJlYWRDdXJyZW50VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzKFxuICAgICAgc3RhY2ssXG4gICAgICBtZXRob2RPcHRpb25zLmNvbXBhcmVBZ2FpbnN0UHJvY2Vzc2VkVGVtcGxhdGUsXG4gICAgKTtcbiAgICBjb25zdCBjdXJyZW50VGVtcGxhdGUgPSB0ZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja3MuZGVwbG95ZWRSb290VGVtcGxhdGU7XG4gICAgY29uc3QgbmVzdGVkU3RhY2tzID0gdGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzLm5lc3RlZFN0YWNrcztcblxuICAgIGNvbnN0IG1pZ3JhdG9yID0gbmV3IFJlc291cmNlTWlncmF0b3IoeyBkZXBsb3ltZW50cywgaW9IZWxwZXIgfSk7XG4gICAgY29uc3QgcmVzb3VyY2VzVG9JbXBvcnQgPSBhd2FpdCBtaWdyYXRvci50cnlHZXRSZXNvdXJjZXMoYXdhaXQgZGVwbG95bWVudHMucmVzb2x2ZUVudmlyb25tZW50KHN0YWNrKSk7XG4gICAgaWYgKHJlc291cmNlc1RvSW1wb3J0KSB7XG4gICAgICByZW1vdmVOb25JbXBvcnRSZXNvdXJjZXMoc3RhY2spO1xuICAgIH1cblxuICAgIGNvbnN0IGNoYW5nZVNldCA9IGluY2x1ZGVDaGFuZ2VTZXQgPyBhd2FpdCBjaGFuZ2VTZXREaWZmKFxuICAgICAgaW9IZWxwZXIsXG4gICAgICBkZXBsb3ltZW50cyxcbiAgICAgIHN0YWNrLFxuICAgICAgc2RrUHJvdmlkZXIsXG4gICAgICByZXNvdXJjZXNUb0ltcG9ydCxcbiAgICAgIG1ldGhvZE9wdGlvbnMucGFyYW1ldGVycyxcbiAgICAgIG1ldGhvZE9wdGlvbnMuZmFsbGJhY2tUb1RlbXBsYXRlLFxuICAgICAgbWV0aG9kT3B0aW9ucy5pbXBvcnRFeGlzdGluZ1Jlc291cmNlcyxcbiAgICApIDogdW5kZWZpbmVkO1xuXG4gICAgdGVtcGxhdGVJbmZvcy5wdXNoKHtcbiAgICAgIG9sZFRlbXBsYXRlOiBjdXJyZW50VGVtcGxhdGUsXG4gICAgICBuZXdUZW1wbGF0ZTogc3RhY2ssXG4gICAgICBpc0ltcG9ydDogISFyZXNvdXJjZXNUb0ltcG9ydCxcbiAgICAgIG5lc3RlZFN0YWNrcyxcbiAgICAgIGNoYW5nZVNldCxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB0ZW1wbGF0ZUluZm9zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjaGFuZ2VTZXREaWZmKFxuICBpb0hlbHBlcjogSW9IZWxwZXIsXG4gIGRlcGxveW1lbnRzOiBEZXBsb3ltZW50cyxcbiAgc3RhY2s6IGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdCxcbiAgc2RrUHJvdmlkZXI6IFNka1Byb3ZpZGVyLFxuICByZXNvdXJjZXNUb0ltcG9ydD86IFJlc291cmNlc1RvSW1wb3J0LFxuICBwYXJhbWV0ZXJzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSA9IHt9LFxuICBmYWxsQmFja1RvVGVtcGxhdGU6IGJvb2xlYW4gPSB0cnVlLFxuICBpbXBvcnRFeGlzdGluZ1Jlc291cmNlczogYm9vbGVhbiA9IGZhbHNlLFxuKTogUHJvbWlzZTxhbnkgfCB1bmRlZmluZWQ+IHtcbiAgbGV0IHN0YWNrRXhpc3RzID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgc3RhY2tFeGlzdHMgPSBhd2FpdCBkZXBsb3ltZW50cy5zdGFja0V4aXN0cyh7XG4gICAgICBzdGFjayxcbiAgICAgIGRlcGxveU5hbWU6IHN0YWNrLnN0YWNrTmFtZSxcbiAgICAgIHRyeUxvb2t1cFJvbGU6IHRydWUsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIGlmICghZmFsbEJhY2tUb1RlbXBsYXRlKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGBkZXNjcmliZVN0YWNrcyBjYWxsIGZhaWxlZCB3aXRoICR7ZX0gZm9yICR7c3RhY2suc3RhY2tOYW1lfSwgc2V0IGZhbGxCYWNrVG9UZW1wbGF0ZSB0byB0cnVlIG9yIHVzZSBEaWZmTWV0aG9kLnRlbXBsYXRlT25seSB0byBiYXNlIHRoZSBkaWZmIG9uIHRlbXBsYXRlIGRpZmZlcmVuY2VzLmApO1xuICAgIH1cblxuICAgIGF3YWl0IGlvSGVscGVyLmRlZmF1bHRzLmRlYnVnKGBDaGVja2luZyBpZiB0aGUgc3RhY2sgJHtzdGFjay5zdGFja05hbWV9IGV4aXN0cyBiZWZvcmUgY3JlYXRpbmcgdGhlIGNoYW5nZXNldCBoYXMgZmFpbGVkLCB3aWxsIGJhc2UgdGhlIGRpZmYgb24gdGVtcGxhdGUgZGlmZmVyZW5jZXMuXFxuYCk7XG4gICAgYXdhaXQgaW9IZWxwZXIuZGVmYXVsdHMuZGVidWcoZm9ybWF0RXJyb3JNZXNzYWdlKGUpKTtcbiAgICBzdGFja0V4aXN0cyA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKHN0YWNrRXhpc3RzKSB7XG4gICAgcmV0dXJuIGNmbkFwaS5jcmVhdGVEaWZmQ2hhbmdlU2V0KGlvSGVscGVyLCB7XG4gICAgICBzdGFjayxcbiAgICAgIHV1aWQ6IHV1aWQudjQoKSxcbiAgICAgIGRlcGxveW1lbnRzLFxuICAgICAgd2lsbEV4ZWN1dGU6IGZhbHNlLFxuICAgICAgc2RrUHJvdmlkZXIsXG4gICAgICBwYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzLFxuICAgICAgcmVzb3VyY2VzVG9JbXBvcnQsXG4gICAgICBmYWlsT25FcnJvcjogIWZhbGxCYWNrVG9UZW1wbGF0ZSxcbiAgICAgIGltcG9ydEV4aXN0aW5nUmVzb3VyY2VzLFxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGlmICghZmFsbEJhY2tUb1RlbXBsYXRlKSB7XG4gICAgICB0aHJvdyBuZXcgVG9vbGtpdEVycm9yKGB0aGUgc3RhY2sgJyR7c3RhY2suc3RhY2tOYW1lfScgaGFzIG5vdCBiZWVuIGRlcGxveWVkIHRvIENsb3VkRm9ybWF0aW9uLCBzZXQgZmFsbEJhY2tUb1RlbXBsYXRlIHRvIHRydWUgb3IgdXNlIERpZmZNZXRob2QudGVtcGxhdGVPbmx5IHRvIGJhc2UgdGhlIGRpZmYgb24gdGVtcGxhdGUgZGlmZmVyZW5jZXMuYCk7XG4gICAgfVxuXG4gICAgYXdhaXQgaW9IZWxwZXIuZGVmYXVsdHMuZGVidWcoYHRoZSBzdGFjayAnJHtzdGFjay5zdGFja05hbWV9JyBoYXMgbm90IGJlZW4gZGVwbG95ZWQgdG8gQ2xvdWRGb3JtYXRpb24sIHNraXBwaW5nIGNoYW5nZXNldCBjcmVhdGlvbi5gKTtcbiAgICByZXR1cm47XG4gIH1cbn1cblxuLyoqXG4gKiBBcHBlbmRzIGFsbCBwcm9wZXJ0aWVzIGZyb20gb2JqMiB0byBvYmoxLlxuICogb2JqMiB2YWx1ZXMgdGFrZSBwcmlvcml0eSBpbiB0aGUgY2FzZSBvZiBjb2xsaXNpb25zLlxuICpcbiAqIEBwYXJhbSBvYmoxIC0gVGhlIG9iamVjdCB0byBtb2RpZnlcbiAqIEBwYXJhbSBvYmoyIC0gVGhlIG9iamVjdCB0byBjb25zdW1lXG4gKlxuICogQHJldHVybnMgb2JqMSB3aXRoIGFsbCBwcm9wZXJ0aWVzIGZyb20gb2JqMlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kT2JqZWN0PFQ+KFxuICBvYmoxOiB7IFtuYW1lOiBzdHJpbmddOiBUIH0sXG4gIG9iajI6IHsgW25hbWU6IHN0cmluZ106IFQgfSxcbik6IHsgW25hbWU6IHN0cmluZ106IFQgfSB7XG4gIC8vIERpcmVjdGx5IG1vZGlmeSBvYmoxIGJ5IGFkZGluZyBhbGwgcHJvcGVydGllcyBmcm9tIG9iajJcbiAgZm9yIChjb25zdCBrZXkgaW4gb2JqMikge1xuICAgIG9iajFba2V5XSA9IG9iajJba2V5XTtcbiAgfVxuXG4gIC8vIFJldHVybiB0aGUgbW9kaWZpZWQgb2JqMVxuICByZXR1cm4gb2JqMTtcbn1cbiJdfQ==
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { StackSelector } from '../../api/cloud-assembly';
|
|
2
2
|
export interface DriftOptions {
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Select stacks to check for drift
|
|
5
|
+
*
|
|
6
|
+
* @default - all stacks
|
|
5
7
|
*/
|
|
6
|
-
readonly stacks
|
|
8
|
+
readonly stacks?: StackSelector;
|
|
7
9
|
}
|
|
8
10
|
/**
|
|
9
11
|
* The different types of drift as formatted drift output
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdGFja1NlbGVjdG9yIH0gZnJvbSAnLi4vLi4vYXBpL2Nsb3VkLWFzc2VtYmx5JztcblxuZXhwb3J0IGludGVyZmFjZSBEcmlmdE9wdGlvbnMge1xuICAvKipcbiAgICogU2VsZWN0IHN0YWNrcyB0byBjaGVjayBmb3IgZHJpZnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBhbGwgc3RhY2tzXG4gICAqL1xuICByZWFkb25seSBzdGFja3M/OiBTdGFja1NlbGVjdG9yO1xufVxuXG4vKipcbiAqIFRoZSBkaWZmZXJlbnQgdHlwZXMgb2YgZHJpZnQgYXMgZm9ybWF0dGVkIGRyaWZ0IG91dHB1dFxuICpcbiAqIEEgbWlzc2luZyB0eXBlIGltcGxpZXMgbm8gZHJpZnQgb2YgdGhpcyB0eXBlLlxuICogSWYgbm8gZHJpZnQgd2FzIGRldGVjdGVkIGF0IGFsbCwgYWxsIHdpbGwgYmUgbWlzc2luZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3JtYXR0ZWREcmlmdCB7XG4gIC8qKlxuICAgKiBSZXNvdXJjZXMgdGhhdCBoYXZlIG5vdCBjaGFuZ2VkXG4gICAqL1xuICByZWFkb25seSB1bmNoYW5nZWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlc291cmNlcyB0aGF0IHdlcmUgbm90IGNoZWNrZWQgZm9yIGRyaWZ0XG4gICAqL1xuICByZWFkb25seSB1bmNoZWNrZWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlc291cmNlcyB3aXRoIGRyaWZ0XG4gICAqL1xuICByZWFkb25seSBtb2RpZmllZD86IHN0cmluZztcblxuICAvKipcbiAgICogUmVzb3VyY2VzIHRoYXQgaGF2ZSBiZWVuIGRlbGV0ZWQgKGRyaWZ0KVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb21iaW5lZCBkcmlmdCBmb3Igc2VsZWN0ZWQgc3RhY2tzIG9mIHRoZSBhcHBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEcmlmdFJlc3VsdCB7XG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgcmVzb3VyY2VzIHdpdGggZHJpZnQuIElmIHVuZGVmaW5lZCwgdGhlbiBhbiBlcnJvciBvY2N1cnJlZFxuICAgKiBhbmQgcmVzb3VyY2VzIHdlcmUgbm90IHByb3Blcmx5IGNoZWNrZWQgZm9yIGRyaWZ0LlxuICAgKi9cbiAgcmVhZG9ubHkgbnVtUmVzb3VyY2VzV2l0aERyaWZ0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEhvdyBtYW55IHJlc291cmNlcyB3ZXJlIG5vdCBjaGVja2VkIGZvciBkcmlmdC4gSWYgdW5kZWZpbmVkLCB0aGVuIGFuXG4gICAqIGVycm9yIG9jY3VycmVkIGFuZCByZXNvdXJjZXMgd2VyZSBub3QgcHJvcGVybHkgY2hlY2tlZCBmb3IgZHJpZnQuXG4gICAqL1xuICByZWFkb25seSBudW1SZXNvdXJjZXNVbmNoZWNrZWQ6IG51bWJlcjtcblxuICAvKipcbiAgICogQ29tcGxldGUgZm9ybWF0dGVkIGRyaWZ0XG4gICAqL1xuICByZWFkb25seSBmb3JtYXR0ZWREcmlmdDogRm9ybWF0dGVkRHJpZnQ7XG59XG4iXX0=
|
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
import type { StackSelector } from '../../api/cloud-assembly';
|
|
2
|
+
/**
|
|
3
|
+
* The source of the resource mappings to be used for refactoring.
|
|
4
|
+
*/
|
|
5
|
+
export declare class MappingSource {
|
|
6
|
+
/**
|
|
7
|
+
* The mapping will be automatically generated based on a comparison of
|
|
8
|
+
* the deployed stacks and the local stacks.
|
|
9
|
+
*
|
|
10
|
+
* @param exclude - A list of resource locations to exclude from the mapping.
|
|
11
|
+
*/
|
|
12
|
+
static auto(exclude?: string[]): MappingSource;
|
|
13
|
+
/**
|
|
14
|
+
* An explicitly provided list of mappings, which will be used for refactoring.
|
|
15
|
+
*/
|
|
16
|
+
static explicit(groups: MappingGroup[]): MappingSource;
|
|
17
|
+
/**
|
|
18
|
+
* An explicitly provided list of mappings, which will be used for refactoring,
|
|
19
|
+
* but in reverse, that is, the source locations will become the destination
|
|
20
|
+
* locations and vice versa.
|
|
21
|
+
*/
|
|
22
|
+
static reverse(groups: MappingGroup[]): MappingSource;
|
|
23
|
+
private constructor();
|
|
24
|
+
}
|
|
2
25
|
export interface RefactorOptions {
|
|
3
26
|
/**
|
|
4
27
|
* Whether to only show the proposed refactor, without applying it
|
|
@@ -13,28 +36,9 @@ export interface RefactorOptions {
|
|
|
13
36
|
*/
|
|
14
37
|
stacks?: StackSelector;
|
|
15
38
|
/**
|
|
16
|
-
*
|
|
17
|
-
* Elements of this list must be the _destination_ locations
|
|
18
|
-
* that should be excluded, i.e., the location to which a
|
|
19
|
-
* resource would be moved if the refactor were to happen.
|
|
20
|
-
*
|
|
21
|
-
* The format of the locations in the file can be either:
|
|
22
|
-
*
|
|
23
|
-
* - Stack name and logical ID (e.g. `Stack1.MyQueue`)
|
|
24
|
-
* - A construct path (e.g. `Stack1/Foo/Bar/Resource`).
|
|
25
|
-
*/
|
|
26
|
-
exclude?: string[];
|
|
27
|
-
/**
|
|
28
|
-
* An explicit mapping to be used by the toolkit (as opposed to letting the
|
|
29
|
-
* toolkit itself compute the mapping).
|
|
30
|
-
*/
|
|
31
|
-
mappings?: MappingGroup[];
|
|
32
|
-
/**
|
|
33
|
-
* Modifies the behavior of the 'mappings' option by swapping source and
|
|
34
|
-
* destination locations. This is useful when you want to undo a refactor
|
|
35
|
-
* that was previously applied.
|
|
39
|
+
* How the toolkit should obtain the mappings
|
|
36
40
|
*/
|
|
37
|
-
|
|
41
|
+
mappingSource?: MappingSource;
|
|
38
42
|
}
|
|
39
43
|
export interface MappingGroup {
|
|
40
44
|
/**
|
|
@@ -1,3 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
3
|
+
exports.MappingSource = void 0;
|
|
4
|
+
const refactoring_1 = require("../../api/refactoring");
|
|
5
|
+
/**
|
|
6
|
+
* The source of the resource mappings to be used for refactoring.
|
|
7
|
+
*/
|
|
8
|
+
class MappingSource {
|
|
9
|
+
/**
|
|
10
|
+
* The mapping will be automatically generated based on a comparison of
|
|
11
|
+
* the deployed stacks and the local stacks.
|
|
12
|
+
*
|
|
13
|
+
* @param exclude - A list of resource locations to exclude from the mapping.
|
|
14
|
+
*/
|
|
15
|
+
static auto(exclude = []) {
|
|
16
|
+
const excludeList = new refactoring_1.InMemoryExcludeList(exclude);
|
|
17
|
+
return new MappingSource('auto', [], excludeList);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* An explicitly provided list of mappings, which will be used for refactoring.
|
|
21
|
+
*/
|
|
22
|
+
static explicit(groups) {
|
|
23
|
+
return new MappingSource('explicit', groups, new refactoring_1.NeverExclude());
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* An explicitly provided list of mappings, which will be used for refactoring,
|
|
27
|
+
* but in reverse, that is, the source locations will become the destination
|
|
28
|
+
* locations and vice versa.
|
|
29
|
+
*/
|
|
30
|
+
static reverse(groups) {
|
|
31
|
+
const reverseGroups = groups.map((group) => ({
|
|
32
|
+
...group,
|
|
33
|
+
resources: Object.fromEntries(Object.entries(group.resources).map(([src, dst]) => [dst, src])),
|
|
34
|
+
}));
|
|
35
|
+
return MappingSource.explicit(reverseGroups);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @internal
|
|
39
|
+
*/
|
|
40
|
+
source;
|
|
41
|
+
/**
|
|
42
|
+
* @internal
|
|
43
|
+
*/
|
|
44
|
+
groups;
|
|
45
|
+
/**
|
|
46
|
+
* @internal
|
|
47
|
+
*/
|
|
48
|
+
exclude;
|
|
49
|
+
constructor(source, groups, exclude) {
|
|
50
|
+
this.source = source;
|
|
51
|
+
this.groups = groups;
|
|
52
|
+
this.exclude = exclude;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.MappingSource = MappingSource;
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSx1REFBMEU7QUFJMUU7O0dBRUc7QUFDSCxNQUFhLGFBQWE7SUFDeEI7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQW9CLEVBQUU7UUFDdkMsTUFBTSxXQUFXLEdBQUcsSUFBSSxpQ0FBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyRCxPQUFPLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFzQjtRQUMzQyxPQUFPLElBQUksYUFBYSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsSUFBSSwwQkFBWSxFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBc0I7UUFDMUMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzQyxHQUFHLEtBQUs7WUFDUixTQUFTLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMvRixDQUFDLENBQUMsQ0FBQztRQUVKLE9BQU8sYUFBYSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDYSxNQUFNLENBQWM7SUFFcEM7O09BRUc7SUFDYSxNQUFNLENBQWlCO0lBRXZDOztPQUVHO0lBQ2EsT0FBTyxDQUFjO0lBRXJDLFlBQW9CLE1BQW1CLEVBQUUsTUFBc0IsRUFBRSxPQUFvQjtRQUNuRixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0NBQ0Y7QUFyREQsc0NBcURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTdGFja1NlbGVjdG9yIH0gZnJvbSAnLi4vLi4vYXBpL2Nsb3VkLWFzc2VtYmx5JztcbmltcG9ydCB0eXBlIHsgRXhjbHVkZUxpc3QgfSBmcm9tICcuLi8uLi9hcGkvcmVmYWN0b3JpbmcnO1xuaW1wb3J0IHsgSW5NZW1vcnlFeGNsdWRlTGlzdCwgTmV2ZXJFeGNsdWRlIH0gZnJvbSAnLi4vLi4vYXBpL3JlZmFjdG9yaW5nJztcblxudHlwZSBNYXBwaW5nVHlwZSA9ICdhdXRvJyB8ICdleHBsaWNpdCc7XG5cbi8qKlxuICogVGhlIHNvdXJjZSBvZiB0aGUgcmVzb3VyY2UgbWFwcGluZ3MgdG8gYmUgdXNlZCBmb3IgcmVmYWN0b3JpbmcuXG4gKi9cbmV4cG9ydCBjbGFzcyBNYXBwaW5nU291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBtYXBwaW5nIHdpbGwgYmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYmFzZWQgb24gYSBjb21wYXJpc29uIG9mXG4gICAqIHRoZSBkZXBsb3llZCBzdGFja3MgYW5kIHRoZSBsb2NhbCBzdGFja3MuXG4gICAqXG4gICAqIEBwYXJhbSBleGNsdWRlIC0gQSBsaXN0IG9mIHJlc291cmNlIGxvY2F0aW9ucyB0byBleGNsdWRlIGZyb20gdGhlIG1hcHBpbmcuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGF1dG8oZXhjbHVkZTogc3RyaW5nW10gPSBbXSk6IE1hcHBpbmdTb3VyY2Uge1xuICAgIGNvbnN0IGV4Y2x1ZGVMaXN0ID0gbmV3IEluTWVtb3J5RXhjbHVkZUxpc3QoZXhjbHVkZSk7XG4gICAgcmV0dXJuIG5ldyBNYXBwaW5nU291cmNlKCdhdXRvJywgW10sIGV4Y2x1ZGVMaXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBleHBsaWNpdGx5IHByb3ZpZGVkIGxpc3Qgb2YgbWFwcGluZ3MsIHdoaWNoIHdpbGwgYmUgdXNlZCBmb3IgcmVmYWN0b3JpbmcuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGV4cGxpY2l0KGdyb3VwczogTWFwcGluZ0dyb3VwW10pOiBNYXBwaW5nU291cmNlIHtcbiAgICByZXR1cm4gbmV3IE1hcHBpbmdTb3VyY2UoJ2V4cGxpY2l0JywgZ3JvdXBzLCBuZXcgTmV2ZXJFeGNsdWRlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuIGV4cGxpY2l0bHkgcHJvdmlkZWQgbGlzdCBvZiBtYXBwaW5ncywgd2hpY2ggd2lsbCBiZSB1c2VkIGZvciByZWZhY3RvcmluZyxcbiAgICogYnV0IGluIHJldmVyc2UsIHRoYXQgaXMsIHRoZSBzb3VyY2UgbG9jYXRpb25zIHdpbGwgYmVjb21lIHRoZSBkZXN0aW5hdGlvblxuICAgKiBsb2NhdGlvbnMgYW5kIHZpY2UgdmVyc2EuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJldmVyc2UoZ3JvdXBzOiBNYXBwaW5nR3JvdXBbXSk6IE1hcHBpbmdTb3VyY2Uge1xuICAgIGNvbnN0IHJldmVyc2VHcm91cHMgPSBncm91cHMubWFwKChncm91cCkgPT4gKHtcbiAgICAgIC4uLmdyb3VwLFxuICAgICAgcmVzb3VyY2VzOiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmVudHJpZXMoZ3JvdXAucmVzb3VyY2VzKS5tYXAoKFtzcmMsIGRzdF0pID0+IFtkc3QsIHNyY10pKSxcbiAgICB9KSk7XG5cbiAgICByZXR1cm4gTWFwcGluZ1NvdXJjZS5leHBsaWNpdChyZXZlcnNlR3JvdXBzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzb3VyY2U6IE1hcHBpbmdUeXBlO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBncm91cHM6IE1hcHBpbmdHcm91cFtdO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBleGNsdWRlOiBFeGNsdWRlTGlzdDtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHNvdXJjZTogTWFwcGluZ1R5cGUsIGdyb3VwczogTWFwcGluZ0dyb3VwW10sIGV4Y2x1ZGU6IEV4Y2x1ZGVMaXN0KSB7XG4gICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7XG4gICAgdGhpcy5ncm91cHMgPSBncm91cHM7XG4gICAgdGhpcy5leGNsdWRlID0gZXhjbHVkZTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZmFjdG9yT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIG9ubHkgc2hvdyB0aGUgcHJvcG9zZWQgcmVmYWN0b3IsIHdpdGhvdXQgYXBwbHlpbmcgaXRcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENyaXRlcmlhIGZvciBzZWxlY3Rpbmcgc3RhY2tzIHRvIGRlcGxveVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFsbCBzdGFja3NcbiAgICovXG4gIHN0YWNrcz86IFN0YWNrU2VsZWN0b3I7XG5cbiAgLyoqXG4gICAqIEhvdyB0aGUgdG9vbGtpdCBzaG91bGQgb2J0YWluIHRoZSBtYXBwaW5nc1xuICAgKi9cbiAgbWFwcGluZ1NvdXJjZT86IE1hcHBpbmdTb3VyY2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwcGluZ0dyb3VwIHtcbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50IElEIG9mIHRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCB0aGUgbWFwcGluZyBpcyB2YWxpZC5cbiAgICovXG4gIGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlZ2lvbiBvZiB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhlIG1hcHBpbmcgaXMgdmFsaWQuXG4gICAqL1xuICByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogQSBjb2xsZWN0aW9uIG9mIHJlc291cmNlIG1hcHBpbmdzLCB3aGVyZSBlYWNoIGtleSBpcyB0aGUgc291cmNlIGxvY2F0aW9uXG4gICAqIGFuZCB0aGUgdmFsdWUgaXMgdGhlIGRlc3RpbmF0aW9uIGxvY2F0aW9uLiBMb2NhdGlvbnMgbXVzdCBiZSBpbiB0aGUgZm9ybWF0XG4gICAqIGBTdGFja05hbWUuTG9naWNhbElkYC4gVGhlIHNvdXJjZSBtdXN0IHJlZmVyIHRvIGEgbG9jYXRpb24gd2hlcmUgdGhlcmUgaXNcbiAgICogYSByZXNvdXJjZSBjdXJyZW50bHkgZGVwbG95ZWQsIHdoaWxlIHRoZSBkZXN0aW5hdGlvbiBtdXN0IHJlZmVyIHRvIGFcbiAgICogbG9jYXRpb24gdGhhdCBpcyBub3QgYWxyZWFkeSBvY2N1cGllZCBieSBhbnkgcmVzb3VyY2UuXG4gICAqXG4gICAqL1xuICByZXNvdXJjZXM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG59XG4iXX0=
|
|
@@ -3,19 +3,22 @@ export interface WatchOptions extends BaseDeployOptions {
|
|
|
3
3
|
/**
|
|
4
4
|
* Watch the files in this list
|
|
5
5
|
*
|
|
6
|
-
* @default -
|
|
6
|
+
* @default - all files in the watchDir
|
|
7
7
|
*/
|
|
8
8
|
readonly include?: string[];
|
|
9
9
|
/**
|
|
10
10
|
* Ignore watching the files in this list
|
|
11
11
|
*
|
|
12
|
-
*
|
|
12
|
+
* Hidden files (those whose names begin with a dot `.`) are always excluded,
|
|
13
|
+
* irrespectively of this option.
|
|
14
|
+
*
|
|
15
|
+
* @default - default patterns excluding likely irrelevant files for all CDK supported programming languages, this list will change over time
|
|
13
16
|
*/
|
|
14
17
|
readonly exclude?: string[];
|
|
15
18
|
/**
|
|
16
19
|
* The root directory used for watch.
|
|
17
20
|
*
|
|
18
|
-
* @default
|
|
21
|
+
* @default - the current working directory
|
|
19
22
|
*/
|
|
20
23
|
readonly watchDir?: string;
|
|
21
24
|
/**
|
|
@@ -25,3 +28,23 @@ export interface WatchOptions extends BaseDeployOptions {
|
|
|
25
28
|
*/
|
|
26
29
|
readonly deploymentMethod?: DeploymentMethod;
|
|
27
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* The result of a `cdk.watch()` operation.
|
|
33
|
+
*/
|
|
34
|
+
export interface IWatcher extends AsyncDisposable {
|
|
35
|
+
/**
|
|
36
|
+
* Stop the watcher and wait for the current watch iteration to complete.
|
|
37
|
+
*
|
|
38
|
+
* An alias for `[Symbol.asyncDispose]`, as a more readable alternative for
|
|
39
|
+
* environments that don't support the Disposable APIs yet.
|
|
40
|
+
*/
|
|
41
|
+
dispose(): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Wait for the watcher to stop.
|
|
44
|
+
*
|
|
45
|
+
* The watcher will only stop if `dispose()` or `[Symbol.asyncDispose]()` are called.
|
|
46
|
+
*
|
|
47
|
+
* If neither of those is called, awaiting this promise will wait forever.
|
|
48
|
+
*/
|
|
49
|
+
waitForEnd(): Promise<void>;
|
|
50
|
+
}
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBEZXBsb3ltZW50TWV0aG9kLCBCYXNlRGVwbG95T3B0aW9ucyB9IGZyb20gJy4uL2RlcGxveSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2F0Y2hPcHRpb25zIGV4dGVuZHMgQmFzZURlcGxveU9wdGlvbnMge1xuICAvKipcbiAgICogV2F0Y2ggdGhlIGZpbGVzIGluIHRoaXMgbGlzdFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGFsbCBmaWxlcyBpbiB0aGUgd2F0Y2hEaXJcbiAgICovXG4gIHJlYWRvbmx5IGluY2x1ZGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWdub3JlIHdhdGNoaW5nIHRoZSBmaWxlcyBpbiB0aGlzIGxpc3RcbiAgICpcbiAgICogSGlkZGVuIGZpbGVzICh0aG9zZSB3aG9zZSBuYW1lcyBiZWdpbiB3aXRoIGEgZG90IGAuYCkgYXJlIGFsd2F5cyBleGNsdWRlZCxcbiAgICogaXJyZXNwZWN0aXZlbHkgb2YgdGhpcyBvcHRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBwYXR0ZXJucyBleGNsdWRpbmcgbGlrZWx5IGlycmVsZXZhbnQgZmlsZXMgZm9yIGFsbCBDREsgc3VwcG9ydGVkIHByb2dyYW1taW5nIGxhbmd1YWdlcywgdGhpcyBsaXN0IHdpbGwgY2hhbmdlIG92ZXIgdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgZXhjbHVkZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgcm9vdCBkaXJlY3RvcnkgdXNlZCBmb3Igd2F0Y2guXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnlcbiAgICovXG4gIHJlYWRvbmx5IHdhdGNoRGlyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXBsb3ltZW50IG1ldGhvZFxuICAgKlxuICAgKiBAZGVmYXVsdCBIb3Rzd2FwRGVwbG95bWVudFxuICAgKi9cbiAgcmVhZG9ubHkgZGVwbG95bWVudE1ldGhvZD86IERlcGxveW1lbnRNZXRob2Q7XG59XG5cbi8qKlxuICogVGhlIHJlc3VsdCBvZiBhIGBjZGsud2F0Y2goKWAgb3BlcmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElXYXRjaGVyIGV4dGVuZHMgQXN5bmNEaXNwb3NhYmxlIHtcbiAgLyoqXG4gICAqIFN0b3AgdGhlIHdhdGNoZXIgYW5kIHdhaXQgZm9yIHRoZSBjdXJyZW50IHdhdGNoIGl0ZXJhdGlvbiB0byBjb21wbGV0ZS5cbiAgICpcbiAgICogQW4gYWxpYXMgZm9yIGBbU3ltYm9sLmFzeW5jRGlzcG9zZV1gLCBhcyBhIG1vcmUgcmVhZGFibGUgYWx0ZXJuYXRpdmUgZm9yXG4gICAqIGVudmlyb25tZW50cyB0aGF0IGRvbid0IHN1cHBvcnQgdGhlIERpc3Bvc2FibGUgQVBJcyB5ZXQuXG4gICAqL1xuICBkaXNwb3NlKCk6IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIFdhaXQgZm9yIHRoZSB3YXRjaGVyIHRvIHN0b3AuXG4gICAqXG4gICAqIFRoZSB3YXRjaGVyIHdpbGwgb25seSBzdG9wIGlmIGBkaXNwb3NlKClgIG9yIGBbU3ltYm9sLmFzeW5jRGlzcG9zZV0oKWAgYXJlIGNhbGxlZC5cbiAgICpcbiAgICogSWYgbmVpdGhlciBvZiB0aG9zZSBpcyBjYWxsZWQsIGF3YWl0aW5nIHRoaXMgcHJvbWlzZSB3aWxsIHdhaXQgZm9yZXZlci5cbiAgICovXG4gIHdhaXRGb3JFbmQoKTogUHJvbWlzZTx2b2lkPjtcbn1cbiJdfQ==
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/**
|
|
2
|
+
* A list of generic files that normally don't need to be watched.
|
|
3
|
+
* This list is agnostic to the used programming language and should only match files
|
|
4
|
+
* that are unlikely to be valid files in any of the supported languages.
|
|
5
|
+
*/
|
|
6
|
+
export declare const WATCH_EXCLUDE_DEFAULTS: string[];
|
|
@@ -1,8 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
exports.WATCH_EXCLUDE_DEFAULTS = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* A list of generic files that normally don't need to be watched.
|
|
6
|
+
* This list is agnostic to the used programming language and should only match files
|
|
7
|
+
* that are unlikely to be valid files in any of the supported languages.
|
|
8
|
+
*/
|
|
9
|
+
exports.WATCH_EXCLUDE_DEFAULTS = [
|
|
10
|
+
// CDK
|
|
11
|
+
'README.md',
|
|
12
|
+
'cdk*.json',
|
|
13
|
+
// JS
|
|
14
|
+
'package*.json',
|
|
15
|
+
'yarn.lock',
|
|
16
|
+
'pnpm-lock.yaml',
|
|
17
|
+
'bun.lockb',
|
|
18
|
+
'bun.lock',
|
|
19
|
+
'deno.lock',
|
|
20
|
+
// TS
|
|
21
|
+
'tsconfig*.json',
|
|
22
|
+
'**/*.d.ts',
|
|
23
|
+
'test',
|
|
24
|
+
// Python
|
|
25
|
+
'requirements*.txt',
|
|
26
|
+
'source.bat',
|
|
27
|
+
'**/__init__.py',
|
|
28
|
+
'**/__pycache__',
|
|
29
|
+
'tests',
|
|
30
|
+
// C# & F#
|
|
31
|
+
'**/*.sln',
|
|
32
|
+
'**/*.csproj',
|
|
33
|
+
'**/*.fsproj',
|
|
34
|
+
// Go
|
|
35
|
+
'go.mod',
|
|
36
|
+
'go.sum',
|
|
37
|
+
'**/*test.go',
|
|
38
|
+
];
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7R0FJRztBQUNVLFFBQUEsc0JBQXNCLEdBQUc7SUFDcEMsTUFBTTtJQUNOLFdBQVc7SUFDWCxXQUFXO0lBQ1gsS0FBSztJQUNMLGVBQWU7SUFDZixXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLFdBQVc7SUFDWCxVQUFVO0lBQ1YsV0FBVztJQUNYLEtBQUs7SUFDTCxnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLE1BQU07SUFDTixTQUFTO0lBQ1QsbUJBQW1CO0lBQ25CLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLE9BQU87SUFDUCxVQUFVO0lBQ1YsVUFBVTtJQUNWLGFBQWE7SUFDYixhQUFhO0lBQ2IsS0FBSztJQUNMLFFBQVE7SUFDUixRQUFRO0lBQ1IsYUFBYTtDQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgbGlzdCBvZiBnZW5lcmljIGZpbGVzIHRoYXQgbm9ybWFsbHkgZG9uJ3QgbmVlZCB0byBiZSB3YXRjaGVkLlxuICogVGhpcyBsaXN0IGlzIGFnbm9zdGljIHRvIHRoZSB1c2VkIHByb2dyYW1taW5nIGxhbmd1YWdlIGFuZCBzaG91bGQgb25seSBtYXRjaCBmaWxlc1xuICogdGhhdCBhcmUgdW5saWtlbHkgdG8gYmUgdmFsaWQgZmlsZXMgaW4gYW55IG9mIHRoZSBzdXBwb3J0ZWQgbGFuZ3VhZ2VzLlxuICovXG5leHBvcnQgY29uc3QgV0FUQ0hfRVhDTFVERV9ERUZBVUxUUyA9IFtcbiAgLy8gQ0RLXG4gICdSRUFETUUubWQnLFxuICAnY2RrKi5qc29uJyxcbiAgLy8gSlNcbiAgJ3BhY2thZ2UqLmpzb24nLFxuICAneWFybi5sb2NrJyxcbiAgJ3BucG0tbG9jay55YW1sJyxcbiAgJ2J1bi5sb2NrYicsXG4gICdidW4ubG9jaycsXG4gICdkZW5vLmxvY2snLFxuICAvLyBUU1xuICAndHNjb25maWcqLmpzb24nLFxuICAnKiovKi5kLnRzJyxcbiAgJ3Rlc3QnLFxuICAvLyBQeXRob25cbiAgJ3JlcXVpcmVtZW50cyoudHh0JyxcbiAgJ3NvdXJjZS5iYXQnLFxuICAnKiovX19pbml0X18ucHknLFxuICAnKiovX19weWNhY2hlX18nLFxuICAndGVzdHMnLFxuICAvLyBDIyAmIEYjXG4gICcqKi8qLnNsbicsXG4gICcqKi8qLmNzcHJvaicsXG4gICcqKi8qLmZzcHJvaicsXG4gIC8vIEdvXG4gICdnby5tb2QnLFxuICAnZ28uc3VtJyxcbiAgJyoqLyp0ZXN0LmdvJyxcbl07XG4iXX0=
|
|
@@ -17,7 +17,7 @@ export declare class AccountAccessKeyCache {
|
|
|
17
17
|
private readonly cacheFile;
|
|
18
18
|
private readonly debug;
|
|
19
19
|
/**
|
|
20
|
-
* @param filePath Path to the cache file
|
|
20
|
+
* @param filePath - Path to the cache file
|
|
21
21
|
*/
|
|
22
22
|
constructor(filePath: string | undefined, debugFn: (msg: string) => Promise<void>);
|
|
23
23
|
/**
|