token-injectable-docker-builder 0.1.6 → 1.0.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/API.md ADDED
@@ -0,0 +1,209 @@
1
+ # API Reference <a name="API Reference" id="api-reference"></a>
2
+
3
+ ## Constructs <a name="Constructs" id="Constructs"></a>
4
+
5
+ ### TokenInjectableDockerBuilder <a name="TokenInjectableDockerBuilder" id="token-injectable-docker-builder.TokenInjectableDockerBuilder"></a>
6
+
7
+ A CDK construct to build and push Docker images to an ECR repository using CodeBuild and Lambda custom resources.
8
+
9
+ *Example*
10
+
11
+ ```typescript
12
+ const dockerBuilder = new TokenInjectableDockerBuilder(this, 'DockerBuilder', {
13
+ path: './docker',
14
+ buildArgs: {
15
+ TOKEN: 'my-secret-token',
16
+ ENV: 'production'
17
+ },
18
+ });
19
+
20
+ const containerImage = dockerBuilder.getContainerImage();
21
+ ```
22
+
23
+
24
+ #### Initializers <a name="Initializers" id="token-injectable-docker-builder.TokenInjectableDockerBuilder.Initializer"></a>
25
+
26
+ ```typescript
27
+ import { TokenInjectableDockerBuilder } from 'token-injectable-docker-builder'
28
+
29
+ new TokenInjectableDockerBuilder(scope: Construct, id: string, props: TokenInjectableDockerBuilderProps)
30
+ ```
31
+
32
+ | **Name** | **Type** | **Description** |
33
+ | --- | --- | --- |
34
+ | <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilder.Initializer.parameter.scope">scope</a></code> | <code>constructs.Construct</code> | The parent construct/stack. |
35
+ | <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilder.Initializer.parameter.id">id</a></code> | <code>string</code> | The unique ID of the construct. |
36
+ | <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilder.Initializer.parameter.props">props</a></code> | <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilderProps">TokenInjectableDockerBuilderProps</a></code> | Configuration properties for the construct. |
37
+
38
+ ---
39
+
40
+ ##### `scope`<sup>Required</sup> <a name="scope" id="token-injectable-docker-builder.TokenInjectableDockerBuilder.Initializer.parameter.scope"></a>
41
+
42
+ - *Type:* constructs.Construct
43
+
44
+ The parent construct/stack.
45
+
46
+ ---
47
+
48
+ ##### `id`<sup>Required</sup> <a name="id" id="token-injectable-docker-builder.TokenInjectableDockerBuilder.Initializer.parameter.id"></a>
49
+
50
+ - *Type:* string
51
+
52
+ The unique ID of the construct.
53
+
54
+ ---
55
+
56
+ ##### `props`<sup>Required</sup> <a name="props" id="token-injectable-docker-builder.TokenInjectableDockerBuilder.Initializer.parameter.props"></a>
57
+
58
+ - *Type:* <a href="#token-injectable-docker-builder.TokenInjectableDockerBuilderProps">TokenInjectableDockerBuilderProps</a>
59
+
60
+ Configuration properties for the construct.
61
+
62
+ ---
63
+
64
+ #### Methods <a name="Methods" id="Methods"></a>
65
+
66
+ | **Name** | **Description** |
67
+ | --- | --- |
68
+ | <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilder.toString">toString</a></code> | Returns a string representation of this construct. |
69
+
70
+ ---
71
+
72
+ ##### `toString` <a name="toString" id="token-injectable-docker-builder.TokenInjectableDockerBuilder.toString"></a>
73
+
74
+ ```typescript
75
+ public toString(): string
76
+ ```
77
+
78
+ Returns a string representation of this construct.
79
+
80
+ #### Static Functions <a name="Static Functions" id="Static Functions"></a>
81
+
82
+ | **Name** | **Description** |
83
+ | --- | --- |
84
+ | <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilder.isConstruct">isConstruct</a></code> | Checks if `x` is a construct. |
85
+
86
+ ---
87
+
88
+ ##### ~~`isConstruct`~~ <a name="isConstruct" id="token-injectable-docker-builder.TokenInjectableDockerBuilder.isConstruct"></a>
89
+
90
+ ```typescript
91
+ import { TokenInjectableDockerBuilder } from 'token-injectable-docker-builder'
92
+
93
+ TokenInjectableDockerBuilder.isConstruct(x: any)
94
+ ```
95
+
96
+ Checks if `x` is a construct.
97
+
98
+ ###### `x`<sup>Required</sup> <a name="x" id="token-injectable-docker-builder.TokenInjectableDockerBuilder.isConstruct.parameter.x"></a>
99
+
100
+ - *Type:* any
101
+
102
+ Any object.
103
+
104
+ ---
105
+
106
+ #### Properties <a name="Properties" id="Properties"></a>
107
+
108
+ | **Name** | **Type** | **Description** |
109
+ | --- | --- | --- |
110
+ | <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilder.property.node">node</a></code> | <code>constructs.Node</code> | The tree node. |
111
+ | <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilder.property.containerImage">containerImage</a></code> | <code>aws-cdk-lib.aws_ecs.ContainerImage</code> | *No description.* |
112
+ | <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilder.property.dockerImageCode">dockerImageCode</a></code> | <code>aws-cdk-lib.aws_lambda.DockerImageCode</code> | *No description.* |
113
+
114
+ ---
115
+
116
+ ##### `node`<sup>Required</sup> <a name="node" id="token-injectable-docker-builder.TokenInjectableDockerBuilder.property.node"></a>
117
+
118
+ ```typescript
119
+ public readonly node: Node;
120
+ ```
121
+
122
+ - *Type:* constructs.Node
123
+
124
+ The tree node.
125
+
126
+ ---
127
+
128
+ ##### `containerImage`<sup>Required</sup> <a name="containerImage" id="token-injectable-docker-builder.TokenInjectableDockerBuilder.property.containerImage"></a>
129
+
130
+ ```typescript
131
+ public readonly containerImage: ContainerImage;
132
+ ```
133
+
134
+ - *Type:* aws-cdk-lib.aws_ecs.ContainerImage
135
+
136
+ ---
137
+
138
+ ##### `dockerImageCode`<sup>Required</sup> <a name="dockerImageCode" id="token-injectable-docker-builder.TokenInjectableDockerBuilder.property.dockerImageCode"></a>
139
+
140
+ ```typescript
141
+ public readonly dockerImageCode: DockerImageCode;
142
+ ```
143
+
144
+ - *Type:* aws-cdk-lib.aws_lambda.DockerImageCode
145
+
146
+ ---
147
+
148
+
149
+ ## Structs <a name="Structs" id="Structs"></a>
150
+
151
+ ### TokenInjectableDockerBuilderProps <a name="TokenInjectableDockerBuilderProps" id="token-injectable-docker-builder.TokenInjectableDockerBuilderProps"></a>
152
+
153
+ Properties for the `TokenInjectableDockerBuilder` construct.
154
+
155
+ #### Initializer <a name="Initializer" id="token-injectable-docker-builder.TokenInjectableDockerBuilderProps.Initializer"></a>
156
+
157
+ ```typescript
158
+ import { TokenInjectableDockerBuilderProps } from 'token-injectable-docker-builder'
159
+
160
+ const tokenInjectableDockerBuilderProps: TokenInjectableDockerBuilderProps = { ... }
161
+ ```
162
+
163
+ #### Properties <a name="Properties" id="Properties"></a>
164
+
165
+ | **Name** | **Type** | **Description** |
166
+ | --- | --- | --- |
167
+ | <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilderProps.property.path">path</a></code> | <code>string</code> | The path to the directory containing the Dockerfile or source code. |
168
+ | <code><a href="#token-injectable-docker-builder.TokenInjectableDockerBuilderProps.property.buildArgs">buildArgs</a></code> | <code>{[ key: string ]: string}</code> | Build arguments to pass to the Docker build process. |
169
+
170
+ ---
171
+
172
+ ##### `path`<sup>Required</sup> <a name="path" id="token-injectable-docker-builder.TokenInjectableDockerBuilderProps.property.path"></a>
173
+
174
+ ```typescript
175
+ public readonly path: string;
176
+ ```
177
+
178
+ - *Type:* string
179
+
180
+ The path to the directory containing the Dockerfile or source code.
181
+
182
+ ---
183
+
184
+ ##### `buildArgs`<sup>Optional</sup> <a name="buildArgs" id="token-injectable-docker-builder.TokenInjectableDockerBuilderProps.property.buildArgs"></a>
185
+
186
+ ```typescript
187
+ public readonly buildArgs: {[ key: string ]: string};
188
+ ```
189
+
190
+ - *Type:* {[ key: string ]: string}
191
+
192
+ Build arguments to pass to the Docker build process.
193
+
194
+ These are transformed into `--build-arg` flags.
195
+
196
+ ---
197
+
198
+ *Example*
199
+
200
+ ```typescript
201
+ {
202
+ TOKEN: 'my-secret-token',
203
+ ENV: 'production'
204
+ }
205
+ ```
206
+
207
+
208
+
209
+
@@ -1,6 +1,4 @@
1
- MIT License
2
-
3
- Copyright (c) [2024] [Alex Stepansky]
1
+ Copyright (c) 2024 AlexTech314
4
2
 
5
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
4
  of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +16,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
16
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
17
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
18
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
19
+ SOFTWARE.
package/README.md CHANGED
@@ -163,4 +163,3 @@ Ensure you have the following:
163
163
 
164
164
  Open an issue on [GitHub](https://github.com/AlexTech314/TokenInjectableDockerBuilder) :)
165
165
 
166
-
package/lib/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
+ import { ContainerImage } from 'aws-cdk-lib/aws-ecs';
1
2
  import { DockerImageCode } from 'aws-cdk-lib/aws-lambda';
2
3
  import { Construct } from 'constructs';
3
- import { ContainerImage } from 'aws-cdk-lib/aws-ecs';
4
4
  /**
5
5
  * Properties for the `TokenInjectableDockerBuilder` construct.
6
6
  */
@@ -8,7 +8,7 @@ export interface TokenInjectableDockerBuilderProps {
8
8
  /**
9
9
  * The path to the directory containing the Dockerfile or source code.
10
10
  */
11
- path: string;
11
+ readonly path: string;
12
12
  /**
13
13
  * Build arguments to pass to the Docker build process.
14
14
  * These are transformed into `--build-arg` flags.
@@ -18,7 +18,7 @@ export interface TokenInjectableDockerBuilderProps {
18
18
  * ENV: 'production'
19
19
  * }
20
20
  */
21
- buildArgs?: {
21
+ readonly buildArgs?: {
22
22
  [key: string]: string;
23
23
  };
24
24
  }
@@ -37,8 +37,9 @@ export interface TokenInjectableDockerBuilderProps {
37
37
  * const containerImage = dockerBuilder.getContainerImage();
38
38
  */
39
39
  export declare class TokenInjectableDockerBuilder extends Construct {
40
+ readonly containerImage: ContainerImage;
41
+ readonly dockerImageCode: DockerImageCode;
40
42
  private readonly ecrRepository;
41
- private readonly buildTriggerResource;
42
43
  /**
43
44
  * Creates a new `TokenInjectableDockerBuilder` instance.
44
45
  *
@@ -47,16 +48,4 @@ export declare class TokenInjectableDockerBuilder extends Construct {
47
48
  * @param props Configuration properties for the construct.
48
49
  */
49
50
  constructor(scope: Construct, id: string, props: TokenInjectableDockerBuilderProps);
50
- /**
51
- * Retrieves the container image from the ECR repository.
52
- *
53
- * @returns A `ContainerImage` object representing the built image.
54
- */
55
- getContainerImage(): ContainerImage;
56
- /**
57
- * Retrieves the Docker image code for use in AWS Lambda.
58
- *
59
- * @returns A `DockerImageCode` object for the Docker image.
60
- */
61
- getDockerImageCode(): DockerImageCode;
62
51
  }
package/lib/index.js CHANGED
@@ -1,18 +1,17 @@
1
1
  "use strict";
2
+ var _a;
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
4
  exports.TokenInjectableDockerBuilder = void 0;
4
- const path = require("path");
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
5
6
  const aws_cdk_lib_1 = require("aws-cdk-lib");
6
7
  const aws_codebuild_1 = require("aws-cdk-lib/aws-codebuild");
7
8
  const aws_ecr_1 = require("aws-cdk-lib/aws-ecr");
9
+ const aws_ecs_1 = require("aws-cdk-lib/aws-ecs");
8
10
  const aws_iam_1 = require("aws-cdk-lib/aws-iam");
9
11
  const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
10
12
  const aws_s3_assets_1 = require("aws-cdk-lib/aws-s3-assets");
11
13
  const custom_resources_1 = require("aws-cdk-lib/custom-resources");
12
14
  const constructs_1 = require("constructs");
13
- const aws_ecs_1 = require("aws-cdk-lib/aws-ecs");
14
- const crypto = require("crypto");
15
- const aws_lambda_2 = require("aws-cdk-lib/aws-lambda");
16
15
  /**
17
16
  * A CDK construct to build and push Docker images to an ECR repository using CodeBuild and Lambda custom resources.
18
17
  *
@@ -38,9 +37,6 @@ class TokenInjectableDockerBuilder extends constructs_1.Construct {
38
37
  constructor(scope, id, props) {
39
38
  super(scope, id);
40
39
  const { path: sourcePath, buildArgs } = props; // Default to linux/amd64
41
- // Define absolute paths for Lambda handlers
42
- const onEventHandlerPath = path.resolve(__dirname, '../src/onEventHandler');
43
- const isCompleteHandlerPath = path.resolve(__dirname, '../src/isCompleteHandler');
44
40
  // Create an ECR repository
45
41
  this.ecrRepository = new aws_ecr_1.Repository(this, 'ECRRepository');
46
42
  // Package the source code as an asset
@@ -107,10 +103,10 @@ class TokenInjectableDockerBuilder extends constructs_1.Construct {
107
103
  resources: [`arn:aws:logs:${aws_cdk_lib_1.Stack.of(this).region}:${aws_cdk_lib_1.Stack.of(this).account}:*`],
108
104
  }));
109
105
  // Create Node.js Lambda function for onEvent
110
- const onEventHandlerFunction = new aws_lambda_2.Function(this, 'OnEventHandlerFunction', {
106
+ const onEventHandlerFunction = new aws_lambda_1.Function(this, 'OnEventHandlerFunction', {
111
107
  runtime: aws_lambda_1.Runtime.NODEJS_LATEST, // Use Node.js runtime
112
- code: aws_lambda_1.Code.fromAsset(onEventHandlerPath), // Path to handler code
113
- handler: 'index.handler', // Entry point (adjust as needed)
108
+ code: aws_lambda_1.Code.fromAsset('.'), // Path to handler code
109
+ handler: 'onEvent.handler', // Entry point (adjust as needed)
114
110
  timeout: aws_cdk_lib_1.Duration.minutes(15),
115
111
  });
116
112
  onEventHandlerFunction.addToRolePolicy(new aws_iam_1.PolicyStatement({
@@ -118,10 +114,10 @@ class TokenInjectableDockerBuilder extends constructs_1.Construct {
118
114
  resources: [codeBuildProject.projectArn], // Restrict to specific project
119
115
  }));
120
116
  // Create Node.js Lambda function for isComplete
121
- const isCompleteHandlerFunction = new aws_lambda_2.Function(this, 'IsCompleteHandlerFunction', {
117
+ const isCompleteHandlerFunction = new aws_lambda_1.Function(this, 'IsCompleteHandlerFunction', {
122
118
  runtime: aws_lambda_1.Runtime.NODEJS_LATEST,
123
- code: aws_lambda_1.Code.fromAsset(isCompleteHandlerPath),
124
- handler: 'index.handler',
119
+ code: aws_lambda_1.Code.fromAsset('.'), // Path to handler code
120
+ handler: 'isComplete.handler', // Entry point (adjust as needed)
125
121
  timeout: aws_cdk_lib_1.Duration.minutes(15),
126
122
  });
127
123
  isCompleteHandlerFunction.addToRolePolicy(new aws_iam_1.PolicyStatement({
@@ -130,7 +126,7 @@ class TokenInjectableDockerBuilder extends constructs_1.Construct {
130
126
  'codebuild:ListBuildsForProject',
131
127
  'logs:GetLogEvents',
132
128
  'logs:DescribeLogStreams',
133
- 'logs:DescribeLogGroups'
129
+ 'logs:DescribeLogGroups',
134
130
  ],
135
131
  resources: ['*'],
136
132
  }));
@@ -138,34 +134,22 @@ class TokenInjectableDockerBuilder extends constructs_1.Construct {
138
134
  const provider = new custom_resources_1.Provider(this, 'CustomResourceProvider', {
139
135
  onEventHandler: onEventHandlerFunction,
140
136
  isCompleteHandler: isCompleteHandlerFunction,
141
- queryInterval: aws_cdk_lib_1.Duration.minutes(1),
137
+ queryInterval: aws_cdk_lib_1.Duration.seconds(30),
142
138
  });
143
139
  // Define the custom resource
144
- this.buildTriggerResource = new aws_cdk_lib_1.CustomResource(this, 'BuildTriggerResource', {
140
+ const buildTriggerResource = new aws_cdk_lib_1.CustomResource(this, 'BuildTriggerResource', {
145
141
  serviceToken: provider.serviceToken,
146
142
  properties: {
147
143
  ProjectName: codeBuildProject.projectName,
148
144
  Trigger: crypto.randomUUID(),
149
145
  },
150
146
  });
151
- this.buildTriggerResource.node.addDependency(codeBuildProject);
152
- }
153
- /**
154
- * Retrieves the container image from the ECR repository.
155
- *
156
- * @returns A `ContainerImage` object representing the built image.
157
- */
158
- getContainerImage() {
159
- return aws_ecs_1.ContainerImage.fromEcrRepository(this.ecrRepository, 'latest');
160
- }
161
- /**
162
- * Retrieves the Docker image code for use in AWS Lambda.
163
- *
164
- * @returns A `DockerImageCode` object for the Docker image.
165
- */
166
- getDockerImageCode() {
167
- return aws_lambda_1.DockerImageCode.fromEcr(this.ecrRepository);
147
+ buildTriggerResource.node.addDependency(codeBuildProject);
148
+ this.containerImage = aws_ecs_1.ContainerImage.fromEcrRepository(this.ecrRepository);
149
+ this.dockerImageCode = aws_lambda_1.DockerImageCode.fromEcr(this.ecrRepository);
168
150
  }
169
151
  }
170
152
  exports.TokenInjectableDockerBuilder = TokenInjectableDockerBuilder;
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBNkI7QUFDN0IsNkNBQThEO0FBQzlELDZEQUF3RjtBQUN4RixpREFBaUQ7QUFDakQsaURBQXNEO0FBQ3RELHVEQUF3RTtBQUN4RSw2REFBa0Q7QUFDbEQsbUVBQXdEO0FBQ3hELDJDQUF1QztBQUN2QyxpREFBcUQ7QUFDckQsaUNBQWlDO0FBQ2pDLHVEQUFrRDtBQXlCbEQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQWEsNEJBQTZCLFNBQVEsc0JBQVM7SUFJekQ7Ozs7OztPQU1HO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QztRQUNoRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLHlCQUF5QjtRQUV4RSw0Q0FBNEM7UUFDNUMsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1FBQzVFLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztRQUVsRiwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLG9CQUFVLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRTNELHNDQUFzQztRQUN0QyxNQUFNLFdBQVcsR0FBRyxJQUFJLHFCQUFLLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUNqRCxJQUFJLEVBQUUsVUFBVSxFQUFFLHdDQUF3QztTQUMzRCxDQUFDLENBQUM7UUFFSCw2REFBNkQ7UUFDN0QsTUFBTSxlQUFlLEdBQUcsU0FBUztZQUMvQixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFT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SUFBSSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksaUJBQWlCO1FBQ3RCLE9BQU8sd0JBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksa0JBQWtCO1FBQ3ZCLE9BQU8sNEJBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3JELENBQUM7Q0FDRjtBQXpLRCxvRUF5S0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRHVyYXRpb24sIEN1c3RvbVJlc291cmNlLCBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IFByb2plY3QsIFNvdXJjZSwgTGludXhCdWlsZEltYWdlLCBCdWlsZFNwZWMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyJztcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ29kZSwgRG9ja2VySW1hZ2VDb2RlLCBSdW50aW1lIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBBc3NldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMy1hc3NldHMnO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQ29udGFpbmVySW1hZ2UgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcblxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIHRoZSBgVG9rZW5JbmplY3RhYmxlRG9ja2VyQnVpbGRlcmAgY29uc3RydWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRva2VuSW5qZWN0YWJsZURvY2tlckJ1aWxkZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIERvY2tlcmZpbGUgb3Igc291cmNlIGNvZGUuXG4gICAqL1xuICBwYXRoOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBEb2NrZXIgYnVpbGQgcHJvY2Vzcy5cbiAgICogVGhlc2UgYXJlIHRyYW5zZm9ybWVkIGludG8gYC0tYnVpbGQtYXJnYCBmbGFncy5cbiAgICogQGV4YW1wbGVcbiAgICoge1xuICAgKiAgIFRPS0VOOiAnbXktc2VjcmV0LXRva2VuJyxcbiAgICogICBFTlY6ICdwcm9kdWN0aW9uJ1xuICAgKiB9XG4gICAqL1xuICBidWlsZEFyZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG5cbi8qKlxuICogQSBDREsgY29uc3RydWN0IHRvIGJ1aWxkIGFuZCBwdXNoIERvY2tlciBpbWFnZXMgdG8gYW4gRUNSIHJlcG9zaXRvcnkgdXNpbmcgQ29kZUJ1aWxkIGFuZCBMYW1iZGEgY3VzdG9tIHJlc291cmNlcy5cbiAqXG4gKiBAZXhhbXBsZVxuICogY29uc3QgZG9ja2VyQnVpbGRlciA9IG5ldyBUb2tlbkluamVjdGFibGVEb2NrZXJCdWlsZGVyKHRoaXMsICdEb2NrZXJCdWlsZGVyJywge1xuICogICBwYXRoOiAnLi9kb2NrZXInLFxuICogICBidWlsZEFyZ3M6IHtcbiAqICAgICBUT0tFTjogJ215LXNlY3JldC10b2tlbicsXG4gKiAgICAgRU5WOiAncHJvZHVjdGlvbidcbiAqICAgfSxcbiAqIH0pO1xuICpcbiAqIGNvbnN0IGNvbnRhaW5lckltYWdlID0gZG9ja2VyQnVpbGRlci5nZXRDb250YWluZXJJbWFnZSgpO1xuICovXG5leHBvcnQgY2xhc3MgVG9rZW5JbmplY3RhYmxlRG9ja2VyQnVpbGRlciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWNyUmVwb3NpdG9yeTogUmVwb3NpdG9yeTtcbiAgcHJpdmF0ZSByZWFkb25seSBidWlsZFRyaWdnZXJSZXNvdXJjZTogQ3VzdG9tUmVzb3VyY2U7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgYFRva2VuSW5qZWN0YWJsZURvY2tlckJ1aWxkZXJgIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjb25zdHJ1Y3Qvc3RhY2suXG4gICAqIEBwYXJhbSBpZCBUaGUgdW5pcXVlIElEIG9mIHRoZSBjb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBwcm9wcyBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIHRoZSBjb25zdHJ1Y3QuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVG9rZW5JbmplY3RhYmxlRG9ja2VyQnVpbGRlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHsgcGF0aDogc291cmNlUGF0aCwgYnVpbGRBcmdzIH0gPSBwcm9wczsgLy8gRGVmYXVsdCB0byBsaW51eC9hbWQ2NFxuXG4gICAgLy8gRGVmaW5lIGFic29sdXRlIHBhdGhzIGZvciBMYW1iZGEgaGFuZGxlcnNcbiAgICBjb25zdCBvbkV2ZW50SGFuZGxlclBhdGggPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4vc3JjL29uRXZlbnRIYW5kbGVyJyk7XG4gICAgY29uc3QgaXNDb21wbGV0ZUhhbmRsZXJQYXRoID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uL3NyYy9pc0NvbXBsZXRlSGFuZGxlcicpO1xuXG4gICAgLy8gQ3JlYXRlIGFuIEVDUiByZXBvc2l0b3J5XG4gICAgdGhpcy5lY3JSZXBvc2l0b3J5ID0gbmV3IFJlcG9zaXRvcnkodGhpcywgJ0VDUlJlcG9zaXRvcnknKTtcblxuICAgIC8vIFBhY2thZ2UgdGhlIHNvdXJjZSBjb2RlIGFzIGFuIGFzc2V0XG4gICAgY29uc3Qgc291cmNlQXNzZXQgPSBuZXcgQXNzZXQodGhpcywgJ1NvdXJjZUFzc2V0Jywge1xuICAgICAgcGF0aDogc291cmNlUGF0aCwgLy8gUGF0aCB0byB0aGUgRG9ja2VyZmlsZSBvciBzb3VyY2UgY29kZVxuICAgIH0pO1xuXG4gICAgLy8gVHJhbnNmb3JtIGJ1aWxkQXJncyBpbnRvIGEgc3RyaW5nIG9mIC0tYnVpbGQtYXJnIEtFWT1WQUxVRVxuICAgIGNvbnN0IGJ1aWxkQXJnc1N0cmluZyA9IGJ1aWxkQXJnc1xuICAgICAgPyBPYmplY3QuZW50cmllcyhidWlsZEFyZ3MpXG4gICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYC0tYnVpbGQtYXJnICR7a2V5fT0ke3ZhbHVlfWApXG4gICAgICAgIC5qb2luKCcgJylcbiAgICAgIDogJyc7XG5cbiAgICAvLyBQYXNzIHRoZSBidWlsZEFyZ3NTdHJpbmcgYW5kIHBsYXRmb3JtIGFzIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgIGNvbnN0IGVudmlyb25tZW50VmFyaWFibGVzOiB7IFtuYW1lOiBzdHJpbmddOiB7IHZhbHVlOiBzdHJpbmcgfSB9ID0ge1xuICAgICAgRUNSX1JFUE9fVVJJOiB7IHZhbHVlOiB0aGlzLmVjclJlcG9zaXRvcnkucmVwb3NpdG9yeVVyaSB9LFxuICAgICAgQlVJTERfQVJHUzogeyB2YWx1ZTogYnVpbGRBcmdzU3RyaW5nIH0sXG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSBhIENvZGVCdWlsZCBwcm9qZWN0XG4gICAgY29uc3QgY29kZUJ1aWxkUHJvamVjdCA9IG5ldyBQcm9qZWN0KHRoaXMsICdVSUNvZGVCdWlsZFByb2plY3QnLCB7XG4gICAgICBzb3VyY2U6IFNvdXJjZS5zMyh7XG4gICAgICAgIGJ1Y2tldDogc291cmNlQXNzZXQuYnVja2V0LFxuICAgICAgICBwYXRoOiBzb3VyY2VBc3NldC5zM09iamVjdEtleSxcbiAgICAgIH0pLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgYnVpbGRJbWFnZTogTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzdfMCxcbiAgICAgICAgcHJpdmlsZWdlZDogdHJ1ZSwgLy8gUmVxdWlyZWQgZm9yIERvY2tlciBidWlsZHNcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczogZW52aXJvbm1lbnRWYXJpYWJsZXMsXG4gICAgICBidWlsZFNwZWM6IEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHtcbiAgICAgICAgdmVyc2lvbjogJzAuMicsXG4gICAgICAgIHBoYXNlczoge1xuICAgICAgICAgIHByZV9idWlsZDoge1xuICAgICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgICAgJ2VjaG8gXCJSZXRyaWV2aW5nIEFXUyBBY2NvdW50IElELi4uXCInLFxuICAgICAgICAgICAgICAnZXhwb3J0IEFDQ09VTlRfSUQ9JChhd3Mgc3RzIGdldC1jYWxsZXItaWRlbnRpdHkgLS1xdWVyeSBBY2NvdW50IC0tb3V0cHV0IHRleHQpJyxcbiAgICAgICAgICAgICAgJ2VjaG8gXCJMb2dnaW5nIGluIHRvIEFtYXpvbiBFQ1IuLi5cIicsXG4gICAgICAgICAgICAgICdhd3MgZWNyIGdldC1sb2dpbi1wYXNzd29yZCAtLXJlZ2lvbiAkQVdTX0RFRkFVTFRfUkVHSU9OIHwgZG9ja2VyIGxvZ2luIC0tdXNlcm5hbWUgQVdTIC0tcGFzc3dvcmQtc3RkaW4gJEFDQ09VTlRfSUQuZGtyLmVjci4kQVdTX0RFRkFVTFRfUkVHSU9OLmFtYXpvbmF3cy5jb20nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgICBjb21tYW5kczogW1xuICAgICAgICAgICAgICAnZWNobyBCdWlsZCBwaGFzZTogQnVpbGRpbmcgdGhlIERvY2tlciBpbWFnZS4uLicsXG4gICAgICAgICAgICAgICdkb2NrZXIgYnVpbGQgJEJVSUxEX0FSR1MgLXQgJEVDUl9SRVBPX1VSSTpsYXRlc3QgJENPREVCVUlMRF9TUkNfRElSJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwb3N0X2J1aWxkOiB7XG4gICAgICAgICAgICBjb21tYW5kczogW1xuICAgICAgICAgICAgICAnZWNobyBQb3N0LWJ1aWxkIHBoYXNlOiBQdXNoaW5nIHRoZSBEb2NrZXIgaW1hZ2UuLi4nLFxuICAgICAgICAgICAgICAnZG9ja2VyIHB1c2ggJEVDUl9SRVBPX1VSSTpsYXRlc3QnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCBwZXJtaXNzaW9ucyB0byBpbnRlcmFjdCB3aXRoIEVDUlxuICAgIHRoaXMuZWNyUmVwb3NpdG9yeS5ncmFudFB1bGxQdXNoKGNvZGVCdWlsZFByb2plY3QpO1xuXG4gICAgY29kZUJ1aWxkUHJvamVjdC5yb2xlIS5hZGRUb1ByaW5jaXBhbFBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ2VjcjpHZXRBdXRob3JpemF0aW9uVG9rZW4nXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIEdyYW50IHBlcm1pc3Npb25zIHRvIENvZGVCdWlsZCBmb3IgQ2xvdWRXYXRjaCBMb2dzXG4gICAgY29kZUJ1aWxkUHJvamVjdC5yb2xlIS5hZGRUb1ByaW5jaXBhbFBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ2xvZ3M6UHV0TG9nRXZlbnRzJywgJ2xvZ3M6Q3JlYXRlTG9nR3JvdXAnLCAnbG9nczpDcmVhdGVMb2dTdHJlYW0nXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbYGFybjphd3M6bG9nczoke1N0YWNrLm9mKHRoaXMpLnJlZ2lvbn06JHtTdGFjay5vZih0aGlzKS5hY2NvdW50fToqYF0sXG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgTm9kZS5qcyBMYW1iZGEgZnVuY3Rpb24gZm9yIG9uRXZlbnRcbiAgICBjb25zdCBvbkV2ZW50SGFuZGxlckZ1bmN0aW9uID0gbmV3IEZ1bmN0aW9uKHRoaXMsICdPbkV2ZW50SGFuZGxlckZ1bmN0aW9uJywge1xuICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfTEFURVNULCAvLyBVc2UgTm9kZS5qcyBydW50aW1lXG4gICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldChvbkV2ZW50SGFuZGxlclBhdGgpLCAvLyBQYXRoIHRvIGhhbmRsZXIgY29kZVxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLCAvLyBFbnRyeSBwb2ludCAoYWRqdXN0IGFzIG5lZWRlZClcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgIH0pO1xuXG4gICAgb25FdmVudEhhbmRsZXJGdW5jdGlvbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydjb2RlYnVpbGQ6U3RhcnRCdWlsZCddLFxuICAgICAgICByZXNvdXJjZXM6IFtjb2RlQnVpbGRQcm9qZWN0LnByb2plY3RBcm5dLCAvLyBSZXN0cmljdCB0byBzcGVjaWZpYyBwcm9qZWN0XG4gICAgICB9KVxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgTm9kZS5qcyBMYW1iZGEgZnVuY3Rpb24gZm9yIGlzQ29tcGxldGVcbiAgICBjb25zdCBpc0NvbXBsZXRlSGFuZGxlckZ1bmN0aW9uID0gbmV3IEZ1bmN0aW9uKHRoaXMsICdJc0NvbXBsZXRlSGFuZGxlckZ1bmN0aW9uJywge1xuICAgICAgcnVudGltZTogUnVudGltZS5OT0RFSlNfTEFURVNULFxuICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQoaXNDb21wbGV0ZUhhbmRsZXJQYXRoKSxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgIH0pO1xuXG4gICAgaXNDb21wbGV0ZUhhbmRsZXJGdW5jdGlvbi5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdjb2RlYnVpbGQ6QmF0Y2hHZXRCdWlsZHMnLFxuICAgICAgICAgICdjb2RlYnVpbGQ6TGlzdEJ1aWxkc0ZvclByb2plY3QnLFxuICAgICAgICAgICdsb2dzOkdldExvZ0V2ZW50cycsXG4gICAgICAgICAgJ2xvZ3M6RGVzY3JpYmVMb2dTdHJlYW1zJyxcbiAgICAgICAgICAnbG9nczpEZXNjcmliZUxvZ0dyb3VwcydcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBhIGN1c3RvbSByZXNvdXJjZSBwcm92aWRlclxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IFByb3ZpZGVyKHRoaXMsICdDdXN0b21SZXNvdXJjZVByb3ZpZGVyJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IG9uRXZlbnRIYW5kbGVyRnVuY3Rpb24sXG4gICAgICBpc0NvbXBsZXRlSGFuZGxlcjogaXNDb21wbGV0ZUhhbmRsZXJGdW5jdGlvbixcbiAgICAgIHF1ZXJ5SW50ZXJ2YWw6IER1cmF0aW9uLm1pbnV0ZXMoMSksXG4gICAgfSk7XG5cbiAgICAvLyBEZWZpbmUgdGhlIGN1c3RvbSByZXNvdXJjZVxuICAgIHRoaXMuYnVpbGRUcmlnZ2VyUmVzb3VyY2UgPSBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0J1aWxkVHJpZ2dlclJlc291cmNlJywge1xuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIFByb2plY3ROYW1lOiBjb2RlQnVpbGRQcm9qZWN0LnByb2plY3ROYW1lLFxuICAgICAgICBUcmlnZ2VyOiBjcnlwdG8ucmFuZG9tVVVJRCgpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMuYnVpbGRUcmlnZ2VyUmVzb3VyY2Uubm9kZS5hZGREZXBlbmRlbmN5KGNvZGVCdWlsZFByb2plY3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgY29udGFpbmVyIGltYWdlIGZyb20gdGhlIEVDUiByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBAcmV0dXJucyBBIGBDb250YWluZXJJbWFnZWAgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYnVpbHQgaW1hZ2UuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29udGFpbmVySW1hZ2UoKTogQ29udGFpbmVySW1hZ2Uge1xuICAgIHJldHVybiBDb250YWluZXJJbWFnZS5mcm9tRWNyUmVwb3NpdG9yeSh0aGlzLmVjclJlcG9zaXRvcnksICdsYXRlc3QnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIERvY2tlciBpbWFnZSBjb2RlIGZvciB1c2UgaW4gQVdTIExhbWJkYS5cbiAgICpcbiAgICogQHJldHVybnMgQSBgRG9ja2VySW1hZ2VDb2RlYCBvYmplY3QgZm9yIHRoZSBEb2NrZXIgaW1hZ2UuXG4gICAqL1xuICBwdWJsaWMgZ2V0RG9ja2VySW1hZ2VDb2RlKCk6IERvY2tlckltYWdlQ29kZSB7XG4gICAgcmV0dXJuIERvY2tlckltYWdlQ29kZS5mcm9tRWNyKHRoaXMuZWNyUmVwb3NpdG9yeSk7XG4gIH1cbn1cbiJdfQ==
153
+ _a = JSII_RTTI_SYMBOL_1;
154
+ TokenInjectableDockerBuilder[_a] = { fqn: "token-injectable-docker-builder.TokenInjectableDockerBuilder", version: "1.0.1" };
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBOEQ7QUFDOUQsNkRBQXdGO0FBQ3hGLGlEQUFpRDtBQUNqRCxpREFBcUQ7QUFDckQsaURBQXNEO0FBQ3RELHVEQUFrRjtBQUNsRiw2REFBa0Q7QUFDbEQsbUVBQXdEO0FBQ3hELDJDQUF1QztBQXdCdkM7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQWEsNEJBQTZCLFNBQVEsc0JBQVM7SUFLekQ7Ozs7OztPQU1HO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QztRQUNoRixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLHlCQUF5QjtRQUV4RSwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLG9CQUFVLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBRTNELHNDQUFzQztRQUN0QyxNQUFNLFdBQVcsR0FBRyxJQUFJLHFCQUFLLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUNqRCxJQUFJLEVBQUUsVUFBVSxFQUFFLHdDQUF3QztTQUMzRCxDQUFDLENBQUM7UUFFSCw2REFBNkQ7UUFDN0QsTUFBTSxlQUFlLEdBQUcsU0FBUztZQUMvQixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7aUJBQ3hCLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxlQUFlLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztpQkFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNaLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFUCxpRUFBaUU7UUFDakUsTUFBTSxvQkFBb0IsR0FB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QUFDLENBQUM7SUFDckUsQ0FBQzs7QUFySkgsb0VBc0pDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VzdG9tUmVzb3VyY2UsIFN0YWNrLCBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IFByb2plY3QsIFNvdXJjZSwgTGludXhCdWlsZEltYWdlLCBCdWlsZFNwZWMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyJztcbmltcG9ydCB7IENvbnRhaW5lckltYWdlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IFJ1bnRpbWUsIENvZGUsIERvY2tlckltYWdlQ29kZSwgRnVuY3Rpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IEFzc2V0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzLWFzc2V0cyc7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIGBUb2tlbkluamVjdGFibGVEb2NrZXJCdWlsZGVyYCBjb25zdHJ1Y3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVG9rZW5JbmplY3RhYmxlRG9ja2VyQnVpbGRlclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgRG9ja2VyZmlsZSBvciBzb3VyY2UgY29kZS5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIERvY2tlciBidWlsZCBwcm9jZXNzLlxuICAgKiBUaGVzZSBhcmUgdHJhbnNmb3JtZWQgaW50byBgLS1idWlsZC1hcmdgIGZsYWdzLlxuICAgKiBAZXhhbXBsZVxuICAgKiB7XG4gICAqICAgVE9LRU46ICdteS1zZWNyZXQtdG9rZW4nLFxuICAgKiAgIEVOVjogJ3Byb2R1Y3Rpb24nXG4gICAqIH1cbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkQXJncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cblxuLyoqXG4gKiBBIENESyBjb25zdHJ1Y3QgdG8gYnVpbGQgYW5kIHB1c2ggRG9ja2VyIGltYWdlcyB0byBhbiBFQ1IgcmVwb3NpdG9yeSB1c2luZyBDb2RlQnVpbGQgYW5kIExhbWJkYSBjdXN0b20gcmVzb3VyY2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBkb2NrZXJCdWlsZGVyID0gbmV3IFRva2VuSW5qZWN0YWJsZURvY2tlckJ1aWxkZXIodGhpcywgJ0RvY2tlckJ1aWxkZXInLCB7XG4gKiAgIHBhdGg6ICcuL2RvY2tlcicsXG4gKiAgIGJ1aWxkQXJnczoge1xuICogICAgIFRPS0VOOiAnbXktc2VjcmV0LXRva2VuJyxcbiAqICAgICBFTlY6ICdwcm9kdWN0aW9uJ1xuICogICB9LFxuICogfSk7XG4gKlxuICogY29uc3QgY29udGFpbmVySW1hZ2UgPSBkb2NrZXJCdWlsZGVyLmdldENvbnRhaW5lckltYWdlKCk7XG4gKi9cbmV4cG9ydCBjbGFzcyBUb2tlbkluamVjdGFibGVEb2NrZXJCdWlsZGVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGNvbnRhaW5lckltYWdlOiBDb250YWluZXJJbWFnZTtcbiAgcHVibGljIHJlYWRvbmx5IGRvY2tlckltYWdlQ29kZTogRG9ja2VySW1hZ2VDb2RlO1xuICBwcml2YXRlIHJlYWRvbmx5IGVjclJlcG9zaXRvcnk6IFJlcG9zaXRvcnk7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgYFRva2VuSW5qZWN0YWJsZURvY2tlckJ1aWxkZXJgIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjb25zdHJ1Y3Qvc3RhY2suXG4gICAqIEBwYXJhbSBpZCBUaGUgdW5pcXVlIElEIG9mIHRoZSBjb25zdHJ1Y3QuXG4gICAqIEBwYXJhbSBwcm9wcyBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIHRoZSBjb25zdHJ1Y3QuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogVG9rZW5JbmplY3RhYmxlRG9ja2VyQnVpbGRlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IHsgcGF0aDogc291cmNlUGF0aCwgYnVpbGRBcmdzIH0gPSBwcm9wczsgLy8gRGVmYXVsdCB0byBsaW51eC9hbWQ2NFxuXG4gICAgLy8gQ3JlYXRlIGFuIEVDUiByZXBvc2l0b3J5XG4gICAgdGhpcy5lY3JSZXBvc2l0b3J5ID0gbmV3IFJlcG9zaXRvcnkodGhpcywgJ0VDUlJlcG9zaXRvcnknKTtcblxuICAgIC8vIFBhY2thZ2UgdGhlIHNvdXJjZSBjb2RlIGFzIGFuIGFzc2V0XG4gICAgY29uc3Qgc291cmNlQXNzZXQgPSBuZXcgQXNzZXQodGhpcywgJ1NvdXJjZUFzc2V0Jywge1xuICAgICAgcGF0aDogc291cmNlUGF0aCwgLy8gUGF0aCB0byB0aGUgRG9ja2VyZmlsZSBvciBzb3VyY2UgY29kZVxuICAgIH0pO1xuXG4gICAgLy8gVHJhbnNmb3JtIGJ1aWxkQXJncyBpbnRvIGEgc3RyaW5nIG9mIC0tYnVpbGQtYXJnIEtFWT1WQUxVRVxuICAgIGNvbnN0IGJ1aWxkQXJnc1N0cmluZyA9IGJ1aWxkQXJnc1xuICAgICAgPyBPYmplY3QuZW50cmllcyhidWlsZEFyZ3MpXG4gICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gYC0tYnVpbGQtYXJnICR7a2V5fT0ke3ZhbHVlfWApXG4gICAgICAgIC5qb2luKCcgJylcbiAgICAgIDogJyc7XG5cbiAgICAvLyBQYXNzIHRoZSBidWlsZEFyZ3NTdHJpbmcgYW5kIHBsYXRmb3JtIGFzIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgIGNvbnN0IGVudmlyb25tZW50VmFyaWFibGVzOiB7IFtuYW1lOiBzdHJpbmddOiB7IHZhbHVlOiBzdHJpbmcgfSB9ID0ge1xuICAgICAgRUNSX1JFUE9fVVJJOiB7IHZhbHVlOiB0aGlzLmVjclJlcG9zaXRvcnkucmVwb3NpdG9yeVVyaSB9LFxuICAgICAgQlVJTERfQVJHUzogeyB2YWx1ZTogYnVpbGRBcmdzU3RyaW5nIH0sXG4gICAgfTtcblxuICAgIC8vIENyZWF0ZSBhIENvZGVCdWlsZCBwcm9qZWN0XG4gICAgY29uc3QgY29kZUJ1aWxkUHJvamVjdCA9IG5ldyBQcm9qZWN0KHRoaXMsICdVSUNvZGVCdWlsZFByb2plY3QnLCB7XG4gICAgICBzb3VyY2U6IFNvdXJjZS5zMyh7XG4gICAgICAgIGJ1Y2tldDogc291cmNlQXNzZXQuYnVja2V0LFxuICAgICAgICBwYXRoOiBzb3VyY2VBc3NldC5zM09iamVjdEtleSxcbiAgICAgIH0pLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgYnVpbGRJbWFnZTogTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzdfMCxcbiAgICAgICAgcHJpdmlsZWdlZDogdHJ1ZSwgLy8gUmVxdWlyZWQgZm9yIERvY2tlciBidWlsZHNcbiAgICAgIH0sXG4gICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczogZW52aXJvbm1lbnRWYXJpYWJsZXMsXG4gICAgICBidWlsZFNwZWM6IEJ1aWxkU3BlYy5mcm9tT2JqZWN0KHtcbiAgICAgICAgdmVyc2lvbjogJzAuMicsXG4gICAgICAgIHBoYXNlczoge1xuICAgICAgICAgIHByZV9idWlsZDoge1xuICAgICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgICAgJ2VjaG8gXCJSZXRyaWV2aW5nIEFXUyBBY2NvdW50IElELi4uXCInLFxuICAgICAgICAgICAgICAnZXhwb3J0IEFDQ09VTlRfSUQ9JChhd3Mgc3RzIGdldC1jYWxsZXItaWRlbnRpdHkgLS1xdWVyeSBBY2NvdW50IC0tb3V0cHV0IHRleHQpJyxcbiAgICAgICAgICAgICAgJ2VjaG8gXCJMb2dnaW5nIGluIHRvIEFtYXpvbiBFQ1IuLi5cIicsXG4gICAgICAgICAgICAgICdhd3MgZWNyIGdldC1sb2dpbi1wYXNzd29yZCAtLXJlZ2lvbiAkQVdTX0RFRkFVTFRfUkVHSU9OIHwgZG9ja2VyIGxvZ2luIC0tdXNlcm5hbWUgQVdTIC0tcGFzc3dvcmQtc3RkaW4gJEFDQ09VTlRfSUQuZGtyLmVjci4kQVdTX0RFRkFVTFRfUkVHSU9OLmFtYXpvbmF3cy5jb20nLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJ1aWxkOiB7XG4gICAgICAgICAgICBjb21tYW5kczogW1xuICAgICAgICAgICAgICAnZWNobyBCdWlsZCBwaGFzZTogQnVpbGRpbmcgdGhlIERvY2tlciBpbWFnZS4uLicsXG4gICAgICAgICAgICAgICdkb2NrZXIgYnVpbGQgJEJVSUxEX0FSR1MgLXQgJEVDUl9SRVBPX1VSSTpsYXRlc3QgJENPREVCVUlMRF9TUkNfRElSJyxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwb3N0X2J1aWxkOiB7XG4gICAgICAgICAgICBjb21tYW5kczogW1xuICAgICAgICAgICAgICAnZWNobyBQb3N0LWJ1aWxkIHBoYXNlOiBQdXNoaW5nIHRoZSBEb2NrZXIgaW1hZ2UuLi4nLFxuICAgICAgICAgICAgICAnZG9ja2VyIHB1c2ggJEVDUl9SRVBPX1VSSTpsYXRlc3QnLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCBwZXJtaXNzaW9ucyB0byBpbnRlcmFjdCB3aXRoIEVDUlxuICAgIHRoaXMuZWNyUmVwb3NpdG9yeS5ncmFudFB1bGxQdXNoKGNvZGVCdWlsZFByb2plY3QpO1xuXG4gICAgY29kZUJ1aWxkUHJvamVjdC5yb2xlIS5hZGRUb1ByaW5jaXBhbFBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ2VjcjpHZXRBdXRob3JpemF0aW9uVG9rZW4nXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICAvLyBHcmFudCBwZXJtaXNzaW9ucyB0byBDb2RlQnVpbGQgZm9yIENsb3VkV2F0Y2ggTG9nc1xuICAgIGNvZGVCdWlsZFByb2plY3Qucm9sZSEuYWRkVG9QcmluY2lwYWxQb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydsb2dzOlB1dExvZ0V2ZW50cycsICdsb2dzOkNyZWF0ZUxvZ0dyb3VwJywgJ2xvZ3M6Q3JlYXRlTG9nU3RyZWFtJ10sXG4gICAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOmxvZ3M6JHtTdGFjay5vZih0aGlzKS5yZWdpb259OiR7U3RhY2sub2YodGhpcykuYWNjb3VudH06KmBdLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBOb2RlLmpzIExhbWJkYSBmdW5jdGlvbiBmb3Igb25FdmVudFxuICAgIGNvbnN0IG9uRXZlbnRIYW5kbGVyRnVuY3Rpb24gPSBuZXcgRnVuY3Rpb24odGhpcywgJ09uRXZlbnRIYW5kbGVyRnVuY3Rpb24nLCB7XG4gICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU19MQVRFU1QsIC8vIFVzZSBOb2RlLmpzIHJ1bnRpbWVcbiAgICAgIGNvZGU6IENvZGUuZnJvbUFzc2V0KCcuJyksIC8vIFBhdGggdG8gaGFuZGxlciBjb2RlXG4gICAgICBoYW5kbGVyOiAnb25FdmVudC5oYW5kbGVyJywgLy8gRW50cnkgcG9pbnQgKGFkanVzdCBhcyBuZWVkZWQpXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICB9KTtcblxuICAgIG9uRXZlbnRIYW5kbGVyRnVuY3Rpb24uYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFsnY29kZWJ1aWxkOlN0YXJ0QnVpbGQnXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbY29kZUJ1aWxkUHJvamVjdC5wcm9qZWN0QXJuXSwgLy8gUmVzdHJpY3QgdG8gc3BlY2lmaWMgcHJvamVjdFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIC8vIENyZWF0ZSBOb2RlLmpzIExhbWJkYSBmdW5jdGlvbiBmb3IgaXNDb21wbGV0ZVxuICAgIGNvbnN0IGlzQ29tcGxldGVIYW5kbGVyRnVuY3Rpb24gPSBuZXcgRnVuY3Rpb24odGhpcywgJ0lzQ29tcGxldGVIYW5kbGVyRnVuY3Rpb24nLCB7XG4gICAgICBydW50aW1lOiBSdW50aW1lLk5PREVKU19MQVRFU1QsXG4gICAgICBjb2RlOiBDb2RlLmZyb21Bc3NldCgnLicpLCAvLyBQYXRoIHRvIGhhbmRsZXIgY29kZVxuICAgICAgaGFuZGxlcjogJ2lzQ29tcGxldGUuaGFuZGxlcicsIC8vIEVudHJ5IHBvaW50IChhZGp1c3QgYXMgbmVlZGVkKVxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxNSksXG4gICAgfSk7XG5cbiAgICBpc0NvbXBsZXRlSGFuZGxlckZ1bmN0aW9uLmFkZFRvUm9sZVBvbGljeShcbiAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2NvZGVidWlsZDpCYXRjaEdldEJ1aWxkcycsXG4gICAgICAgICAgJ2NvZGVidWlsZDpMaXN0QnVpbGRzRm9yUHJvamVjdCcsXG4gICAgICAgICAgJ2xvZ3M6R2V0TG9nRXZlbnRzJyxcbiAgICAgICAgICAnbG9nczpEZXNjcmliZUxvZ1N0cmVhbXMnLFxuICAgICAgICAgICdsb2dzOkRlc2NyaWJlTG9nR3JvdXBzJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICAvLyBDcmVhdGUgYSBjdXN0b20gcmVzb3VyY2UgcHJvdmlkZXJcbiAgICBjb25zdCBwcm92aWRlciA9IG5ldyBQcm92aWRlcih0aGlzLCAnQ3VzdG9tUmVzb3VyY2VQcm92aWRlcicsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiBvbkV2ZW50SGFuZGxlckZ1bmN0aW9uLFxuICAgICAgaXNDb21wbGV0ZUhhbmRsZXI6IGlzQ29tcGxldGVIYW5kbGVyRnVuY3Rpb24sXG4gICAgICBxdWVyeUludGVydmFsOiBEdXJhdGlvbi5zZWNvbmRzKDMwKSxcbiAgICB9KTtcblxuICAgIC8vIERlZmluZSB0aGUgY3VzdG9tIHJlc291cmNlXG4gICAgY29uc3QgYnVpbGRUcmlnZ2VyUmVzb3VyY2UgPSBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0J1aWxkVHJpZ2dlclJlc291cmNlJywge1xuICAgICAgc2VydmljZVRva2VuOiBwcm92aWRlci5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIFByb2plY3ROYW1lOiBjb2RlQnVpbGRQcm9qZWN0LnByb2plY3ROYW1lLFxuICAgICAgICBUcmlnZ2VyOiBjcnlwdG8ucmFuZG9tVVVJRCgpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGJ1aWxkVHJpZ2dlclJlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeShjb2RlQnVpbGRQcm9qZWN0KTtcbiAgICB0aGlzLmNvbnRhaW5lckltYWdlID0gQ29udGFpbmVySW1hZ2UuZnJvbUVjclJlcG9zaXRvcnkodGhpcy5lY3JSZXBvc2l0b3J5KTtcbiAgICB0aGlzLmRvY2tlckltYWdlQ29kZSA9IERvY2tlckltYWdlQ29kZS5mcm9tRWNyKHRoaXMuZWNyUmVwb3NpdG9yeSk7XG4gIH1cbn1cbiJdfQ==
package/package.json CHANGED
@@ -1,50 +1,153 @@
1
1
  {
2
2
  "name": "token-injectable-docker-builder",
3
- "version": "0.1.6",
4
- "main": "lib/index.js",
5
- "types": "lib/index.d.ts",
3
+ "description": "The TokenInjectableDockerBuilder is a flexible AWS CDK construct that enables the usage of AWS CDK tokens in the building, pushing, and deployment of Docker images to Amazon Elastic Container Registry (ECR). It leverages AWS CodeBuild and Lambda custom resources.",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "https://github.com/AlexTech314/TokenInjectableDockerBuilder.git"
7
+ },
6
8
  "scripts": {
7
- "build": "tsc",
8
- "watch": "tsc -w",
9
- "test": "jest"
9
+ "build": "npx projen build",
10
+ "bump": "npx projen bump",
11
+ "clobber": "npx projen clobber",
12
+ "compat": "npx projen compat",
13
+ "compile": "npx projen compile",
14
+ "default": "npx projen default",
15
+ "docgen": "npx projen docgen",
16
+ "eject": "npx projen eject",
17
+ "eslint": "npx projen eslint",
18
+ "package": "npx projen package",
19
+ "package-all": "npx projen package-all",
20
+ "package:js": "npx projen package:js",
21
+ "post-compile": "npx projen post-compile",
22
+ "post-upgrade": "npx projen post-upgrade",
23
+ "pre-compile": "npx projen pre-compile",
24
+ "release": "npx projen release",
25
+ "test": "npx projen test",
26
+ "test:watch": "npx projen test:watch",
27
+ "unbump": "npx projen unbump",
28
+ "upgrade": "npx projen upgrade",
29
+ "watch": "npx projen watch",
30
+ "projen": "npx projen"
31
+ },
32
+ "author": {
33
+ "name": "AlexTech314",
34
+ "email": "alest314@gmail.com",
35
+ "organization": false
10
36
  },
11
37
  "devDependencies": {
12
- "@aws-cdk/assertions": "^1.204.0",
38
+ "@stylistic/eslint-plugin": "^2",
13
39
  "@types/jest": "^29.5.14",
14
- "@types/node": "22.7.9",
40
+ "@types/node": "^22.9.3",
41
+ "@typescript-eslint/eslint-plugin": "^8",
42
+ "@typescript-eslint/parser": "^8",
15
43
  "aws-cdk-lib": "2.166.0",
16
- "constructs": "^10.0.0",
44
+ "commit-and-tag-version": "^12",
45
+ "constructs": "10.0.5",
46
+ "eslint": "^9",
47
+ "eslint-import-resolver-typescript": "^3.6.3",
48
+ "eslint-plugin-import": "^2.31.0",
17
49
  "jest": "^29.7.0",
50
+ "jest-junit": "^15",
51
+ "jsii": "~5.5.0",
52
+ "jsii-diff": "^1.105.0",
53
+ "jsii-docgen": "^10.5.0",
54
+ "jsii-pacmak": "^1.105.0",
55
+ "jsii-rosetta": "~5.5.0",
56
+ "projen": "^0.90.5",
18
57
  "ts-jest": "^29.2.5",
19
- "typescript": "~5.6.3"
58
+ "ts-node": "^10.9.2",
59
+ "typescript": "^5.7.2"
20
60
  },
21
61
  "peerDependencies": {
22
- "aws-cdk-lib": "2.166.0",
23
- "constructs": "^10.0.0"
62
+ "aws-cdk-lib": "^2.166.0",
63
+ "constructs": "^10.0.5"
24
64
  },
25
65
  "keywords": [
26
66
  "aws",
27
- "cdk",
28
67
  "aws-cdk",
29
- "docker",
30
- "ecr",
31
- "lambda",
32
- "custom-resource",
33
- "docker-build",
34
- "codebuild",
35
- "token-injection",
36
- "docker-image",
68
+ "aws-cdk-lib",
69
+ "aws-ci-cd",
37
70
  "aws-codebuild",
38
71
  "aws-ecr",
39
- "docker-builder",
40
- "cdk-construct",
41
- "lambda-custom-resource",
42
- "container-image",
43
72
  "aws-lambda",
44
- "aws-cdk-lib",
45
- "cloud-development-kit",
73
+ "awscdk",
74
+ "cdk",
75
+ "cdk-construct",
46
76
  "ci-cd",
47
- "aws-ci-cd",
48
- "infrastructure-as-code"
49
- ]
77
+ "cloud-development-kit",
78
+ "codebuild",
79
+ "container-image",
80
+ "custom-resource",
81
+ "docker",
82
+ "docker-build",
83
+ "docker-builder",
84
+ "docker-image",
85
+ "ecr",
86
+ "infrastructure-as-code",
87
+ "lambda",
88
+ "lambda-custom-resource",
89
+ "token-injection"
90
+ ],
91
+ "main": "lib/index.js",
92
+ "license": "MIT",
93
+ "publishConfig": {
94
+ "access": "public"
95
+ },
96
+ "version": "1.0.1",
97
+ "jest": {
98
+ "coverageProvider": "v8",
99
+ "testMatch": [
100
+ "<rootDir>/@(src|test)/**/*(*.)@(spec|test).ts?(x)",
101
+ "<rootDir>/@(src|test)/**/__tests__/**/*.ts?(x)",
102
+ "<rootDir>/@(projenrc)/**/*(*.)@(spec|test).ts?(x)",
103
+ "<rootDir>/@(projenrc)/**/__tests__/**/*.ts?(x)"
104
+ ],
105
+ "clearMocks": true,
106
+ "collectCoverage": true,
107
+ "coverageReporters": [
108
+ "json",
109
+ "lcov",
110
+ "clover",
111
+ "cobertura",
112
+ "text"
113
+ ],
114
+ "coverageDirectory": "coverage",
115
+ "coveragePathIgnorePatterns": [
116
+ "/node_modules/"
117
+ ],
118
+ "testPathIgnorePatterns": [
119
+ "/node_modules/"
120
+ ],
121
+ "watchPathIgnorePatterns": [
122
+ "/node_modules/"
123
+ ],
124
+ "reporters": [
125
+ "default",
126
+ [
127
+ "jest-junit",
128
+ {
129
+ "outputDirectory": "test-reports"
130
+ }
131
+ ]
132
+ ],
133
+ "transform": {
134
+ "^.+\\.[t]sx?$": [
135
+ "ts-jest",
136
+ {
137
+ "tsconfig": "tsconfig.dev.json"
138
+ }
139
+ ]
140
+ }
141
+ },
142
+ "types": "lib/index.d.ts",
143
+ "stability": "stable",
144
+ "jsii": {
145
+ "outdir": "dist",
146
+ "targets": {},
147
+ "tsc": {
148
+ "outDir": "lib",
149
+ "rootDir": "src"
150
+ }
151
+ },
152
+ "//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\"."
50
153
  }