@ashishpandeyone/cdk-lambda-web-function 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +132 -95
- package/.jsii.tabl.json +1 -1
- package/API.md +38 -0
- package/README.md +36 -2
- package/lib/nodejs-web-function.d.ts +5 -0
- package/lib/nodejs-web-function.js +9 -2
- package/lib/private/code-bucket.js +3 -1
- package/lib/private/nag.d.ts +19 -0
- package/lib/private/nag.js +139 -0
- package/lib/private/property-injection.d.ts +6 -0
- package/lib/private/property-injection.js +19 -0
- package/lib/private/traffic-shift.js +10 -6
- package/lib/web-function-deployment.js +1 -1
- package/lib/web-function-endpoint.js +1 -1
- package/lib/web-function-grants.js +1 -1
- package/lib/web-function-origin.js +1 -1
- package/lib/web-function-revision.js +1 -1
- package/lib/web-function.d.ts +11 -0
- package/lib/web-function.js +37 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -276,8 +276,27 @@ table.grantReadWriteData(api); // the default role trusts lambda.amazo
|
|
|
276
276
|
- **Each execution environment has 2 vCPUs and 2 GB of memory.** There's no memory setting as on Lambda functions; scale with `maxConcurrencyPerEnvironment` and more environments instead.
|
|
277
277
|
- Requests handled by one environment share module-level state, so keep handlers concurrency-safe.
|
|
278
278
|
- Environment variable names starting with `AWS_` are reserved.
|
|
279
|
+
- **The default execution role can only write to the function's own log groups**: the home region's, and the `.local` copy in every region it serves from. That's the minimum AWS documents for Web Functions. It doesn't use `AWSLambdaBasicExecutionRole`, which can also create any log group. Pass `role` to use your own, and include those log permissions.
|
|
279
280
|
- **Renaming the function replaces it and changes its URL.** A generated name depends on the construct path, so moving the construct renames it too.
|
|
280
281
|
|
|
282
|
+
### Defaults for every function (property injection)
|
|
283
|
+
|
|
284
|
+
To give every function under a scope the same defaults, register a property injector for `WebFunction.PROPERTY_INJECTION_ID`, as you would for aws-cdk-lib's constructs. For example, a team's log retention:
|
|
285
|
+
|
|
286
|
+
```ts
|
|
287
|
+
class TeamDefaults implements IPropertyInjector {
|
|
288
|
+
public readonly constructUniqueId = WebFunction.PROPERTY_INJECTION_ID;
|
|
289
|
+
public inject(originalProps: WebFunctionProps): WebFunctionProps {
|
|
290
|
+
// The team's defaults, with explicit props winning.
|
|
291
|
+
return Object.assign({ logRetention: logs.RetentionDays.ONE_MONTH }, originalProps);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
PropertyInjectors.of(this).add(new TeamDefaults()); // or on the app, for every stack
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
- An injector applies to functions created under the scope it's added to. The nearest one wins.
|
|
298
|
+
- `NodejsWebFunction` has its own ID (`NodejsWebFunction.PROPERTY_INJECTION_ID`). Its injector runs first, then `WebFunction`'s, as with aws-cdk-lib's `NodejsFunction` and `Function`.
|
|
299
|
+
|
|
281
300
|
### Bundling TypeScript with `NodejsWebFunction`
|
|
282
301
|
|
|
283
302
|
`NodejsWebFunction` is a `WebFunction` that bundles your server from a TypeScript or JavaScript entry file with esbuild, like `NodejsFunction` does for Lambda functions:
|
|
@@ -463,11 +482,26 @@ new WebFunction(this, 'Api', {
|
|
|
463
482
|
- With `DESTROY`, deletion waits about a minute after the function is gone, because environments flush their last lines late.
|
|
464
483
|
- Subscribe only to `fn.logGroup`: subscribing to the `.local` groups as well delivers every event twice.
|
|
465
484
|
|
|
485
|
+
## cdk-nag
|
|
486
|
+
|
|
487
|
+
The library acknowledges the [cdk-nag](https://github.com/cdklabs/cdk-nag) AwsSolutions findings on the resources it creates, each with a reason, so they don't show up in your reports:
|
|
488
|
+
|
|
489
|
+
| Finding | Resource | Reason |
|
|
490
|
+
|---|---|---|
|
|
491
|
+
| IAM5 (wildcards) | the default execution role | log streams of the function's own log groups, in every region it serves from |
|
|
492
|
+
| IAM5 | the deployment handlers' role (canary and linear deployments) | their own log group, `cloudwatch:DescribeAlarms` (composite alarms need `*`), and the revisions and endpoints of the functions they deploy |
|
|
493
|
+
| IAM4, IAM5, SF1, SF2 | the CDK Provider framework behind deployments | CDK's own functions and waiter state machine |
|
|
494
|
+
| S1 (access logs) | the stack's code bucket | it only holds copies of the stack's code assets |
|
|
495
|
+
|
|
496
|
+
- **This works with both cdk-nag versions**, without depending on cdk-nag. cdk-nag 3 reads CDK's `Validations.of(...).acknowledge()`, one ID per finding. cdk-nag 2 reads `cdk_nag` metadata in the template.
|
|
497
|
+
- **Your own statements and resources are still checked.** That includes statements you add to the function's role (`addToRolePolicy`, grants) and your CloudFront distribution's settings.
|
|
498
|
+
- Only the AwsSolutions pack is covered; findings from the HIPAA, NIST and PCI packs aren't acknowledged.
|
|
499
|
+
|
|
466
500
|
## Upgrading
|
|
467
501
|
|
|
468
|
-
### From 0.1.5
|
|
502
|
+
### From 0.1.5 to 0.1.7, with a resource policy
|
|
469
503
|
|
|
470
|
-
Versions 0.1.5
|
|
504
|
+
Versions 0.1.5 to 0.1.7 wrote the function's resource policy with an `AWS::Lambda::ResourcePolicy`. Later versions don't (0.1.7 has the same code as 0.1.6). When an update removes that resource, CloudFormation deletes the function's **whole** resource policy at the end of the update, including the statements the new version just wrote. Callers that rely on the policy then get 403: other accounts, AWS services, and CloudFront.
|
|
471
505
|
|
|
472
506
|
If your function has a resource policy (from `addPermission`, a grant to another account or an AWS service, or `WebFunctionOrigin`), first deploy once on the version you have, with the old resource retained:
|
|
473
507
|
|
|
@@ -149,5 +149,10 @@ export interface NodejsWebFunctionProps extends WebFunctionOptions {
|
|
|
149
149
|
* bundle, and `NODE_OPTIONS=--enable-source-maps` when source maps are on.
|
|
150
150
|
*/
|
|
151
151
|
export declare class NodejsWebFunction extends WebFunction {
|
|
152
|
+
/**
|
|
153
|
+
* Identifies this class to property injectors (`PropertyInjectors.of(scope).add(...)`). A `NodejsWebFunction` gets
|
|
154
|
+
* its own injector first, then `WebFunction`'s, as aws-cdk-lib's `NodejsFunction` does with `Function`'s.
|
|
155
|
+
*/
|
|
156
|
+
static readonly PROPERTY_INJECTION_ID: string;
|
|
152
157
|
constructor(scope: Construct, id: string, props: NodejsWebFunctionProps);
|
|
153
158
|
}
|
|
@@ -40,6 +40,7 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
|
40
40
|
const lambda = __importStar(require("aws-cdk-lib/aws-lambda"));
|
|
41
41
|
const aws_lambda_nodejs_1 = require("aws-cdk-lib/aws-lambda-nodejs");
|
|
42
42
|
const bundling_1 = require("./private/bundling");
|
|
43
|
+
const property_injection_1 = require("./private/property-injection");
|
|
43
44
|
const web_function_1 = require("./web-function");
|
|
44
45
|
/**
|
|
45
46
|
* A `WebFunction` whose code is bundled from a TypeScript or JavaScript entry file with esbuild,
|
|
@@ -49,8 +50,14 @@ const web_function_1 = require("./web-function");
|
|
|
49
50
|
* bundle, and `NODE_OPTIONS=--enable-source-maps` when source maps are on.
|
|
50
51
|
*/
|
|
51
52
|
class NodejsWebFunction extends web_function_1.WebFunction {
|
|
52
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.NodejsWebFunction", version: "0.1.
|
|
53
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.NodejsWebFunction", version: "0.1.10" };
|
|
54
|
+
/**
|
|
55
|
+
* Identifies this class to property injectors (`PropertyInjectors.of(scope).add(...)`). A `NodejsWebFunction` gets
|
|
56
|
+
* its own injector first, then `WebFunction`'s, as aws-cdk-lib's `NodejsFunction` does with `Function`'s.
|
|
57
|
+
*/
|
|
58
|
+
static PROPERTY_INJECTION_ID = '@ashishpandeyone/cdk-lambda-web-function.NodejsWebFunction';
|
|
53
59
|
constructor(scope, id, props) {
|
|
60
|
+
props = (0, property_injection_1.injectProps)(NodejsWebFunction.PROPERTY_INJECTION_ID, props, scope, id);
|
|
54
61
|
const runtime = props.runtime ?? lambda.Runtime.NODEJS_24_X;
|
|
55
62
|
const entry = (0, bundling_1.resolveEntry)(props.entry);
|
|
56
63
|
const projectRoot = path.resolve(props.projectRoot ?? path.dirname(lockFile(props, entry)));
|
|
@@ -110,4 +117,4 @@ function withSourceMaps(environment, sourceMap) {
|
|
|
110
117
|
return environment;
|
|
111
118
|
return { ...environment, NODE_OPTIONS: existing ? `${existing} --enable-source-maps` : '--enable-source-maps' };
|
|
112
119
|
}
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZWpzLXdlYi1mdW5jdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ub2RlanMtd2ViLWZ1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnREFBa0M7QUFDbEMsNkNBQTBDO0FBQzFDLCtEQUFpRDtBQUNqRCxxRUFBNkQ7QUFFN0QsaURBQXlGO0FBQ3pGLGlEQUFzRTtBQXdKdEU7Ozs7OztHQU1HO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSwwQkFBVzs7SUFDaEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE2QjtRQUNyRSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQzVELE1BQU0sS0FBSyxHQUFHLElBQUEsdUJBQVksRUFBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUYsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSywrQkFBK0IsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM5RSxDQUFDO1FBRUQsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7UUFDL0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxnQ0FBWSxDQUFDLEdBQUcsQ0FBQztRQUM1QyxNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQztRQUN0QyxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXpELE1BQU0sSUFBSSxHQUFHLElBQUEsc0JBQVcsRUFBQztZQUN2QixLQUFLO1lBQ0wsV0FBVztZQUNYLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVztZQUMxQixtQkFBbUIsRUFBRSxDQUFDLENBQUMsbUJBQW1CLElBQUksS0FBSztZQUNuRCxXQUFXLEVBQUUsQ0FBQyxDQUFDLFdBQVcsSUFBSSx5QkFBVyxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsT0FBTyxDQUFDLElBQUksZUFBZSxDQUFDO1lBQy9HLE9BQU8sRUFBRTtnQkFDUCxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxJQUFJO2dCQUN4QixTQUFTO2dCQUNULE1BQU07Z0JBQ04sTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztnQkFDL0QsZUFBZSxFQUFFLENBQUMsQ0FBQyxlQUFlLElBQUksRUFBRTtnQkFDeEMsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksRUFBRTtnQkFDdEIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksRUFBRTtnQkFDdEIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNO2dCQUNoQixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU07Z0JBQ2hCLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtnQkFDcEIsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksS0FBSztnQkFDL0IsV0FBVyxFQUFFLENBQUMsQ0FBQyxXQUFXLElBQUksRUFBRTthQUNqQztTQUNGLENBQUMsQ0FBQztRQUVILEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsT0FBTztZQUNQLElBQUk7WUFDSixVQUFVLEVBQUUsSUFBQSxxQkFBVSxFQUFDLE1BQU0sQ0FBQztZQUM5QixXQUFXLEVBQUUsY0FBYyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDO1NBQzFELENBQUMsQ0FBQztJQUNMLENBQUM7O0FBM0NILDhDQTRDQztBQUVELFNBQVMsUUFBUSxDQUFDLEtBQTZCLEVBQUUsS0FBYTtJQUM1RCxJQUFJLEtBQUssQ0FBQyxnQkFBZ0I7UUFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDeEUsTUFBTSxLQUFLLEdBQUcsSUFBQSx1QkFBWSxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNoRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksS0FBSyxDQUFDLHFGQUFxRixLQUFLLHVDQUF1QyxDQUFDLENBQUM7SUFDckosQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELGtGQUFrRjtBQUNsRixTQUFTLGNBQWMsQ0FBQyxXQUFrRCxFQUFFLFNBQWtCO0lBQzVGLElBQUksQ0FBQyxTQUFTO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFDbkMsTUFBTSxRQUFRLEdBQUcsV0FBVyxFQUFFLFlBQVksQ0FBQztJQUMzQyxJQUFJLFFBQVEsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLHNCQUFzQixDQUFDO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFDaEYsT0FBTyxFQUFFLEdBQUcsV0FBVyxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztBQUNsSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgRG9ja2VySW1hZ2UgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBPdXRwdXRGb3JtYXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgYnVuZGxlZENvZGUsIGZpbmRMb2NrRmlsZSwgb3V0cHV0RmlsZSwgcmVzb2x2ZUVudHJ5IH0gZnJvbSAnLi9wcml2YXRlL2J1bmRsaW5nJztcbmltcG9ydCB7IFdlYkZ1bmN0aW9uLCB0eXBlIFdlYkZ1bmN0aW9uT3B0aW9ucyB9IGZyb20gJy4vd2ViLWZ1bmN0aW9uJztcblxuLyoqXG4gKiBIb3cgYE5vZGVqc1dlYkZ1bmN0aW9uYCBidW5kbGVzIHRoZSBzZXJ2ZXIgd2l0aCBlc2J1aWxkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVqc1dlYkZ1bmN0aW9uQnVuZGxpbmdPcHRpb25zIHtcbiAgLyoqXG4gICAqIE1pbmlmeSB0aGUgYnVuZGxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBtaW5pZnk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIHNvdXJjZSBtYXAsIGFuZCBzZXQgYE5PREVfT1BUSU9OUz0tLWVuYWJsZS1zb3VyY2UtbWFwc2Agc28gc3RhY2sgdHJhY2VzIHBvaW50IGF0IHlvdXIgc291cmNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlTWFwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3V0cHV0IGZvcm1hdC4gRVNNIGlzIHdyaXR0ZW4gdG8gYGluZGV4Lm1qc2AgKHdpdGggYSBgcmVxdWlyZWAgc2hpbSwgc28gQ29tbW9uSlMgZGVwZW5kZW5jaWVzXG4gICAqIHN1Y2ggYXMgRXhwcmVzcyB3b3JrKTsgQ29tbW9uSlMgdG8gYGluZGV4LmpzYC5cbiAgICpcbiAgICogQGRlZmF1bHQgT3V0cHV0Rm9ybWF0LkVTTVxuICAgKi9cbiAgcmVhZG9ubHkgZm9ybWF0PzogT3V0cHV0Rm9ybWF0O1xuXG4gIC8qKlxuICAgKiBlc2J1aWxkIHRhcmdldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgcnVudGltZSdzIE5vZGUuanMgdmVyc2lvbiwgZS5nLiBgbm9kZTI0YFxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNb2R1bGVzIHRvIGxlYXZlIG91dCBvZiB0aGUgYnVuZGxlLiBUaGUgcnVudGltZSBoYXMgbm8gQVdTIFNESywgc28gYEBhd3Mtc2RrLypgIGlzIGJ1bmRsZWQgbGlrZVxuICAgKiBhbnkgb3RoZXIgZGVwZW5kZW5jeTsgb25seSBleGNsdWRlIG1vZHVsZXMgeW91IHByb3ZpZGUgYW5vdGhlciB3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZXh0ZXJuYWxNb2R1bGVzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgZ2xvYmFsIGlkZW50aWZpZXJzIHdpdGggY29uc3RhbnQgZXhwcmVzc2lvbnMgKGVzYnVpbGQgYC0tZGVmaW5lYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVmaW5lPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogZXNidWlsZCBsb2FkZXJzIGJ5IGZpbGUgZXh0ZW5zaW9uLCBlLmcuIGB7ICcucG5nJzogJ2RhdGF1cmwnIH1gLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGVzYnVpbGQncyBkZWZhdWx0c1xuICAgKi9cbiAgcmVhZG9ubHkgbG9hZGVyPzogeyBbZXh0OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGV4dCB0byBwcmVwZW5kIHRvIHRoZSBidW5kbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYmFubmVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUZXh0IHRvIGFwcGVuZCB0byB0aGUgYnVuZGxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGZvb3Rlcj86IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCBvZiB0aGUgdHNjb25maWcuanNvbiB0byB1c2UsIHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHJvb3Qgb3IgYWJzb2x1dGUgKGluc2lkZSB0aGUgcHJvamVjdCByb290KS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBlc2J1aWxkJ3MgbG9va3VwIGZyb20gdGhlIGVudHJ5IGZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHRzY29uZmlnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBLZWVwIGZ1bmN0aW9uIGFuZCBjbGFzcyBuYW1lcyAoYC0ta2VlcC1uYW1lc2ApLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkga2VlcE5hbWVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRXh0cmEgZXNidWlsZCBhcmd1bWVudHMsIGUuZy4gYHsgJy0tbG9nLWxpbWl0JzogJzAnLCAnLS10cmVlLXNoYWtpbmcnOiB0cnVlIH1gLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGVzYnVpbGRBcmdzPzogeyBbYXJnOiBzdHJpbmddOiBzdHJpbmcgfCBib29sZWFuIH07XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHZhcmlhYmxlcyB3aGlsZSBidW5kbGluZyAobm90IGF0IHJ1bnRpbWUpLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQWx3YXlzIGJ1bmRsZSBpbiBEb2NrZXIsIGV2ZW4gaWYgZXNidWlsZCBpcyBpbnN0YWxsZWQgbG9jYWxseS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGZvcmNlRG9ja2VyQnVuZGxpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBEb2NrZXIgaW1hZ2UgZm9yIGJ1bmRsaW5nIHdoZW4gZXNidWlsZCBpc24ndCBpbnN0YWxsZWQgbG9jYWxseS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgYXJtNjQgQVdTIFNBTSBidWlsZCBpbWFnZSBmb3IgdGhlIHJ1bnRpbWUsIGUuZy4gYHB1YmxpYy5lY3IuYXdzL3NhbS9idWlsZC1ub2RlanMyNC54OmxhdGVzdC1hcm02NGBcbiAgICovXG4gIHJlYWRvbmx5IGRvY2tlckltYWdlPzogRG9ja2VySW1hZ2U7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBgTm9kZWpzV2ViRnVuY3Rpb25gLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vZGVqc1dlYkZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBXZWJGdW5jdGlvbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGZpbGUgdGhhdCBzdGFydHMgeW91ciBzZXJ2ZXIgKFR5cGVTY3JpcHQgb3IgSmF2YVNjcmlwdCkuIEl0J3MgYnVuZGxlZCB3aXRoIGl0cyBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICByZWFkb25seSBlbnRyeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgTm9kZS5qcyBydW50aW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjRfWFxuICAgKi9cbiAgcmVhZG9ubHkgcnVudGltZT86IGxhbWJkYS5SdW50aW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgbG9jayBmaWxlIHRoYXQgbWFya3MgdGhlIHByb2plY3Qgcm9vdCAod2hlcmUgZXNidWlsZCByZXNvbHZlcyBgbm9kZV9tb2R1bGVzYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIG5lYXJlc3QgYHBhY2thZ2UtbG9jay5qc29uYCwgYHlhcm4ubG9ja2AsIGBwbnBtLWxvY2sueWFtbGAgb3IgYGJ1bi5sb2NrKGIpYCBhYm92ZSB0aGUgZW50cnlcbiAgICovXG4gIHJlYWRvbmx5IGRlcHNMb2NrRmlsZVBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9qZWN0IHJvb3QuIE11c3QgY29udGFpbiB0aGUgZW50cnkgZmlsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgZGlyZWN0b3J5IG9mIHRoZSBsb2NrIGZpbGVcbiAgICovXG4gIHJlYWRvbmx5IHByb2plY3RSb290Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBIb3cgdGhlIHNlcnZlciBpcyBidW5kbGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG1pbmlmaWVkIEVTTSB3aXRoIGEgc291cmNlIG1hcCwgdGFyZ2V0aW5nIHRoZSBydW50aW1lJ3MgTm9kZS5qcyB2ZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBidW5kbGluZz86IE5vZGVqc1dlYkZ1bmN0aW9uQnVuZGxpbmdPcHRpb25zO1xufVxuXG4vKipcbiAqIEEgYFdlYkZ1bmN0aW9uYCB3aG9zZSBjb2RlIGlzIGJ1bmRsZWQgZnJvbSBhIFR5cGVTY3JpcHQgb3IgSmF2YVNjcmlwdCBlbnRyeSBmaWxlIHdpdGggZXNidWlsZCxcbiAqIGxpa2UgYE5vZGVqc0Z1bmN0aW9uYCBmb3IgTGFtYmRhIGZ1bmN0aW9ucy5cbiAqXG4gKiBCZXNpZGVzIGJ1bmRsaW5nLCBpdCBzZXRzIHdoYXQgYSBgbGFtYmRhLkNvZGVgIGFsb25lIGNhbid0OiB0aGUgZW50cnkgcG9pbnQgdGhhdCBtYXRjaGVzIHRoZVxuICogYnVuZGxlLCBhbmQgYE5PREVfT1BUSU9OUz0tLWVuYWJsZS1zb3VyY2UtbWFwc2Agd2hlbiBzb3VyY2UgbWFwcyBhcmUgb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBOb2RlanNXZWJGdW5jdGlvbiBleHRlbmRzIFdlYkZ1bmN0aW9uIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5vZGVqc1dlYkZ1bmN0aW9uUHJvcHMpIHtcbiAgICBjb25zdCBydW50aW1lID0gcHJvcHMucnVudGltZSA/PyBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjRfWDtcbiAgICBjb25zdCBlbnRyeSA9IHJlc29sdmVFbnRyeShwcm9wcy5lbnRyeSk7XG4gICAgY29uc3QgcHJvamVjdFJvb3QgPSBwYXRoLnJlc29sdmUocHJvcHMucHJvamVjdFJvb3QgPz8gcGF0aC5kaXJuYW1lKGxvY2tGaWxlKHByb3BzLCBlbnRyeSkpKTtcbiAgICBpZiAocGF0aC5yZWxhdGl2ZShwcm9qZWN0Um9vdCwgZW50cnkpLnN0YXJ0c1dpdGgoJy4uJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgZW50cnkgJHtlbnRyeX0gbXVzdCBiZSBpbnNpZGUgcHJvamVjdFJvb3QgJHtwcm9qZWN0Um9vdH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBiID0gcHJvcHMuYnVuZGxpbmcgPz8ge307XG4gICAgY29uc3QgZm9ybWF0ID0gYi5mb3JtYXQgPz8gT3V0cHV0Rm9ybWF0LkVTTTtcbiAgICBjb25zdCBzb3VyY2VNYXAgPSBiLnNvdXJjZU1hcCA/PyB0cnVlO1xuICAgIGNvbnN0IG5vZGVNYWpvciA9IC9ebm9kZWpzKFxcZCspLy5leGVjKHJ1bnRpbWUubmFtZSk/LlsxXTtcblxuICAgIGNvbnN0IGNvZGUgPSBidW5kbGVkQ29kZSh7XG4gICAgICBlbnRyeSxcbiAgICAgIHByb2plY3RSb290LFxuICAgICAgZW52aXJvbm1lbnQ6IGIuZW52aXJvbm1lbnQsXG4gICAgICBmb3JjZURvY2tlckJ1bmRsaW5nOiBiLmZvcmNlRG9ja2VyQnVuZGxpbmcgPz8gZmFsc2UsXG4gICAgICBkb2NrZXJJbWFnZTogYi5kb2NrZXJJbWFnZSA/PyBEb2NrZXJJbWFnZS5mcm9tUmVnaXN0cnkoYHB1YmxpYy5lY3IuYXdzL3NhbS9idWlsZC0ke3J1bnRpbWUubmFtZX06bGF0ZXN0LWFybTY0YCksXG4gICAgICBlc2J1aWxkOiB7XG4gICAgICAgIG1pbmlmeTogYi5taW5pZnkgPz8gdHJ1ZSxcbiAgICAgICAgc291cmNlTWFwLFxuICAgICAgICBmb3JtYXQsXG4gICAgICAgIHRhcmdldDogYi50YXJnZXQgPz8gKG5vZGVNYWpvciA/IGBub2RlJHtub2RlTWFqb3J9YCA6ICdub2RlMjQnKSxcbiAgICAgICAgZXh0ZXJuYWxNb2R1bGVzOiBiLmV4dGVybmFsTW9kdWxlcyA/PyBbXSxcbiAgICAgICAgZGVmaW5lOiBiLmRlZmluZSA/PyB7fSxcbiAgICAgICAgbG9hZGVyOiBiLmxvYWRlciA/PyB7fSxcbiAgICAgICAgYmFubmVyOiBiLmJhbm5lcixcbiAgICAgICAgZm9vdGVyOiBiLmZvb3RlcixcbiAgICAgICAgdHNjb25maWc6IGIudHNjb25maWcsXG4gICAgICAgIGtlZXBOYW1lczogYi5rZWVwTmFtZXMgPz8gZmFsc2UsXG4gICAgICAgIGVzYnVpbGRBcmdzOiBiLmVzYnVpbGRBcmdzID8/IHt9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBydW50aW1lLFxuICAgICAgY29kZSxcbiAgICAgIGVudHJ5cG9pbnQ6IG91dHB1dEZpbGUoZm9ybWF0KSxcbiAgICAgIGVudmlyb25tZW50OiB3aXRoU291cmNlTWFwcyhwcm9wcy5lbnZpcm9ubWVudCwgc291cmNlTWFwKSxcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBsb2NrRmlsZShwcm9wczogTm9kZWpzV2ViRnVuY3Rpb25Qcm9wcywgZW50cnk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChwcm9wcy5kZXBzTG9ja0ZpbGVQYXRoKSByZXR1cm4gcGF0aC5yZXNvbHZlKHByb3BzLmRlcHNMb2NrRmlsZVBhdGgpO1xuICBjb25zdCBmb3VuZCA9IGZpbmRMb2NrRmlsZShwYXRoLmRpcm5hbWUoZW50cnkpKTtcbiAgaWYgKCFmb3VuZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgbm8gbG9jayBmaWxlIChwYWNrYWdlLWxvY2suanNvbiwgeWFybi5sb2NrLCBwbnBtLWxvY2sueWFtbCwgYnVuLmxvY2spIGZvdW5kIGFib3ZlICR7ZW50cnl9OyBzZXQgZGVwc0xvY2tGaWxlUGF0aCBvciBwcm9qZWN0Um9vdGApO1xuICB9XG4gIHJldHVybiBmb3VuZDtcbn1cblxuLyoqIEFkZHMgYC0tZW5hYmxlLXNvdXJjZS1tYXBzYCB0byBOT0RFX09QVElPTlMsIGtlZXBpbmcgYW55dGhpbmcgdGhlIHVzZXIgc2V0LiAqL1xuZnVuY3Rpb24gd2l0aFNvdXJjZU1hcHMoZW52aXJvbm1lbnQ6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWQsIHNvdXJjZU1hcDogYm9vbGVhbik6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gfCB1bmRlZmluZWQge1xuICBpZiAoIXNvdXJjZU1hcCkgcmV0dXJuIGVudmlyb25tZW50O1xuICBjb25zdCBleGlzdGluZyA9IGVudmlyb25tZW50Py5OT0RFX09QVElPTlM7XG4gIGlmIChleGlzdGluZz8uc3BsaXQoL1xccysvKS5pbmNsdWRlcygnLS1lbmFibGUtc291cmNlLW1hcHMnKSkgcmV0dXJuIGVudmlyb25tZW50O1xuICByZXR1cm4geyAuLi5lbnZpcm9ubWVudCwgTk9ERV9PUFRJT05TOiBleGlzdGluZyA/IGAke2V4aXN0aW5nfSAtLWVuYWJsZS1zb3VyY2UtbWFwc2AgOiAnLS1lbmFibGUtc291cmNlLW1hcHMnIH07XG59XG4iXX0=
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZWpzLXdlYi1mdW5jdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ub2RlanMtd2ViLWZ1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnREFBa0M7QUFDbEMsNkNBQTBDO0FBQzFDLCtEQUFpRDtBQUNqRCxxRUFBNkQ7QUFFN0QsaURBQXlGO0FBQ3pGLHFFQUEyRDtBQUMzRCxpREFBc0U7QUF3SnRFOzs7Ozs7R0FNRztBQUNILE1BQWEsaUJBQWtCLFNBQVEsMEJBQVc7O0lBQ2hEOzs7T0FHRztJQUNJLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVyw0REFBNEQsQ0FBQztJQUVwSCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTZCO1FBQ3JFLEtBQUssR0FBRyxJQUFBLGdDQUFXLEVBQUMsaUJBQWlCLENBQUMscUJBQXFCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvRSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQzVELE1BQU0sS0FBSyxHQUFHLElBQUEsdUJBQVksRUFBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUYsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN2RCxNQUFNLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSywrQkFBK0IsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM5RSxDQUFD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USx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztBQUNsSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgRG9ja2VySW1hZ2UgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBPdXRwdXRGb3JtYXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhLW5vZGVqcyc7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgYnVuZGxlZENvZGUsIGZpbmRMb2NrRmlsZSwgb3V0cHV0RmlsZSwgcmVzb2x2ZUVudHJ5IH0gZnJvbSAnLi9wcml2YXRlL2J1bmRsaW5nJztcbmltcG9ydCB7IGluamVjdFByb3BzIH0gZnJvbSAnLi9wcml2YXRlL3Byb3BlcnR5LWluamVjdGlvbic7XG5pbXBvcnQgeyBXZWJGdW5jdGlvbiwgdHlwZSBXZWJGdW5jdGlvbk9wdGlvbnMgfSBmcm9tICcuL3dlYi1mdW5jdGlvbic7XG5cbi8qKlxuICogSG93IGBOb2RlanNXZWJGdW5jdGlvbmAgYnVuZGxlcyB0aGUgc2VydmVyIHdpdGggZXNidWlsZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb2RlanNXZWJGdW5jdGlvbkJ1bmRsaW5nT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBNaW5pZnkgdGhlIGJ1bmRsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbWluaWZ5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2VuZXJhdGUgYSBzb3VyY2UgbWFwLCBhbmQgc2V0IGBOT0RFX09QVElPTlM9LS1lbmFibGUtc291cmNlLW1hcHNgIHNvIHN0YWNrIHRyYWNlcyBwb2ludCBhdCB5b3VyIHNvdXJjZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZU1hcD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE91dHB1dCBmb3JtYXQuIEVTTSBpcyB3cml0dGVuIHRvIGBpbmRleC5tanNgICh3aXRoIGEgYHJlcXVpcmVgIHNoaW0sIHNvIENvbW1vbkpTIGRlcGVuZGVuY2llc1xuICAgKiBzdWNoIGFzIEV4cHJlc3Mgd29yayk7IENvbW1vbkpTIHRvIGBpbmRleC5qc2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IE91dHB1dEZvcm1hdC5FU01cbiAgICovXG4gIHJlYWRvbmx5IGZvcm1hdD86IE91dHB1dEZvcm1hdDtcblxuICAvKipcbiAgICogZXNidWlsZCB0YXJnZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIHJ1bnRpbWUncyBOb2RlLmpzIHZlcnNpb24sIGUuZy4gYG5vZGUyNGBcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldD86IHN0cmluZztcblxuICAvKipcbiAgICogTW9kdWxlcyB0byBsZWF2ZSBvdXQgb2YgdGhlIGJ1bmRsZS4gVGhlIHJ1bnRpbWUgaGFzIG5vIEFXUyBTREssIHNvIGBAYXdzLXNkay8qYCBpcyBidW5kbGVkIGxpa2VcbiAgICogYW55IG90aGVyIGRlcGVuZGVuY3k7IG9ubHkgZXhjbHVkZSBtb2R1bGVzIHlvdSBwcm92aWRlIGFub3RoZXIgd2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGV4dGVybmFsTW9kdWxlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBSZXBsYWNlIGdsb2JhbCBpZGVudGlmaWVycyB3aXRoIGNvbnN0YW50IGV4cHJlc3Npb25zIChlc2J1aWxkIGAtLWRlZmluZWApLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGRlZmluZT86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIGVzYnVpbGQgbG9hZGVycyBieSBmaWxlIGV4dGVuc2lvbiwgZS5nLiBgeyAnLnBuZyc6ICdkYXRhdXJsJyB9YC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBlc2J1aWxkJ3MgZGVmYXVsdHNcbiAgICovXG4gIHJlYWRvbmx5IGxvYWRlcj86IHsgW2V4dDogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRleHQgdG8gcHJlcGVuZCB0byB0aGUgYnVuZGxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGJhbm5lcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGV4dCB0byBhcHBlbmQgdG8gdGhlIGJ1bmRsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBmb290ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhdGggb2YgdGhlIHRzY29uZmlnLmpzb24gdG8gdXNlLCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCByb290IG9yIGFic29sdXRlIChpbnNpZGUgdGhlIHByb2plY3Qgcm9vdCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZXNidWlsZCdzIGxvb2t1cCBmcm9tIHRoZSBlbnRyeSBmaWxlXG4gICAqL1xuICByZWFkb25seSB0c2NvbmZpZz86IHN0cmluZztcblxuICAvKipcbiAgICogS2VlcCBmdW5jdGlvbiBhbmQgY2xhc3MgbmFtZXMgKGAtLWtlZXAtbmFtZXNgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGtlZXBOYW1lcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEV4dHJhIGVzYnVpbGQgYXJndW1lbnRzLCBlLmcuIGB7ICctLWxvZy1saW1pdCc6ICcwJywgJy0tdHJlZS1zaGFraW5nJzogdHJ1ZSB9YC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBlc2J1aWxkQXJncz86IHsgW2FyZzogc3RyaW5nXTogc3RyaW5nIHwgYm9vbGVhbiB9O1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hpbGUgYnVuZGxpbmcgKG5vdCBhdCBydW50aW1lKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEFsd2F5cyBidW5kbGUgaW4gRG9ja2VyLCBldmVuIGlmIGVzYnVpbGQgaXMgaW5zdGFsbGVkIGxvY2FsbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBmb3JjZURvY2tlckJ1bmRsaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRG9ja2VyIGltYWdlIGZvciBidW5kbGluZyB3aGVuIGVzYnVpbGQgaXNuJ3QgaW5zdGFsbGVkIGxvY2FsbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGFybTY0IEFXUyBTQU0gYnVpbGQgaW1hZ2UgZm9yIHRoZSBydW50aW1lLCBlLmcuIGBwdWJsaWMuZWNyLmF3cy9zYW0vYnVpbGQtbm9kZWpzMjQueDpsYXRlc3QtYXJtNjRgXG4gICAqL1xuICByZWFkb25seSBkb2NrZXJJbWFnZT86IERvY2tlckltYWdlO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgYE5vZGVqc1dlYkZ1bmN0aW9uYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb2RlanNXZWJGdW5jdGlvblByb3BzIGV4dGVuZHMgV2ViRnVuY3Rpb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBmaWxlIHRoYXQgc3RhcnRzIHlvdXIgc2VydmVyIChUeXBlU2NyaXB0IG9yIEphdmFTY3JpcHQpLiBJdCdzIGJ1bmRsZWQgd2l0aCBpdHMgZGVwZW5kZW5jaWVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZW50cnk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE5vZGUuanMgcnVudGltZS5cbiAgICpcbiAgICogQGRlZmF1bHQgbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzI0X1hcbiAgICovXG4gIHJlYWRvbmx5IHJ1bnRpbWU/OiBsYW1iZGEuUnVudGltZTtcblxuICAvKipcbiAgICogVGhlIGxvY2sgZmlsZSB0aGF0IG1hcmtzIHRoZSBwcm9qZWN0IHJvb3QgKHdoZXJlIGVzYnVpbGQgcmVzb2x2ZXMgYG5vZGVfbW9kdWxlc2ApLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBuZWFyZXN0IGBwYWNrYWdlLWxvY2suanNvbmAsIGB5YXJuLmxvY2tgLCBgcG5wbS1sb2NrLnlhbWxgIG9yIGBidW4ubG9jayhiKWAgYWJvdmUgdGhlIGVudHJ5XG4gICAqL1xuICByZWFkb25seSBkZXBzTG9ja0ZpbGVQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJvamVjdCByb290LiBNdXN0IGNvbnRhaW4gdGhlIGVudHJ5IGZpbGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGRpcmVjdG9yeSBvZiB0aGUgbG9jayBmaWxlXG4gICAqL1xuICByZWFkb25seSBwcm9qZWN0Um9vdD86IHN0cmluZztcblxuICAvKipcbiAgICogSG93IHRoZSBzZXJ2ZXIgaXMgYnVuZGxlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBtaW5pZmllZCBFU00gd2l0aCBhIHNvdXJjZSBtYXAsIHRhcmdldGluZyB0aGUgcnVudGltZSdzIE5vZGUuanMgdmVyc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgYnVuZGxpbmc/OiBOb2RlanNXZWJGdW5jdGlvbkJ1bmRsaW5nT3B0aW9ucztcbn1cblxuLyoqXG4gKiBBIGBXZWJGdW5jdGlvbmAgd2hvc2UgY29kZSBpcyBidW5kbGVkIGZyb20gYSBUeXBlU2NyaXB0IG9yIEphdmFTY3JpcHQgZW50cnkgZmlsZSB3aXRoIGVzYnVpbGQsXG4gKiBsaWtlIGBOb2RlanNGdW5jdGlvbmAgZm9yIExhbWJkYSBmdW5jdGlvbnMuXG4gKlxuICogQmVzaWRlcyBidW5kbGluZywgaXQgc2V0cyB3aGF0IGEgYGxhbWJkYS5Db2RlYCBhbG9uZSBjYW4ndDogdGhlIGVudHJ5IHBvaW50IHRoYXQgbWF0Y2hlcyB0aGVcbiAqIGJ1bmRsZSwgYW5kIGBOT0RFX09QVElPTlM9LS1lbmFibGUtc291cmNlLW1hcHNgIHdoZW4gc291cmNlIG1hcHMgYXJlIG9uLlxuICovXG5leHBvcnQgY2xhc3MgTm9kZWpzV2ViRnVuY3Rpb24gZXh0ZW5kcyBXZWJGdW5jdGlvbiB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIHRoaXMgY2xhc3MgdG8gcHJvcGVydHkgaW5qZWN0b3JzIChgUHJvcGVydHlJbmplY3RvcnMub2Yoc2NvcGUpLmFkZCguLi4pYCkuIEEgYE5vZGVqc1dlYkZ1bmN0aW9uYCBnZXRzXG4gICAqIGl0cyBvd24gaW5qZWN0b3IgZmlyc3QsIHRoZW4gYFdlYkZ1bmN0aW9uYCdzLCBhcyBhd3MtY2RrLWxpYidzIGBOb2RlanNGdW5jdGlvbmAgZG9lcyB3aXRoIGBGdW5jdGlvbmAncy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGFzaGlzaHBhbmRleW9uZS9jZGstbGFtYmRhLXdlYi1mdW5jdGlvbi5Ob2RlanNXZWJGdW5jdGlvbic7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5vZGVqc1dlYkZ1bmN0aW9uUHJvcHMpIHtcbiAgICBwcm9wcyA9IGluamVjdFByb3BzKE5vZGVqc1dlYkZ1bmN0aW9uLlBST1BFUlRZX0lOSkVDVElPTl9JRCwgcHJvcHMsIHNjb3BlLCBpZCk7XG4gICAgY29uc3QgcnVudGltZSA9IHByb3BzLnJ1bnRpbWUgPz8gbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzI0X1g7XG4gICAgY29uc3QgZW50cnkgPSByZXNvbHZlRW50cnkocHJvcHMuZW50cnkpO1xuICAgIGNvbnN0IHByb2plY3RSb290ID0gcGF0aC5yZXNvbHZlKHByb3BzLnByb2plY3RSb290ID8/IHBhdGguZGlybmFtZShsb2NrRmlsZShwcm9wcywgZW50cnkpKSk7XG4gICAgaWYgKHBhdGgucmVsYXRpdmUocHJvamVjdFJvb3QsIGVudHJ5KS5zdGFydHNXaXRoKCcuLicpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGVudHJ5ICR7ZW50cnl9IG11c3QgYmUgaW5zaWRlIHByb2plY3RSb290ICR7cHJvamVjdFJvb3R9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgYiA9IHByb3BzLmJ1bmRsaW5nID8/IHt9O1xuICAgIGNvbnN0IGZvcm1hdCA9IGIuZm9ybWF0ID8/IE91dHB1dEZvcm1hdC5FU007XG4gICAgY29uc3Qgc291cmNlTWFwID0gYi5zb3VyY2VNYXAgPz8gdHJ1ZTtcbiAgICBjb25zdCBub2RlTWFqb3IgPSAvXm5vZGVqcyhcXGQrKS8uZXhlYyhydW50aW1lLm5hbWUpPy5bMV07XG5cbiAgICBjb25zdCBjb2RlID0gYnVuZGxlZENvZGUoe1xuICAgICAgZW50cnksXG4gICAgICBwcm9qZWN0Um9vdCxcbiAgICAgIGVudmlyb25tZW50OiBiLmVudmlyb25tZW50LFxuICAgICAgZm9yY2VEb2NrZXJCdW5kbGluZzogYi5mb3JjZURvY2tlckJ1bmRsaW5nID8/IGZhbHNlLFxuICAgICAgZG9ja2VySW1hZ2U6IGIuZG9ja2VySW1hZ2UgPz8gRG9ja2VySW1hZ2UuZnJvbVJlZ2lzdHJ5KGBwdWJsaWMuZWNyLmF3cy9zYW0vYnVpbGQtJHtydW50aW1lLm5hbWV9OmxhdGVzdC1hcm02NGApLFxuICAgICAgZXNidWlsZDoge1xuICAgICAgICBtaW5pZnk6IGIubWluaWZ5ID8/IHRydWUsXG4gICAgICAgIHNvdXJjZU1hcCxcbiAgICAgICAgZm9ybWF0LFxuICAgICAgICB0YXJnZXQ6IGIudGFyZ2V0ID8/IChub2RlTWFqb3IgPyBgbm9kZSR7bm9kZU1ham9yfWAgOiAnbm9kZTI0JyksXG4gICAgICAgIGV4dGVybmFsTW9kdWxlczogYi5leHRlcm5hbE1vZHVsZXMgPz8gW10sXG4gICAgICAgIGRlZmluZTogYi5kZWZpbmUgPz8ge30sXG4gICAgICAgIGxvYWRlcjogYi5sb2FkZXIgPz8ge30sXG4gICAgICAgIGJhbm5lcjogYi5iYW5uZXIsXG4gICAgICAgIGZvb3RlcjogYi5mb290ZXIsXG4gICAgICAgIHRzY29uZmlnOiBiLnRzY29uZmlnLFxuICAgICAgICBrZWVwTmFtZXM6IGIua2VlcE5hbWVzID8/IGZhbHNlLFxuICAgICAgICBlc2J1aWxkQXJnczogYi5lc2J1aWxkQXJncyA/PyB7fSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcnVudGltZSxcbiAgICAgIGNvZGUsXG4gICAgICBlbnRyeXBvaW50OiBvdXRwdXRGaWxlKGZvcm1hdCksXG4gICAgICBlbnZpcm9ubWVudDogd2l0aFNvdXJjZU1hcHMocHJvcHMuZW52aXJvbm1lbnQsIHNvdXJjZU1hcCksXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbG9ja0ZpbGUocHJvcHM6IE5vZGVqc1dlYkZ1bmN0aW9uUHJvcHMsIGVudHJ5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAocHJvcHMuZGVwc0xvY2tGaWxlUGF0aCkgcmV0dXJuIHBhdGgucmVzb2x2ZShwcm9wcy5kZXBzTG9ja0ZpbGVQYXRoKTtcbiAgY29uc3QgZm91bmQgPSBmaW5kTG9ja0ZpbGUocGF0aC5kaXJuYW1lKGVudHJ5KSk7XG4gIGlmICghZm91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG5vIGxvY2sgZmlsZSAocGFja2FnZS1sb2NrLmpzb24sIHlhcm4ubG9jaywgcG5wbS1sb2NrLnlhbWwsIGJ1bi5sb2NrKSBmb3VuZCBhYm92ZSAke2VudHJ5fTsgc2V0IGRlcHNMb2NrRmlsZVBhdGggb3IgcHJvamVjdFJvb3RgKTtcbiAgfVxuICByZXR1cm4gZm91bmQ7XG59XG5cbi8qKiBBZGRzIGAtLWVuYWJsZS1zb3VyY2UtbWFwc2AgdG8gTk9ERV9PUFRJT05TLCBrZWVwaW5nIGFueXRoaW5nIHRoZSB1c2VyIHNldC4gKi9cbmZ1bmN0aW9uIHdpdGhTb3VyY2VNYXBzKGVudmlyb25tZW50OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHwgdW5kZWZpbmVkLCBzb3VyY2VNYXA6IGJvb2xlYW4pOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9IHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFzb3VyY2VNYXApIHJldHVybiBlbnZpcm9ubWVudDtcbiAgY29uc3QgZXhpc3RpbmcgPSBlbnZpcm9ubWVudD8uTk9ERV9PUFRJT05TO1xuICBpZiAoZXhpc3Rpbmc/LnNwbGl0KC9cXHMrLykuaW5jbHVkZXMoJy0tZW5hYmxlLXNvdXJjZS1tYXBzJykpIHJldHVybiBlbnZpcm9ubWVudDtcbiAgcmV0dXJuIHsgLi4uZW52aXJvbm1lbnQsIE5PREVfT1BUSU9OUzogZXhpc3RpbmcgPyBgJHtleGlzdGluZ30gLS1lbmFibGUtc291cmNlLW1hcHNgIDogJy0tZW5hYmxlLXNvdXJjZS1tYXBzJyB9O1xufVxuIl19
|
|
@@ -37,6 +37,7 @@ exports.codeBucket = codeBucket;
|
|
|
37
37
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
38
38
|
const iam = __importStar(require("aws-cdk-lib/aws-iam"));
|
|
39
39
|
const s3 = __importStar(require("aws-cdk-lib/aws-s3"));
|
|
40
|
+
const nag_1 = require("./nag");
|
|
40
41
|
const provider_1 = require("./provider");
|
|
41
42
|
const provider_protocol_1 = require("./provider-protocol");
|
|
42
43
|
const ID = 'LambdaWebFunctionCodeBucket';
|
|
@@ -68,6 +69,7 @@ function codeBucket(scope) {
|
|
|
68
69
|
abortIncompleteMultipartUploadAfter: aws_cdk_lib_1.Duration.days(1),
|
|
69
70
|
}],
|
|
70
71
|
});
|
|
72
|
+
(0, nag_1.acknowledgeNagRules)(bucket.node.defaultChild, ['AwsSolutions-S1'], 'Holds only copies of this stack\'s code assets, written by the stack\'s own custom resource provider');
|
|
71
73
|
bucket.addToResourcePolicy(new iam.PolicyStatement({
|
|
72
74
|
sid: 'LambdaWebFunctionsReadCode',
|
|
73
75
|
principals: [new iam.ServicePrincipal('lambda.amazonaws.com')],
|
|
@@ -89,4 +91,4 @@ function codeBucket(scope) {
|
|
|
89
91
|
});
|
|
90
92
|
return bucket;
|
|
91
93
|
}
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1idWNrZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJpdmF0ZS9jb2RlLWJ1Y2tldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQSxnQ0F3Q0M7QUE3REQsNkNBQW1GO0FBQ25GLHlEQUEyQztBQUMzQyx1REFBeUM7QUFFekMsK0JBQTRDO0FBQzVDLHlDQUFrRTtBQUNsRSwyREFBK0g7QUFFL0gsTUFBTSxFQUFFLEdBQUcsNkJBQTZCLENBQUM7QUFFekM7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQWdCLFVBQVUsQ0FBQyxLQUFnQjtJQUN6QyxNQUFNLEtBQUssR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQTBCLENBQUM7SUFDdEUsSUFBSSxRQUFRO1FBQUUsT0FBTyxRQUFRLENBQUM7SUFFOUIsTUFBTSxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7UUFDdEMsU0FBUyxFQUFFLElBQUk7UUFDZixVQUFVLEVBQUUsSUFBSTtRQUNoQixpQkFBaUIsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsU0FBUztRQUNqRCxVQUFVLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFVBQVU7UUFDMUMsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztRQUNwQyxjQUFjLEVBQUUsQ0FBQztnQkFDZixFQUFFLEVBQUUsc0JBQXNCO2dCQUMxQiwyQkFBMkIsRUFBRSxzQkFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQzlDLG1DQUFtQyxFQUFFLHNCQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUN0RCxDQUFDO0tBQ0gsQ0FBQyxDQUFDO0lBQ0gsSUFBQSx5QkFBbUIsRUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQTRCLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUMvRSxzR0FBc0csQ0FBQyxDQUFDO0lBQzFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7UUFDakQsR0FBRyxFQUFFLDRCQUE0QjtRQUNqQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQzlELE9BQU8sRUFBRSxDQUFDLGNBQWMsRUFBRSxxQkFBcUIsQ0FBQztRQUNoRCxTQUFTLEVBQUUsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLFVBQVUsRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBRTtLQUNyRSxDQUFDLENBQUMsQ0FBQztJQUVKLDZEQUE2RDtJQUM3RCxrQkFBSSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsdUNBQW1CLENBQUMsR0FBRyxFQUFFLHVDQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sUUFBUSxHQUFHLElBQUEsOEJBQW1CLEVBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsSUFBQSwwQkFBZSxFQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDLHVCQUF1QixFQUFFLHFCQUFxQixDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3BILElBQUEsMEJBQWUsRUFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSx3QkFBd0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxSCxNQUFNLFVBQVUsR0FBZ0MsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ2xGLHFHQUFxRztJQUNyRyxJQUFJLDRCQUFjLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUU7UUFDeEMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxZQUFZO1FBQ25DLFlBQVksRUFBRSxxREFBaUM7UUFDL0MsVUFBVSxFQUFFLEVBQUUsR0FBRyxVQUFVLEVBQUU7S0FDOUIsQ0FBQyxDQUFDO0lBQ0gsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1c3RvbVJlc291cmNlLCBEdXJhdGlvbiwgUmVtb3ZhbFBvbGljeSwgU3RhY2ssIFRhZ3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBzMyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGFja25vd2xlZGdlTmFnUnVsZXMgfSBmcm9tICcuL25hZyc7XG5pbXBvcnQgeyBncmFudFRvUHJvdmlkZXIsIHdlYkZ1bmN0aW9uUHJvdmlkZXIgfSBmcm9tICcuL3Byb3ZpZGVyJztcbmltcG9ydCB7IENPREVfQlVDS0VUX0NMRUFOVVBfUkVTT1VSQ0VfVFlQRSwgRU1QVFlfT05fREVMRVRFX1RBRywgdHlwZSBDb2RlQnVja2V0Q2xlYW51cFByb3BlcnRpZXMgfSBmcm9tICcuL3Byb3ZpZGVyLXByb3RvY29sJztcblxuY29uc3QgSUQgPSAnTGFtYmRhV2ViRnVuY3Rpb25Db2RlQnVja2V0JztcblxuLyoqXG4gKiBUaGUgc3RhY2sncyBjb2RlIGJ1Y2tldCAob25lIHBlciBzdGFjaykuXG4gKlxuICogTGFtYmRhIFdlYiBGdW5jdGlvbnMgZG93bmxvYWQgY29kZSBhcyB0aGUgYGxhbWJkYS5hbWF6b25hd3MuY29tYCBzZXJ2aWNlIHByaW5jaXBhbCBhbmRcbiAqIHJlamVjdCB1bnZlcnNpb25lZCBidWNrZXRzOyB0aGUgQ0RLIGJvb3RzdHJhcCBidWNrZXQgYWxsb3dzIG5laXRoZXIsIHNvIGNvZGUgaXMgY29waWVkIGhlcmUuXG4gKiBSZXZpc2lvbnMgY2FwdHVyZSB0aGVpciBjb2RlIHdoZW4gdGhleSdyZSBjcmVhdGVkLCBzbyBzdXBlcnNlZGVkIHZlcnNpb25zIGNhbiBleHBpcmUsIGJ1dFxuICogY3VycmVudCBvYmplY3RzIG11c3Qgc3RheTogYSBsYXRlciByZXZpc2lvbiBtYXkgYmUgY3JlYXRlZCBmcm9tIHRoZSBzYW1lIG9iamVjdC5cbiAqXG4gKiBUaGUgc2hhcmVkIHByb3ZpZGVyIGVtcHRpZXMgaXQgd2hlbiBpdCdzIGRlbGV0ZWQgKGluc3RlYWQgb2YgYGF1dG9EZWxldGVPYmplY3RzYCwgd2hpY2ggYWRkcyBhbm90aGVyXG4gKiBMYW1iZGEgZnVuY3Rpb24gd2hvc2UgbG9nIGdyb3VwIG91dGxpdmVzIHRoZSBzdGFjaykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2RlQnVja2V0KHNjb3BlOiBDb25zdHJ1Y3QpOiBzMy5CdWNrZXQge1xuICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHNjb3BlKTtcbiAgY29uc3QgZXhpc3RpbmcgPSBzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChJRCkgYXMgczMuQnVja2V0IHwgdW5kZWZpbmVkO1xuICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcblxuICBjb25zdCBidWNrZXQgPSBuZXcgczMuQnVja2V0KHN0YWNrLCBJRCwge1xuICAgIHZlcnNpb25lZDogdHJ1ZSxcbiAgICBlbmZvcmNlU1NMOiB0cnVlLFxuICAgIGJsb2NrUHVibGljQWNjZXNzOiBzMy5CbG9ja1B1YmxpY0FjY2Vzcy5CTE9DS19BTEwsXG4gICAgZW5jcnlwdGlvbjogczMuQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICBsaWZlY3ljbGVSdWxlczogW3tcbiAgICAgIGlkOiAnRXhwaXJlU3VwZXJzZWRlZENvZGUnLFxuICAgICAgbm9uY3VycmVudFZlcnNpb25FeHBpcmF0aW9uOiBEdXJhdGlvbi5kYXlzKDMwKSxcbiAgICAgIGFib3J0SW5jb21wbGV0ZU11bHRpcGFydFVwbG9hZEFmdGVyOiBEdXJhdGlvbi5kYXlzKDEpLFxuICAgIH1dLFxuICB9KTtcbiAgYWNrbm93bGVkZ2VOYWdSdWxlcyhidWNrZXQubm9kZS5kZWZhdWx0Q2hpbGQgYXMgczMuQ2ZuQnVja2V0LCBbJ0F3c1NvbHV0aW9ucy1TMSddLFxuICAgICdIb2xkcyBvbmx5IGNvcGllcyBvZiB0aGlzIHN0YWNrXFwncyBjb2RlIGFzc2V0cywgd3JpdHRlbiBieSB0aGUgc3RhY2tcXCdzIG93biBjdXN0b20gcmVzb3VyY2UgcHJvdmlkZXInKTtcbiAgYnVja2V0LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgIHNpZDogJ0xhbWJkYVdlYkZ1bmN0aW9uc1JlYWRDb2RlJyxcbiAgICBwcmluY2lwYWxzOiBbbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpXSxcbiAgICBhY3Rpb25zOiBbJ3MzOkdldE9iamVjdCcsICdzMzpHZXRPYmplY3RWZXJzaW9uJ10sXG4gICAgcmVzb3VyY2VzOiBbYnVja2V0LmFybkZvck9iamVjdHMoJyonKV0sXG4gICAgY29uZGl0aW9uczogeyBTdHJpbmdFcXVhbHM6IHsgJ2F3czpTb3VyY2VBY2NvdW50Jzogc3RhY2suYWNjb3VudCB9IH0sXG4gIH0pKTtcblxuICAvLyBPbmx5IGEgdGFnZ2VkIGJ1Y2tldCBpcyBlbXB0aWVkIChzZWUgRU1QVFlfT05fREVMRVRFX1RBRykuXG4gIFRhZ3Mub2YoYnVja2V0KS5hZGQoRU1QVFlfT05fREVMRVRFX1RBRy5rZXksIEVNUFRZX09OX0RFTEVURV9UQUcudmFsdWUpO1xuICBjb25zdCBwcm92aWRlciA9IHdlYkZ1bmN0aW9uUHJvdmlkZXIoc3RhY2spO1xuICBncmFudFRvUHJvdmlkZXIocHJvdmlkZXIsIHsgQWN0aW9uOiBbJ3MzOkxpc3RCdWNrZXRWZXJzaW9ucycsICdzMzpHZXRCdWNrZXRUYWdnaW5nJ10sIFJlc291cmNlOiBidWNrZXQuYnVja2V0QXJuIH0pO1xuICBncmFudFRvUHJvdmlkZXIocHJvdmlkZXIsIHsgQWN0aW9uOiBbJ3MzOkRlbGV0ZU9iamVjdCcsICdzMzpEZWxldGVPYmplY3RWZXJzaW9uJ10sIFJlc291cmNlOiBidWNrZXQuYXJuRm9yT2JqZWN0cygnKicpIH0pO1xuICBjb25zdCBwcm9wZXJ0aWVzOiBDb2RlQnVja2V0Q2xlYW51cFByb3BlcnRpZXMgPSB7IEJ1Y2tldE5hbWU6IGJ1Y2tldC5idWNrZXROYW1lIH07XG4gIC8vIERlcGVuZHMgb24gdGhlIGJ1Y2tldCAodGhyb3VnaCBpdHMgbmFtZSksIHNvIGl0J3MgZGVsZXRlZCwgYW5kIGVtcHRpZXMgaXQsIGp1c3QgYmVmb3JlIHRoZSBidWNrZXQuXG4gIG5ldyBDdXN0b21SZXNvdXJjZShzdGFjaywgYCR7SUR9Q2xlYW51cGAsIHtcbiAgICBzZXJ2aWNlVG9rZW46IHByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICByZXNvdXJjZVR5cGU6IENPREVfQlVDS0VUX0NMRUFOVVBfUkVTT1VSQ0VfVFlQRSxcbiAgICBwcm9wZXJ0aWVzOiB7IC4uLnByb3BlcnRpZXMgfSxcbiAgfSk7XG4gIHJldHVybiBidWNrZXQ7XG59XG4iXX0=
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { CfnResource } from 'aws-cdk-lib';
|
|
2
|
+
import type { IConstruct } from 'constructs';
|
|
3
|
+
/**
|
|
4
|
+
* Acknowledges cdk-nag AwsSolutions findings on resources this library creates, so teams that run cdk-nag don't have
|
|
5
|
+
* to acknowledge our internals. Written for both major versions, without depending on cdk-nag:
|
|
6
|
+
* - cdk-nag 3 reads CDK's `Validations.of(resource).acknowledge()`, one id per finding (`AwsSolutions::<rule>[<finding>]`);
|
|
7
|
+
* - cdk-nag 2 reads `cdk_nag` metadata, where a rule without `applies_to` covers all its findings.
|
|
8
|
+
*/
|
|
9
|
+
export declare function acknowledgeNagRules(resource: CfnResource, rules: string[], reason: string): void;
|
|
10
|
+
/**
|
|
11
|
+
* Acknowledges the IAM findings of a role or policy whose permissions are all this library's: wildcards (IAM5) and,
|
|
12
|
+
* with `managedPolicies`, AWS managed policies (IAM4). Finding ids depend on the resolved policy (logical IDs, the
|
|
13
|
+
* stack's environment), so they're computed when the app is synthesized.
|
|
14
|
+
*/
|
|
15
|
+
export declare function acknowledgeIamFindings(resource: CfnResource, reason: string, options?: {
|
|
16
|
+
managedPolicies?: boolean;
|
|
17
|
+
}): void;
|
|
18
|
+
/** Acknowledges IAM findings on every role and policy under `scope`, and the given rules on matching resources. */
|
|
19
|
+
export declare function acknowledgeNagUnder(scope: IConstruct, reason: string, rulesByType?: Record<string, string[]>): void;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.acknowledgeNagRules = acknowledgeNagRules;
|
|
37
|
+
exports.acknowledgeIamFindings = acknowledgeIamFindings;
|
|
38
|
+
exports.acknowledgeNagUnder = acknowledgeNagUnder;
|
|
39
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
40
|
+
const iam = __importStar(require("aws-cdk-lib/aws-iam"));
|
|
41
|
+
/**
|
|
42
|
+
* Acknowledges cdk-nag AwsSolutions findings on resources this library creates, so teams that run cdk-nag don't have
|
|
43
|
+
* to acknowledge our internals. Written for both major versions, without depending on cdk-nag:
|
|
44
|
+
* - cdk-nag 3 reads CDK's `Validations.of(resource).acknowledge()`, one id per finding (`AwsSolutions::<rule>[<finding>]`);
|
|
45
|
+
* - cdk-nag 2 reads `cdk_nag` metadata, where a rule without `applies_to` covers all its findings.
|
|
46
|
+
*/
|
|
47
|
+
function acknowledgeNagRules(resource, rules, reason) {
|
|
48
|
+
for (const rule of rules)
|
|
49
|
+
aws_cdk_lib_1.Validations.of(resource).acknowledge({ id: `AwsSolutions::${rule}`, reason });
|
|
50
|
+
addV2Suppressions(resource, rules, reason);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Acknowledges the IAM findings of a role or policy whose permissions are all this library's: wildcards (IAM5) and,
|
|
54
|
+
* with `managedPolicies`, AWS managed policies (IAM4). Finding ids depend on the resolved policy (logical IDs, the
|
|
55
|
+
* stack's environment), so they're computed when the app is synthesized.
|
|
56
|
+
*/
|
|
57
|
+
function acknowledgeIamFindings(resource, reason, options = {}) {
|
|
58
|
+
addV2Suppressions(resource, ['AwsSolutions-IAM5', ...(options.managedPolicies ? ['AwsSolutions-IAM4'] : [])], reason);
|
|
59
|
+
resource.node.addValidation({
|
|
60
|
+
validate: () => {
|
|
61
|
+
for (const finding of iamFindings(resource, options.managedPolicies ?? false)) {
|
|
62
|
+
aws_cdk_lib_1.Validations.of(resource).acknowledge({ id: `AwsSolutions::${finding}`, reason });
|
|
63
|
+
}
|
|
64
|
+
return [];
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/** Acknowledges IAM findings on every role and policy under `scope`, and the given rules on matching resources. */
|
|
69
|
+
function acknowledgeNagUnder(scope, reason, rulesByType = {}) {
|
|
70
|
+
for (const child of scope.node.findAll()) {
|
|
71
|
+
if (!aws_cdk_lib_1.CfnResource.isCfnResource(child))
|
|
72
|
+
continue;
|
|
73
|
+
if (child instanceof iam.CfnRole || child instanceof iam.CfnPolicy)
|
|
74
|
+
acknowledgeIamFindings(child, reason, { managedPolicies: true });
|
|
75
|
+
const rules = rulesByType[child.cfnResourceType];
|
|
76
|
+
if (rules)
|
|
77
|
+
acknowledgeNagRules(child, rules, reason);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function iamFindings(resource, managedPolicies) {
|
|
81
|
+
const stack = aws_cdk_lib_1.Stack.of(resource);
|
|
82
|
+
const documents = [];
|
|
83
|
+
const findings = [];
|
|
84
|
+
if (resource instanceof iam.CfnPolicy) {
|
|
85
|
+
documents.push(stack.resolve(resource.policyDocument));
|
|
86
|
+
}
|
|
87
|
+
else if (resource instanceof iam.CfnRole) {
|
|
88
|
+
for (const policy of stack.resolve(resource.policies) ?? [])
|
|
89
|
+
documents.push(stack.resolve(stack.resolve(policy).policyDocument));
|
|
90
|
+
if (managedPolicies) {
|
|
91
|
+
for (const arn of stack.resolve(resource.managedPolicyArns) ?? [])
|
|
92
|
+
findings.push(`AwsSolutions-IAM4[Policy::${flatten(arn)}]`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
for (const document of documents) {
|
|
96
|
+
for (const statement of document?.Statement ?? []) {
|
|
97
|
+
if (statement.Effect !== 'Allow')
|
|
98
|
+
continue;
|
|
99
|
+
for (const action of list(statement.Action))
|
|
100
|
+
if (String(action).includes('*'))
|
|
101
|
+
findings.push(`AwsSolutions-IAM5[Action::${action}]`);
|
|
102
|
+
for (const r of list(statement.Resource)) {
|
|
103
|
+
const flat = flatten(r);
|
|
104
|
+
if (flat.includes('*'))
|
|
105
|
+
findings.push(`AwsSolutions-IAM5[Resource::${flat}]`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return [...new Set(findings)];
|
|
110
|
+
}
|
|
111
|
+
/** cdk-nag's own flattening of CloudFormation references in finding ids (`utils/flatten-cfn-reference`). */
|
|
112
|
+
function flatten(node) {
|
|
113
|
+
if (node === undefined)
|
|
114
|
+
return '';
|
|
115
|
+
if (typeof node === 'string')
|
|
116
|
+
return node.replace(/\$\{/g, '<').replace(/}/g, '>');
|
|
117
|
+
if (node['Fn::Join']) {
|
|
118
|
+
const [delimiter, items] = node['Fn::Join'];
|
|
119
|
+
return items.map(flatten).join(delimiter);
|
|
120
|
+
}
|
|
121
|
+
if (node['Fn::Sub'])
|
|
122
|
+
return flatten(node['Fn::Sub']);
|
|
123
|
+
if (node['Fn::GetAtt'])
|
|
124
|
+
return `<${flatten(node['Fn::GetAtt'][0])}.${flatten(node['Fn::GetAtt'][1])}>`;
|
|
125
|
+
if (node['Fn::ImportValue'])
|
|
126
|
+
return flatten(node['Fn::ImportValue']);
|
|
127
|
+
if (node.Ref)
|
|
128
|
+
return `<${flatten(node.Ref)}>`;
|
|
129
|
+
return JSON.stringify(node);
|
|
130
|
+
}
|
|
131
|
+
function addV2Suppressions(resource, rules, reason) {
|
|
132
|
+
const existing = resource.getMetadata('cdk_nag')?.rules_to_suppress ?? [];
|
|
133
|
+
const ids = new Set(existing.map((r) => r.id));
|
|
134
|
+
resource.addMetadata('cdk_nag', { rules_to_suppress: [...existing, ...rules.filter((id) => !ids.has(id)).map((id) => ({ id, reason }))] });
|
|
135
|
+
}
|
|
136
|
+
function list(value) {
|
|
137
|
+
return value === undefined ? [] : Array.isArray(value) ? value : [value];
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ByaXZhdGUvbmFnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVUEsa0RBR0M7QUFPRCx3REFVQztBQUdELGtEQU9DO0FBeENELDZDQUE4RDtBQUM5RCx5REFBMkM7QUFHM0M7Ozs7O0dBS0c7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxRQUFxQixFQUFFLEtBQWUsRUFBRSxNQUFjO0lBQ3hGLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSztRQUFFLHlCQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxpQkFBaUIsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN4RyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQUMsUUFBcUIsRUFBRSxNQUFjLEVBQUUsVUFBeUMsRUFBRTtJQUN2SCxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3RILFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQzFCLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDYixLQUFLLE1BQU0sT0FBTyxJQUFJLFdBQVcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUM5RSx5QkFBVyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVB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RyxDQUFDO0lBQzlDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxRQUFxQixFQUFFLEtBQWUsRUFBRSxNQUFjO0lBQy9FLE1BQU0sUUFBUSxHQUFJLFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUEwRSxFQUFFLGlCQUFpQixJQUFJLEVBQUUsQ0FBQztJQUNwSixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxFQUFFLGlCQUFpQixFQUFFLENBQUMsR0FBRyxRQUFRLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdJLENBQUM7QUFFRCxTQUFTLElBQUksQ0FBQyxLQUFjO0lBQzFCLE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDM0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmblJlc291cmNlLCBTdGFjaywgVmFsaWRhdGlvbnMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgdHlwZSB7IElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBBY2tub3dsZWRnZXMgY2RrLW5hZyBBd3NTb2x1dGlvbnMgZmluZGluZ3Mgb24gcmVzb3VyY2VzIHRoaXMgbGlicmFyeSBjcmVhdGVzLCBzbyB0ZWFtcyB0aGF0IHJ1biBjZGstbmFnIGRvbid0IGhhdmVcbiAqIHRvIGFja25vd2xlZGdlIG91ciBpbnRlcm5hbHMuIFdyaXR0ZW4gZm9yIGJvdGggbWFqb3IgdmVyc2lvbnMsIHdpdGhvdXQgZGVwZW5kaW5nIG9uIGNkay1uYWc6XG4gKiAtIGNkay1uYWcgMyByZWFkcyBDREsncyBgVmFsaWRhdGlvbnMub2YocmVzb3VyY2UpLmFja25vd2xlZGdlKClgLCBvbmUgaWQgcGVyIGZpbmRpbmcgKGBBd3NTb2x1dGlvbnM6OjxydWxlPls8ZmluZGluZz5dYCk7XG4gKiAtIGNkay1uYWcgMiByZWFkcyBgY2RrX25hZ2AgbWV0YWRhdGEsIHdoZXJlIGEgcnVsZSB3aXRob3V0IGBhcHBsaWVzX3RvYCBjb3ZlcnMgYWxsIGl0cyBmaW5kaW5ncy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFja25vd2xlZGdlTmFnUnVsZXMocmVzb3VyY2U6IENmblJlc291cmNlLCBydWxlczogc3RyaW5nW10sIHJlYXNvbjogc3RyaW5nKTogdm9pZCB7XG4gIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykgVmFsaWRhdGlvbnMub2YocmVzb3VyY2UpLmFja25vd2xlZGdlKHsgaWQ6IGBBd3NTb2x1dGlvbnM6OiR7cnVsZX1gLCByZWFzb24gfSk7XG4gIGFkZFYyU3VwcHJlc3Npb25zKHJlc291cmNlLCBydWxlcywgcmVhc29uKTtcbn1cblxuLyoqXG4gKiBBY2tub3dsZWRnZXMgdGhlIElBTSBmaW5kaW5ncyBvZiBhIHJvbGUgb3IgcG9saWN5IHdob3NlIHBlcm1pc3Npb25zIGFyZSBhbGwgdGhpcyBsaWJyYXJ5J3M6IHdpbGRjYXJkcyAoSUFNNSkgYW5kLFxuICogd2l0aCBgbWFuYWdlZFBvbGljaWVzYCwgQVdTIG1hbmFnZWQgcG9saWNpZXMgKElBTTQpLiBGaW5kaW5nIGlkcyBkZXBlbmQgb24gdGhlIHJlc29sdmVkIHBvbGljeSAobG9naWNhbCBJRHMsIHRoZVxuICogc3RhY2sncyBlbnZpcm9ubWVudCksIHNvIHRoZXkncmUgY29tcHV0ZWQgd2hlbiB0aGUgYXBwIGlzIHN5bnRoZXNpemVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWNrbm93bGVkZ2VJYW1GaW5kaW5ncyhyZXNvdXJjZTogQ2ZuUmVzb3VyY2UsIHJlYXNvbjogc3RyaW5nLCBvcHRpb25zOiB7IG1hbmFnZWRQb2xpY2llcz86IGJvb2xlYW4gfSA9IHt9KTogdm9pZCB7XG4gIGFkZFYyU3VwcHJlc3Npb25zKHJlc291cmNlLCBbJ0F3c1NvbHV0aW9ucy1JQU01JywgLi4uKG9wdGlvbnMubWFuYWdlZFBvbGljaWVzID8gWydBd3NTb2x1dGlvbnMtSUFNNCddIDogW10pXSwgcmVhc29uKTtcbiAgcmVzb3VyY2Uubm9kZS5hZGRWYWxpZGF0aW9uKHtcbiAgICB2YWxpZGF0ZTogKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBmaW5kaW5nIG9mIGlhbUZpbmRpbmdzKHJlc291cmNlLCBvcHRpb25zLm1hbmFnZWRQb2xpY2llcyA/PyBmYWxzZSkpIHtcbiAgICAgICAgVmFsaWRhdGlvbnMub2YocmVzb3VyY2UpLmFja25vd2xlZGdlKHsgaWQ6IGBBd3NTb2x1dGlvbnM6OiR7ZmluZGluZ31gLCByZWFzb24gfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW107XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKiBBY2tub3dsZWRnZXMgSUFNIGZpbmRpbmdzIG9uIGV2ZXJ5IHJvbGUgYW5kIHBvbGljeSB1bmRlciBgc2NvcGVgLCBhbmQgdGhlIGdpdmVuIHJ1bGVzIG9uIG1hdGNoaW5nIHJlc291cmNlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhY2tub3dsZWRnZU5hZ1VuZGVyKHNjb3BlOiBJQ29uc3RydWN0LCByZWFzb246IHN0cmluZywgcnVsZXNCeVR5cGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9KTogdm9pZCB7XG4gIGZvciAoY29uc3QgY2hpbGQgb2Ygc2NvcGUubm9kZS5maW5kQWxsKCkpIHtcbiAgICBpZiAoIUNmblJlc291cmNlLmlzQ2ZuUmVzb3VyY2UoY2hpbGQpKSBjb250aW51ZTtcbiAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBpYW0uQ2ZuUm9sZSB8fCBjaGlsZCBpbnN0YW5jZW9mIGlhbS5DZm5Qb2xpY3kpIGFja25vd2xlZGdlSWFtRmluZGluZ3MoY2hpbGQsIHJlYXNvbiwgeyBtYW5hZ2VkUG9saWNpZXM6IHRydWUgfSk7XG4gICAgY29uc3QgcnVsZXMgPSBydWxlc0J5VHlwZVtjaGlsZC5jZm5SZXNvdXJjZVR5cGVdO1xuICAgIGlmIChydWxlcykgYWNrbm93bGVkZ2VOYWdSdWxlcyhjaGlsZCwgcnVsZXMsIHJlYXNvbik7XG4gIH1cbn1cblxuZnVuY3Rpb24gaWFtRmluZGluZ3MocmVzb3VyY2U6IENmblJlc291cmNlLCBtYW5hZ2VkUG9saWNpZXM6IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHN0YWNrID0gU3RhY2sub2YocmVzb3VyY2UpO1xuICBjb25zdCBkb2N1bWVudHM6IGFueVtdID0gW107XG4gIGNvbnN0IGZpbmRpbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAocmVzb3VyY2UgaW5zdGFuY2VvZiBpYW0uQ2ZuUG9saWN5KSB7XG4gICAgZG9jdW1lbnRzLnB1c2goc3RhY2sucmVzb2x2ZShyZXNvdXJjZS5wb2xpY3lEb2N1bWVudCkpO1xuICB9IGVsc2UgaWYgKHJlc291cmNlIGluc3RhbmNlb2YgaWFtLkNmblJvbGUpIHtcbiAgICBmb3IgKGNvbnN0IHBvbGljeSBvZiBzdGFjay5yZXNvbHZlKHJlc291cmNlLnBvbGljaWVzKSA/PyBbXSkgZG9jdW1lbnRzLnB1c2goc3RhY2sucmVzb2x2ZShzdGFjay5yZXNvbHZlKHBvbGljeSkucG9saWN5RG9jdW1lbnQpKTtcbiAgICBpZiAobWFuYWdlZFBvbGljaWVzKSB7XG4gICAgICBmb3IgKGNvbnN0IGFybiBvZiBzdGFjay5yZXNvbHZlKHJlc291cmNlLm1hbmFnZWRQb2xpY3lBcm5zKSA/PyBbXSkgZmluZGluZ3MucHVzaChgQXdzU29sdXRpb25zLUlBTTRbUG9saWN5Ojoke2ZsYXR0ZW4oYXJuKX1dYCk7XG4gICAgfVxuICB9XG4gIGZvciAoY29uc3QgZG9jdW1lbnQgb2YgZG9jdW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBzdGF0ZW1lbnQgb2YgZG9jdW1lbnQ/LlN0YXRlbWVudCA/PyBbXSkge1xuICAgICAgaWYgKHN0YXRlbWVudC5FZmZlY3QgIT09ICdBbGxvdycpIGNvbnRpbnVlO1xuICAgICAgZm9yIChjb25zdCBhY3Rpb24gb2YgbGlzdChzdGF0ZW1lbnQuQWN0aW9uKSkgaWYgKFN0cmluZyhhY3Rpb24pLmluY2x1ZGVzKCcqJykpIGZpbmRpbmdzLnB1c2goYEF3c1NvbHV0aW9ucy1JQU01W0FjdGlvbjo6JHthY3Rpb259XWApO1xuICAgICAgZm9yIChjb25zdCByIG9mIGxpc3Qoc3RhdGVtZW50LlJlc291cmNlKSkge1xuICAgICAgICBjb25zdCBmbGF0ID0gZmxhdHRlbihyKTtcbiAgICAgICAgaWYgKGZsYXQuaW5jbHVkZXMoJyonKSkgZmluZGluZ3MucHVzaChgQXdzU29sdXRpb25zLUlBTTVbUmVzb3VyY2U6OiR7ZmxhdH1dYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBbLi4ubmV3IFNldChmaW5kaW5ncyldO1xufVxuXG4vKiogY2RrLW5hZydzIG93biBmbGF0dGVuaW5nIG9mIENsb3VkRm9ybWF0aW9uIHJlZmVyZW5jZXMgaW4gZmluZGluZyBpZHMgKGB1dGlscy9mbGF0dGVuLWNmbi1yZWZlcmVuY2VgKS4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW4obm9kZTogYW55KTogc3RyaW5nIHtcbiAgaWYgKG5vZGUgPT09IHVuZGVmaW5lZCkgcmV0dXJuICcnO1xuICBpZiAodHlwZW9mIG5vZGUgPT09ICdzdHJpbmcnKSByZXR1cm4gbm9kZS5yZXBsYWNlKC9cXCRcXHsvZywgJzwnKS5yZXBsYWNlKC99L2csICc+Jyk7XG4gIGlmIChub2RlWydGbjo6Sm9pbiddKSB7XG4gICAgY29uc3QgW2RlbGltaXRlciwgaXRlbXNdID0gbm9kZVsnRm46OkpvaW4nXTtcbiAgICByZXR1cm4gaXRlbXMubWFwKGZsYXR0ZW4pLmpvaW4oZGVsaW1pdGVyKTtcbiAgfVxuICBpZiAobm9kZVsnRm46OlN1YiddKSByZXR1cm4gZmxhdHRlbihub2RlWydGbjo6U3ViJ10pO1xuICBpZiAobm9kZVsnRm46OkdldEF0dCddKSByZXR1cm4gYDwke2ZsYXR0ZW4obm9kZVsnRm46OkdldEF0dCddWzBdKX0uJHtmbGF0dGVuKG5vZGVbJ0ZuOjpHZXRBdHQnXVsxXSl9PmA7XG4gIGlmIChub2RlWydGbjo6SW1wb3J0VmFsdWUnXSkgcmV0dXJuIGZsYXR0ZW4obm9kZVsnRm46OkltcG9ydFZhbHVlJ10pO1xuICBpZiAobm9kZS5SZWYpIHJldHVybiBgPCR7ZmxhdHRlbihub2RlLlJlZil9PmA7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShub2RlKTtcbn1cblxuZnVuY3Rpb24gYWRkVjJTdXBwcmVzc2lvbnMocmVzb3VyY2U6IENmblJlc291cmNlLCBydWxlczogc3RyaW5nW10sIHJlYXNvbjogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGV4aXN0aW5nID0gKHJlc291cmNlLmdldE1ldGFkYXRhKCdjZGtfbmFnJykgYXMgeyBydWxlc190b19zdXBwcmVzcz86IHsgaWQ6IHN0cmluZzsgcmVhc29uOiBzdHJpbmcgfVtdIH0gfCB1bmRlZmluZWQpPy5ydWxlc190b19zdXBwcmVzcyA/PyBbXTtcbiAgY29uc3QgaWRzID0gbmV3IFNldChleGlzdGluZy5tYXAoKHIpID0+IHIuaWQpKTtcbiAgcmVzb3VyY2UuYWRkTWV0YWRhdGEoJ2Nka19uYWcnLCB7IHJ1bGVzX3RvX3N1cHByZXNzOiBbLi4uZXhpc3RpbmcsIC4uLnJ1bGVzLmZpbHRlcigoaWQpID0+ICFpZHMuaGFzKGlkKSkubWFwKChpZCkgPT4gKHsgaWQsIHJlYXNvbiB9KSldIH0pO1xufVxuXG5mdW5jdGlvbiBsaXN0KHZhbHVlOiB1bmtub3duKTogdW5rbm93bltdIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyBbXSA6IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUgOiBbdmFsdWVdO1xufVxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Construct } from 'constructs';
|
|
2
|
+
/**
|
|
3
|
+
* Applies the nearest property injector registered for `uniqueId` above `scope` (`PropertyInjectors.of(app).add(...)`),
|
|
4
|
+
* the same lookup aws-cdk-lib's own constructs do through their `@propertyInjectable` decorator.
|
|
5
|
+
*/
|
|
6
|
+
export declare function injectProps<T>(uniqueId: string, props: T, scope: Construct, id: string): T;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.injectProps = injectProps;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
/**
|
|
6
|
+
* Applies the nearest property injector registered for `uniqueId` above `scope` (`PropertyInjectors.of(app).add(...)`),
|
|
7
|
+
* the same lookup aws-cdk-lib's own constructs do through their `@propertyInjectable` decorator.
|
|
8
|
+
*/
|
|
9
|
+
function injectProps(uniqueId, props, scope, id) {
|
|
10
|
+
for (let c = scope; c !== undefined; c = c.node.scope) {
|
|
11
|
+
if (!aws_cdk_lib_1.PropertyInjectors.hasPropertyInjectors(c))
|
|
12
|
+
continue;
|
|
13
|
+
const injector = aws_cdk_lib_1.PropertyInjectors.of(c).for(uniqueId);
|
|
14
|
+
if (injector)
|
|
15
|
+
return injector.inject(props, { scope, id });
|
|
16
|
+
}
|
|
17
|
+
return props;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktaW5qZWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3ByaXZhdGUvcHJvcGVydHktaW5qZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBT0Esa0NBT0M7QUFkRCw2Q0FBZ0Q7QUFHaEQ7OztHQUdHO0FBQ0gsU0FBZ0IsV0FBVyxDQUFJLFFBQWdCLEVBQUUsS0FBUSxFQUFFLEtBQWdCLEVBQUUsRUFBVTtJQUNyRixLQUFLLElBQUksQ0FBQyxHQUEyQixLQUFLLEVBQUUsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM5RSxJQUFJLENBQUMsK0JBQWlCLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO1lBQUUsU0FBUztRQUN6RCxNQUFNLFFBQVEsR0FBRywrQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZELElBQUksUUFBUTtZQUFFLE9BQU8sUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvcGVydHlJbmplY3RvcnMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7IENvbnN0cnVjdCwgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIEFwcGxpZXMgdGhlIG5lYXJlc3QgcHJvcGVydHkgaW5qZWN0b3IgcmVnaXN0ZXJlZCBmb3IgYHVuaXF1ZUlkYCBhYm92ZSBgc2NvcGVgIChgUHJvcGVydHlJbmplY3RvcnMub2YoYXBwKS5hZGQoLi4uKWApLFxuICogdGhlIHNhbWUgbG9va3VwIGF3cy1jZGstbGliJ3Mgb3duIGNvbnN0cnVjdHMgZG8gdGhyb3VnaCB0aGVpciBgQHByb3BlcnR5SW5qZWN0YWJsZWAgZGVjb3JhdG9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UHJvcHM8VD4odW5pcXVlSWQ6IHN0cmluZywgcHJvcHM6IFQsIHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpOiBUIHtcbiAgZm9yIChsZXQgYzogSUNvbnN0cnVjdCB8IHVuZGVmaW5lZCA9IHNjb3BlOyBjICE9PSB1bmRlZmluZWQ7IGMgPSBjLm5vZGUuc2NvcGUpIHtcbiAgICBpZiAoIVByb3BlcnR5SW5qZWN0b3JzLmhhc1Byb3BlcnR5SW5qZWN0b3JzKGMpKSBjb250aW51ZTtcbiAgICBjb25zdCBpbmplY3RvciA9IFByb3BlcnR5SW5qZWN0b3JzLm9mKGMpLmZvcih1bmlxdWVJZCk7XG4gICAgaWYgKGluamVjdG9yKSByZXR1cm4gaW5qZWN0b3IuaW5qZWN0KHByb3BzLCB7IHNjb3BlLCBpZCB9KTtcbiAgfVxuICByZXR1cm4gcHJvcHM7XG59XG4iXX0=
|
|
@@ -42,6 +42,7 @@ const lambda = __importStar(require("aws-cdk-lib/aws-lambda"));
|
|
|
42
42
|
const logs = __importStar(require("aws-cdk-lib/aws-logs"));
|
|
43
43
|
const cr = __importStar(require("aws-cdk-lib/custom-resources"));
|
|
44
44
|
const constructs_1 = require("constructs");
|
|
45
|
+
const nag_1 = require("./nag");
|
|
45
46
|
const provider_protocol_1 = require("./provider-protocol");
|
|
46
47
|
/** The Provider framework gives up after this long and fails the deployment (with a message), before CloudFormation's own 1-hour limit. */
|
|
47
48
|
const TOTAL_TIMEOUT = aws_cdk_lib_1.Duration.minutes(55);
|
|
@@ -61,15 +62,14 @@ class DeploymentProvider extends constructs_1.Construct {
|
|
|
61
62
|
granted = new Set();
|
|
62
63
|
constructor(scope, id) {
|
|
63
64
|
super(scope, id);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
});
|
|
65
|
+
const logGroup = new logs.LogGroup(this, 'Logs', { retention: logs.RetentionDays.ONE_MONTH, removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY });
|
|
66
|
+
this.role = new iam.Role(this, 'Role', { assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com') });
|
|
67
|
+
// Its own log group only (not AWSLambdaBasicExecutionRole, which can create any group).
|
|
68
|
+
this.grant({ actions: ['logs:CreateLogStream', 'logs:PutLogEvents'], resources: [logGroup.logGroupArn] });
|
|
68
69
|
// Rollback detection: is the stack rolling back? (the provider's own stack only).
|
|
69
70
|
this.grant({ actions: ['cloudformation:DescribeStacks'], resources: [aws_cdk_lib_1.Stack.of(this).stackId] });
|
|
70
71
|
// Composite alarms are only returned with DescribeAlarms on '*'.
|
|
71
72
|
this.grant({ actions: ['cloudwatch:DescribeAlarms'], resources: ['*'] });
|
|
72
|
-
const logGroup = new logs.LogGroup(this, 'Logs', { retention: logs.RetentionDays.ONE_MONTH, removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY });
|
|
73
73
|
const handler = (name, handlerName, description) => new lambda.Function(this, name, {
|
|
74
74
|
runtime: lambda.Runtime.NODEJS_24_X,
|
|
75
75
|
architecture: lambda.Architecture.ARM_64,
|
|
@@ -90,6 +90,10 @@ class DeploymentProvider extends constructs_1.Construct {
|
|
|
90
90
|
logGroup,
|
|
91
91
|
});
|
|
92
92
|
this.serviceToken = provider.serviceToken;
|
|
93
|
+
(0, nag_1.acknowledgeIamFindings)(this.role.node.findChild('DefaultPolicy').node.defaultChild, 'The deployment handlers\' own log group, DescribeAlarms (composite alarms need *), and the revisions and endpoints of the functions they deploy');
|
|
94
|
+
(0, nag_1.acknowledgeNagUnder)(provider, 'The CDK custom resource Provider framework\'s own functions and waiter state machine', {
|
|
95
|
+
'AWS::StepFunctions::StateMachine': ['AwsSolutions-SF1', 'AwsSolutions-SF2'],
|
|
96
|
+
});
|
|
93
97
|
}
|
|
94
98
|
/**
|
|
95
99
|
* Adds a statement to the handlers' role, once. Like the shared provider's grants, they must be stable across
|
|
@@ -141,4 +145,4 @@ class TrafficShift extends constructs_1.Construct {
|
|
|
141
145
|
}
|
|
142
146
|
}
|
|
143
147
|
exports.TrafficShift = TrafficShift;
|
|
144
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhZmZpYy1zaGlmdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcml2YXRlL3RyYWZmaWMtc2hpZnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQXlDO0FBQ3pDLGdEQUFrQztBQUNsQyw2Q0FBd0Y7QUFDeEYseURBQTJDO0FBQzNDLCtEQUFpRDtBQUNqRCwyREFBNkM7QUFDN0MsaUVBQW1EO0FBQ25ELDJDQUF1QztBQUN2QywyREFBK0Y7QUFHL0YsMklBQTJJO0FBQzNJLE1BQU0sYUFBYSxHQUFHLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNDLE1BQU0sV0FBVyxHQUFHLDZCQUE2QixDQUFDO0FBRWxEOzs7O0dBSUc7QUFDSCxNQUFNLGtCQUFtQixTQUFRLHNCQUFTO0lBQ2pDLE1BQU0sQ0FBQyxFQUFFLENBQUMsS0FBZ0I7UUFDL0IsTUFBTSxLQUFLLEdBQUcsbUJBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsT0FBUSxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQW9DLElBQUksSUFBSSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDaEksQ0FBQztJQUVlLFlBQVksQ0FBUztJQUNwQixJQUFJLENBQVc7SUFDZixPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUU3QyxZQUFvQixLQUFnQixFQUFFLEVBQVU7UUFDOUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFO1lBQ3JDLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxzQkFBc0IsQ0FBQztZQUMzRCxlQUFlLEVBQUUs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Q0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDdkQsY0FBYyxFQUFFLElBQUEsd0JBQVUsRUFBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1NBQzVILENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksNEJBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ25ELFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtZQUNuQyxZQUFZLEVBQUUsK0NBQTJCO1lBQ3pDLFVBQVUsRUFBRSxFQUFFLEdBQUcsVUFBVSxFQUFFO1lBQzdCLHVGQUF1RjtZQUN2RixjQUFjLEVBQUUsc0JBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ2xDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQW5DRCxvQ0FtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdub2RlOnBhdGgnO1xuaW1wb3J0IHsgQXJuRm9ybWF0LCBDdXN0b21SZXNvdXJjZSwgRHVyYXRpb24sIFJlbW92YWxQb2xpY3ksIFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgKiBhcyBjciBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgVFJBRkZJQ19TSElGVF9SRVNPVVJDRV9UWVBFLCB0eXBlIFRyYWZmaWNTaGlmdFByb3BlcnRpZXMgfSBmcm9tICcuL3Byb3ZpZGVyLXByb3RvY29sJztcbmltcG9ydCB0eXBlIHsgV2ViRnVuY3Rpb25EZXBsb3ltZW50IH0gZnJvbSAnLi4vd2ViLWZ1bmN0aW9uLWRlcGxveW1lbnQnO1xuXG4vKiogVGhlIFByb3ZpZGVyIGZyYW1ld29yayBnaXZlcyB1cCBhZnRlciB0aGlzIGxvbmcgYW5kIGZhaWxzIHRoZSBkZXBsb3ltZW50ICh3aXRoIGEgbWVzc2FnZSksIGJlZm9yZSBDbG91ZEZvcm1hdGlvbidzIG93biAxLWhvdXIgbGltaXQuICovXG5jb25zdCBUT1RBTF9USU1FT1VUID0gRHVyYXRpb24ubWludXRlcyg1NSk7XG5jb25zdCBQUk9WSURFUl9JRCA9ICdMYW1iZGFXZWJEZXBsb3ltZW50UHJvdmlkZXInO1xuXG4vKipcbiAqIFRoZSBzdGFjaydzIGRlcGxveW1lbnQgcHJvdmlkZXI6IGEgQ0RLIFByb3ZpZGVyIGZyYW1ld29yayAoYSBTdGVwIEZ1bmN0aW9ucyB3YWl0ZXIpIGFyb3VuZCBgb25FdmVudGAgYW5kIGBpc0NvbXBsZXRlYFxuICogZnJvbSBgaGFuZGxlcnMvd2ViLWZ1bmN0aW9uLWRlcGxveW1lbnRgLCBiZWNhdXNlIGEgY2FuYXJ5IG9yIGxpbmVhciBkZXBsb3ltZW50IGNhbiBydW4gZm9yIHVwIHRvIGFuIGhvdXIuXG4gKiBPbmUgcGVyIHN0YWNrLCBzaGFyZWQgYnkgZXZlcnkgZW5kcG9pbnQgdGhhdCBkZXBsb3lzIGluIHN0ZXBzLlxuICovXG5jbGFzcyBEZXBsb3ltZW50UHJvdmlkZXIgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgc3RhdGljIG9mKHNjb3BlOiBDb25zdHJ1Y3QpOiBEZXBsb3ltZW50UHJvdmlkZXIge1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuICAgIHJldHVybiAoc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoUFJPVklERVJfSUQpIGFzIERlcGxveW1lbnRQcm92aWRlciB8IHVuZGVmaW5lZCkgPz8gbmV3IERlcGxveW1lbnRQcm92aWRlcihzdGFjaywgUFJPVklERVJfSUQpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IHNlcnZpY2VUb2tlbjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHJvbGU6IGlhbS5Sb2xlO1xuICBwcml2YXRlIHJlYWRvbmx5IGdyYW50ZWQgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIHRoaXMucm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgbWFuYWdlZFBvbGljaWVzOiBbaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKCdzZXJ2aWNlLXJvbGUvQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlJyldLFxuICAgIH0pO1xuICAgIC8vIFJvbGxiYWNrIGRldGVjdGlvbjogaXMgdGhlIHN0YWNrIHJvbGxpbmcgYmFjaz8gKHRoZSBwcm92aWRlcidzIG93biBzdGFjayBvbmx5KS5cbiAgICB0aGlzLmdyYW50KHsgYWN0aW9uczogWydjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrcyddLCByZXNvdXJjZXM6IFtTdGFjay5vZih0aGlzKS5zdGFja0lkXSB9KTtcbiAgICAvLyBDb21wb3NpdGUgYWxhcm1zIGFyZSBvbmx5IHJldHVybmVkIHdpdGggRGVzY3JpYmVBbGFybXMgb24gJyonLlxuICAgIHRoaXMuZ3JhbnQoeyBhY3Rpb25zOiBbJ2Nsb3Vkd2F0Y2g6RGVzY3JpYmVBbGFybXMnXSwgcmVzb3VyY2VzOiBbJyonXSB9KTtcblxuICAgIGNvbnN0IGxvZ0dyb3VwID0gbmV3IGxvZ3MuTG9nR3JvdXAodGhpcywgJ0xvZ3MnLCB7IHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9NT05USCwgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZIH0pO1xuICAgIGNvbnN0IGhhbmRsZXIgPSAobmFtZTogc3RyaW5nLCBoYW5kbGVyTmFtZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nKSA9PiBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsIG5hbWUsIHtcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18yNF9YLFxuICAgICAgYXJjaGl0ZWN0dXJlOiBsYW1iZGEuQXJjaGl0ZWN0dXJlLkFSTV82NCxcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCAnLi4nLCAnYXNzZXRzJywgJ3dlYi1mdW5jdGlvbi1kZXBsb3ltZW50JykpLFxuICAgICAgaGFuZGxlcjogYGluZGV4LiR7aGFuZGxlck5hbWV9YCxcbiAgICAgIHJvbGU6IHRoaXMucm9sZSxcbiAgICAgIC8vIGlzQ29tcGxldGUgd2FpdHMgdXAgdG8gNSBtaW51dGVzIGZvciBhIHJlc3RvcmUgdG8gcmVhY2ggZXZlcnkgcmVnaW9uIGJlZm9yZSBmYWlsaW5nIHRoZSBkZXBsb3ltZW50LlxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcyg3KSxcbiAgICAgIG1lbW9yeVNpemU6IDI1NixcbiAgICAgIGxvZ0dyb3VwLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgfSk7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgY3IuUHJvdmlkZXIodGhpcywgJ1Byb3ZpZGVyJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IGhhbmRsZXIoJ09uRXZlbnQnLCAnb25FdmVudCcsICdTdGFydHMgY2FuYXJ5IGFuZCBsaW5lYXIgZGVwbG95bWVudHMgb2YgTGFtYmRhIFdlYiBGdW5jdGlvbiBlbmRwb2ludHMnKSxcbiAgICAgIGlzQ29tcGxldGVIYW5kbGVyOiBoYW5kbGVyKCdJc0NvbXBsZXRlJywgJ2lzQ29tcGxldGUnLCAnTW92ZXMgTGFtYmRhIFdlYiBGdW5jdGlvbiBlbmRwb2ludCB0cmFmZmljIHN0ZXAgYnkgc3RlcCBhbmQgd2F0Y2hlcyBhbGFybXMnKSxcbiAgICAgIHF1ZXJ5SW50ZXJ2YWw6IER1cmF0aW9uLnNlY29uZHMoMTUpLFxuICAgICAgdG90YWxUaW1lb3V0OiBUT1RBTF9USU1FT1VULFxuICAgICAgbG9nR3JvdXAsXG4gICAgfSk7XG4gICAgdGhpcy5zZXJ2aWNlVG9rZW4gPSBwcm92aWRlci5zZXJ2aWNlVG9rZW47XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHN0YXRlbWVudCB0byB0aGUgaGFuZGxlcnMnIHJvbGUsIG9uY2UuIExpa2UgdGhlIHNoYXJlZCBwcm92aWRlcidzIGdyYW50cywgdGhleSBtdXN0IGJlIHN0YWJsZSBhY3Jvc3NcbiAgICogdXBkYXRlcyAocHJlZml4ZXMsIG5vdCBuYW1lcyB0aGF0IGNoYW5nZSkgYW5kIG5ldmVyIHJlZmVyZW5jZSBhdHRyaWJ1dGVzIG9mIHJlc291cmNlcyB0aGF0IHVzZSB0aGUgcHJvdmlkZXIuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnQoc3RhdGVtZW50OiB7IGFjdGlvbnM6IHN0cmluZ1tdOyByZXNvdXJjZXM6IHN0cmluZ1tdIH0pOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSBKU09OLnN0cmluZ2lmeShTdGFjay5vZih0aGlzKS5yZXNvbHZlKHN0YXRlbWVudCkpO1xuICAgIGlmICh0aGlzLmdyYW50ZWQuaGFzKGtleSkpIHJldHVybjtcbiAgICB0aGlzLmdyYW50ZWQuYWRkKGtleSk7XG4gICAgdGhpcy5yb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHN0YXRlbWVudCkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhZmZpY1NoaWZ0UHJvcHMge1xuICAvKiogTGl0ZXJhbCBmdW5jdGlvbiBuYW1lLCBmb3Igc3RhYmxlIElBTSBncmFudHMuICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBmdW5jdGlvbkFybjogc3RyaW5nO1xuICByZWFkb25seSBlbmRwb2ludE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcmV2aXNpb25JZDogc3RyaW5nO1xuICByZWFkb25seSBkZXBsb3ltZW50OiBXZWJGdW5jdGlvbkRlcGxveW1lbnQ7XG4gIC8qKiBBUk5zIG9mIGFsYXJtcyB0aGUgZW5kcG9pbnQgY3JlYXRlZCAoYHJvbGxiYWNrT25gKSwgd2F0Y2hlZCB3aXRoIHRoZSBkZXBsb3ltZW50J3Mgb3duIGBhbGFybXNgLiAqL1xuICByZWFkb25seSBhbGFybUFybnM/OiBzdHJpbmdbXTtcbiAgLyoqIFRoZSBlbmRwb2ludCdzIG90aGVyIHNldHRpbmdzOiBhbnkgY2hhbmdlIG1ha2VzIHRoZSBzaGlmdCBydW4sIHNvIGl0IGNhbiByZS1jaGVjayB0aGUgdHJhZmZpYyBiZWZvcmUgQ2xvdWRGb3JtYXRpb24gd3JpdGVzIGl0LiAqL1xuICByZWFkb25seSBlbmRwb2ludENvbmZpZzogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBNb3ZlcyBhbiBlbmRwb2ludCdzIHRyYWZmaWMgdG8gYHJldmlzaW9uSWRgIGluIHN0ZXBzIGJlZm9yZSBDbG91ZEZvcm1hdGlvbiB1cGRhdGVzIHRoZSBlbmRwb2ludCAod2hpY2ggbXVzdCBkZXBlbmQgb24gaXQpLlxuICovXG5leHBvcnQgY2xhc3MgVHJhZmZpY1NoaWZ0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBDdXN0b21SZXNvdXJjZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVHJhZmZpY1NoaWZ0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBEZXBsb3ltZW50UHJvdmlkZXIub2YodGhpcyk7XG4gICAgY29uc3QgZnVuY3Rpb25Bcm4gPSBzdGFjay5mb3JtYXRBcm4oe1xuICAgICAgc2VydmljZTogJ2xhbWJkYScsIHJlc291cmNlOiAnd2ViLWZ1bmN0aW9uJywgcmVzb3VyY2VOYW1lOiBwcm9wcy5mdW5jdGlvbk5hbWUsIGFybkZvcm1hdDogQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG4gICAgLy8gU3RhYmxlIGdyYW50IChzZWUgZ3JhbnRUb1Byb3ZpZGVyKTogZXZlcnkgZW5kcG9pbnQgYW5kIHJldmlzaW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAgICBwcm92aWRlci5ncmFudCh7XG4gICAgICBhY3Rpb25zOiBbJ2xhbWJkYTpHZXRXZWJGdW5jdGlvbkVuZHBvaW50JywgJ2xhbWJkYTpVcGRhdGVXZWJGdW5jdGlvbkVuZHBvaW50J10sXG4gICAgICByZXNvdXJjZXM6IFtmdW5jdGlvbkFybiwgYCR7ZnVuY3Rpb25Bcm59L2VuZHBvaW50LypgLCBgJHtmdW5jdGlvbkFybn0vcmV2aXNpb24vKmBdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGVwbG95bWVudCA9IHByb3BzLmRlcGxveW1lbnQ7XG4gICAgY29uc3QgYWxhcm1Bcm5zID0gWy4uLmRlcGxveW1lbnQuX2FsYXJtcy5tYXAoKGEpID0+IGEuYWxhcm1Bcm4pLCAuLi4ocHJvcHMuYWxhcm1Bcm5zID8/IFtdKV07XG4gICAgY29uc3QgcHJvcGVydGllczogVHJhZmZpY1NoaWZ0UHJvcGVydGllcyA9IHtcbiAgICAgIEZ1bmN0aW9uQXJuOiBwcm9wcy5mdW5jdGlvbkFybixcbiAgICAgIEVuZHBvaW50TmFtZTogcHJvcHMuZW5kcG9pbnROYW1lLFxuICAgICAgUmV2aXNpb25JZDogcHJvcHMucmV2aXNpb25JZCxcbiAgICAgIFN0ZXBzOiBkZXBsb3ltZW50Ll9zdGVwcy5qb2luKCcsJyksXG4gICAgICBXYWl0U2Vjb25kczogU3RyaW5nKGRlcGxveW1lbnQuX3dhaXRTZWNvbmRzKSxcbiAgICAgIEFsYXJtQXJuczogYWxhcm1Bcm5zLmxlbmd0aCA+IDAgPyBhbGFybUFybnMgOiB1bmRlZmluZWQsXG4gICAgICBFbmRwb2ludENvbmZpZzogY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKEpTT04uc3RyaW5naWZ5KHN0YWNrLnJlc29sdmUocHJvcHMuZW5kcG9pbnRDb25maWcpKSkuZGlnZXN0KCdoZXgnKS5zbGljZSgwLCAxNiksXG4gICAgfTtcbiAgICB0aGlzLnJlc291cmNlID0gbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogcHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgcmVzb3VyY2VUeXBlOiBUUkFGRklDX1NISUZUX1JFU09VUkNFX1RZUEUsXG4gICAgICBwcm9wZXJ0aWVzOiB7IC4uLnByb3BlcnRpZXMgfSxcbiAgICAgIC8vIENsb3VkRm9ybWF0aW9uJ3MgbWF4aW11bTsgdGhlIHByb3ZpZGVyIGZhaWxzIHRoZSBkZXBsb3ltZW50IGl0c2VsZiBhZnRlciA1NSBtaW51dGVzLlxuICAgICAgc2VydmljZVRpbWVvdXQ6IER1cmF0aW9uLmhvdXJzKDEpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhZmZpYy1zaGlmdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcml2YXRlL3RyYWZmaWMtc2hpZnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQXlDO0FBQ3pDLGdEQUFrQztBQUNsQyw2Q0FBMEc7QUFDMUcseURBQTJDO0FBQzNDLCtEQUFpRDtBQUNqRCwyREFBNkM7QUFDN0MsaUVBQW1EO0FBQ25ELDJDQUF1QztBQUN2QywrQkFBb0U7QUFDcEUsMkRBQStGO0FBRy9GLDJJQUEySTtBQUMzSSxNQUFNLGFBQWEsR0FBRyxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzQyxNQUFNLFdBQVcsR0FBRyw2QkFBNkIsQ0FBQztBQUVsRDs7OztHQUlHO0FBQ0gsTUFBTSxrQkFBbUIsU0FBUSxzQkFBUztJQUNqQyxNQUFNLENBQUMsRUFBRSxDQUFDLEtBQWdCO1FBQy9CLE1BQU0sS0FBSyxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLE9BQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFvQyxJQUFJLElBQUksa0JBQWtCLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ2hJLENBQUM7SUFFZSxZQUFZLENBQVM7SUFDcEIsSUFBSSxDQUFXO0lBQ2YsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7SUFFN0MsWUFBb0IsS0FBZ0IsRUFBRSxFQUFVO1FBQzlDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLDJCQUFhLENB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LEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0YsTUFBTSxVQUFVLEdBQTJCO1lBQ3pDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLEtBQUssRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDbEMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO1lBQzVDLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ3ZELGNBQWMsRUFBRSxJQUFBLHdCQUFVLEVBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztTQUM1SCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLDRCQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNuRCxZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVk7WUFDbkMsWUFBWSxFQUFFLCtDQUEyQjtZQUN6QyxVQUFVLEVBQUUsRUFBRSxHQUFHLFVBQVUsRUFBRTtZQUM3Qix1RkFBdUY7WUFDdkYsY0FBYyxFQUFFLHNCQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztTQUNsQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFuQ0Qsb0NBbUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlSGFzaCB9IGZyb20gJ25vZGU6Y3J5cHRvJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IEFybkZvcm1hdCwgdHlwZSBDZm5SZXNvdXJjZSwgQ3VzdG9tUmVzb3VyY2UsIER1cmF0aW9uLCBSZW1vdmFsUG9saWN5LCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgY3IgZnJvbSAnYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGFja25vd2xlZGdlSWFtRmluZGluZ3MsIGFja25vd2xlZGdlTmFnVW5kZXIgfSBmcm9tICcuL25hZyc7XG5pbXBvcnQgeyBUUkFGRklDX1NISUZUX1JFU09VUkNFX1RZUEUsIHR5cGUgVHJhZmZpY1NoaWZ0UHJvcGVydGllcyB9IGZyb20gJy4vcHJvdmlkZXItcHJvdG9jb2wnO1xuaW1wb3J0IHR5cGUgeyBXZWJGdW5jdGlvbkRlcGxveW1lbnQgfSBmcm9tICcuLi93ZWItZnVuY3Rpb24tZGVwbG95bWVudCc7XG5cbi8qKiBUaGUgUHJvdmlkZXIgZnJhbWV3b3JrIGdpdmVzIHVwIGFmdGVyIHRoaXMgbG9uZyBhbmQgZmFpbHMgdGhlIGRlcGxveW1lbnQgKHdpdGggYSBtZXNzYWdlKSwgYmVmb3JlIENsb3VkRm9ybWF0aW9uJ3Mgb3duIDEtaG91ciBsaW1pdC4gKi9cbmNvbnN0IFRPVEFMX1RJTUVPVVQgPSBEdXJhdGlvbi5taW51dGVzKDU1KTtcbmNvbnN0IFBST1ZJREVSX0lEID0gJ0xhbWJkYVdlYkRlcGxveW1lbnRQcm92aWRlcic7XG5cbi8qKlxuICogVGhlIHN0YWNrJ3MgZGVwbG95bWVudCBwcm92aWRlcjogYSBDREsgUHJvdmlkZXIgZnJhbWV3b3JrIChhIFN0ZXAgRnVuY3Rpb25zIHdhaXRlcikgYXJvdW5kIGBvbkV2ZW50YCBhbmQgYGlzQ29tcGxldGVgXG4gKiBmcm9tIGBoYW5kbGVycy93ZWItZnVuY3Rpb24tZGVwbG95bWVudGAsIGJlY2F1c2UgYSBjYW5hcnkgb3IgbGluZWFyIGRlcGxveW1lbnQgY2FuIHJ1biBmb3IgdXAgdG8gYW4gaG91ci5cbiAqIE9uZSBwZXIgc3RhY2ssIHNoYXJlZCBieSBldmVyeSBlbmRwb2ludCB0aGF0IGRlcGxveXMgaW4gc3RlcHMuXG4gKi9cbmNsYXNzIERlcGxveW1lbnRQcm92aWRlciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyBzdGF0aWMgb2Yoc2NvcGU6IENvbnN0cnVjdCk6IERlcGxveW1lbnRQcm92aWRlciB7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSk7XG4gICAgcmV0dXJuIChzdGFjay5ub2RlLnRyeUZpbmRDaGlsZChQUk9WSURFUl9JRCkgYXMgRGVwbG95bWVudFByb3ZpZGVyIHwgdW5kZWZpbmVkKSA/PyBuZXcgRGVwbG95bWVudFByb3ZpZGVyKHN0YWNrLCBQUk9WSURFUl9JRCk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZVRva2VuOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcm9sZTogaWFtLlJvbGU7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ3JhbnRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgY29uc3QgbG9nR3JvdXAgPSBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCAnTG9ncycsIHsgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuT05FX01PTlRILCByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1kgfSk7XG4gICAgdGhpcy5yb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsICdSb2xlJywgeyBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnbGFtYmRhLmFtYXpvbmF3cy5jb20nKSB9KTtcbiAgICAvLyBJdHMgb3duIGxvZyBncm91cCBvbmx5IChub3QgQVdTTGFtYmRhQmFzaWNFeGVjdXRpb25Sb2xlLCB3aGljaCBjYW4gY3JlYXRlIGFueSBncm91cCkuXG4gICAgdGhpcy5ncmFudCh7IGFjdGlvbnM6IFsnbG9nczpDcmVhdGVMb2dTdHJlYW0nLCAnbG9nczpQdXRMb2dFdmVudHMnXSwgcmVzb3VyY2VzOiBbbG9nR3JvdXAubG9nR3JvdXBBcm5dIH0pO1xuICAgIC8vIFJvbGxiYWNrIGRldGVjdGlvbjogaXMgdGhlIHN0YWNrIHJvbGxpbmcgYmFjaz8gKHRoZSBwcm92aWRlcidzIG93biBzdGFjayBvbmx5KS5cbiAgICB0aGlzLmdyYW50KHsgYWN0aW9uczogWydjbG91ZGZvcm1hdGlvbjpEZXNjcmliZVN0YWNrcyddLCByZXNvdXJjZXM6IFtTdGFjay5vZih0aGlzKS5zdGFja0lkXSB9KTtcbiAgICAvLyBDb21wb3NpdGUgYWxhcm1zIGFyZSBvbmx5IHJldHVybmVkIHdpdGggRGVzY3JpYmVBbGFybXMgb24gJyonLlxuICAgIHRoaXMuZ3JhbnQoeyBhY3Rpb25zOiBbJ2Nsb3Vkd2F0Y2g6RGVzY3JpYmVBbGFybXMnXSwgcmVzb3VyY2VzOiBbJyonXSB9KTtcbiAgICBjb25zdCBoYW5kbGVyID0gKG5hbWU6IHN0cmluZywgaGFuZGxlck5hbWU6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZykgPT4gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCBuYW1lLCB7XG4gICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjRfWCxcbiAgICAgIGFyY2hpdGVjdHVyZTogbGFtYmRhLkFyY2hpdGVjdHVyZS5BUk1fNjQsXG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ2Fzc2V0cycsICd3ZWItZnVuY3Rpb24tZGVwbG95bWVudCcpKSxcbiAgICAgIGhhbmRsZXI6IGBpbmRleC4ke2hhbmRsZXJOYW1lfWAsXG4gICAgICByb2xlOiB0aGlzLnJvbGUsXG4gICAgICAvLyBpc0NvbXBsZXRlIHdhaXRzIHVwIHRvIDUgbWludXRlcyBmb3IgYSByZXN0b3JlIHRvIHJlYWNoIGV2ZXJ5IHJlZ2lvbiBiZWZvcmUgZmFpbGluZyB0aGUgZGVwbG95bWVudC5cbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoNyksXG4gICAgICBtZW1vcnlTaXplOiAyNTYsXG4gICAgICBsb2dHcm91cCxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgIH0pO1xuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IGNyLlByb3ZpZGVyKHRoaXMsICdQcm92aWRlcicsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiBoYW5kbGVyKCdPbkV2ZW50JywgJ29uRXZlbnQnLCAnU3RhcnRzIGNhbmFyeSBhbmQgbGluZWFyIGRlcGxveW1lbnRzIG9mIExhbWJkYSBXZWIgRnVuY3Rpb24gZW5kcG9pbnRzJyksXG4gICAgICBpc0NvbXBsZXRlSGFuZGxlcjogaGFuZGxlcignSXNDb21wbGV0ZScsICdpc0NvbXBsZXRlJywgJ01vdmVzIExhbWJkYSBXZWIgRnVuY3Rpb24gZW5kcG9pbnQgdHJhZmZpYyBzdGVwIGJ5IHN0ZXAgYW5kIHdhdGNoZXMgYWxhcm1zJyksXG4gICAgICBxdWVyeUludGVydmFsOiBEdXJhdGlvbi5zZWNvbmRzKDE1KSxcbiAgICAgIHRvdGFsVGltZW91dDogVE9UQUxfVElNRU9VVCxcbiAgICAgIGxvZ0dyb3VwLFxuICAgIH0pO1xuICAgIHRoaXMuc2VydmljZVRva2VuID0gcHJvdmlkZXIuc2VydmljZVRva2VuO1xuXG4gICAgYWNrbm93bGVkZ2VJYW1GaW5kaW5ncyh0aGlzLnJvbGUubm9kZS5maW5kQ2hpbGQoJ0RlZmF1bHRQb2xpY3knKS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBDZm5SZXNvdXJjZSxcbiAgICAgICdUaGUgZGVwbG95bWVudCBoYW5kbGVyc1xcJyBvd24gbG9nIGdyb3VwLCBEZXNjcmliZUFsYXJtcyAoY29tcG9zaXRlIGFsYXJtcyBuZWVkICopLCBhbmQgdGhlIHJldmlzaW9ucyBhbmQgZW5kcG9pbnRzIG9mIHRoZSBmdW5jdGlvbnMgdGhleSBkZXBsb3knKTtcbiAgICBhY2tub3dsZWRnZU5hZ1VuZGVyKHByb3ZpZGVyLCAnVGhlIENESyBjdXN0b20gcmVzb3VyY2UgUHJvdmlkZXIgZnJhbWV3b3JrXFwncyBvd24gZnVuY3Rpb25zIGFuZCB3YWl0ZXIgc3RhdGUgbWFjaGluZScsIHtcbiAgICAgICdBV1M6OlN0ZXBGdW5jdGlvbnM6OlN0YXRlTWFjaGluZSc6IFsnQXdzU29sdXRpb25zLVNGMScsICdBd3NTb2x1dGlvbnMtU0YyJ10sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHN0YXRlbWVudCB0byB0aGUgaGFuZGxlcnMnIHJvbGUsIG9uY2UuIExpa2UgdGhlIHNoYXJlZCBwcm92aWRlcidzIGdyYW50cywgdGhleSBtdXN0IGJlIHN0YWJsZSBhY3Jvc3NcbiAgICogdXBkYXRlcyAocHJlZml4ZXMsIG5vdCBuYW1lcyB0aGF0IGNoYW5nZSkgYW5kIG5ldmVyIHJlZmVyZW5jZSBhdHRyaWJ1dGVzIG9mIHJlc291cmNlcyB0aGF0IHVzZSB0aGUgcHJvdmlkZXIuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnQoc3RhdGVtZW50OiB7IGFjdGlvbnM6IHN0cmluZ1tdOyByZXNvdXJjZXM6IHN0cmluZ1tdIH0pOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSBKU09OLnN0cmluZ2lmeShTdGFjay5vZih0aGlzKS5yZXNvbHZlKHN0YXRlbWVudCkpO1xuICAgIGlmICh0aGlzLmdyYW50ZWQuaGFzKGtleSkpIHJldHVybjtcbiAgICB0aGlzLmdyYW50ZWQuYWRkKGtleSk7XG4gICAgdGhpcy5yb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHN0YXRlbWVudCkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhZmZpY1NoaWZ0UHJvcHMge1xuICAvKiogTGl0ZXJhbCBmdW5jdGlvbiBuYW1lLCBmb3Igc3RhYmxlIElBTSBncmFudHMuICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uTmFtZTogc3RyaW5nO1xuICByZWFkb25seSBmdW5jdGlvbkFybjogc3RyaW5nO1xuICByZWFkb25seSBlbmRwb2ludE5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcmV2aXNpb25JZDogc3RyaW5nO1xuICByZWFkb25seSBkZXBsb3ltZW50OiBXZWJGdW5jdGlvbkRlcGxveW1lbnQ7XG4gIC8qKiBBUk5zIG9mIGFsYXJtcyB0aGUgZW5kcG9pbnQgY3JlYXRlZCAoYHJvbGxiYWNrT25gKSwgd2F0Y2hlZCB3aXRoIHRoZSBkZXBsb3ltZW50J3Mgb3duIGBhbGFybXNgLiAqL1xuICByZWFkb25seSBhbGFybUFybnM/OiBzdHJpbmdbXTtcbiAgLyoqIFRoZSBlbmRwb2ludCdzIG90aGVyIHNldHRpbmdzOiBhbnkgY2hhbmdlIG1ha2VzIHRoZSBzaGlmdCBydW4sIHNvIGl0IGNhbiByZS1jaGVjayB0aGUgdHJhZmZpYyBiZWZvcmUgQ2xvdWRGb3JtYXRpb24gd3JpdGVzIGl0LiAqL1xuICByZWFkb25seSBlbmRwb2ludENvbmZpZzogdW5rbm93bjtcbn1cblxuLyoqXG4gKiBNb3ZlcyBhbiBlbmRwb2ludCdzIHRyYWZmaWMgdG8gYHJldmlzaW9uSWRgIGluIHN0ZXBzIGJlZm9yZSBDbG91ZEZvcm1hdGlvbiB1cGRhdGVzIHRoZSBlbmRwb2ludCAod2hpY2ggbXVzdCBkZXBlbmQgb24gaXQpLlxuICovXG5leHBvcnQgY2xhc3MgVHJhZmZpY1NoaWZ0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBDdXN0b21SZXNvdXJjZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVHJhZmZpY1NoaWZ0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG4gICAgY29uc3QgcHJvdmlkZXIgPSBEZXBsb3ltZW50UHJvdmlkZXIub2YodGhpcyk7XG4gICAgY29uc3QgZnVuY3Rpb25Bcm4gPSBzdGFjay5mb3JtYXRBcm4oe1xuICAgICAgc2VydmljZTogJ2xhbWJkYScsIHJlc291cmNlOiAnd2ViLWZ1bmN0aW9uJywgcmVzb3VyY2VOYW1lOiBwcm9wcy5mdW5jdGlvbk5hbWUsIGFybkZvcm1hdDogQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG4gICAgLy8gU3RhYmxlIGdyYW50IChzZWUgZ3JhbnRUb1Byb3ZpZGVyKTogZXZlcnkgZW5kcG9pbnQgYW5kIHJldmlzaW9uIG9mIHRoZSBmdW5jdGlvbi5cbiAgICBwcm92aWRlci5ncmFudCh7XG4gICAgICBhY3Rpb25zOiBbJ2xhbWJkYTpHZXRXZWJGdW5jdGlvbkVuZHBvaW50JywgJ2xhbWJkYTpVcGRhdGVXZWJGdW5jdGlvbkVuZHBvaW50J10sXG4gICAgICByZXNvdXJjZXM6IFtmdW5jdGlvbkFybiwgYCR7ZnVuY3Rpb25Bcm59L2VuZHBvaW50LypgLCBgJHtmdW5jdGlvbkFybn0vcmV2aXNpb24vKmBdLFxuICAgIH0pO1xuXG4gICAgY29uc3QgZGVwbG95bWVudCA9IHByb3BzLmRlcGxveW1lbnQ7XG4gICAgY29uc3QgYWxhcm1Bcm5zID0gWy4uLmRlcGxveW1lbnQuX2FsYXJtcy5tYXAoKGEpID0+IGEuYWxhcm1Bcm4pLCAuLi4ocHJvcHMuYWxhcm1Bcm5zID8/IFtdKV07XG4gICAgY29uc3QgcHJvcGVydGllczogVHJhZmZpY1NoaWZ0UHJvcGVydGllcyA9IHtcbiAgICAgIEZ1bmN0aW9uQXJuOiBwcm9wcy5mdW5jdGlvbkFybixcbiAgICAgIEVuZHBvaW50TmFtZTogcHJvcHMuZW5kcG9pbnROYW1lLFxuICAgICAgUmV2aXNpb25JZDogcHJvcHMucmV2aXNpb25JZCxcbiAgICAgIFN0ZXBzOiBkZXBsb3ltZW50Ll9zdGVwcy5qb2luKCcsJyksXG4gICAgICBXYWl0U2Vjb25kczogU3RyaW5nKGRlcGxveW1lbnQuX3dhaXRTZWNvbmRzKSxcbiAgICAgIEFsYXJtQXJuczogYWxhcm1Bcm5zLmxlbmd0aCA+IDAgPyBhbGFybUFybnMgOiB1bmRlZmluZWQsXG4gICAgICBFbmRwb2ludENvbmZpZzogY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKEpTT04uc3RyaW5naWZ5KHN0YWNrLnJlc29sdmUocHJvcHMuZW5kcG9pbnRDb25maWcpKSkuZGlnZXN0KCdoZXgnKS5zbGljZSgwLCAxNiksXG4gICAgfTtcbiAgICB0aGlzLnJlc291cmNlID0gbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogcHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgcmVzb3VyY2VUeXBlOiBUUkFGRklDX1NISUZUX1JFU09VUkNFX1RZUEUsXG4gICAgICBwcm9wZXJ0aWVzOiB7IC4uLnByb3BlcnRpZXMgfSxcbiAgICAgIC8vIENsb3VkRm9ybWF0aW9uJ3MgbWF4aW11bTsgdGhlIHByb3ZpZGVyIGZhaWxzIHRoZSBkZXBsb3ltZW50IGl0c2VsZiBhZnRlciA1NSBtaW51dGVzLlxuICAgICAgc2VydmljZVRpbWVvdXQ6IER1cmF0aW9uLmhvdXJzKDEpLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -11,7 +11,7 @@ const MAX_STEPS = 20;
|
|
|
11
11
|
* How an endpoint moves its traffic to a new revision.
|
|
12
12
|
*/
|
|
13
13
|
class WebFunctionDeployment {
|
|
14
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionDeployment", version: "0.1.
|
|
14
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionDeployment", version: "0.1.10" };
|
|
15
15
|
/**
|
|
16
16
|
* All traffic moves to the new revision at once, as soon as it's ready (the default).
|
|
17
17
|
*/
|
|
@@ -53,7 +53,7 @@ const web_function_grants_1 = require("./web-function-grants");
|
|
|
53
53
|
* Endpoints are created only through `WebFunction`, which owns their log groups in every region, so the constructor is private.
|
|
54
54
|
*/
|
|
55
55
|
class WebFunctionEndpoint extends constructs_1.Construct {
|
|
56
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionEndpoint", version: "0.1.
|
|
56
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionEndpoint", version: "0.1.10" };
|
|
57
57
|
/**
|
|
58
58
|
* Creates an endpoint of a Web Function. Used by `WebFunction`.
|
|
59
59
|
*
|
|
@@ -42,7 +42,7 @@ const iam = __importStar(require("aws-cdk-lib/aws-iam"));
|
|
|
42
42
|
class WebFunctionGrants {
|
|
43
43
|
endpointArns;
|
|
44
44
|
webFunction;
|
|
45
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionGrants", version: "0.1.
|
|
45
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionGrants", version: "0.1.10" };
|
|
46
46
|
/**
|
|
47
47
|
* @internal
|
|
48
48
|
*/
|
|
@@ -54,7 +54,7 @@ const OPT_IN_REGIONS = [
|
|
|
54
54
|
* and only your distribution may call the endpoint. `new WebFunctionOrigin(endpoint)` is for a public (`NONE`) endpoint.
|
|
55
55
|
*/
|
|
56
56
|
class WebFunctionOrigin extends cloudfront.OriginBase {
|
|
57
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionOrigin", version: "0.1.
|
|
57
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionOrigin", version: "0.1.10" };
|
|
58
58
|
/**
|
|
59
59
|
* An origin for an `AWS_IAM` endpoint, with origin access control: CloudFront signs every request to the endpoint
|
|
60
60
|
* (`always-amz-auth`, which keeps the viewer's `Authorization` header for your application), and the function's
|
|
@@ -11,7 +11,7 @@ const constructs_1 = require("constructs");
|
|
|
11
11
|
* only revisions within `revisionRetention`, or that an endpoint routes to, are kept.
|
|
12
12
|
*/
|
|
13
13
|
class WebFunctionRevision extends constructs_1.Construct {
|
|
14
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionRevision", version: "0.1.
|
|
14
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@ashishpandeyone/cdk-lambda-web-function.WebFunctionRevision", version: "0.1.10" };
|
|
15
15
|
/**
|
|
16
16
|
* References an existing revision of `webFunction`, e.g. to pin an endpoint to it or split traffic with it.
|
|
17
17
|
*/
|
package/lib/web-function.d.ts
CHANGED
|
@@ -296,6 +296,11 @@ export declare abstract class WebFunctionBase extends Resource implements IWebFu
|
|
|
296
296
|
* @resource AWS::Lambda::WebFunction
|
|
297
297
|
*/
|
|
298
298
|
export declare class WebFunction extends WebFunctionBase implements iam.IGrantable {
|
|
299
|
+
/**
|
|
300
|
+
* Identifies this class to property injectors (`PropertyInjectors.of(scope).add(...)`), which can set default props for
|
|
301
|
+
* every `WebFunction` under a scope. Injectors for `WebFunction` also apply to `NodejsWebFunction`.
|
|
302
|
+
*/
|
|
303
|
+
static readonly PROPERTY_INJECTION_ID: string;
|
|
299
304
|
/**
|
|
300
305
|
* Imports an existing Web Function by its ARN (in any region or account).
|
|
301
306
|
*/
|
|
@@ -364,6 +369,12 @@ export declare class WebFunction extends WebFunctionBase implements iam.IGrantab
|
|
|
364
369
|
*/
|
|
365
370
|
addPermission(id: string, permission: WebFunctionPermission): void;
|
|
366
371
|
private createEndpoint;
|
|
372
|
+
/**
|
|
373
|
+
* The default execution role: write to the function's own log groups only (the home region's and every region's
|
|
374
|
+
* `.local` copy), the minimum AWS documents for Web Functions. Not `AWSLambdaBasicExecutionRole`, whose
|
|
375
|
+
* `logs:CreateLogGroup` on `*` lets environments still shutting down re-create a deleted or renamed group.
|
|
376
|
+
*/
|
|
377
|
+
private createRole;
|
|
367
378
|
private createLogGroups;
|
|
368
379
|
private logGroupIn;
|
|
369
380
|
}
|