@digitraffic/common 2022.10.10-1 → 2022.10.25-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,8 +1,11 @@
1
1
  # Digitraffic-common
2
+
2
3
  This is a place for common utilities and classes that can be used in other cdk-projects.
3
4
 
4
5
  ## How to use
6
+
5
7
  In package.json dependencies:
8
+
6
9
  ```
7
10
  "dependencies": {
8
11
  "@digitraffic/common": "*",
@@ -10,33 +13,40 @@ In package.json dependencies:
10
13
  ```
11
14
 
12
15
  In code:
16
+
13
17
  ```
14
18
  import {DigitrafficStack, StackConfiguration} from "@digitraffic/common/aws/infra/stack/stack";
15
19
  ```
16
20
 
17
21
  ### DigitrafficStack
22
+
18
23
  If you extend your stack from DigitrafficStack you get many benefits:
19
- * Secret, VPC, Sg & alarmTopics automatically
20
- * Stack validation with StackCheckingAspect
21
- * Easier configuration with StackConfiguration
24
+
25
+ - Secret, VPC, Sg & alarmTopics automatically
26
+ - Stack validation with StackCheckingAspect
27
+ - Easier configuration with StackConfiguration
22
28
 
23
29
  If you do not need those things, you should not use DigitrafficStack.
24
30
 
25
31
  ### StackConfiguration
26
- Some commonly used parameters is predefined configuration. You can write configuration for your
32
+
33
+ Some commonly used parameters is predefined configuration. You can write configuration for your
27
34
  environments once and use across cdk-projects.
28
35
 
29
36
  ### StackCheckingAspect
37
+
30
38
  Uses cdk aspects to do some sanity checking for your cdk stack:
31
- * Stack naming check(Test/Prod in name)
32
- * Function configuration(memory, timeout, runtime, reservedConcurrency)
33
- * Tags, must have Solution tag defined
34
- * S3 Buckets, no public access
35
- * Api Gateway resource casing(kebabCase and snake_case)
36
- * Queue encrypting
37
- * LogGroup Retention
39
+
40
+ - Stack naming check(Test/Prod in name)
41
+ - Function configuration(memory, timeout, runtime, reservedConcurrency)
42
+ - Tags, must have Solution tag defined
43
+ - S3 Buckets, no public access
44
+ - Api Gateway resource casing(kebabCase and snake_case)
45
+ - Queue encrypting
46
+ - LogGroup Retention
38
47
 
39
48
  You can use StackCheckingAspect for any stack, DigitrafficStack does it automatically, but you can call it manually:
49
+
40
50
  ```
41
51
  Aspects.of(this).add(StackCheckingAspect.create(this));
42
52
  ```
@@ -44,9 +54,11 @@ Aspects.of(this).add(StackCheckingAspect.create(this));
44
54
  Any resource can be whitelisted by giving it as a parameter or in the StackConfiguration
45
55
 
46
56
  ### MonitoredFunction
57
+
47
58
  MonitoredFunction extends Function with alarms on memory usage and timeouts.
48
59
 
49
60
  If you need database access in your Function, you can use MonitoredDBFunction. Creating a Function with it is this easy:
61
+
50
62
  ```
51
63
  const lambda = MonitoredDBFunction.create(stack, 'get-metadata');
52
64
  ```
@@ -7,7 +7,7 @@ const canary_alarm_1 = require("./canary-alarm");
7
7
  class DigitrafficCanary extends aws_synthetics_alpha_1.Canary {
8
8
  constructor(scope, canaryName, role, params, environmentVariables) {
9
9
  super(scope, canaryName, {
10
- runtime: aws_synthetics_alpha_1.Runtime.SYNTHETICS_NODEJS_PUPPETEER_3_5,
10
+ runtime: aws_synthetics_alpha_1.Runtime.SYNTHETICS_NODEJS_PUPPETEER_3_6,
11
11
  role,
12
12
  test: aws_synthetics_alpha_1.Test.custom({
13
13
  code: new aws_synthetics_alpha_1.AssetCode("dist", {
@@ -15,7 +15,10 @@ class DigitrafficCanary extends aws_synthetics_alpha_1.Canary {
15
15
  }),
16
16
  handler: params.handler,
17
17
  }),
18
- environmentVariables: { ...environmentVariables, ...params?.canaryEnv },
18
+ environmentVariables: {
19
+ ...environmentVariables,
20
+ ...params?.canaryEnv,
21
+ },
19
22
  canaryName,
20
23
  schedule: params.schedule ?? aws_synthetics_alpha_1.Schedule.rate(aws_cdk_lib_1.Duration.minutes(15)),
21
24
  });
@@ -26,4 +29,4 @@ class DigitrafficCanary extends aws_synthetics_alpha_1.Canary {
26
29
  }
27
30
  }
28
31
  exports.DigitrafficCanary = DigitrafficCanary;
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9jYW5hcmllcy9jYW5hcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXFDO0FBQ3JDLHdFQUF5RjtBQUV6RixpREFBMkM7QUFLM0MsTUFBYSxpQkFBa0IsU0FBUSw2QkFBTTtJQUN6QyxZQUNJLEtBQWdCLEVBQ2hCLFVBQWtCLEVBQ2xCLElBQVUsRUFDVixNQUF3QixFQUN4QixvQkFBdUM7UUFFdkMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDckIsT0FBTyxFQUFFLDhCQUFPLENBQUMsK0JBQStCO1lBQ2hELElBQUk7WUFDSixJQUFJLEVBQUUsMkJBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQ2QsSUFBSSxFQUFFLElBQUksZ0NBQVMsQ0FBQyxNQUFNLEVBQUU7b0JBQ3hCLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztpQkFDdEIsQ0FBQztnQkFDRixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87YUFDMUIsQ0FBQztZQUNGLG9CQUFvQixFQUFFLEVBQUUsR0FBRyxvQkFBb0IsRUFBRSxHQUFHLE1BQU0sRUFBRSxTQUFTLEVBQUU7WUFDdkUsVUFBVTtZQUNWLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLCtCQUFRLENBQUMsSUFBSSxDQUFDLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ25FLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXRDLElBQUksTUFBTSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDdEIsSUFBSSwwQkFBVyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDeEM7SUFDTCxDQUFDO0NBQ0o7QUE1QkQsOENBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEdXJhdGlvbn0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge0Fzc2V0Q29kZSwgQ2FuYXJ5LCBSdW50aW1lLCBTY2hlZHVsZSwgVGVzdH0gZnJvbSBcIkBhd3MtY2RrL2F3cy1zeW50aGV0aWNzLWFscGhhXCI7XG5pbXBvcnQge1JvbGV9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge0NhbmFyeUFsYXJtfSBmcm9tIFwiLi9jYW5hcnktYWxhcm1cIjtcbmltcG9ydCB7Q2FuYXJ5UGFyYW1ldGVyc30gZnJvbSBcIi4vY2FuYXJ5LXBhcmFtZXRlcnNcIjtcbmltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtMYW1iZGFFbnZpcm9ubWVudH0gZnJvbSBcIi4uL3N0YWNrL2xhbWJkYS1jb25maWdzXCI7XG5cbmV4cG9ydCBjbGFzcyBEaWdpdHJhZmZpY0NhbmFyeSBleHRlbmRzIENhbmFyeSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgICAgIGNhbmFyeU5hbWU6IHN0cmluZyxcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgcGFyYW1zOiBDYW5hcnlQYXJhbWV0ZXJzLFxuICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczogTGFtYmRhRW52aXJvbm1lbnQsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKHNjb3BlLCBjYW5hcnlOYW1lLCB7XG4gICAgICAgICAgICBydW50aW1lOiBSdW50aW1lLlNZTlRIRVRJQ1NfTk9ERUpTX1BVUFBFVEVFUl8zXzUsXG4gICAgICAgICAgICByb2xlLFxuICAgICAgICAgICAgdGVzdDogVGVzdC5jdXN0b20oe1xuICAgICAgICAgICAgICAgIGNvZGU6IG5ldyBBc3NldENvZGUoXCJkaXN0XCIsIHtcbiAgICAgICAgICAgICAgICAgICAgZXhjbHVkZTogW1wibGFtYmRhXCJdLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGhhbmRsZXI6IHBhcmFtcy5oYW5kbGVyLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczogeyAuLi5lbnZpcm9ubWVudFZhcmlhYmxlcywgLi4ucGFyYW1zPy5jYW5hcnlFbnYgfSxcbiAgICAgICAgICAgIGNhbmFyeU5hbWUsXG4gICAgICAgICAgICBzY2hlZHVsZTogcGFyYW1zLnNjaGVkdWxlID8/IFNjaGVkdWxlLnJhdGUoRHVyYXRpb24ubWludXRlcygxNSkpLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmFydGlmYWN0c0J1Y2tldC5ncmFudFdyaXRlKHJvbGUpO1xuXG4gICAgICAgIGlmIChwYXJhbXMuYWxhcm0gPz8gdHJ1ZSkge1xuICAgICAgICAgICAgbmV3IENhbmFyeUFsYXJtKHNjb3BlLCB0aGlzLCBwYXJhbXMpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuYXJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9jYW5hcmllcy9jYW5hcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXVDO0FBQ3ZDLHdFQU11QztBQUV2QyxpREFBNkM7QUFLN0MsTUFBYSxpQkFBa0IsU0FBUSw2QkFBTTtJQUN6QyxZQUNJLEtBQWdCLEVBQ2hCLFVBQWtCLEVBQ2xCLElBQVUsRUFDVixNQUF3QixFQUN4QixvQkFBdUM7UUFFdkMsS0FBSyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUU7WUFDckIsT0FBTyxFQUFFLDhCQUFPLENBQUMsK0JBQStCO1lBQ2hELElBQUk7WUFDSixJQUFJLEVBQUUsMkJBQUksQ0FBQyxNQUFNLENBQUM7Z0JBQ2QsSUFBSSxFQUFFLElBQUksZ0NBQVMsQ0FBQyxNQUFNLEVBQUU7b0JBQ3hCLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztpQkFDdEIsQ0FBQztnQkFDRixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87YUFDMUIsQ0FBQztZQUNGLG9CQUFvQixFQUFFO2dCQUNsQixHQUFHLG9CQUFvQjtnQkFDdkIsR0FBRyxNQUFNLEVBQUUsU0FBUzthQUN2QjtZQUNELFVBQVU7WUFDVixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsSUFBSSwrQkFBUSxDQUFDLElBQUksQ0FBQyxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNuRSxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0QyxJQUFJLE1BQU0sQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO1lBQ3RCLElBQUksMEJBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQ3hDO0lBQ0wsQ0FBQztDQUNKO0FBL0JELDhDQStCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICAgIEFzc2V0Q29kZSxcbiAgICBDYW5hcnksXG4gICAgUnVudGltZSxcbiAgICBTY2hlZHVsZSxcbiAgICBUZXN0LFxufSBmcm9tIFwiQGF3cy1jZGsvYXdzLXN5bnRoZXRpY3MtYWxwaGFcIjtcbmltcG9ydCB7IFJvbGUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgQ2FuYXJ5QWxhcm0gfSBmcm9tIFwiLi9jYW5hcnktYWxhcm1cIjtcbmltcG9ydCB7IENhbmFyeVBhcmFtZXRlcnMgfSBmcm9tIFwiLi9jYW5hcnktcGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IExhbWJkYUVudmlyb25tZW50IH0gZnJvbSBcIi4uL3N0YWNrL2xhbWJkYS1jb25maWdzXCI7XG5cbmV4cG9ydCBjbGFzcyBEaWdpdHJhZmZpY0NhbmFyeSBleHRlbmRzIENhbmFyeSB7XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgICAgIGNhbmFyeU5hbWU6IHN0cmluZyxcbiAgICAgICAgcm9sZTogUm9sZSxcbiAgICAgICAgcGFyYW1zOiBDYW5hcnlQYXJhbWV0ZXJzLFxuICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczogTGFtYmRhRW52aXJvbm1lbnRcbiAgICApIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGNhbmFyeU5hbWUsIHtcbiAgICAgICAgICAgIHJ1bnRpbWU6IFJ1bnRpbWUuU1lOVEhFVElDU19OT0RFSlNfUFVQUEVURUVSXzNfNixcbiAgICAgICAgICAgIHJvbGUsXG4gICAgICAgICAgICB0ZXN0OiBUZXN0LmN1c3RvbSh7XG4gICAgICAgICAgICAgICAgY29kZTogbmV3IEFzc2V0Q29kZShcImRpc3RcIiwge1xuICAgICAgICAgICAgICAgICAgICBleGNsdWRlOiBbXCJsYW1iZGFcIl0sXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgaGFuZGxlcjogcGFyYW1zLmhhbmRsZXIsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGVudmlyb25tZW50VmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgICAgLi4uZW52aXJvbm1lbnRWYXJpYWJsZXMsXG4gICAgICAgICAgICAgICAgLi4ucGFyYW1zPy5jYW5hcnlFbnYsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2FuYXJ5TmFtZSxcbiAgICAgICAgICAgIHNjaGVkdWxlOiBwYXJhbXMuc2NoZWR1bGUgPz8gU2NoZWR1bGUucmF0ZShEdXJhdGlvbi5taW51dGVzKDE1KSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYXJ0aWZhY3RzQnVja2V0LmdyYW50V3JpdGUocm9sZSk7XG5cbiAgICAgICAgaWYgKHBhcmFtcy5hbGFybSA/PyB0cnVlKSB7XG4gICAgICAgICAgICBuZXcgQ2FuYXJ5QWxhcm0oc2NvcGUsIHRoaXMsIHBhcmFtcyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -44,8 +44,8 @@ class StackCheckingAspect {
44
44
  this.checkLogGroupRetention(node);
45
45
  }
46
46
  isWhitelisted(key) {
47
- return this.whitelistedResources?.some(wl => {
48
- return key.matchAll(new RegExp(wl, 'g'));
47
+ return this.whitelistedResources?.some((wl) => {
48
+ return key.matchAll(new RegExp(wl, "g"));
49
49
  });
50
50
  }
51
51
  addAnnotation(node, key, message, isError = true) {
@@ -63,40 +63,46 @@ class StackCheckingAspect {
63
63
  }
64
64
  checkStack(node) {
65
65
  if (node instanceof stack_1.DigitrafficStack) {
66
- if ((node.stackName.includes('Test') || node.stackName.includes('Tst')) && node.configuration?.production) {
67
- this.addAnnotation(node, ResourceType.stackName, 'Production is set for Test-stack');
66
+ if ((node.stackName.includes("Test") ||
67
+ node.stackName.includes("Tst")) &&
68
+ node.configuration.production) {
69
+ this.addAnnotation(node, ResourceType.stackName, "Production is set for Test-stack");
68
70
  }
69
- if ((node.stackName.includes('Prod') || node.stackName.includes('Prd')) && !node.configuration?.production) {
70
- this.addAnnotation(node, ResourceType.stackName, 'Production is not set for Production-stack');
71
+ if ((node.stackName.includes("Prod") ||
72
+ node.stackName.includes("Prd")) &&
73
+ !node.configuration.production) {
74
+ this.addAnnotation(node, ResourceType.stackName, "Production is not set for Production-stack");
71
75
  }
72
76
  }
73
77
  }
74
78
  checkFunction(node) {
75
79
  if (node instanceof aws_lambda_1.CfnFunction) {
76
80
  if (!node.reservedConcurrentExecutions) {
77
- this.addAnnotation(node, ResourceType.reservedConcurrentConcurrency, 'Function must have reservedConcurrentConcurrency');
81
+ this.addAnnotation(node, ResourceType.reservedConcurrentConcurrency, "Function must have reservedConcurrentConcurrency");
78
82
  }
79
83
  else if (node.reservedConcurrentExecutions > MAX_CONCURRENCY_LIMIT) {
80
- this.addAnnotation(node, ResourceType.reservedConcurrentConcurrency, 'Function reservedConcurrentConcurrency too high!');
84
+ this.addAnnotation(node, ResourceType.reservedConcurrentConcurrency, "Function reservedConcurrentConcurrency too high!");
81
85
  }
82
86
  if (!node.timeout) {
83
- this.addAnnotation(node, ResourceType.functionTimeout, 'Function must have timeout');
87
+ this.addAnnotation(node, ResourceType.functionTimeout, "Function must have timeout");
84
88
  }
85
89
  if (!node.memorySize) {
86
- this.addAnnotation(node, ResourceType.functionMemorySize, 'Function must have memorySize');
90
+ this.addAnnotation(node, ResourceType.functionMemorySize, "Function must have memorySize");
87
91
  }
88
92
  if (node.runtime !== NODE_RUNTIME) {
89
- this.addAnnotation(node, ResourceType.functionRuntime, 'wrong runtime ' + node.runtime);
93
+ this.addAnnotation(node, ResourceType.functionRuntime, `Function has wrong runtime ${node.runtime}`);
90
94
  }
91
- if (this.stackShortName && node.functionName && node.functionName.indexOf(this.stackShortName) !== 0) {
92
- this.addAnnotation(node, ResourceType.functionName, 'Function name does not begin with ' + this.stackShortName);
95
+ if (this.stackShortName &&
96
+ node.functionName &&
97
+ !node.functionName.startsWith(this.stackShortName)) {
98
+ this.addAnnotation(node, ResourceType.functionName, `Function name does not begin with ${this.stackShortName}`);
93
99
  }
94
100
  }
95
101
  }
96
102
  checkTags(node) {
97
103
  if (node instanceof aws_cdk_lib_1.Stack) {
98
104
  if (!node.tags.tagValues()[stack_1.SOLUTION_KEY]) {
99
- this.addAnnotation(node, ResourceType.tagSolution, 'Solution tag is missing');
105
+ this.addAnnotation(node, ResourceType.tagSolution, "Solution tag is missing");
100
106
  }
101
107
  }
102
108
  }
@@ -104,19 +110,22 @@ class StackCheckingAspect {
104
110
  if (node instanceof aws_s3_1.CfnBucket) {
105
111
  const c = node.publicAccessBlockConfiguration;
106
112
  if (c) {
107
- if (!c.blockPublicAcls || !c.blockPublicPolicy || !c.ignorePublicAcls || !c.restrictPublicBuckets) {
108
- this.addAnnotation(node, ResourceType.bucketPublicity, 'Check bucket publicity');
113
+ if (!c.blockPublicAcls ||
114
+ !c.blockPublicPolicy ||
115
+ !c.ignorePublicAcls ||
116
+ !c.restrictPublicBuckets) {
117
+ this.addAnnotation(node, ResourceType.bucketPublicity, "Check bucket publicity");
109
118
  }
110
119
  }
111
120
  }
112
121
  }
113
122
  static isValidPath(path) {
114
123
  // if path includes . or { check only the trailing part of path
115
- if (path.includes('.')) {
116
- return this.isValidPath(path.split('.')[0]);
124
+ if (path.includes(".")) {
125
+ return this.isValidPath(path.split(".")[0]);
117
126
  }
118
- if (path.includes('{')) {
119
- return this.isValidPath(path.split('{')[0]);
127
+ if (path.includes("{")) {
128
+ return this.isValidPath(path.split("{")[0]);
120
129
  }
121
130
  return (0, change_case_1.paramCase)(path) === path;
122
131
  }
@@ -126,18 +135,19 @@ class StackCheckingAspect {
126
135
  checkResourceCasing(node) {
127
136
  if (node instanceof aws_apigateway_1.CfnResource) {
128
137
  if (!StackCheckingAspect.isValidPath(node.pathPart)) {
129
- this.addAnnotation(node, ResourceType.resourcePath, 'Path part should be in kebab-case');
138
+ this.addAnnotation(node, ResourceType.resourcePath, "Path part should be in kebab-case");
130
139
  }
131
140
  }
132
141
  else if (node instanceof aws_apigateway_1.CfnMethod) {
133
142
  const integration = node.integration;
134
143
  if (integration && integration.requestParameters) {
135
- Object.keys(integration.requestParameters).forEach(key => {
136
- const split = key.split('.');
144
+ Object.keys(integration.requestParameters).forEach((key) => {
145
+ const split = key.split(".");
137
146
  const type = split[2];
138
147
  const name = split[3];
139
- if (type === 'querystring' && !StackCheckingAspect.isValidQueryString(name)) {
140
- this.addAnnotation(node, name, 'Querystring should be in snake_case');
148
+ if (type === "querystring" &&
149
+ !StackCheckingAspect.isValidQueryString(name)) {
150
+ this.addAnnotation(node, name, "Querystring should be in snake_case");
141
151
  }
142
152
  });
143
153
  }
@@ -146,7 +156,7 @@ class StackCheckingAspect {
146
156
  checkQueueEncryption(node) {
147
157
  if (node instanceof aws_sqs_1.CfnQueue) {
148
158
  if (!node.kmsMasterKeyId) {
149
- this.addAnnotation(node, ResourceType.queueEncryption, 'Queue must have encryption enabled');
159
+ this.addAnnotation(node, ResourceType.queueEncryption, "Queue must have encryption enabled");
150
160
  }
151
161
  }
152
162
  }
@@ -155,10 +165,10 @@ class StackCheckingAspect {
155
165
  const child = node.node.defaultChild;
156
166
  const retention = child._cfnProperties.RetentionInDays;
157
167
  if (!retention) {
158
- this.addAnnotation(node, ResourceType.logGroupRetention, 'Log group must define log group retention');
168
+ this.addAnnotation(node, ResourceType.logGroupRetention, "Log group must define log group retention");
159
169
  }
160
170
  }
161
171
  }
162
172
  }
163
173
  exports.StackCheckingAspect = StackCheckingAspect;
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stY2hlY2tpbmctYXNwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9zdGFjay9zdGFjay1jaGVja2luZy1hc3BlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXdEO0FBQ3hELHVEQUE0RDtBQUM1RCwrQ0FBNkM7QUFDN0MsbUNBQXVEO0FBRXZELCtEQUFrRTtBQUNsRSw2Q0FBaUQ7QUFDakQsaURBQTZDO0FBQzdDLG1EQUFrRDtBQUdsRCxNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztBQUNsQyxNQUFNLFlBQVksR0FBRyxvQkFBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7QUFFOUMsSUFBSyxZQVlKO0FBWkQsV0FBSyxZQUFZO0lBQ2Isd0NBQXdCLENBQUE7SUFDeEIsaUZBQWlFLENBQUE7SUFDakUsb0RBQW9DLENBQUE7SUFDcEMsMkRBQTJDLENBQUE7SUFDM0Msb0RBQW9DLENBQUE7SUFDcEMsOENBQThCLENBQUE7SUFDOUIsNENBQTRCLENBQUE7SUFDNUIsb0RBQW9DLENBQUE7SUFDcEMsOENBQThCLENBQUE7SUFDOUIsb0RBQW9DLENBQUE7SUFDcEMseURBQXlDLENBQUE7QUFDN0MsQ0FBQyxFQVpJLFlBQVksS0FBWixZQUFZLFFBWWhCO0FBRUQsTUFBYSxtQkFBbUI7SUFJNUIsWUFBWSxjQUF1QixFQUFFLG9CQUErQjtRQUNoRSxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBdUI7UUFDakMsT0FBTyxJQUFJLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBRU0sS0FBSyxDQUFDLElB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SUFBSSxDQUFDLFlBQWlFLENBQUM7WUFDMUYsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUM7WUFFdkQsSUFBSSxDQUFDLFNBQVMsRUFBRTtnQkFDWixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsaUJBQWlCLEVBQUUsMkNBQTJDLENBQUMsQ0FBQzthQUN6RztTQUNKO0lBQ0wsQ0FBQztDQUNKO0FBaEtELGtEQWdLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QW5ub3RhdGlvbnMsIElBc3BlY3QsIFN0YWNrfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7Q2ZuRnVuY3Rpb24sIFJ1bnRpbWV9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHtDZm5CdWNrZXR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtczNcIjtcbmltcG9ydCB7RGlnaXRyYWZmaWNTdGFjaywgU09MVVRJT05fS0VZfSBmcm9tIFwiLi9zdGFja1wiO1xuaW1wb3J0IHtJQ29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtDZm5NZXRob2QsIENmblJlc291cmNlfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXlcIjtcbmltcG9ydCB7cGFyYW1DYXNlLCBzbmFrZUNhc2V9IGZyb20gXCJjaGFuZ2UtY2FzZVwiO1xuaW1wb3J0IHtDZm5RdWV1ZX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zcXNcIjtcbmltcG9ydCB7TG9nUmV0ZW50aW9ufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCBJbnRlZ3JhdGlvblByb3BlcnR5ID0gQ2ZuTWV0aG9kLkludGVncmF0aW9uUHJvcGVydHk7XG5cbmNvbnN0IE1BWF9DT05DVVJSRU5DWV9MSU1JVCA9IDEwMDtcbmNvbnN0IE5PREVfUlVOVElNRSA9IFJ1bnRpbWUuTk9ERUpTXzE0X1gubmFtZTtcblxuZW51bSBSZXNvdXJjZVR5cGUge1xuICAgIHN0YWNrTmFtZSA9IFwiU1RBQ0tfTkFNRVwiLFxuICAgIHJlc2VydmVkQ29uY3VycmVudENvbmN1cnJlbmN5ID0gXCJSRVNFUlZFRF9DT05DVVJSRU5UX0NPTkNVUlJFTkNZXCIsXG4gICAgZnVuY3Rpb25UaW1lb3V0ID0gXCJGVU5DVElPTl9USU1FT1VUXCIsXG4gICAgZnVuY3Rpb25NZW1vcnlTaXplID0gXCJGVU5DVElPTl9NRU1PUllfU0laRVwiLFxuICAgIGZ1bmN0aW9uUnVudGltZSA9IFwiRlVOQ1RJT05fUlVOVElNRVwiLFxuICAgIGZ1bmN0aW9uTmFtZSA9IFwiRlVOQ1RJT05fTkFNRVwiLFxuICAgIHRhZ1NvbHV0aW9uID0gXCJUQUdfU09MVVRJT05cIixcbiAgICBidWNrZXRQdWJsaWNpdHkgPSBcIkJVQ0tFVF9QVUJMSUNJVFlcIixcbiAgICByZXNvdXJjZVBhdGggPSBcIlJFU09VUkNFX1BBVEhcIixcbiAgICBxdWV1ZUVuY3J5cHRpb24gPSBcIlFVRVVFX0VOQ1JZUFRJT05cIixcbiAgICBsb2dHcm91cFJldGVudGlvbiA9IFwiTE9HX0dST1VQX1JFVEVOVElPTlwiLFxufVxuXG5leHBvcnQgY2xhc3MgU3RhY2tDaGVja2luZ0FzcGVjdCBpbXBsZW1lbnRzIElBc3BlY3Qge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhY2tTaG9ydE5hbWU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSB3aGl0ZWxpc3RlZFJlc291cmNlcz86IHN0cmluZ1tdXG5cbiAgICBjb25zdHJ1Y3RvcihzdGFja1Nob3J0TmFtZT86IHN0cmluZywgd2hpdGVsaXN0ZWRSZXNvdXJjZXM/OiBzdHJpbmdbXSkge1xuICAgICAgICB0aGlzLnN0YWNrU2hvcnROYW1lID0gc3RhY2tTaG9ydE5hbWU7XG4gICAgICAgIHRoaXMud2hpdGVsaXN0ZWRSZXNvdXJjZXMgPSB3aGl0ZWxpc3RlZFJlc291cmNlcztcbiAgICB9XG5cbiAgICBzdGF0aWMgY3JlYXRlKHN0YWNrOiBEaWdpdHJhZmZpY1N0YWNrKSB7XG4gICAgICAgIHJldHVybiBuZXcgU3RhY2tDaGVja2luZ0FzcGVjdChzdGFjay5jb25maWd1cmF0aW9uLnNob3J0TmFtZSwgc3RhY2suY29uZmlndXJhdGlvbi53aGl0ZWxpc3RlZFJlc291cmNlcyk7XG4gICAgfVxuXG4gICAgcHVibGljIHZpc2l0KG5vZGU6IElDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICAgICAgLy9jb25zb2xlLmluZm8oXCJ2aXNpdGluZyBjbGFzcyBcIiArIG5vZGUuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgICAgICAgdGhpcy5jaGVja1N0YWNrKG5vZGUpO1xuICAgICAgICB0aGlzLmNoZWNrRnVuY3Rpb24obm9kZSk7XG4gICAgICAgIHRoaXMuY2hlY2tUYWdzKG5vZGUpO1xuICAgICAgICB0aGlzLmNoZWNrQnVja2V0KG5vZGUpO1xuICAgICAgICB0aGlzLmNoZWNrUmVzb3VyY2VDYXNpbmcobm9kZSk7XG4gICAgICAgIHRoaXMuY2hlY2tRdWV1ZUVuY3J5cHRpb24obm9kZSk7XG4gICAgICAgIHRoaXMuY2hlY2tMb2dHcm91cFJldGVudGlvbihub2RlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzV2hpdGVsaXN0ZWQoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2hpdGVsaXN0ZWRSZXNvdXJjZXM/LnNvbWUod2wgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGtleS5tYXRjaEFsbChuZXcgUmVnRXhwKHdsLCAnZycpKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRBbm5vdGF0aW9uKG5vZGU6IElDb25zdHJ1Y3QsIGtleTogUmVzb3VyY2VUeXBlIHwgc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcsIGlzRXJyb3IgPSB0cnVlKSB7XG4gICAgICAgIGNvbnN0IHJlc291cmNlS2V5ID0gYCR7bm9kZS5ub2RlLnBhdGh9LyR7a2V5fWA7XG4gICAgICAgIGNvbnN0IGlzV2hpdGVMaXN0ZWQgPSB0aGlzLmlzV2hpdGVsaXN0ZWQocmVzb3VyY2VLZXkpO1xuICAgICAgICBjb25zdCBhbm5vdGF0aW9uTWVzc2FnZSA9IGAke3Jlc291cmNlS2V5fToke21lc3NhZ2V9YDtcblxuICAgICAgICAvLyBlcnJvciAmJiB3aGl0ZWxpc3RlZCAtPiB3YXJuaW5nXG4gICAgICAgIC8vIHdhcm5pbmcgJiYgd2hpdGVsaXN0ZWQgLT4gbm90aGluZ1xuICAgICAgICBpZiAoaXNFcnJvciAmJiAhaXNXaGl0ZUxpc3RlZCkge1xuICAgICAgICAgICAgQW5ub3RhdGlvbnMub2Yobm9kZSkuYWRkRXJyb3IoYW5ub3RhdGlvbk1lc3NhZ2UpO1xuICAgICAgICB9IGVsc2UgaWYgKCghaXNFcnJvciAmJiAhaXNXaGl0ZUxpc3RlZCkgfHwgKGlzRXJyb3IgJiYgaXNXaGl0ZUxpc3RlZCkpIHtcbiAgICAgICAgICAgIEFubm90YXRpb25zLm9mKG5vZGUpLmFkZFdhcm5pbmcoYW5ub3RhdGlvbk1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja1N0YWNrKG5vZGU6IElDb25zdHJ1Y3QpIHtcbiAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBEaWdpdHJhZmZpY1N0YWNrKSB7XG4gICAgICAgICAgICBpZiAoKG5vZGUuc3RhY2tOYW1lLmluY2x1ZGVzKCdUZXN0JykgfHwgbm9kZS5zdGFja05hbWUuaW5jbHVkZXMoJ1RzdCcpKSAmJiBub2RlLmNvbmZpZ3VyYXRpb24/LnByb2R1Y3Rpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFubm90YXRpb24obm9kZSwgUmVzb3VyY2VUeXBlLnN0YWNrTmFtZSwgJ1Byb2R1Y3Rpb24gaXMgc2V0IGZvciBUZXN0LXN0YWNrJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICgobm9kZS5zdGFja05hbWUuaW5jbHVkZXMoJ1Byb2QnKSB8fCBub2RlLnN0YWNrTmFtZS5pbmNsdWRlcygnUHJkJykpICYmICFub2RlLmNvbmZpZ3VyYXRpb24/LnByb2R1Y3Rpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFubm90YXRpb24obm9kZSwgUmVzb3VyY2VUeXBlLnN0YWNrTmFtZSwgJ1Byb2R1Y3Rpb24gaXMgbm90IHNldCBmb3IgUHJvZHVjdGlvbi1zdGFjaycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0Z1bmN0aW9uKG5vZGU6IElDb25zdHJ1Y3QpIHtcbiAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBDZm5GdW5jdGlvbikge1xuICAgICAgICAgICAgaWYgKCFub2RlLnJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFubm90YXRpb24obm9kZSwgUmVzb3VyY2VUeXBlLnJlc2VydmVkQ29uY3VycmVudENvbmN1cnJlbmN5LCAnRnVuY3Rpb24gbXVzdCBoYXZlIHJlc2VydmVkQ29uY3VycmVudENvbmN1cnJlbmN5Jyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUucmVzZXJ2ZWRDb25jdXJyZW50RXhlY3V0aW9ucyA+IE1BWF9DT05DVVJSRU5DWV9MSU1JVCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihub2RlLCBSZXNvdXJjZVR5cGUucmVzZXJ2ZWRDb25jdXJyZW50Q29uY3VycmVuY3ksICdGdW5jdGlvbiByZXNlcnZlZENvbmN1cnJlbnRDb25jdXJyZW5jeSB0b28gaGlnaCEnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFub2RlLnRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFubm90YXRpb24obm9kZSwgUmVzb3VyY2VUeXBlLmZ1bmN0aW9uVGltZW91dCwgJ0Z1bmN0aW9uIG11c3QgaGF2ZSB0aW1lb3V0Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghbm9kZS5tZW1vcnlTaXplKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKG5vZGUsIFJlc291cmNlVHlwZS5mdW5jdGlvbk1lbW9yeVNpemUsICdGdW5jdGlvbiBtdXN0IGhhdmUgbWVtb3J5U2l6ZScpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobm9kZS5ydW50aW1lICE9PSBOT0RFX1JVTlRJTUUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFubm90YXRpb24obm9kZSwgUmVzb3VyY2VUeXBlLmZ1bmN0aW9uUnVudGltZSwnd3JvbmcgcnVudGltZSAnICsgbm9kZS5ydW50aW1lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhY2tTaG9ydE5hbWUgJiYgbm9kZS5mdW5jdGlvbk5hbWUgJiYgbm9kZS5mdW5jdGlvbk5hbWUuaW5kZXhPZih0aGlzLnN0YWNrU2hvcnROYW1lKSAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihub2RlLCBSZXNvdXJjZVR5cGUuZnVuY3Rpb25OYW1lLCAnRnVuY3Rpb24gbmFtZSBkb2VzIG5vdCBiZWdpbiB3aXRoICcgKyB0aGlzLnN0YWNrU2hvcnROYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tUYWdzKG5vZGU6IElDb25zdHJ1Y3QpIHtcbiAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBTdGFjaykge1xuICAgICAgICAgICAgaWYgKCFub2RlLnRhZ3MudGFnVmFsdWVzKClbU09MVVRJT05fS0VZXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihub2RlLCBSZXNvdXJjZVR5cGUudGFnU29sdXRpb24sICdTb2x1dGlvbiB0YWcgaXMgbWlzc2luZycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0J1Y2tldChub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQ2ZuQnVja2V0KSB7XG4gICAgICAgICAgICBjb25zdCBjID0gbm9kZS5wdWJsaWNBY2Nlc3NCbG9ja0NvbmZpZ3VyYXRpb24gYXMgQ2ZuQnVja2V0LlB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvblByb3BlcnR5O1xuXG4gICAgICAgICAgICBpZiAoYykge1xuICAgICAgICAgICAgICAgIGlmICghYy5ibG9ja1B1YmxpY0FjbHMgfHwgIWMuYmxvY2tQdWJsaWNQb2xpY3kgfHwgIWMuaWdub3JlUHVibGljQWNscyB8fCAhYy5yZXN0cmljdFB1YmxpY0J1Y2tldHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKG5vZGUsIFJlc291cmNlVHlwZS5idWNrZXRQdWJsaWNpdHksICdDaGVjayBidWNrZXQgcHVibGljaXR5Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNWYWxpZFBhdGgocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIGlmIHBhdGggaW5jbHVkZXMgLiBvciB7IGNoZWNrIG9ubHkgdGhlIHRyYWlsaW5nIHBhcnQgb2YgcGF0aFxuICAgICAgICBpZiAocGF0aC5pbmNsdWRlcygnLicpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkUGF0aChwYXRoLnNwbGl0KCcuJylbMF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoJ3snKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNWYWxpZFBhdGgocGF0aC5zcGxpdCgneycpWzBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJhbUNhc2UocGF0aCkgPT09IHBhdGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNWYWxpZFF1ZXJ5U3RyaW5nKG5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gc25ha2VDYXNlKG5hbWUpID09PSBuYW1lO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tSZXNvdXJjZUNhc2luZyhub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQ2ZuUmVzb3VyY2UpIHtcbiAgICAgICAgICAgIGlmICghU3RhY2tDaGVja2luZ0FzcGVjdC5pc1ZhbGlkUGF0aChub2RlLnBhdGhQYXJ0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihub2RlLCBSZXNvdXJjZVR5cGUucmVzb3VyY2VQYXRoLCAnUGF0aCBwYXJ0IHNob3VsZCBiZSBpbiBrZWJhYi1jYXNlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIENmbk1ldGhvZCkge1xuICAgICAgICAgICAgY29uc3QgaW50ZWdyYXRpb24gPSBub2RlLmludGVncmF0aW9uIGFzIEludGVncmF0aW9uUHJvcGVydHk7XG5cbiAgICAgICAgICAgIGlmIChpbnRlZ3JhdGlvbiAmJiBpbnRlZ3JhdGlvbi5yZXF1ZXN0UGFyYW1ldGVycykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGludGVncmF0aW9uLnJlcXVlc3RQYXJhbWV0ZXJzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwbGl0ID0ga2V5LnNwbGl0KCcuJyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBzcGxpdFsyXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IHNwbGl0WzNdO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAncXVlcnlzdHJpbmcnICYmICFTdGFja0NoZWNraW5nQXNwZWN0LmlzVmFsaWRRdWVyeVN0cmluZyhuYW1lKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKG5vZGUsIG5hbWUsICdRdWVyeXN0cmluZyBzaG91bGQgYmUgaW4gc25ha2VfY2FzZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrUXVldWVFbmNyeXB0aW9uKG5vZGU6IElDb25zdHJ1Y3QpIHtcbiAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBDZm5RdWV1ZSkge1xuICAgICAgICAgICAgaWYgKCFub2RlLmttc01hc3RlcktleUlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKG5vZGUsIFJlc291cmNlVHlwZS5xdWV1ZUVuY3J5cHRpb24sICdRdWV1ZSBtdXN0IGhhdmUgZW5jcnlwdGlvbiBlbmFibGVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrTG9nR3JvdXBSZXRlbnRpb24obm9kZTogSUNvbnN0cnVjdCkge1xuICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIExvZ1JldGVudGlvbikge1xuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLm5vZGUuZGVmYXVsdENoaWxkIGFzIHVua25vd24gYXMgUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG4gICAgICAgICAgICBjb25zdCByZXRlbnRpb24gPSBjaGlsZC5fY2ZuUHJvcGVydGllcy5SZXRlbnRpb25JbkRheXM7XG5cbiAgICAgICAgICAgIGlmICghcmV0ZW50aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKG5vZGUsIFJlc291cmNlVHlwZS5sb2dHcm91cFJldGVudGlvbiwgJ0xvZyBncm91cCBtdXN0IGRlZmluZSBsb2cgZ3JvdXAgcmV0ZW50aW9uJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stY2hlY2tpbmctYXNwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9zdGFjay9zdGFjay1jaGVja2luZy1hc3BlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQTBEO0FBQzFELHVEQUE4RDtBQUM5RCwrQ0FBK0M7QUFDL0MsbUNBQXlEO0FBRXpELCtEQUFvRTtBQUNwRSw2Q0FBbUQ7QUFDbkQsaURBQStDO0FBQy9DLG1EQUFvRDtBQUdwRCxNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztBQUNsQyxNQUFNLFlBQVksR0FBRyxvQkFBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7QUFFOUMsSUFBSyxZQVlKO0FBWkQsV0FBSyxZQUFZO0lBQ2Isd0NBQXdCLENBQUE7SUFDeEIsaUZBQWlFLENBQUE7SUFDakUsb0RBQW9DLENBQUE7SUFDcEMsMkRBQTJDLENBQUE7SUFDM0Msb0RBQW9DLENBQUE7SUFDcEMsOENBQThCLENBQUE7SUFDOUIsNENBQTRCLENBQUE7SUFDNUIsb0RBQW9DLENBQUE7SUFDcEMsOENBQThCLENBQUE7SUFDOUIsb0RBQW9DLENBQUE7SUFDcEMseURBQXlDLENBQUE7QUFDN0MsQ0FBQyxFQVpJLFlBQVksS0FBWixZQUFZLFFBWWhCO0FBRUQsTUFBYSxtQkFBbUI7SUFJNUIsWUFBWSxjQUF1QixFQUFFLG9CQUErQjtRQUNoRSxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBdUI7UUFDakMsT0FBTyxJQUFJLG1CQUFtQixDQUMxQixLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFDN0IsS0FBSyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FDM0MsQ0FBQztJQUNOLENBQUM7SUFFTSxLQUFLLENBQUMs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QkFBWSxFQUFFO1lBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFHdkIsQ0FBQztZQUNGLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO1lBRXZELElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FDZCxJQUFJLEVBQ0osWUFBWSxDQUFDLGlCQUFpQixFQUM5QiwyQ0FBMkMsQ0FDOUMsQ0FBQzthQUNMO1NBQ0o7SUFDTCxDQUFDO0NBQ0o7QUExUEQsa0RBMFBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5ub3RhdGlvbnMsIElBc3BlY3QsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDZm5GdW5jdGlvbiwgUnVudGltZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBDZm5CdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyBEaWdpdHJhZmZpY1N0YWNrLCBTT0xVVElPTl9LRVkgfSBmcm9tIFwiLi9zdGFja1wiO1xuaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBDZm5NZXRob2QsIENmblJlc291cmNlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQgeyBwYXJhbUNhc2UsIHNuYWtlQ2FzZSB9IGZyb20gXCJjaGFuZ2UtY2FzZVwiO1xuaW1wb3J0IHsgQ2ZuUXVldWUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNxc1wiO1xuaW1wb3J0IHsgTG9nUmV0ZW50aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQgSW50ZWdyYXRpb25Qcm9wZXJ0eSA9IENmbk1ldGhvZC5JbnRlZ3JhdGlvblByb3BlcnR5O1xuXG5jb25zdCBNQVhfQ09OQ1VSUkVOQ1lfTElNSVQgPSAxMDA7XG5jb25zdCBOT0RFX1JVTlRJTUUgPSBSdW50aW1lLk5PREVKU18xNF9YLm5hbWU7XG5cbmVudW0gUmVzb3VyY2VUeXBlIHtcbiAgICBzdGFja05hbWUgPSBcIlNUQUNLX05BTUVcIixcbiAgICByZXNlcnZlZENvbmN1cnJlbnRDb25jdXJyZW5jeSA9IFwiUkVTRVJWRURfQ09OQ1VSUkVOVF9DT05DVVJSRU5DWVwiLFxuICAgIGZ1bmN0aW9uVGltZW91dCA9IFwiRlVOQ1RJT05fVElNRU9VVFwiLFxuICAgIGZ1bmN0aW9uTWVtb3J5U2l6ZSA9IFwiRlVOQ1RJT05fTUVNT1JZX1NJWkVcIixcbiAgICBmdW5jdGlvblJ1bnRpbWUgPSBcIkZVTkNUSU9OX1JVTlRJTUVcIixcbiAgICBmdW5jdGlvbk5hbWUgPSBcIkZVTkNUSU9OX05BTUVcIixcbiAgICB0YWdTb2x1dGlvbiA9IFwiVEFHX1NPTFVUSU9OXCIsXG4gICAgYnVja2V0UHVibGljaXR5ID0gXCJCVUNLRVRfUFVCTElDSVRZXCIsXG4gICAgcmVzb3VyY2VQYXRoID0gXCJSRVNPVVJDRV9QQVRIXCIsXG4gICAgcXVldWVFbmNyeXB0aW9uID0gXCJRVUVVRV9FTkNSWVBUSU9OXCIsXG4gICAgbG9nR3JvdXBSZXRlbnRpb24gPSBcIkxPR19HUk9VUF9SRVRFTlRJT05cIixcbn1cblxuZXhwb3J0IGNsYXNzIFN0YWNrQ2hlY2tpbmdBc3BlY3QgaW1wbGVtZW50cyBJQXNwZWN0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0YWNrU2hvcnROYW1lPzogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgd2hpdGVsaXN0ZWRSZXNvdXJjZXM/OiBzdHJpbmdbXTtcblxuICAgIGNvbnN0cnVjdG9yKHN0YWNrU2hvcnROYW1lPzogc3RyaW5nLCB3aGl0ZWxpc3RlZFJlc291cmNlcz86IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMuc3RhY2tTaG9ydE5hbWUgPSBzdGFja1Nob3J0TmFtZTtcbiAgICAgICAgdGhpcy53aGl0ZWxpc3RlZFJlc291cmNlcyA9IHdoaXRlbGlzdGVkUmVzb3VyY2VzO1xuICAgIH1cblxuICAgIHN0YXRpYyBjcmVhdGUoc3RhY2s6IERpZ2l0cmFmZmljU3RhY2spIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdGFja0NoZWNraW5nQXNwZWN0KFxuICAgICAgICAgICAgc3RhY2suY29uZmlndXJhdGlvbi5zaG9ydE5hbWUsXG4gICAgICAgICAgICBzdGFjay5jb25maWd1cmF0aW9uLndoaXRlbGlzdGVkUmVzb3VyY2VzXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHZpc2l0KG5vZGU6IElDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICAgICAgLy9jb25zb2xlLmluZm8oXCJ2aXNpdGluZyBjbGFzcyBcIiArIG5vZGUuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgICAgICAgdGhpcy5jaGVja1N0YWNrKG5vZGUpO1xuICAgICAgICB0aGlzLmNoZWNrRnVuY3Rpb24obm9kZSk7XG4gICAgICAgIHRoaXMuY2hlY2tUYWdzKG5vZGUpO1xuICAgICAgICB0aGlzLmNoZWNrQnVja2V0KG5vZGUpO1xuICAgICAgICB0aGlzLmNoZWNrUmVzb3VyY2VDYXNpbmcobm9kZSk7XG4gICAgICAgIHRoaXMuY2hlY2tRdWV1ZUVuY3J5cHRpb24obm9kZSk7XG4gICAgICAgIHRoaXMuY2hlY2tMb2dHcm91cFJldGVudGlvbihub2RlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzV2hpdGVsaXN0ZWQoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2hpdGVsaXN0ZWRSZXNvdXJjZXM/LnNvbWUoKHdsKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ga2V5Lm1hdGNoQWxsKG5ldyBSZWdFeHAod2wsIFwiZ1wiKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkQW5ub3RhdGlvbihcbiAgICAgICAgbm9kZTogSUNvbnN0cnVjdCxcbiAgICAgICAga2V5OiBSZXNvdXJjZVR5cGUgfCBzdHJpbmcsXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgaXNFcnJvciA9IHRydWVcbiAgICApIHtcbiAgICAgICAgY29uc3QgcmVzb3VyY2VLZXkgPSBgJHtub2RlLm5vZGUucGF0aH0vJHtrZXl9YDtcbiAgICAgICAgY29uc3QgaXNXaGl0ZUxpc3RlZCA9IHRoaXMuaXNXaGl0ZWxpc3RlZChyZXNvdXJjZUtleSk7XG4gICAgICAgIGNvbnN0IGFubm90YXRpb25NZXNzYWdlID0gYCR7cmVzb3VyY2VLZXl9OiR7bWVzc2FnZX1gO1xuXG4gICAgICAgIC8vIGVycm9yICYmIHdoaXRlbGlzdGVkIC0+IHdhcm5pbmdcbiAgICAgICAgLy8gd2FybmluZyAmJiB3aGl0ZWxpc3RlZCAtPiBub3RoaW5nXG4gICAgICAgIGlmIChpc0Vycm9yICYmICFpc1doaXRlTGlzdGVkKSB7XG4gICAgICAgICAgICBBbm5vdGF0aW9ucy5vZihub2RlKS5hZGRFcnJvcihhbm5vdGF0aW9uTWVzc2FnZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoKCFpc0Vycm9yICYmICFpc1doaXRlTGlzdGVkKSB8fCAoaXNFcnJvciAmJiBpc1doaXRlTGlzdGVkKSkge1xuICAgICAgICAgICAgQW5ub3RhdGlvbnMub2Yobm9kZSkuYWRkV2FybmluZyhhbm5vdGF0aW9uTWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrU3RhY2sobm9kZTogSUNvbnN0cnVjdCkge1xuICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIERpZ2l0cmFmZmljU3RhY2spIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAobm9kZS5zdGFja05hbWUuaW5jbHVkZXMoXCJUZXN0XCIpIHx8XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc3RhY2tOYW1lLmluY2x1ZGVzKFwiVHN0XCIpKSAmJlxuICAgICAgICAgICAgICAgIG5vZGUuY29uZmlndXJhdGlvbi5wcm9kdWN0aW9uXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFubm90YXRpb24oXG4gICAgICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlVHlwZS5zdGFja05hbWUsXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvZHVjdGlvbiBpcyBzZXQgZm9yIFRlc3Qtc3RhY2tcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAobm9kZS5zdGFja05hbWUuaW5jbHVkZXMoXCJQcm9kXCIpIHx8XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc3RhY2tOYW1lLmluY2x1ZGVzKFwiUHJkXCIpKSAmJlxuICAgICAgICAgICAgICAgICFub2RlLmNvbmZpZ3VyYXRpb24ucHJvZHVjdGlvblxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUuc3RhY2tOYW1lLFxuICAgICAgICAgICAgICAgICAgICBcIlByb2R1Y3Rpb24gaXMgbm90IHNldCBmb3IgUHJvZHVjdGlvbi1zdGFja1wiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tGdW5jdGlvbihub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQ2ZuRnVuY3Rpb24pIHtcbiAgICAgICAgICAgIGlmICghbm9kZS5yZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUucmVzZXJ2ZWRDb25jdXJyZW50Q29uY3VycmVuY3ksXG4gICAgICAgICAgICAgICAgICAgIFwiRnVuY3Rpb24gbXVzdCBoYXZlIHJlc2VydmVkQ29uY3VycmVudENvbmN1cnJlbmN5XCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBub2RlLnJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnMgPiBNQVhfQ09OQ1VSUkVOQ1lfTElNSVRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlLnJlc2VydmVkQ29uY3VycmVudENvbmN1cnJlbmN5LFxuICAgICAgICAgICAgICAgICAgICBcIkZ1bmN0aW9uIHJlc2VydmVkQ29uY3VycmVudENvbmN1cnJlbmN5IHRvbyBoaWdoIVwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFub2RlLnRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFubm90YXRpb24oXG4gICAgICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlVHlwZS5mdW5jdGlvblRpbWVvdXQsXG4gICAgICAgICAgICAgICAgICAgIFwiRnVuY3Rpb24gbXVzdCBoYXZlIHRpbWVvdXRcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghbm9kZS5tZW1vcnlTaXplKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUuZnVuY3Rpb25NZW1vcnlTaXplLFxuICAgICAgICAgICAgICAgICAgICBcIkZ1bmN0aW9uIG11c3QgaGF2ZSBtZW1vcnlTaXplXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobm9kZS5ydW50aW1lICE9PSBOT0RFX1JVTlRJTUUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFubm90YXRpb24oXG4gICAgICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlVHlwZS5mdW5jdGlvblJ1bnRpbWUsXG4gICAgICAgICAgICAgICAgICAgIGBGdW5jdGlvbiBoYXMgd3JvbmcgcnVudGltZSAke25vZGUucnVudGltZSF9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrU2hvcnROYW1lICYmXG4gICAgICAgICAgICAgICAgbm9kZS5mdW5jdGlvbk5hbWUgJiZcbiAgICAgICAgICAgICAgICAhbm9kZS5mdW5jdGlvbk5hbWUuc3RhcnRzV2l0aCh0aGlzLnN0YWNrU2hvcnROYW1lKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUuZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgICAgICBgRnVuY3Rpb24gbmFtZSBkb2VzIG5vdCBiZWdpbiB3aXRoICR7dGhpcy5zdGFja1Nob3J0TmFtZX1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tUYWdzKG5vZGU6IElDb25zdHJ1Y3QpIHtcbiAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBTdGFjaykge1xuICAgICAgICAgICAgaWYgKCFub2RlLnRhZ3MudGFnVmFsdWVzKClbU09MVVRJT05fS0VZXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlLnRhZ1NvbHV0aW9uLFxuICAgICAgICAgICAgICAgICAgICBcIlNvbHV0aW9uIHRhZyBpcyBtaXNzaW5nXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0J1Y2tldChub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQ2ZuQnVja2V0KSB7XG4gICAgICAgICAgICBjb25zdCBjID1cbiAgICAgICAgICAgICAgICBub2RlLnB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvbiBhcyBDZm5CdWNrZXQuUHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uUHJvcGVydHk7XG5cbiAgICAgICAgICAgIGlmIChjKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAhYy5ibG9ja1B1YmxpY0FjbHMgfHxcbiAgICAgICAgICAgICAgICAgICAgIWMuYmxvY2tQdWJsaWNQb2xpY3kgfHxcbiAgICAgICAgICAgICAgICAgICAgIWMuaWdub3JlUHVibGljQWNscyB8fFxuICAgICAgICAgICAgICAgICAgICAhYy5yZXN0cmljdFB1YmxpY0J1Y2tldHNcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVHlwZS5idWNrZXRQdWJsaWNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICBcIkNoZWNrIGJ1Y2tldCBwdWJsaWNpdHlcIlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGlzVmFsaWRQYXRoKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBpZiBwYXRoIGluY2x1ZGVzIC4gb3IgeyBjaGVjayBvbmx5IHRoZSB0cmFpbGluZyBwYXJ0IG9mIHBhdGhcbiAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoXCIuXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkUGF0aChwYXRoLnNwbGl0KFwiLlwiKVswXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aC5pbmNsdWRlcyhcIntcIikpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRQYXRoKHBhdGguc3BsaXQoXCJ7XCIpWzBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJhbUNhc2UocGF0aCkgPT09IHBhdGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNWYWxpZFF1ZXJ5U3RyaW5nKG5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gc25ha2VDYXNlKG5hbWUpID09PSBuYW1lO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tSZXNvdXJjZUNhc2luZyhub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQ2ZuUmVzb3VyY2UpIHtcbiAgICAgICAgICAgIGlmICghU3RhY2tDaGVja2luZ0FzcGVjdC5pc1ZhbGlkUGF0aChub2RlLnBhdGhQYXJ0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlLnJlc291cmNlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgXCJQYXRoIHBhcnQgc2hvdWxkIGJlIGluIGtlYmFiLWNhc2VcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIENmbk1ldGhvZCkge1xuICAgICAgICAgICAgY29uc3QgaW50ZWdyYXRpb24gPSBub2RlLmludGVncmF0aW9uIGFzIEludGVncmF0aW9uUHJvcGVydHk7XG5cbiAgICAgICAgICAgIGlmIChpbnRlZ3JhdGlvbiAmJiBpbnRlZ3JhdGlvbi5yZXF1ZXN0UGFyYW1ldGVycykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGludGVncmF0aW9uLnJlcXVlc3RQYXJhbWV0ZXJzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3BsaXQgPSBrZXkuc3BsaXQoXCIuXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gc3BsaXRbMl07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBzcGxpdFszXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlID09PSBcInF1ZXJ5c3RyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFTdGFja0NoZWNraW5nQXNwZWN0LmlzVmFsaWRRdWVyeVN0cmluZyhuYW1lKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJRdWVyeXN0cmluZyBzaG91bGQgYmUgaW4gc25ha2VfY2FzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrUXVldWVFbmNyeXB0aW9uKG5vZGU6IElDb25zdHJ1Y3QpIHtcbiAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBDZm5RdWV1ZSkge1xuICAgICAgICAgICAgaWYgKCFub2RlLmttc01hc3RlcktleUlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUucXVldWVFbmNyeXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBcIlF1ZXVlIG11c3QgaGF2ZSBlbmNyeXB0aW9uIGVuYWJsZWRcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrTG9nR3JvdXBSZXRlbnRpb24obm9kZTogSUNvbnN0cnVjdCkge1xuICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIExvZ1JldGVudGlvbikge1xuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLm5vZGUuZGVmYXVsdENoaWxkIGFzIHVua25vd24gYXMgUmVjb3JkPFxuICAgICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgICBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gICAgICAgICAgICA+O1xuICAgICAgICAgICAgY29uc3QgcmV0ZW50aW9uID0gY2hpbGQuX2NmblByb3BlcnRpZXMuUmV0ZW50aW9uSW5EYXlzO1xuXG4gICAgICAgICAgICBpZiAoIXJldGVudGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlLmxvZ0dyb3VwUmV0ZW50aW9uLFxuICAgICAgICAgICAgICAgICAgICBcIkxvZyBncm91cCBtdXN0IGRlZmluZSBsb2cgZ3JvdXAgcmV0ZW50aW9uXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -3,14 +3,14 @@ import { IVpc } from "aws-cdk-lib/aws-ec2";
3
3
  import { ISecurityGroup } from "aws-cdk-lib/aws-ec2/lib/security-group";
4
4
  import { ITopic } from "aws-cdk-lib/aws-sns";
5
5
  import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
6
- import { Function } from "aws-cdk-lib/aws-lambda";
6
+ import { Function as AWSFunction } from "aws-cdk-lib/aws-lambda";
7
7
  import { Construct } from "constructs";
8
8
  import { TrafficType } from "../../../types/traffictype";
9
9
  import { DBLambdaEnvironment } from "./lambda-configs";
10
10
  export declare const SOLUTION_KEY = "Solution";
11
11
  export declare const SSM_KEY_WARNING_TOPIC: string;
12
12
  export declare const SSM_KEY_ALARM_TOPIC: string;
13
- export declare type StackConfiguration = {
13
+ export interface StackConfiguration {
14
14
  readonly shortName?: string;
15
15
  readonly secretId?: string;
16
16
  readonly alarmTopicArn: string;
@@ -28,7 +28,7 @@ export declare type StackConfiguration = {
28
28
  readonly enableDocumentation?: boolean;
29
29
  };
30
30
  readonly whitelistedResources?: string[];
31
- };
31
+ }
32
32
  export declare class DigitrafficStack extends Stack {
33
33
  readonly vpc: IVpc;
34
34
  readonly lambdaDbSg: ISecurityGroup;
@@ -40,5 +40,5 @@ export declare class DigitrafficStack extends Stack {
40
40
  addAspects(): void;
41
41
  createLambdaEnvironment(): DBLambdaEnvironment;
42
42
  createDefaultLambdaEnvironment(dbApplication: string): DBLambdaEnvironment;
43
- grantSecret(...lambdas: Function[]): void;
43
+ grantSecret(...lambdas: AWSFunction[]): void;
44
44
  }
@@ -7,9 +7,9 @@ const aws_sns_1 = require("aws-cdk-lib/aws-sns");
7
7
  const aws_ssm_1 = require("aws-cdk-lib/aws-ssm");
8
8
  const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
9
9
  const stack_checking_aspect_1 = require("./stack-checking-aspect");
10
- const SSM_ROOT = '/digitraffic';
11
- exports.SOLUTION_KEY = 'Solution';
12
- const MONITORING_ROOT = '/monitoring';
10
+ const SSM_ROOT = "/digitraffic";
11
+ exports.SOLUTION_KEY = "Solution";
12
+ const MONITORING_ROOT = "/monitoring";
13
13
  exports.SSM_KEY_WARNING_TOPIC = `${SSM_ROOT}${MONITORING_ROOT}/warning-topic`;
14
14
  exports.SSM_KEY_ALARM_TOPIC = `${SSM_ROOT}${MONITORING_ROOT}/alarm-topic`;
15
15
  class DigitrafficStack extends aws_cdk_lib_1.Stack {
@@ -17,12 +17,12 @@ class DigitrafficStack extends aws_cdk_lib_1.Stack {
17
17
  super(scope, id, configuration.stackProps);
18
18
  this.configuration = configuration;
19
19
  if (configuration.secretId) {
20
- this.secret = aws_secretsmanager_1.Secret.fromSecretNameV2(this, 'Secret', configuration.secretId);
20
+ this.secret = aws_secretsmanager_1.Secret.fromSecretNameV2(this, "Secret", configuration.secretId);
21
21
  }
22
22
  // VPC reference construction requires vpcId and availability zones
23
23
  // private subnets are used in Lambda configuration
24
24
  if (configuration.vpcId) {
25
- this.vpc = aws_ec2_1.Vpc.fromVpcAttributes(this, 'vpc', {
25
+ this.vpc = aws_ec2_1.Vpc.fromVpcAttributes(this, "vpc", {
26
26
  vpcId: configuration.vpcId,
27
27
  privateSubnetIds: configuration.privateSubnetIds,
28
28
  availabilityZones: configuration.availabilityZones,
@@ -30,10 +30,10 @@ class DigitrafficStack extends aws_cdk_lib_1.Stack {
30
30
  }
31
31
  // security group that allows Lambda database access
32
32
  if (configuration.lambdaDbSgId) {
33
- this.lambdaDbSg = aws_ec2_1.SecurityGroup.fromSecurityGroupId(this, 'LambdaDbSG', configuration.lambdaDbSgId);
33
+ this.lambdaDbSg = aws_ec2_1.SecurityGroup.fromSecurityGroupId(this, "LambdaDbSG", configuration.lambdaDbSgId);
34
34
  }
35
- this.alarmTopic = aws_sns_1.Topic.fromTopicArn(this, 'AlarmTopic', aws_ssm_1.StringParameter.fromStringParameterName(this, 'AlarmTopicParam', exports.SSM_KEY_ALARM_TOPIC).stringValue);
36
- this.warningTopic = aws_sns_1.Topic.fromTopicArn(this, 'WarningTopic', aws_ssm_1.StringParameter.fromStringParameterName(this, 'WarningTopicParam', exports.SSM_KEY_WARNING_TOPIC).stringValue);
35
+ this.alarmTopic = aws_sns_1.Topic.fromTopicArn(this, "AlarmTopic", aws_ssm_1.StringParameter.fromStringParameterName(this, "AlarmTopicParam", exports.SSM_KEY_ALARM_TOPIC).stringValue);
36
+ this.warningTopic = aws_sns_1.Topic.fromTopicArn(this, "WarningTopic", aws_ssm_1.StringParameter.fromStringParameterName(this, "WarningTopicParam", exports.SSM_KEY_WARNING_TOPIC).stringValue);
37
37
  this.addAspects();
38
38
  }
39
39
  addAspects() {
@@ -43,16 +43,18 @@ class DigitrafficStack extends aws_cdk_lib_1.Stack {
43
43
  return this.createDefaultLambdaEnvironment(this.configuration.shortName);
44
44
  }
45
45
  createDefaultLambdaEnvironment(dbApplication) {
46
- return this.configuration.secretId ? {
47
- SECRET_ID: this.configuration.secretId,
48
- DB_APPLICATION: dbApplication,
49
- } : {
50
- DB_APPLICATION: dbApplication,
51
- };
46
+ return this.configuration.secretId
47
+ ? {
48
+ SECRET_ID: this.configuration.secretId,
49
+ DB_APPLICATION: dbApplication,
50
+ }
51
+ : {
52
+ DB_APPLICATION: dbApplication,
53
+ };
52
54
  }
53
55
  grantSecret(...lambdas) {
54
56
  lambdas.forEach((l) => this.secret.grantRead(l));
55
57
  }
56
58
  }
57
59
  exports.DigitrafficStack = DigitrafficStack;
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2luZnJhL3N0YWNrL3N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF1RDtBQUN2RCxpREFBNkQ7QUFFN0QsaURBQWtEO0FBQ2xELGlEQUFvRDtBQUNwRCx1RUFBK0Q7QUFHL0QsbUVBQTREO0FBSzVELE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQztBQUNuQixRQUFBLFlBQVksR0FBRyxVQUFVLENBQUM7QUFDdkMsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDO0FBRXpCLFFBQUEscUJBQXFCLEdBQUcsR0FBRyxRQUFRLEdBQUcsZUFBZSxnQkFBZ0IsQ0FBQztBQUN0RSxRQUFBLG1CQUFtQixHQUFHLEdBQUcsUUFBUSxHQUFHLGVBQWUsY0FBYyxDQUFDO0FBMkIvRSxNQUFhLGdCQUFpQixTQUFRLG1CQUFLO0lBU3ZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsYUFBaUM7UUFDdkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBRW5DLElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRTtZQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHLDJCQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDakY7UUFFRCxtRUFBbUU7UUFDbkUsbURBQW1EO1FBQ25ELElBQUksYUFBYSxDQUFDLEtBQUssRUFBRTtZQUNyQixJQUFJLENBQUMsR0FBRyxHQUFHLGFBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO2dCQUMxQyxLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUs7Z0JBQzFCLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxnQkFBZ0I7Z0JBQ2hELGlCQUFpQixFQUFFLGFBQWEsQ0FBQyxpQkFBNkI7YUFDakUsQ0FBQyxDQUFDO1NBQ047UUFFRCxvREFBb0Q7UUFDcEQsSUFBSSxhQUFhLENBQUMsWUFBWSxFQUFFO1lBQzVCLElBQUksQ0FBQyxVQUFVLEdBQUcsdUJBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN2RztRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQ3JDLFlBQVksRUFDWix5QkFBZSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSwyQkFBbUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksQ0FBQyxZQUFZLEdBQUcsZUFBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUN2RCx5QkFBZSxDQUFDLHVCQUF1QixDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRSw2QkFBcUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTNHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVTtRQUNOLHFCQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQywyQ0FBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBbUIsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxhQUFxQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNqQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRO1lBQ3RDLGNBQWMsRUFBRSxhQUFhO1NBQ2hDLENBQUMsQ0FBQyxDQUFDO1lBQ0EsY0FBYyxFQUFFLGFBQWE7U0FDaEMsQ0FBQztJQUNOLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBRyxPQUFtQjtRQUM5QixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7Q0FDSjtBQTlERCw0Q0E4REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzcGVjdHMsIFN0YWNrLCBTdGFja1Byb3BzfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7SVZwYywgU2VjdXJpdHlHcm91cCwgVnBjfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHtJU2VjdXJpdHlHcm91cH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzIvbGliL3NlY3VyaXR5LWdyb3VwXCI7XG5pbXBvcnQge0lUb3BpYywgVG9waWN9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc25zXCI7XG5pbXBvcnQge1N0cmluZ1BhcmFtZXRlcn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zc21cIjtcbmltcG9ydCB7SVNlY3JldCwgU2VjcmV0fSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQge0Z1bmN0aW9ufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuXG5pbXBvcnQge1N0YWNrQ2hlY2tpbmdBc3BlY3R9IGZyb20gXCIuL3N0YWNrLWNoZWNraW5nLWFzcGVjdFwiO1xuaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge1RyYWZmaWNUeXBlfSBmcm9tIFwiLi4vLi4vLi4vdHlwZXMvdHJhZmZpY3R5cGVcIjtcbmltcG9ydCB7REJMYW1iZGFFbnZpcm9ubWVudH0gZnJvbSBcIi4vbGFtYmRhLWNvbmZpZ3NcIjtcblxuY29uc3QgU1NNX1JPT1QgPSAnL2RpZ2l0cmFmZmljJztcbmV4cG9ydCBjb25zdCBTT0xVVElPTl9LRVkgPSAnU29sdXRpb24nO1xuY29uc3QgTU9OSVRPUklOR19ST09UID0gJy9tb25pdG9yaW5nJztcblxuZXhwb3J0IGNvbnN0IFNTTV9LRVlfV0FSTklOR19UT1BJQyA9IGAke1NTTV9ST09UfSR7TU9OSVRPUklOR19ST09UfS93YXJuaW5nLXRvcGljYDtcbmV4cG9ydCBjb25zdCBTU01fS0VZX0FMQVJNX1RPUElDID0gYCR7U1NNX1JPT1R9JHtNT05JVE9SSU5HX1JPT1R9L2FsYXJtLXRvcGljYDtcblxuZXhwb3J0IHR5cGUgU3RhY2tDb25maWd1cmF0aW9uID0ge1xuICAgIHJlYWRvbmx5IHNob3J0TmFtZT86IHN0cmluZ1xuICAgIHJlYWRvbmx5IHNlY3JldElkPzogc3RyaW5nXG4gICAgcmVhZG9ubHkgYWxhcm1Ub3BpY0Fybjogc3RyaW5nXG4gICAgcmVhZG9ubHkgd2FybmluZ1RvcGljQXJuOiBzdHJpbmdcbiAgICByZWFkb25seSBsb2dzRGVzdGluYXRpb25Bcm4/OiBzdHJpbmdcblxuICAgIHJlYWRvbmx5IHZwY0lkPzogc3RyaW5nXG4gICAgcmVhZG9ubHkgbGFtYmRhRGJTZ0lkPzogc3RyaW5nXG4gICAgcmVhZG9ubHkgcHJpdmF0ZVN1Ym5ldElkcz86IHN0cmluZ1tdXG4gICAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZXM/OiBzdHJpbmdbXVxuXG4gICAgcmVhZG9ubHkgdHJhZmZpY1R5cGU6IFRyYWZmaWNUeXBlXG4gICAgcmVhZG9ubHkgcHJvZHVjdGlvbjogYm9vbGVhblxuICAgIHJlYWRvbmx5IHN0YWNrUHJvcHM6IFN0YWNrUHJvcHNcblxuICAgIHJlYWRvbmx5IHN0YWNrRmVhdHVyZXM/OiB7XG4gICAgICAgIHJlYWRvbmx5IGVuYWJsZUNhbmFyaWVzPzogYm9vbGVhblxuICAgICAgICByZWFkb25seSBlbmFibGVEb2N1bWVudGF0aW9uPzogYm9vbGVhblxuICAgIH1cblxuICAgIC8vLyB3aGl0ZWxpc3QgcmVzb3VyY2VzIGZvciBTdGFja0NoZWNraW5nQXNwZWN0XG4gICAgcmVhZG9ubHkgd2hpdGVsaXN0ZWRSZXNvdXJjZXM/OiBzdHJpbmdbXVxufVxuXG5leHBvcnQgY2xhc3MgRGlnaXRyYWZmaWNTdGFjayBleHRlbmRzIFN0YWNrIHtcbiAgICByZWFkb25seSB2cGM6IElWcGM7XG4gICAgcmVhZG9ubHkgbGFtYmRhRGJTZzogSVNlY3VyaXR5R3JvdXA7XG4gICAgcmVhZG9ubHkgYWxhcm1Ub3BpYzogSVRvcGljO1xuICAgIHJlYWRvbmx5IHdhcm5pbmdUb3BpYzogSVRvcGljO1xuICAgIHJlYWRvbmx5IHNlY3JldDogSVNlY3JldDtcblxuICAgIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb246IFN0YWNrQ29uZmlndXJhdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNvbmZpZ3VyYXRpb246IFN0YWNrQ29uZmlndXJhdGlvbikge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQsIGNvbmZpZ3VyYXRpb24uc3RhY2tQcm9wcyk7XG5cbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcblxuICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5zZWNyZXRJZCkge1xuICAgICAgICAgICAgdGhpcy5zZWNyZXQgPSBTZWNyZXQuZnJvbVNlY3JldE5hbWVWMih0aGlzLCAnU2VjcmV0JywgY29uZmlndXJhdGlvbi5zZWNyZXRJZCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBWUEMgcmVmZXJlbmNlIGNvbnN0cnVjdGlvbiByZXF1aXJlcyB2cGNJZCBhbmQgYXZhaWxhYmlsaXR5IHpvbmVzXG4gICAgICAgIC8vIHByaXZhdGUgc3VibmV0cyBhcmUgdXNlZCBpbiBMYW1iZGEgY29uZmlndXJhdGlvblxuICAgICAgICBpZiAoY29uZmlndXJhdGlvbi52cGNJZCkge1xuICAgICAgICAgICAgdGhpcy52cGMgPSBWcGMuZnJvbVZwY0F0dHJpYnV0ZXModGhpcywgJ3ZwYycsIHtcbiAgICAgICAgICAgICAgICB2cGNJZDogY29uZmlndXJhdGlvbi52cGNJZCxcbiAgICAgICAgICAgICAgICBwcml2YXRlU3VibmV0SWRzOiBjb25maWd1cmF0aW9uLnByaXZhdGVTdWJuZXRJZHMsXG4gICAgICAgICAgICAgICAgYXZhaWxhYmlsaXR5Wm9uZXM6IGNvbmZpZ3VyYXRpb24uYXZhaWxhYmlsaXR5Wm9uZXMgYXMgc3RyaW5nW10sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHNlY3VyaXR5IGdyb3VwIHRoYXQgYWxsb3dzIExhbWJkYSBkYXRhYmFzZSBhY2Nlc3NcbiAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24ubGFtYmRhRGJTZ0lkKSB7XG4gICAgICAgICAgICB0aGlzLmxhbWJkYURiU2cgPSBTZWN1cml0eUdyb3VwLmZyb21TZWN1cml0eUdyb3VwSWQodGhpcywgJ0xhbWJkYURiU0cnLCBjb25maWd1cmF0aW9uLmxhbWJkYURiU2dJZCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmFsYXJtVG9waWMgPSBUb3BpYy5mcm9tVG9waWNBcm4odGhpcyxcbiAgICAgICAgICAgICdBbGFybVRvcGljJyxcbiAgICAgICAgICAgIFN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZSh0aGlzLCAnQWxhcm1Ub3BpY1BhcmFtJywgU1NNX0tFWV9BTEFSTV9UT1BJQykuc3RyaW5nVmFsdWUpO1xuICAgICAgICB0aGlzLndhcm5pbmdUb3BpYyA9IFRvcGljLmZyb21Ub3BpY0Fybih0aGlzLCAnV2FybmluZ1RvcGljJyxcbiAgICAgICAgICAgIFN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyTmFtZSh0aGlzLCAnV2FybmluZ1RvcGljUGFyYW0nLCBTU01fS0VZX1dBUk5JTkdfVE9QSUMpLnN0cmluZ1ZhbHVlKTtcblxuICAgICAgICB0aGlzLmFkZEFzcGVjdHMoKTtcbiAgICB9XG5cbiAgICBhZGRBc3BlY3RzKCkge1xuICAgICAgICBBc3BlY3RzLm9mKHRoaXMpLmFkZChTdGFja0NoZWNraW5nQXNwZWN0LmNyZWF0ZSh0aGlzKSk7XG4gICAgfVxuXG4gICAgY3JlYXRlTGFtYmRhRW52aXJvbm1lbnQoKTogREJMYW1iZGFFbnZpcm9ubWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZURlZmF1bHRMYW1iZGFFbnZpcm9ubWVudCh0aGlzLmNvbmZpZ3VyYXRpb24uc2hvcnROYW1lIGFzIHN0cmluZyk7XG4gICAgfVxuXG4gICAgY3JlYXRlRGVmYXVsdExhbWJkYUVudmlyb25tZW50KGRiQXBwbGljYXRpb246IHN0cmluZyk6IERCTGFtYmRhRW52aXJvbm1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uLnNlY3JldElkID8ge1xuICAgICAgICAgICAgU0VDUkVUX0lEOiB0aGlzLmNvbmZpZ3VyYXRpb24uc2VjcmV0SWQsXG4gICAgICAgICAgICBEQl9BUFBMSUNBVElPTjogZGJBcHBsaWNhdGlvbixcbiAgICAgICAgfSA6IHtcbiAgICAgICAgICAgIERCX0FQUExJQ0FUSU9OOiBkYkFwcGxpY2F0aW9uLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGdyYW50U2VjcmV0KC4uLmxhbWJkYXM6IEZ1bmN0aW9uW10pIHtcbiAgICAgICAgbGFtYmRhcy5mb3JFYWNoKChsOiBGdW5jdGlvbikgPT4gdGhpcy5zZWNyZXQuZ3JhbnRSZWFkKGwpKTtcbiAgICB9XG59XG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2luZnJhL3N0YWNrL3N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF5RDtBQUN6RCxpREFBK0Q7QUFFL0QsaURBQW9EO0FBQ3BELGlEQUFzRDtBQUN0RCx1RUFBaUU7QUFHakUsbUVBQThEO0FBSzlELE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQztBQUNuQixRQUFBLFlBQVksR0FBRyxVQUFVLENBQUM7QUFDdkMsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDO0FBRXpCLFFBQUEscUJBQXFCLEdBQUcsR0FBRyxRQUFRLEdBQUcsZUFBZSxnQkFBZ0IsQ0FBQztBQUN0RSxRQUFBLG1CQUFtQixHQUFHLEdBQUcsUUFBUSxHQUFHLGVBQWUsY0FBYyxDQUFDO0FBMkIvRSxNQUFhLGdCQUFpQixTQUFRLG1CQUFLO0lBU3ZDLFlBQ0ksS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLGFBQWlDO1FBRWpDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUVuQyxJQUFJLGFBQWEsQ0FBQyxRQUFRLEVBQUU7WUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRywyQkFBTSxDQUFDLGdCQUFnQixDQUNqQyxJQUFJLEVBQ0osUUFBUSxFQUNSLGFBQWEsQ0FBQyxRQUFRLENBQ3pCLENBQUM7U0FDTDtRQUVELG1FQUFtRTtRQUNuRSxtREFBbUQ7UUFDbkQsSUFBSSxhQUFhLENBQUMsS0FBSyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsYUFBRyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSztnQkFDMUIsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLGdCQUFnQjtnQkFDaEQsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLGlCQUFrQjthQUN0RCxDQUFDLENBQUM7U0FDTjtRQUVELG9EQUFvRDtRQUNwRCxJQUFJLGFBQWEsQ0FBQyxZQUFZLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyx1QkFBYSxDQUFDLG1CQUFtQixDQUMvQyxJQUFJLEVBQ0osWUFBWSxFQUNaLGFBQWEsQ0FBQyxZQUFZLENBQzdCLENBQUM7U0FDTDtRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBSyxDQUFDLFlBQVksQ0FDaEMsSUFBSSxFQUNKLFlBQVksRUFDWix5QkFBZSxDQUFDLHVCQUF1QixDQUNuQyxJQUFJLEVBQ0osaUJBQWlCLEVBQ2pCLDJCQUFtQixDQUN0QixDQUFDLFdBQVcsQ0FDaEIsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsZUFBSyxDQUFDLFlBQVksQ0FDbEMsSUFBSSxFQUNKLGNBQWMsRUFDZCx5QkFBZSxDQUFDLHVCQUF1QixDQUNuQyxJQUFJLEVBQ0osbUJBQW1CLEVBQ25CLDZCQUFxQixDQUN4QixDQUFDLFdBQVcsQ0FDaEIsQ0FBQztRQUVGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVTtRQUNOLHFCQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQywyQ0FBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLDhCQUE4QixDQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVUsQ0FDaEMsQ0FBQztJQUNOLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxhQUFxQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUTtZQUM5QixDQUFDLENBQUM7Z0JBQ0ksU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUTtnQkFDdEMsY0FBYyxFQUFFLGFBQWE7YUFDaEM7WUFDSCxDQUFDLENBQUM7Z0JBQ0ksY0FBYyxFQUFFLGFBQWE7YUFDaEMsQ0FBQztJQUNaLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBRyxPQUFzQjtRQUNqQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBYyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDSjtBQTNGRCw0Q0EyRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3BlY3RzLCBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgSVZwYywgU2VjdXJpdHlHcm91cCwgVnBjIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IElTZWN1cml0eUdyb3VwIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzIvbGliL3NlY3VyaXR5LWdyb3VwXCI7XG5pbXBvcnQgeyBJVG9waWMsIFRvcGljIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zbnNcIjtcbmltcG9ydCB7IFN0cmluZ1BhcmFtZXRlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3NtXCI7XG5pbXBvcnQgeyBJU2VjcmV0LCBTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBGdW5jdGlvbiBhcyBBV1NGdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5cbmltcG9ydCB7IFN0YWNrQ2hlY2tpbmdBc3BlY3QgfSBmcm9tIFwiLi9zdGFjay1jaGVja2luZy1hc3BlY3RcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUcmFmZmljVHlwZSB9IGZyb20gXCIuLi8uLi8uLi90eXBlcy90cmFmZmljdHlwZVwiO1xuaW1wb3J0IHsgREJMYW1iZGFFbnZpcm9ubWVudCB9IGZyb20gXCIuL2xhbWJkYS1jb25maWdzXCI7XG5cbmNvbnN0IFNTTV9ST09UID0gXCIvZGlnaXRyYWZmaWNcIjtcbmV4cG9ydCBjb25zdCBTT0xVVElPTl9LRVkgPSBcIlNvbHV0aW9uXCI7XG5jb25zdCBNT05JVE9SSU5HX1JPT1QgPSBcIi9tb25pdG9yaW5nXCI7XG5cbmV4cG9ydCBjb25zdCBTU01fS0VZX1dBUk5JTkdfVE9QSUMgPSBgJHtTU01fUk9PVH0ke01PTklUT1JJTkdfUk9PVH0vd2FybmluZy10b3BpY2A7XG5leHBvcnQgY29uc3QgU1NNX0tFWV9BTEFSTV9UT1BJQyA9IGAke1NTTV9ST09UfSR7TU9OSVRPUklOR19ST09UfS9hbGFybS10b3BpY2A7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tDb25maWd1cmF0aW9uIHtcbiAgICByZWFkb25seSBzaG9ydE5hbWU/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgc2VjcmV0SWQ/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYWxhcm1Ub3BpY0Fybjogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHdhcm5pbmdUb3BpY0Fybjogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGxvZ3NEZXN0aW5hdGlvbkFybj86IHN0cmluZztcblxuICAgIHJlYWRvbmx5IHZwY0lkPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGxhbWJkYURiU2dJZD86IHN0cmluZztcbiAgICByZWFkb25seSBwcml2YXRlU3VibmV0SWRzPzogc3RyaW5nW107XG4gICAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZXM/OiBzdHJpbmdbXTtcblxuICAgIHJlYWRvbmx5IHRyYWZmaWNUeXBlOiBUcmFmZmljVHlwZTtcbiAgICByZWFkb25seSBwcm9kdWN0aW9uOiBib29sZWFuO1xuICAgIHJlYWRvbmx5IHN0YWNrUHJvcHM6IFN0YWNrUHJvcHM7XG5cbiAgICByZWFkb25seSBzdGFja0ZlYXR1cmVzPzoge1xuICAgICAgICByZWFkb25seSBlbmFibGVDYW5hcmllcz86IGJvb2xlYW47XG4gICAgICAgIHJlYWRvbmx5IGVuYWJsZURvY3VtZW50YXRpb24/OiBib29sZWFuO1xuICAgIH07XG5cbiAgICAvLy8gd2hpdGVsaXN0IHJlc291cmNlcyBmb3IgU3RhY2tDaGVja2luZ0FzcGVjdFxuICAgIHJlYWRvbmx5IHdoaXRlbGlzdGVkUmVzb3VyY2VzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBEaWdpdHJhZmZpY1N0YWNrIGV4dGVuZHMgU3RhY2sge1xuICAgIHJlYWRvbmx5IHZwYzogSVZwYztcbiAgICByZWFkb25seSBsYW1iZGFEYlNnOiBJU2VjdXJpdHlHcm91cDtcbiAgICByZWFkb25seSBhbGFybVRvcGljOiBJVG9waWM7XG4gICAgcmVhZG9ubHkgd2FybmluZ1RvcGljOiBJVG9waWM7XG4gICAgcmVhZG9ubHkgc2VjcmV0OiBJU2VjcmV0O1xuXG4gICAgcmVhZG9ubHkgY29uZmlndXJhdGlvbjogU3RhY2tDb25maWd1cmF0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgICAgIGlkOiBzdHJpbmcsXG4gICAgICAgIGNvbmZpZ3VyYXRpb246IFN0YWNrQ29uZmlndXJhdGlvblxuICAgICkge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQsIGNvbmZpZ3VyYXRpb24uc3RhY2tQcm9wcyk7XG5cbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcblxuICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5zZWNyZXRJZCkge1xuICAgICAgICAgICAgdGhpcy5zZWNyZXQgPSBTZWNyZXQuZnJvbVNlY3JldE5hbWVWMihcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIFwiU2VjcmV0XCIsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5zZWNyZXRJZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZQQyByZWZlcmVuY2UgY29uc3RydWN0aW9uIHJlcXVpcmVzIHZwY0lkIGFuZCBhdmFpbGFiaWxpdHkgem9uZXNcbiAgICAgICAgLy8gcHJpdmF0ZSBzdWJuZXRzIGFyZSB1c2VkIGluIExhbWJkYSBjb25maWd1cmF0aW9uXG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uLnZwY0lkKSB7XG4gICAgICAgICAgICB0aGlzLnZwYyA9IFZwYy5mcm9tVnBjQXR0cmlidXRlcyh0aGlzLCBcInZwY1wiLCB7XG4gICAgICAgICAgICAgICAgdnBjSWQ6IGNvbmZpZ3VyYXRpb24udnBjSWQsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZVN1Ym5ldElkczogY29uZmlndXJhdGlvbi5wcml2YXRlU3VibmV0SWRzLFxuICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVzOiBjb25maWd1cmF0aW9uLmF2YWlsYWJpbGl0eVpvbmVzISxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2VjdXJpdHkgZ3JvdXAgdGhhdCBhbGxvd3MgTGFtYmRhIGRhdGFiYXNlIGFjY2Vzc1xuICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5sYW1iZGFEYlNnSWQpIHtcbiAgICAgICAgICAgIHRoaXMubGFtYmRhRGJTZyA9IFNlY3VyaXR5R3JvdXAuZnJvbVNlY3VyaXR5R3JvdXBJZChcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIFwiTGFtYmRhRGJTR1wiLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubGFtYmRhRGJTZ0lkXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hbGFybVRvcGljID0gVG9waWMuZnJvbVRvcGljQXJuKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIFwiQWxhcm1Ub3BpY1wiLFxuICAgICAgICAgICAgU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgXCJBbGFybVRvcGljUGFyYW1cIixcbiAgICAgICAgICAgICAgICBTU01fS0VZX0FMQVJNX1RPUElDXG4gICAgICAgICAgICApLnN0cmluZ1ZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMud2FybmluZ1RvcGljID0gVG9waWMuZnJvbVRvcGljQXJuKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIFwiV2FybmluZ1RvcGljXCIsXG4gICAgICAgICAgICBTdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICBcIldhcm5pbmdUb3BpY1BhcmFtXCIsXG4gICAgICAgICAgICAgICAgU1NNX0tFWV9XQVJOSU5HX1RPUElDXG4gICAgICAgICAgICApLnN0cmluZ1ZhbHVlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5hZGRBc3BlY3RzKCk7XG4gICAgfVxuXG4gICAgYWRkQXNwZWN0cygpIHtcbiAgICAgICAgQXNwZWN0cy5vZih0aGlzKS5hZGQoU3RhY2tDaGVja2luZ0FzcGVjdC5jcmVhdGUodGhpcykpO1xuICAgIH1cblxuICAgIGNyZWF0ZUxhbWJkYUVudmlyb25tZW50KCk6IERCTGFtYmRhRW52aXJvbm1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVEZWZhdWx0TGFtYmRhRW52aXJvbm1lbnQoXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2hvcnROYW1lIVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNyZWF0ZURlZmF1bHRMYW1iZGFFbnZpcm9ubWVudChkYkFwcGxpY2F0aW9uOiBzdHJpbmcpOiBEQkxhbWJkYUVudmlyb25tZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbi5zZWNyZXRJZFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICBTRUNSRVRfSUQ6IHRoaXMuY29uZmlndXJhdGlvbi5zZWNyZXRJZCxcbiAgICAgICAgICAgICAgICAgIERCX0FQUExJQ0FUSU9OOiBkYkFwcGxpY2F0aW9uLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgIERCX0FQUExJQ0FUSU9OOiBkYkFwcGxpY2F0aW9uLFxuICAgICAgICAgICAgICB9O1xuICAgIH1cblxuICAgIGdyYW50U2VjcmV0KC4uLmxhbWJkYXM6IEFXU0Z1bmN0aW9uW10pIHtcbiAgICAgICAgbGFtYmRhcy5mb3JFYWNoKChsOiBBV1NGdW5jdGlvbikgPT4gdGhpcy5zZWNyZXQuZ3JhbnRSZWFkKGwpKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ export declare function envValue(key: string): string;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.envValue = void 0;
4
+ function envValue(key) {
5
+ const value = process.env[key];
6
+ if (value == null) {
7
+ throw new Error(`Missing environment value ${key}`);
8
+ }
9
+ return value;
10
+ }
11
+ exports.envValue = envValue;
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL3J1bnRpbWUvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBZ0IsUUFBUSxDQUFDLEdBQVc7SUFDaEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUvQixJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixHQUFHLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZEO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQVJELDRCQVFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGVudlZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IHByb2Nlc3MuZW52W2tleV07XG5cbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZW52aXJvbm1lbnQgdmFsdWUgJHtrZXl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xufVxuIl19
@@ -0,0 +1,6 @@
1
+ export interface Countable {
2
+ count: number;
3
+ }
4
+ export interface Identifiable<T> {
5
+ id: T;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RhdGFiYXNlL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBDb3VudGFibGUge1xuICAgIGNvdW50OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWRlbnRpZmlhYmxlPFQ+IHtcbiAgICBpZDogVDtcbn1cblxuaW50ZXJmYWNlIFVwZGF0ZWREYXRlIHtcbiAgICB1cGRhdGVkX2RhdGU6IERhdGU7XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digitraffic/common",
3
- "version": "2022.10.10-1",
3
+ "version": "2022.10.25-1",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -25,13 +25,13 @@
25
25
  "."
26
26
  ],
27
27
  "dependencies": {
28
- "@aws-cdk/aws-synthetics-alpha": "^2.27.0-alpha.0",
28
+ "@aws-cdk/aws-synthetics-alpha": "2.46.0-alpha.0",
29
29
  "@types/geojson": "^7946.0.7",
30
- "aws-cdk-lib": "^2.43.1",
31
- "aws-sdk": "^2.1225.0",
30
+ "aws-cdk-lib": "2.46.0",
31
+ "aws-sdk": "2.1232.0",
32
32
  "axios": "^0.21.1",
33
33
  "change-case": "4.1.2",
34
- "constructs": "^10.1.116",
34
+ "constructs": "10.1.131",
35
35
  "geojson-validation": "^1.0.2",
36
36
  "moment": "^2.29.4",
37
37
  "node-ttl": "^0.2.0",
@@ -63,7 +63,6 @@
63
63
  "Synthetics"
64
64
  ],
65
65
  "lint-staged": {
66
- "*.{js,ts}": "eslint --cache --fix",
67
66
  "*.{js,ts,css,md,yml,yaml,json}": "prettier --write"
68
67
  }
69
68
  }
@@ -1,2 +1,2 @@
1
1
  import { DTDatabase } from "../database/database";
2
- export declare function dbTestBase(fn: (db: DTDatabase) => void, truncateFn: (db: DTDatabase) => void, dbUser: string, dbPass: string, dbUri: string): () => void;
2
+ export declare function dbTestBase(fn: (db: DTDatabase) => void, truncateFn: (db: DTDatabase) => Promise<void>, dbUser: string, dbPass: string, dbUri: string): () => void;
@@ -7,7 +7,7 @@ function dbTestBase(fn, truncateFn, dbUser, dbPass, dbUri) {
7
7
  const theDbUri = process.env.DB_URI ?? dbUri;
8
8
  console.log(`Test database URI: ${theDbUri}`);
9
9
  return () => {
10
- const db = (0, database_1.initDbConnection)(dbUser, dbPass, 'test', theDbUri, {
10
+ const db = (0, database_1.initDbConnection)(dbUser, dbPass, "test", theDbUri, {
11
11
  noWarnings: true, // ignore duplicate connection warning for tests
12
12
  });
13
13
  beforeAll(async () => {
@@ -28,4 +28,4 @@ function dbTestBase(fn, truncateFn, dbUser, dbPass, dbUri) {
28
28
  };
29
29
  }
30
30
  exports.dbTestBase = dbTestBase;
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGItdGVzdHV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvZGItdGVzdHV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFrRTtBQUNsRSw4REFBd0U7QUFFeEUsU0FBZ0IsVUFBVSxDQUN0QixFQUE0QixFQUM1QixVQUFvQyxFQUNwQyxNQUFjLEVBQ2QsTUFBYyxFQUNkLEtBQWE7SUFHYixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7SUFDN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUU5QyxPQUFPLEdBQUcsRUFBRTtRQUNSLE1BQU0sRUFBRSxHQUFlLElBQUEsMkJBQWdCLEVBQ25DLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRTtZQUM5QixVQUFVLEVBQUUsSUFBSSxFQUFFLGdEQUFnRDtTQUNyRSxDQUNKLENBQUM7UUFFRixTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBdUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUM7WUFDdEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBdUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLENBQUM7WUFDdEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBdUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUM7WUFDdkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQ0FBdUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxRQUFRLENBQUM7WUFDMUQsTUFBTSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFFSCxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDaEIsTUFBTSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckIsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ2xCLE1BQU0sVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ1gsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQXJDRCxnQ0FxQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0RURGF0YWJhc2UsIGluaXREYkNvbm5lY3Rpb259IGZyb20gXCIuLi9kYXRhYmFzZS9kYXRhYmFzZVwiO1xuaW1wb3J0IHtEYXRhYmFzZUVudmlyb25tZW50S2V5c30gZnJvbSBcIi4uL2F3cy9ydW50aW1lL3NlY3JldHMvZGJzZWNyZXRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGRiVGVzdEJhc2UoXG4gICAgZm46IChkYjogRFREYXRhYmFzZSkgPT4gdm9pZCxcbiAgICB0cnVuY2F0ZUZuOiAoZGI6IERURGF0YWJhc2UpID0+IHZvaWQsXG4gICAgZGJVc2VyOiBzdHJpbmcsXG4gICAgZGJQYXNzOiBzdHJpbmcsXG4gICAgZGJVcmk6IHN0cmluZyxcbik6ICgpID0+IHZvaWQge1xuXG4gICAgY29uc3QgdGhlRGJVcmkgPSBwcm9jZXNzLmVudi5EQl9VUkkgPz8gZGJVcmk7XG4gICAgY29uc29sZS5sb2coYFRlc3QgZGF0YWJhc2UgVVJJOiAke3RoZURiVXJpfWApO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY29uc3QgZGI6IERURGF0YWJhc2UgPSBpbml0RGJDb25uZWN0aW9uKFxuICAgICAgICAgICAgZGJVc2VyLCBkYlBhc3MsICd0ZXN0JywgdGhlRGJVcmksIHtcbiAgICAgICAgICAgICAgICBub1dhcm5pbmdzOiB0cnVlLCAvLyBpZ25vcmUgZHVwbGljYXRlIGNvbm5lY3Rpb24gd2FybmluZyBmb3IgdGVzdHNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgYmVmb3JlQWxsKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHByb2Nlc3MuZW52W0RhdGFiYXNlRW52aXJvbm1lbnRLZXlzLkRCX1VTRVJdID0gZGJVc2VyO1xuICAgICAgICAgICAgcHJvY2Vzcy5lbnZbRGF0YWJhc2VFbnZpcm9ubWVudEtleXMuREJfUEFTU10gPSBkYlBhc3M7XG4gICAgICAgICAgICBwcm9jZXNzLmVudltEYXRhYmFzZUVudmlyb25tZW50S2V5cy5EQl9VUkldID0gdGhlRGJVcmk7XG4gICAgICAgICAgICBwcm9jZXNzLmVudltEYXRhYmFzZUVudmlyb25tZW50S2V5cy5EQl9ST19VUkldID0gdGhlRGJVcmk7XG4gICAgICAgICAgICBhd2FpdCB0cnVuY2F0ZUZuKGRiKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYWZ0ZXJBbGwoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgYXdhaXQgdHJ1bmNhdGVGbihkYik7XG4gICAgICAgICAgICBhd2FpdCBkYi4kcG9vbC5lbmQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYmVmb3JlRWFjaChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0cnVuY2F0ZUZuKGRiKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm4oZGIpO1xuICAgIH07XG59XG4iXX0=
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGItdGVzdHV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rlc3QvZGItdGVzdHV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUFvRTtBQUNwRSw4REFBMEU7QUFFMUUsU0FBZ0IsVUFBVSxDQUN0QixFQUE0QixFQUM1QixVQUE2QyxFQUM3QyxNQUFjLEVBQ2QsTUFBYyxFQUNkLEtBQWE7SUFFYixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7SUFDN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUU5QyxPQUFPLEdBQUcsRUFBRTtRQUNSLE1BQU0sRUFBRSxHQUFlLElBQUEsMkJBQWdCLEVBQ25DLE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxFQUNOLFFBQVEsRUFDUjtZQUNJLFVBQVUsRUFBRSxJQUFJLEVBQUUsZ0RBQWdEO1NBQ3JFLENBQ0osQ0FBQztRQUVGLFNBQVMsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUF1QixDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQztZQUN0RCxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUF1QixDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQztZQUN0RCxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUF1QixDQUFDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQztZQUN2RCxPQUFPLENBQUMsR0FBRyxDQUFDLGtDQUF1QixDQUFDLFNBQVMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztZQUMxRCxNQUFNLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUNoQixNQUFNLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyQixNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFFSCxVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDbEIsTUFBTSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDWCxDQUFDLENBQUM7QUFDTixDQUFDO0FBeENELGdDQXdDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERURGF0YWJhc2UsIGluaXREYkNvbm5lY3Rpb24gfSBmcm9tIFwiLi4vZGF0YWJhc2UvZGF0YWJhc2VcIjtcbmltcG9ydCB7IERhdGFiYXNlRW52aXJvbm1lbnRLZXlzIH0gZnJvbSBcIi4uL2F3cy9ydW50aW1lL3NlY3JldHMvZGJzZWNyZXRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGRiVGVzdEJhc2UoXG4gICAgZm46IChkYjogRFREYXRhYmFzZSkgPT4gdm9pZCxcbiAgICB0cnVuY2F0ZUZuOiAoZGI6IERURGF0YWJhc2UpID0+IFByb21pc2U8dm9pZD4sXG4gICAgZGJVc2VyOiBzdHJpbmcsXG4gICAgZGJQYXNzOiBzdHJpbmcsXG4gICAgZGJVcmk6IHN0cmluZ1xuKTogKCkgPT4gdm9pZCB7XG4gICAgY29uc3QgdGhlRGJVcmkgPSBwcm9jZXNzLmVudi5EQl9VUkkgPz8gZGJVcmk7XG4gICAgY29uc29sZS5sb2coYFRlc3QgZGF0YWJhc2UgVVJJOiAke3RoZURiVXJpfWApO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgY29uc3QgZGI6IERURGF0YWJhc2UgPSBpbml0RGJDb25uZWN0aW9uKFxuICAgICAgICAgICAgZGJVc2VyLFxuICAgICAgICAgICAgZGJQYXNzLFxuICAgICAgICAgICAgXCJ0ZXN0XCIsXG4gICAgICAgICAgICB0aGVEYlVyaSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBub1dhcm5pbmdzOiB0cnVlLCAvLyBpZ25vcmUgZHVwbGljYXRlIGNvbm5lY3Rpb24gd2FybmluZyBmb3IgdGVzdHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBiZWZvcmVBbGwoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgcHJvY2Vzcy5lbnZbRGF0YWJhc2VFbnZpcm9ubWVudEtleXMuREJfVVNFUl0gPSBkYlVzZXI7XG4gICAgICAgICAgICBwcm9jZXNzLmVudltEYXRhYmFzZUVudmlyb25tZW50S2V5cy5EQl9QQVNTXSA9IGRiUGFzcztcbiAgICAgICAgICAgIHByb2Nlc3MuZW52W0RhdGFiYXNlRW52aXJvbm1lbnRLZXlzLkRCX1VSSV0gPSB0aGVEYlVyaTtcbiAgICAgICAgICAgIHByb2Nlc3MuZW52W0RhdGFiYXNlRW52aXJvbm1lbnRLZXlzLkRCX1JPX1VSSV0gPSB0aGVEYlVyaTtcbiAgICAgICAgICAgIGF3YWl0IHRydW5jYXRlRm4oZGIpO1xuICAgICAgICB9KTtcblxuICAgICAgICBhZnRlckFsbChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB0cnVuY2F0ZUZuKGRiKTtcbiAgICAgICAgICAgIGF3YWl0IGRiLiRwb29sLmVuZCgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBiZWZvcmVFYWNoKGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGF3YWl0IHRydW5jYXRlRm4oZGIpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmbihkYik7XG4gICAgfTtcbn1cbiJdfQ==
package/utils/utils.d.ts CHANGED
@@ -20,3 +20,11 @@
20
20
  * @param b second array to compare
21
21
  */
22
22
  export declare function bothArraysHasSameValues(a: null | undefined | unknown[], b: null | undefined | unknown[]): boolean;
23
+ /**
24
+ * Returns the last item on the array. If the array is empty, throws an error!
25
+ */
26
+ export declare function getLast<T>(array: T[], sortFunction?: (a: T) => number): T;
27
+ /**
28
+ * Returns the first item on the array. If the array is empty, throws an error!
29
+ */
30
+ export declare function getFirst<T>(array: T[], sortFunction?: (a: T) => number): T;
package/utils/utils.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.bothArraysHasSameValues = void 0;
3
+ exports.getFirst = exports.getLast = exports.bothArraysHasSameValues = void 0;
4
4
  /**
5
5
  * Check if arrays have only elements that also exists also in other array.
6
6
  * Individual element count doesn't matter.
@@ -34,7 +34,31 @@ function bothArraysHasSameValues(a, b) {
34
34
  if (aSet.size !== bSet.size) {
35
35
  return false;
36
36
  }
37
- return Array.from(aSet).every(value => bSet.has(value));
37
+ return Array.from(aSet).every((value) => bSet.has(value));
38
38
  }
39
39
  exports.bothArraysHasSameValues = bothArraysHasSameValues;
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQUMsQ0FBMkIsRUFBRSxDQUEyQjtJQUM1RixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtRQUN4QixPQUFPLEtBQUssQ0FBQztLQUNoQjtTQUFNLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7UUFDakIsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxFQUFFO1FBQ3pCLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0lBQ0QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBWkQsMERBWUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENoZWNrIGlmIGFycmF5cyBoYXZlIG9ubHkgZWxlbWVudHMgdGhhdCBhbHNvIGV4aXN0cyBhbHNvIGluIG90aGVyIGFycmF5LlxuICogSW5kaXZpZHVhbCBlbGVtZW50IGNvdW50IGRvZXNuJ3QgbWF0dGVyLlxuICogRnVuY3Rpb24gd29ya3Mgb25seSBmb3IgcHJpbWl0aXZlIHR5cGVzIGFuZCBmb3Igb3RoZXIgaXQganVzdCBjaGVja3MgdGhlIHJlZmVyZW5jZSB0byBvYmplY3QuXG4gKlxuICogU29tZSBleGFtcGxlc1xuICogYm90aEFycmF5c0hhc1NhbWVWYWx1ZXMoIFthLCBiXSwgW2IsIGFdICkgICAgPT4gdHJ1ZVxuICogYm90aEFycmF5c0hhc1NhbWVWYWx1ZXMoIFthLCBhXSwgW2EsIGEsIGFdICkgPT4gdHJ1ZVxuICogYm90aEFycmF5c0hhc1NhbWVWYWx1ZXMoIFthLCBiXSwgW2FdICkgICAgICAgPT4gZmFsc2VcbiAqXG4gKiBPYmplY3QgcmVmZXJlbmNlczpcbiAqIGNvbnN0IG8xID0geyBhOiAxLCBiOiAyfTtcbiAqIGNvbnN0IG8yID0geyBhOiAxLCBiOiAyfTtcbiAqIC8vIEFycmF5cyBoYXMgcmVmZXJlbmNlcyB0byBzYW1lIG9iamVjdHNcbiAqIGJvdGhBcnJheXNIYXNTYW1lVmFsdWVzKFtvMV0sIFtvMV0pKSAgICAgICAgID0+IHRydWVcbiAqIEFycmF5cyBoYXZlIHJlZmVyZW5jZXMgdG8gZGlmZmVyZW50IG9iamVjdHNcbiAqIGJvdGhBcnJheXNIYXNTYW1lVmFsdWVzKFtvMV0sIFtvMl0pKSAgICAgICAgID0+IGZhbHNlXG4gKlxuICogQHBhcmFtIGEgZmlyc3QgYXJyYXkgdG8gY29tcGFyZVxuICogQHBhcmFtIGIgc2Vjb25kIGFycmF5IHRvIGNvbXBhcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJvdGhBcnJheXNIYXNTYW1lVmFsdWVzKGE6IG51bGx8dW5kZWZpbmVkfHVua25vd25bXSwgYjogbnVsbHx1bmRlZmluZWR8dW5rbm93bltdKTogYm9vbGVhbiB7XG4gICAgaWYgKChhICYmICFiKSB8fCAoIWEgJiYgYikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0gZWxzZSBpZiAoIWEgJiYgIWIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IGFTZXQgPSBuZXcgU2V0KGEpO1xuICAgIGNvbnN0IGJTZXQgPSBuZXcgU2V0KGIpO1xuICAgIGlmIChhU2V0LnNpemUgIT09IGJTZXQuc2l6ZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBBcnJheS5mcm9tKGFTZXQpLmV2ZXJ5KHZhbHVlID0+IGJTZXQuaGFzKHZhbHVlKSk7XG59XG4iXX0=
40
+ /**
41
+ * Returns the last item on the array. If the array is empty, throws an error!
42
+ */
43
+ function getLast(array, sortFunction) {
44
+ return getFirstOrLast(false, array, sortFunction);
45
+ }
46
+ exports.getLast = getLast;
47
+ /**
48
+ * Returns the first item on the array. If the array is empty, throws an error!
49
+ */
50
+ function getFirst(array, sortFunction) {
51
+ return getFirstOrLast(true, array, sortFunction);
52
+ }
53
+ exports.getFirst = getFirst;
54
+ function getFirstOrLast(getFirst, array, sortFunction) {
55
+ if (array.length == 0) {
56
+ throw new Error(`can't get ${getFirst ? "first" : "last"} from empty array!`);
57
+ }
58
+ const index = getFirst ? 0 : array.length - 1;
59
+ if (sortFunction) {
60
+ return array.sort(sortFunction)[index];
61
+ }
62
+ return array[index];
63
+ }
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQ25DLENBQStCLEVBQy9CLENBQStCO0lBRS9CLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1FBQ3hCLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO1NBQU0sSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtRQUNqQixPQUFPLElBQUksQ0FBQztLQUNmO0lBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDekIsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFDRCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQWZELDBEQWVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixPQUFPLENBQUksS0FBVSxFQUFFLFlBQStCO0lBQ2xFLE9BQU8sY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDdEQsQ0FBQztBQUZELDBCQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixRQUFRLENBQUksS0FBVSxFQUFFLFlBQStCO0lBQ25FLE9BQU8sY0FBYyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDckQsQ0FBQztBQUZELDRCQUVDO0FBRUQsU0FBUyxjQUFjLENBQ25CLFFBQWlCLEVBQ2pCLEtBQVUsRUFDVixZQUErQjtJQUUvQixJQUFJLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1FBQ25CLE1BQU0sSUFBSSxLQUFLLENBQ1gsYUFBYSxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxvQkFBb0IsQ0FDL0QsQ0FBQztLQUNMO0lBRUQsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBRTlDLElBQUksWUFBWSxFQUFFO1FBQ2QsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzFDO0lBRUQsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2hlY2sgaWYgYXJyYXlzIGhhdmUgb25seSBlbGVtZW50cyB0aGF0IGFsc28gZXhpc3RzIGFsc28gaW4gb3RoZXIgYXJyYXkuXG4gKiBJbmRpdmlkdWFsIGVsZW1lbnQgY291bnQgZG9lc24ndCBtYXR0ZXIuXG4gKiBGdW5jdGlvbiB3b3JrcyBvbmx5IGZvciBwcmltaXRpdmUgdHlwZXMgYW5kIGZvciBvdGhlciBpdCBqdXN0IGNoZWNrcyB0aGUgcmVmZXJlbmNlIHRvIG9iamVjdC5cbiAqXG4gKiBTb21lIGV4YW1wbGVzXG4gKiBib3RoQXJyYXlzSGFzU2FtZVZhbHVlcyggW2EsIGJdLCBbYiwgYV0gKSAgICA9PiB0cnVlXG4gKiBib3RoQXJyYXlzSGFzU2FtZVZhbHVlcyggW2EsIGFdLCBbYSwgYSwgYV0gKSA9PiB0cnVlXG4gKiBib3RoQXJyYXlzSGFzU2FtZVZhbHVlcyggW2EsIGJdLCBbYV0gKSAgICAgICA9PiBmYWxzZVxuICpcbiAqIE9iamVjdCByZWZlcmVuY2VzOlxuICogY29uc3QgbzEgPSB7IGE6IDEsIGI6IDJ9O1xuICogY29uc3QgbzIgPSB7IGE6IDEsIGI6IDJ9O1xuICogLy8gQXJyYXlzIGhhcyByZWZlcmVuY2VzIHRvIHNhbWUgb2JqZWN0c1xuICogYm90aEFycmF5c0hhc1NhbWVWYWx1ZXMoW28xXSwgW28xXSkpICAgICAgICAgPT4gdHJ1ZVxuICogQXJyYXlzIGhhdmUgcmVmZXJlbmNlcyB0byBkaWZmZXJlbnQgb2JqZWN0c1xuICogYm90aEFycmF5c0hhc1NhbWVWYWx1ZXMoW28xXSwgW28yXSkpICAgICAgICAgPT4gZmFsc2VcbiAqXG4gKiBAcGFyYW0gYSBmaXJzdCBhcnJheSB0byBjb21wYXJlXG4gKiBAcGFyYW0gYiBzZWNvbmQgYXJyYXkgdG8gY29tcGFyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYm90aEFycmF5c0hhc1NhbWVWYWx1ZXMoXG4gICAgYTogbnVsbCB8IHVuZGVmaW5lZCB8IHVua25vd25bXSxcbiAgICBiOiBudWxsIHwgdW5kZWZpbmVkIHwgdW5rbm93bltdXG4pOiBib29sZWFuIHtcbiAgICBpZiAoKGEgJiYgIWIpIHx8ICghYSAmJiBiKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSBlbHNlIGlmICghYSAmJiAhYikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgYVNldCA9IG5ldyBTZXQoYSk7XG4gICAgY29uc3QgYlNldCA9IG5ldyBTZXQoYik7XG4gICAgaWYgKGFTZXQuc2l6ZSAhPT0gYlNldC5zaXplKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIEFycmF5LmZyb20oYVNldCkuZXZlcnkoKHZhbHVlKSA9PiBiU2V0Lmhhcyh2YWx1ZSkpO1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGxhc3QgaXRlbSBvbiB0aGUgYXJyYXkuICBJZiB0aGUgYXJyYXkgaXMgZW1wdHksIHRocm93cyBhbiBlcnJvciFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExhc3Q8VD4oYXJyYXk6IFRbXSwgc29ydEZ1bmN0aW9uPzogKGE6IFQpID0+IG51bWJlcik6IFQge1xuICAgIHJldHVybiBnZXRGaXJzdE9yTGFzdChmYWxzZSwgYXJyYXksIHNvcnRGdW5jdGlvbik7XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgaXRlbSBvbiB0aGUgYXJyYXkuICBJZiB0aGUgYXJyYXkgaXMgZW1wdHksIHRocm93cyBhbiBlcnJvciFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpcnN0PFQ+KGFycmF5OiBUW10sIHNvcnRGdW5jdGlvbj86IChhOiBUKSA9PiBudW1iZXIpOiBUIHtcbiAgICByZXR1cm4gZ2V0Rmlyc3RPckxhc3QodHJ1ZSwgYXJyYXksIHNvcnRGdW5jdGlvbik7XG59XG5cbmZ1bmN0aW9uIGdldEZpcnN0T3JMYXN0PFQ+KFxuICAgIGdldEZpcnN0OiBib29sZWFuLFxuICAgIGFycmF5OiBUW10sXG4gICAgc29ydEZ1bmN0aW9uPzogKGE6IFQpID0+IG51bWJlclxuKTogVCB7XG4gICAgaWYgKGFycmF5Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBjYW4ndCBnZXQgJHtnZXRGaXJzdCA/IFwiZmlyc3RcIiA6IFwibGFzdFwifSBmcm9tIGVtcHR5IGFycmF5IWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbmRleCA9IGdldEZpcnN0ID8gMCA6IGFycmF5Lmxlbmd0aCAtIDE7XG5cbiAgICBpZiAoc29ydEZ1bmN0aW9uKSB7XG4gICAgICAgIHJldHVybiBhcnJheS5zb3J0KHNvcnRGdW5jdGlvbilbaW5kZXhdO1xuICAgIH1cblxuICAgIHJldHVybiBhcnJheVtpbmRleF07XG59XG4iXX0=
package/aws/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./infra/stack/stack";
package/aws/index.js DELETED
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./infra/stack/stack"), exports);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXdzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBb0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9pbmZyYS9zdGFjay9zdGFja1wiO1xuIl19
@@ -1 +0,0 @@
1
- export * from "./integration";
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./integration"), exports);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2luZnJhL2FwaS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQThCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vaW50ZWdyYXRpb25cIjtcbiJdfQ==
package/types/index.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./language";
package/types/index.js DELETED
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./language"), exports);
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2xhbmd1YWdlXCI7XG5cbiJdfQ==