@nikovirtala/projen-constructs 0.3.78 → 0.3.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +326 -141
- package/README.md +18 -0
- package/docs/api/assets/search.js +1 -1
- package/docs/api/classes/AwsCdkConstructLibraryProject.html +1 -1
- package/docs/api/classes/AwsCdkTypeScriptAppProject.html +1 -1
- package/docs/api/classes/Bundler.html +33 -6
- package/docs/api/classes/Colima.html +4 -0
- package/docs/api/classes/JsiiProject.html +1 -1
- package/docs/api/classes/LambdaFunctionCodeBundle.html +22 -2
- package/docs/api/classes/LambdaFunctionConstructGenerator.html +4 -0
- package/docs/api/classes/LocalStack.html +4 -0
- package/docs/api/classes/ProjectGenerator.html +1 -1
- package/docs/api/classes/TypeScriptProject.html +1 -1
- package/docs/api/classes/Vitest.html +1 -1
- package/docs/api/functions/convertToPosixPath.html +2 -0
- package/docs/api/functions/renderBundleName.html +9 -1
- package/docs/api/index.html +8 -0
- package/docs/api/interfaces/Bundle.html +12 -3
- package/docs/api/interfaces/BundlerOptions.html +40 -4
- package/docs/api/interfaces/BundlingOptions.html +139 -12
- package/docs/api/interfaces/LambdaFunctionCodeBundleOptions.html +53 -5
- package/docs/api/interfaces/LambdaFunctionCodeBundlerOptions.html +26 -3
- package/docs/api/interfaces/LambdaFunctionConstructGeneratorOptions.html +90 -8
- package/docs/api/interfaces/LocalStackOptions.html +46 -4
- package/docs/api/interfaces/ProjectGeneratorOptions.html +1 -1
- package/docs/api/interfaces/VitestOptions.html +48 -3
- package/lib/components/bundle-lambda-function-code.d.ts +243 -0
- package/lib/components/bundle-lambda-function-code.js +75 -5
- package/lib/components/colima.d.ts +5 -0
- package/lib/components/colima.js +7 -2
- package/lib/components/homebrew.js +1 -1
- package/lib/components/lambda-function-construct-generator.d.ts +54 -0
- package/lib/components/lambda-function-construct-generator.js +7 -2
- package/lib/components/localstack.d.ts +32 -0
- package/lib/components/localstack.js +14 -2
- package/lib/components/mise.js +1 -1
- package/lib/components/typedoc.js +1 -1
- package/lib/components/vitest.d.ts +29 -0
- package/lib/components/vitest.js +38 -35
- package/lib/project-generator.js +1 -1
- package/lib/projects/awscdk-construct-library.generated.js +1 -1
- package/lib/projects/awscdk-typescript-app.generated.js +1 -1
- package/lib/projects/jsii.generated.js +1 -1
- package/lib/projects/typescript.generated.js +1 -1
- package/package.json +1 -1
|
@@ -1,60 +1,303 @@
|
|
|
1
1
|
import { Component, cdk, type Project, type Task } from "projen";
|
|
2
|
+
/**
|
|
3
|
+
* Renders the bundle name of an entrypoint: its path without the extension and without a leading `src` directory.
|
|
4
|
+
*
|
|
5
|
+
* @example renderBundleName("src/handlers/foo.lambda.ts") // "handlers/foo.lambda"
|
|
6
|
+
*/
|
|
2
7
|
export declare function renderBundleName(entrypoint: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Converts the given path string to posix if it wasn't already.
|
|
10
|
+
*/
|
|
3
11
|
export declare function convertToPosixPath(p: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Options for `Bundler`.
|
|
14
|
+
*/
|
|
4
15
|
export interface BundlerOptions {
|
|
16
|
+
/**
|
|
17
|
+
* The semantic version requirement for `esbuild`.
|
|
18
|
+
*
|
|
19
|
+
* @default - no specific version (implies latest)
|
|
20
|
+
*/
|
|
5
21
|
readonly esbuildVersion?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Output directory for all bundles.
|
|
24
|
+
*
|
|
25
|
+
* @default "assets"
|
|
26
|
+
*/
|
|
6
27
|
readonly assetsDir?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Install the `bundle` command as a pre-compile phase.
|
|
30
|
+
*
|
|
31
|
+
* @default true
|
|
32
|
+
*/
|
|
7
33
|
readonly addToPreCompile?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Map of file extensions (without dot) and loaders to use for this file type.
|
|
36
|
+
* Loaders are appended to the esbuild command by `--loader:.extension=loader`
|
|
37
|
+
*
|
|
38
|
+
* @default - no loaders
|
|
39
|
+
*/
|
|
8
40
|
readonly loaders?: {
|
|
9
41
|
[key: string]: string;
|
|
10
42
|
};
|
|
11
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Adds support for bundling JavaScript applications and dependencies into a
|
|
46
|
+
* single file.
|
|
47
|
+
*/
|
|
12
48
|
export declare class Bundler extends Component {
|
|
49
|
+
/**
|
|
50
|
+
* Returns the `Bundler` instance associated with a project or `undefined` if
|
|
51
|
+
* there is no Bundler.
|
|
52
|
+
*
|
|
53
|
+
* @param project The project
|
|
54
|
+
* @returns A bundler
|
|
55
|
+
*/
|
|
13
56
|
static of(project: Project): Bundler | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* The semantic version requirement for `esbuild` (if defined).
|
|
59
|
+
*/
|
|
14
60
|
readonly esbuildVersion: string | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Root bundle directory.
|
|
63
|
+
*/
|
|
15
64
|
readonly bundledir: string;
|
|
16
65
|
private _task;
|
|
17
66
|
private readonly addToPreCompile;
|
|
18
67
|
private readonly loaders?;
|
|
68
|
+
/**
|
|
69
|
+
* Creates a `Bundler`.
|
|
70
|
+
*/
|
|
19
71
|
constructor(project: Project, options?: BundlerOptions);
|
|
72
|
+
/**
|
|
73
|
+
* Gets or creates the singleton "bundle" task of the project.
|
|
74
|
+
*
|
|
75
|
+
* If the project doesn't have a "bundle" task, it will be created and spawned
|
|
76
|
+
* during the pre-compile phase (unless `addToPreCompile` is `false`).
|
|
77
|
+
*/
|
|
20
78
|
get bundleTask(): Task;
|
|
79
|
+
/**
|
|
80
|
+
* Adds a task to the project which bundles a specific entrypoint and all of
|
|
81
|
+
* its dependencies into a single javascript output file.
|
|
82
|
+
*
|
|
83
|
+
* @param entrypoint The relative path of the artifact within the project
|
|
84
|
+
* @param options Bundling options
|
|
85
|
+
*/
|
|
21
86
|
addBundle(entrypoint: string, options: BundlingOptions): Bundle;
|
|
87
|
+
/**
|
|
88
|
+
* Add bundling support to a project. This is called implicitly when
|
|
89
|
+
* `bundleTask` is referenced first. It adds the dependency on `esbuild`,
|
|
90
|
+
* gitignore/npmignore, etc.
|
|
91
|
+
*/
|
|
22
92
|
private addBundlingSupport;
|
|
23
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* A bundle created by `Bundler.addBundle`.
|
|
96
|
+
*/
|
|
24
97
|
export interface Bundle {
|
|
98
|
+
/**
|
|
99
|
+
* The task that produces this bundle.
|
|
100
|
+
*/
|
|
25
101
|
readonly bundleTask: Task;
|
|
102
|
+
/**
|
|
103
|
+
* Location of the output file (relative to project root).
|
|
104
|
+
*/
|
|
26
105
|
readonly outfile: string;
|
|
106
|
+
/**
|
|
107
|
+
* Base directory containing the output file (relative to project root).
|
|
108
|
+
*/
|
|
27
109
|
readonly outdir: string;
|
|
28
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Options for bundling.
|
|
113
|
+
*/
|
|
29
114
|
export interface BundlingOptions {
|
|
115
|
+
/**
|
|
116
|
+
* You can mark a file or a package as external to exclude it from your build.
|
|
117
|
+
* Instead of being bundled, the import will be preserved (using require for
|
|
118
|
+
* the iife and cjs formats and using import for the esm format) and will be
|
|
119
|
+
* evaluated at run time instead.
|
|
120
|
+
*
|
|
121
|
+
* This has several uses. First of all, it can be used to trim unnecessary
|
|
122
|
+
* code from your bundle for a code path that you know will never be executed.
|
|
123
|
+
* For example, a package may contain code that only runs in node but you will
|
|
124
|
+
* only be using that package in the browser. It can also be used to import
|
|
125
|
+
* code in node at run time from a package that cannot be bundled. For
|
|
126
|
+
* example, the fsevents package contains a native extension, which esbuild
|
|
127
|
+
* doesn't support.
|
|
128
|
+
*
|
|
129
|
+
* @default []
|
|
130
|
+
*/
|
|
30
131
|
readonly externals?: string[];
|
|
132
|
+
/**
|
|
133
|
+
* Include a source map in the bundle.
|
|
134
|
+
*
|
|
135
|
+
* @default true
|
|
136
|
+
*/
|
|
31
137
|
readonly sourcemap?: boolean;
|
|
138
|
+
/**
|
|
139
|
+
* esbuild target.
|
|
140
|
+
*
|
|
141
|
+
* @default "esnext"
|
|
142
|
+
*/
|
|
32
143
|
readonly target?: string;
|
|
144
|
+
/**
|
|
145
|
+
* esbuild platform.
|
|
146
|
+
*
|
|
147
|
+
* @default "node"
|
|
148
|
+
*/
|
|
33
149
|
readonly platform?: string;
|
|
150
|
+
/**
|
|
151
|
+
* Bundler output path relative to the asset's output directory.
|
|
152
|
+
*
|
|
153
|
+
* @default "index.mjs"
|
|
154
|
+
*/
|
|
34
155
|
readonly outfile?: string;
|
|
156
|
+
/**
|
|
157
|
+
* The path of the tsconfig.json file to use for bundling.
|
|
158
|
+
*
|
|
159
|
+
* `LambdaFunctionCodeBundle` always sets this to the project's development tsconfig.
|
|
160
|
+
*
|
|
161
|
+
* @default - no tsconfig is passed to esbuild
|
|
162
|
+
*/
|
|
35
163
|
readonly tsconfigPath?: string;
|
|
164
|
+
/**
|
|
165
|
+
* Map of file extensions (without dot) and loaders to use for this file type.
|
|
166
|
+
* Loaders are appended to the esbuild command by `--loader:.extension=loader`
|
|
167
|
+
*
|
|
168
|
+
* @default - the loaders of the `Bundler`
|
|
169
|
+
*/
|
|
36
170
|
readonly loaders?: {
|
|
37
171
|
[key: string]: string;
|
|
38
172
|
};
|
|
173
|
+
/**
|
|
174
|
+
* Output format for the generated JavaScript files: `"iife"`, `"cjs"` or `"esm"`.
|
|
175
|
+
*
|
|
176
|
+
* @default "esm"
|
|
177
|
+
* @see https://esbuild.github.io/api/#format
|
|
178
|
+
*/
|
|
39
179
|
readonly format?: string;
|
|
180
|
+
/**
|
|
181
|
+
* Minify the bundle.
|
|
182
|
+
*
|
|
183
|
+
* @default true
|
|
184
|
+
* @see https://esbuild.github.io/api/#minify
|
|
185
|
+
*/
|
|
40
186
|
readonly minify?: boolean;
|
|
187
|
+
/**
|
|
188
|
+
* Include the original source code in the source map.
|
|
189
|
+
*
|
|
190
|
+
* @default false
|
|
191
|
+
* @see https://esbuild.github.io/api/#sources-content
|
|
192
|
+
*/
|
|
41
193
|
readonly sourcesContent?: boolean;
|
|
194
|
+
/**
|
|
195
|
+
* Comma-separated list of `package.json` fields esbuild tries when resolving a package.
|
|
196
|
+
*
|
|
197
|
+
* @default "module,main"
|
|
198
|
+
* @see https://esbuild.github.io/api/#main-fields
|
|
199
|
+
*/
|
|
42
200
|
readonly mainFields?: string;
|
|
201
|
+
/**
|
|
202
|
+
* esbuild `--banner` argument, appended as is (so it starts with the file type, e.g. `:js=`).
|
|
203
|
+
*
|
|
204
|
+
* The default defines `require` so that CommonJS dependencies work in an ES module bundle.
|
|
205
|
+
*
|
|
206
|
+
* @default ":js=import { createRequire as topLevelCreateRequire } from 'module';const require = topLevelCreateRequire(import.meta.url)"
|
|
207
|
+
* @see https://esbuild.github.io/api/#banner
|
|
208
|
+
*/
|
|
43
209
|
readonly banner?: string;
|
|
44
210
|
}
|
|
211
|
+
/**
|
|
212
|
+
* Options for `LambdaFunctionCodeBundle`.
|
|
213
|
+
*/
|
|
45
214
|
export interface LambdaFunctionCodeBundleOptions {
|
|
215
|
+
/**
|
|
216
|
+
* A path from the project root directory to a TypeScript file which contains
|
|
217
|
+
* the AWS Lambda handler entrypoint (exports a `handler` function).
|
|
218
|
+
*
|
|
219
|
+
* This is relative to the root directory of the project.
|
|
220
|
+
*
|
|
221
|
+
* @example "src/subdir/foo.lambda.ts"
|
|
222
|
+
*/
|
|
46
223
|
readonly entrypoint: string;
|
|
224
|
+
/**
|
|
225
|
+
* Suffix for AWS Lambda handlers.
|
|
226
|
+
*
|
|
227
|
+
* @example ".lambda.ts"
|
|
228
|
+
*/
|
|
47
229
|
readonly extension: string;
|
|
230
|
+
/**
|
|
231
|
+
* The name of the generated TypeScript source file. This file should also be
|
|
232
|
+
* under the source tree.
|
|
233
|
+
*
|
|
234
|
+
* @default - The path of the entrypoint file, with the `-code.ts` suffix
|
|
235
|
+
* instead of the extension (e.g. `src/foo-code.ts`).
|
|
236
|
+
*/
|
|
48
237
|
readonly constructFile?: string;
|
|
238
|
+
/**
|
|
239
|
+
* The name of the generated `aws_lambda.Code` constant.
|
|
240
|
+
*
|
|
241
|
+
* @default - A pascal cased version of the name of the entrypoint file, with
|
|
242
|
+
* the suffix `FunctionCode` (e.g. `ResizeImageFunctionCode`).
|
|
243
|
+
*/
|
|
49
244
|
readonly constructName?: string;
|
|
245
|
+
/**
|
|
246
|
+
* Bundling options for this AWS Lambda Function.
|
|
247
|
+
*
|
|
248
|
+
* @default - the defaults of `BundlingOptions`
|
|
249
|
+
*/
|
|
50
250
|
readonly bundlingOptions?: BundlingOptions;
|
|
51
251
|
}
|
|
252
|
+
/**
|
|
253
|
+
* Generates a pre-bundled AWS Lambda Function code asset from handler code.
|
|
254
|
+
*
|
|
255
|
+
* Adds a task to the project's `Bundler` that uses `esbuild` to bundle the
|
|
256
|
+
* handler into the assets directory, and generates a file (e.g. `src/foo-code.ts`)
|
|
257
|
+
* exporting an `aws_lambda.Code` constant (e.g. `FooFunctionCode`) that points to
|
|
258
|
+
* the bundle. Pass it as the `code` of an `aws_lambda.Function`.
|
|
259
|
+
*
|
|
260
|
+
* Requires a `Bundler` component in the project.
|
|
261
|
+
*
|
|
262
|
+
* @example
|
|
263
|
+
*
|
|
264
|
+
* new Bundler(myProject);
|
|
265
|
+
* new LambdaFunctionCodeBundle(myProject, {
|
|
266
|
+
* entrypoint: "src/foo.lambda.ts",
|
|
267
|
+
* extension: ".lambda.ts",
|
|
268
|
+
* });
|
|
269
|
+
*/
|
|
52
270
|
export declare class LambdaFunctionCodeBundle extends Component {
|
|
271
|
+
/**
|
|
272
|
+
* Defines a pre-bundled AWS Lambda Function code asset from handler code.
|
|
273
|
+
*
|
|
274
|
+
* @param project The project to use
|
|
275
|
+
* @param options Options
|
|
276
|
+
*/
|
|
53
277
|
constructor(project: Project, options: LambdaFunctionCodeBundleOptions);
|
|
54
278
|
}
|
|
279
|
+
/**
|
|
280
|
+
* Options for `LambdaFunctionCodeBundler`
|
|
281
|
+
*/
|
|
55
282
|
export interface LambdaFunctionCodeBundlerOptions {
|
|
283
|
+
/**
|
|
284
|
+
* Locate files with the given extension.
|
|
285
|
+
*
|
|
286
|
+
* @example ".lambda.ts"
|
|
287
|
+
*/
|
|
56
288
|
readonly extension: string;
|
|
289
|
+
/**
|
|
290
|
+
* Project source tree (relative to project output directory).
|
|
291
|
+
*/
|
|
57
292
|
readonly srcdir: string;
|
|
293
|
+
/**
|
|
294
|
+
* Options for AWS Lambda Function bundling, applied to every discovered entrypoint.
|
|
295
|
+
*
|
|
296
|
+
* The `entrypoint` and `extension` given here are ignored: each bundle uses its
|
|
297
|
+
* discovered entrypoint and the `extension` of the bundler.
|
|
298
|
+
*
|
|
299
|
+
* @default - the defaults of `LambdaFunctionCodeBundleOptions`
|
|
300
|
+
*/
|
|
58
301
|
readonly bundleOptions?: LambdaFunctionCodeBundleOptions;
|
|
59
302
|
}
|
|
60
303
|
/**
|
|
@@ -41,30 +41,58 @@ const path = __importStar(require("node:path"));
|
|
|
41
41
|
const node_path_1 = require("node:path");
|
|
42
42
|
const case_1 = require("case");
|
|
43
43
|
const projen_1 = require("projen");
|
|
44
|
+
/**
|
|
45
|
+
* Renders the bundle name of an entrypoint: its path without the extension and without a leading `src` directory.
|
|
46
|
+
*
|
|
47
|
+
* @example renderBundleName("src/handlers/foo.lambda.ts") // "handlers/foo.lambda"
|
|
48
|
+
*/
|
|
44
49
|
function renderBundleName(entrypoint) {
|
|
45
50
|
const parts = (0, node_path_1.join)(entrypoint).split(node_path_1.sep);
|
|
46
51
|
if (parts[0] === "src") {
|
|
47
|
-
parts.shift();
|
|
52
|
+
parts.shift(); // just remove 'src' if its the first element for ergonomics
|
|
48
53
|
}
|
|
49
54
|
const p = parts.join(node_path_1.sep);
|
|
50
55
|
const dir = (0, node_path_1.dirname)(p);
|
|
51
56
|
const base = (0, node_path_1.basename)(p, (0, node_path_1.extname)(p));
|
|
52
57
|
return (0, node_path_1.join)(dir, base);
|
|
53
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Converts the given path string to posix if it wasn't already.
|
|
61
|
+
*/
|
|
54
62
|
function convertToPosixPath(p) {
|
|
55
63
|
return p.split(node_path_1.sep).join(node_path_1.posix.sep);
|
|
56
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Adds support for bundling JavaScript applications and dependencies into a
|
|
67
|
+
* single file.
|
|
68
|
+
*/
|
|
57
69
|
class Bundler extends projen_1.Component {
|
|
58
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.Bundler", version: "0.3.
|
|
70
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.Bundler", version: "0.3.80" };
|
|
71
|
+
/**
|
|
72
|
+
* Returns the `Bundler` instance associated with a project or `undefined` if
|
|
73
|
+
* there is no Bundler.
|
|
74
|
+
*
|
|
75
|
+
* @param project The project
|
|
76
|
+
* @returns A bundler
|
|
77
|
+
*/
|
|
59
78
|
static of(project) {
|
|
60
79
|
const isBundler = (o) => o instanceof Bundler;
|
|
61
80
|
return project.components.find(isBundler);
|
|
62
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* The semantic version requirement for `esbuild` (if defined).
|
|
84
|
+
*/
|
|
63
85
|
esbuildVersion;
|
|
86
|
+
/**
|
|
87
|
+
* Root bundle directory.
|
|
88
|
+
*/
|
|
64
89
|
bundledir;
|
|
65
90
|
_task;
|
|
66
91
|
addToPreCompile;
|
|
67
92
|
loaders;
|
|
93
|
+
/**
|
|
94
|
+
* Creates a `Bundler`.
|
|
95
|
+
*/
|
|
68
96
|
constructor(project, options = {}) {
|
|
69
97
|
super(project);
|
|
70
98
|
this.esbuildVersion = options.esbuildVersion;
|
|
@@ -72,6 +100,12 @@ class Bundler extends projen_1.Component {
|
|
|
72
100
|
this.addToPreCompile = options.addToPreCompile ?? true;
|
|
73
101
|
this.loaders = options.loaders;
|
|
74
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Gets or creates the singleton "bundle" task of the project.
|
|
105
|
+
*
|
|
106
|
+
* If the project doesn't have a "bundle" task, it will be created and spawned
|
|
107
|
+
* during the pre-compile phase (unless `addToPreCompile` is `false`).
|
|
108
|
+
*/
|
|
75
109
|
get bundleTask() {
|
|
76
110
|
if (!this._task) {
|
|
77
111
|
this.addBundlingSupport();
|
|
@@ -84,6 +118,13 @@ class Bundler extends projen_1.Component {
|
|
|
84
118
|
}
|
|
85
119
|
return this._task;
|
|
86
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* Adds a task to the project which bundles a specific entrypoint and all of
|
|
123
|
+
* its dependencies into a single javascript output file.
|
|
124
|
+
*
|
|
125
|
+
* @param entrypoint The relative path of the artifact within the project
|
|
126
|
+
* @param options Bundling options
|
|
127
|
+
*/
|
|
87
128
|
addBundle(entrypoint, options) {
|
|
88
129
|
const name = renderBundleName(entrypoint);
|
|
89
130
|
const outdir = path.posix.join(this.bundledir, name);
|
|
@@ -147,6 +188,11 @@ class Bundler extends projen_1.Component {
|
|
|
147
188
|
outfile: outfile,
|
|
148
189
|
};
|
|
149
190
|
}
|
|
191
|
+
/**
|
|
192
|
+
* Add bundling support to a project. This is called implicitly when
|
|
193
|
+
* `bundleTask` is referenced first. It adds the dependency on `esbuild`,
|
|
194
|
+
* gitignore/npmignore, etc.
|
|
195
|
+
*/
|
|
150
196
|
addBundlingSupport() {
|
|
151
197
|
const ignoreEntry = `/${this.bundledir}/`;
|
|
152
198
|
this.project.addGitIgnore(ignoreEntry);
|
|
@@ -156,8 +202,32 @@ class Bundler extends projen_1.Component {
|
|
|
156
202
|
}
|
|
157
203
|
}
|
|
158
204
|
exports.Bundler = Bundler;
|
|
205
|
+
/**
|
|
206
|
+
* Generates a pre-bundled AWS Lambda Function code asset from handler code.
|
|
207
|
+
*
|
|
208
|
+
* Adds a task to the project's `Bundler` that uses `esbuild` to bundle the
|
|
209
|
+
* handler into the assets directory, and generates a file (e.g. `src/foo-code.ts`)
|
|
210
|
+
* exporting an `aws_lambda.Code` constant (e.g. `FooFunctionCode`) that points to
|
|
211
|
+
* the bundle. Pass it as the `code` of an `aws_lambda.Function`.
|
|
212
|
+
*
|
|
213
|
+
* Requires a `Bundler` component in the project.
|
|
214
|
+
*
|
|
215
|
+
* @example
|
|
216
|
+
*
|
|
217
|
+
* new Bundler(myProject);
|
|
218
|
+
* new LambdaFunctionCodeBundle(myProject, {
|
|
219
|
+
* entrypoint: "src/foo.lambda.ts",
|
|
220
|
+
* extension: ".lambda.ts",
|
|
221
|
+
* });
|
|
222
|
+
*/
|
|
159
223
|
class LambdaFunctionCodeBundle extends projen_1.Component {
|
|
160
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.LambdaFunctionCodeBundle", version: "0.3.
|
|
224
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.LambdaFunctionCodeBundle", version: "0.3.80" };
|
|
225
|
+
/**
|
|
226
|
+
* Defines a pre-bundled AWS Lambda Function code asset from handler code.
|
|
227
|
+
*
|
|
228
|
+
* @param project The project to use
|
|
229
|
+
* @param options Options
|
|
230
|
+
*/
|
|
161
231
|
constructor(project, options) {
|
|
162
232
|
super(project);
|
|
163
233
|
const bundler = Bundler.of(project);
|
|
@@ -203,7 +273,7 @@ exports.LambdaFunctionCodeBundle = LambdaFunctionCodeBundle;
|
|
|
203
273
|
* Creates Lambda Function code bundles from entrypoints discovered in the project's source tree.
|
|
204
274
|
*/
|
|
205
275
|
class LambdaFunctionCodeBundler extends projen_1.cdk.AutoDiscoverBase {
|
|
206
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.LambdaFunctionCodeBundler", version: "0.3.
|
|
276
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.LambdaFunctionCodeBundler", version: "0.3.80" };
|
|
207
277
|
constructor(project, options) {
|
|
208
278
|
super(project, {
|
|
209
279
|
projectdir: options.srcdir,
|
|
@@ -219,4 +289,4 @@ class LambdaFunctionCodeBundler extends projen_1.cdk.AutoDiscoverBase {
|
|
|
219
289
|
}
|
|
220
290
|
}
|
|
221
291
|
exports.LambdaFunctionCodeBundler = LambdaFunctionCodeBundler;
|
|
222
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLWxhbWJkYS1mdW5jdGlvbi1jb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvYnVuZGxlLWxhbWJkYS1mdW5jdGlvbi1jb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWNBLDRDQVNDO0FBRUQsZ0RBRUM7O0FBM0JELGdEQUFrQztBQUNsQyx5Q0FBeUU7QUFDekUsK0JBQThCO0FBQzlCLG1DQVNnQjtBQUVoQixTQUFnQixnQkFBZ0IsQ0FBQyxVQUFrQjtJQUMvQyxNQUFNLEtBQUssR0FBRyxJQUFBLGdCQUFJLEVBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLGVBQUcsQ0FBQyxDQUFDO0lBQzFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ3JCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFHLENBQUMsQ0FBQztJQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFBLG1CQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsTUFBTSxJQUFJLEdBQUcsSUFBQSxvQkFBUSxFQUFDLENBQUMsRUFBRSxJQUFBLG1CQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxPQUFPLElBQUEsZ0JBQUksRUFBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVELFNBQWdCLGtCQUFrQixDQUFDLENBQVM7SUFDeEMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLGVBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFTRCxNQUFhLE9BQVEsU0FBUSxrQkFBUzs7SUFDM0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFn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QUM7UUFDNUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsUUFBUSxrQkFBa0IsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7O0FBbERMLDREQW1EQztBQVFEOztHQUVHO0FBQ0gsTUFBYSx5QkFBMEIsU0FBUSxZQUFHLENBQUMsZ0JBQWdCOztJQUMvRCxZQUFZLE9BQWdCLEVBQUUsT0FBeUM7UUFDbkUsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNYLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTTtZQUMxQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7U0FDL0IsQ0FBQyxDQUFDO1FBRUgsS0FBSyxNQUFNLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDeEMsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUN2QyxHQUFHLE9BQU8sQ0FBQyxhQUFhO2dCQUN4QixVQUFVLEVBQUUsVUFBVTtnQkFDdEIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO2FBQy9CLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDTCxDQUFDOztBQWRMLDhEQWVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBiYXNlbmFtZSwgZGlybmFtZSwgZXh0bmFtZSwgam9pbiwgcG9zaXgsIHNlcCB9IGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IHBhc2NhbCB9IGZyb20gXCJjYXNlXCI7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBjZGssXG4gICAgRGVwZW5kZW5jeVR5cGUsXG4gICAgamF2YXNjcmlwdCxcbiAgICB0eXBlIFByb2plY3QsXG4gICAgU291cmNlQ29kZSxcbiAgICB0eXBlIFRhc2ssXG4gICAgdHlwZSB0eXBlc2NyaXB0LFxufSBmcm9tIFwicHJvamVuXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJCdW5kbGVOYW1lKGVudHJ5cG9pbnQ6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcnRzID0gam9pbihlbnRyeXBvaW50KS5zcGxpdChzZXApO1xuICAgIGlmIChwYXJ0c1swXSA9PT0gXCJzcmNcIikge1xuICAgICAgICBwYXJ0cy5zaGlmdCgpO1xuICAgIH1cbiAgICBjb25zdCBwID0gcGFydHMuam9pbihzZXApO1xuICAgIGNvbnN0IGRpciA9IGRpcm5hbWUocCk7XG4gICAgY29uc3QgYmFzZSA9IGJhc2VuYW1lKHAsIGV4dG5hbWUocCkpO1xuICAgIHJldHVybiBqb2luKGRpciwgYmFzZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9Qb3NpeFBhdGgocDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHAuc3BsaXQoc2VwKS5qb2luKHBvc2l4LnNlcCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVuZGxlck9wdGlvbnMge1xuICAgIHJlYWRvbmx5IGVzYnVpbGRWZXJzaW9uPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGFzc2V0c0Rpcj86IHN0cmluZztcbiAgICByZWFkb25seSBhZGRUb1ByZUNvbXBpbGU/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IGxvYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG5leHBvcnQgY2xhc3MgQnVuZGxlciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcHVibGljIHN0YXRpYyBvZihwcm9qZWN0OiBQcm9qZWN0KTogQnVuZGxlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGlzQnVuZGxlciA9IChvOiBDb21wb25lbnQpOiBvIGlzIEJ1bmRsZXIgPT4gbyBpbnN0YW5jZW9mIEJ1bmRsZXI7XG4gICAgICAgIHJldHVybiBwcm9qZWN0LmNvbXBvbmVudHMuZmluZChpc0J1bmRsZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWFkb25seSBlc2J1aWxkVmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHB1YmxpYyByZWFkb25seSBidW5kbGVkaXI6IHN0cmluZztcblxuICAgIHByaXZhdGUgX3Rhc2s6IFRhc2sgfCB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhZGRUb1ByZUNvbXBpbGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2FkZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IEJ1bmRsZXJPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIocHJvamVjdCk7XG4gICAgICAgIHRoaXMuZXNidWlsZFZlcnNpb24gPSBvcHRpb25zLmVzYnVpbGRWZXJzaW9uO1xuICAgICAgICB0aGlzLmJ1bmRsZWRpciA9IG9wdGlvbnMuYXNzZXRzRGlyID8/IFwiYXNzZXRzXCI7XG4gICAgICAgIHRoaXMuYWRkVG9QcmVDb21waWxlID0gb3B0aW9ucy5hZGRUb1ByZUNvbXBpbGUgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2FkZXJzID0gb3B0aW9ucy5sb2FkZXJzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYnVuZGxlVGFzaygpOiBUYXNrIHtcbiAgICAgICAgaWYgKCF0aGlzLl90YXNrKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEJ1bmRsaW5nU3VwcG9ydCgpO1xuICAgICAgICAgICAgdGhpcy5fdGFzayA9IHRoaXMucHJvamVjdC50YXNrcy5hZGRUYXNrKFwiYnVuZGxlXCIsIHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQcmVwYXJlIGFzc2V0c1wiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodGhpcy5hZGRUb1ByZUNvbXBpbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2plY3QucHJlQ29tcGlsZVRhc2suc3Bhd24odGhpcy5fdGFzayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rhc2s7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEJ1bmRsZShlbnRyeXBvaW50OiBzdHJpbmcsIG9wdGlvbnM6IEJ1bmRsaW5nT3B0aW9ucyk6IEJ1bmRsZSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSByZW5kZXJCdW5kbGVOYW1lKGVudHJ5cG9pbnQpO1xuICAgICAgICBjb25zdCBvdXRkaXIgPSBwYXRoLnBvc2l4LmpvaW4odGhpcy5idW5kbGVkaXIsIG5hbWUpO1xuICAgICAgICBjb25zdCBvdXRmaWxlID0gcGF0aC5wb3NpeC5qb2luKG91dGRpciwgb3B0aW9ucy5vdXRmaWxlID8/IFwiaW5kZXgubWpzXCIpO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBvcHRpb25zLnRhcmdldCA/PyBcImVzbmV4dFwiO1xuICAgICAgICBjb25zdCBwbGF0Zm9ybSA9IG9wdGlvbnMucGxhdGZvcm0gPz8gXCJub2RlXCI7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IG9wdGlvbnMuZm9ybWF0ID8/IFwiZXNtXCI7XG4gICAgICAgIGNvbnN0IHNvdXJjZW1hcCA9IG9wdGlvbnMuc291cmNlbWFwID8/IHRydWU7XG4gICAgICAgIGNvbnN0IHNvdXJjZXNDb250ZW50ID0gb3B0aW9ucy5zb3VyY2VzQ29udGVudCA/PyBmYWxzZTtcbiAgICAgICAgY29uc3QgbWluaWZ5ID0gb3B0aW9ucy5taW5pZnkgPz8gdHJ1ZTtcbiAgICAgICAgY29uc3QgbWFpbkZpZWxkcyA9IG9wdGlvbnMubWFpbkZpZWxkcyA/PyBcIm1vZHVsZSxtYWluXCI7XG4gICAgICAgIGNvbnN0IGJhbm5lciA9XG4gICAgICAgICAgICBvcHRpb25zLmJhbm5lciA/P1xuICAgICAgICAgICAgXCI6anM9aW1wb3J0IHsgY3JlYXRlUmVxdWlyZSBhcyB0b3BMZXZlbENyZWF0ZVJlcXVpcmUgfSBmcm9tICdtb2R1bGUnO2NvbnN0IHJlcXVpcmUgPSB0b3BMZXZlbENyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKVwiO1xuXG4gICAgICAgIGNvbnN0IGFyZ3MgPSBbXG4gICAgICAgICAgICBcImVzYnVpbGRcIixcbiAgICAgICAgICAgIFwiLS1idW5kbGVcIixcbiAgICAgICAgICAgIGVudHJ5cG9pbnQsXG4gICAgICAgICAgICBgLS10YXJnZXQ9XCIke3RhcmdldH1cImAsXG4gICAgICAgICAgICBgLS1wbGF0Zm9ybT1cIiR7cGxhdGZvcm19XCJgLFxuICAgICAgICAgICAgYC0tb3V0ZmlsZT1cIiR7b3V0ZmlsZX1cImAsXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgdHNjb25maWcgPSBvcHRpb25zLnRzY29uZmlnUGF0aCA/PyBmYWxzZTtcbiAgICAgICAgaWYgKHRzY29uZmlnKSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goYC0tdHNjb25maWc9XCIke3RzY29uZmlnfVwiYCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHggb2Ygb3B0aW9ucy5leHRlcm5hbHMgPz8gW10pIHtcbiAgICAgICAgICAgIGFyZ3MucHVzaChgLS1leHRlcm5hbDoke3h9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc291cmNlbWFwKSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goXCItLXNvdXJjZW1hcFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzb3VyY2VzQ29udGVudCkge1xuICAgICAgICAgICAgYXJncy5wdXNoKGAtLXNvdXJjZXMtY29udGVudD0ke3NvdXJjZXNDb250ZW50fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1pbmlmeSkge1xuICAgICAgICAgICAgYXJncy5wdXNoKFwiLS1taW5pZnlcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9ybWF0KSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goYC0tZm9ybWF0PSR7Zm9ybWF0fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1haW5GaWVsZHMpIHtcbiAgICAgICAgICAgIGFyZ3MucHVzaChgLS1tYWluLWZpZWxkcz0ke21haW5GaWVsZHN9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYmFubmVyKSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goYC0tYmFubmVyJHtiYW5uZXJ9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsb2FkZXJzID0gKG9wdGlvbnMubG9hZGVycyA/PyBmYWxzZSkgPyBvcHRpb25zLmxvYWRlcnMgOiAodGhpcy5sb2FkZXJzID8/IGZhbHNlKTtcbiAgICAgICAgaWYgKGxvYWRlcnMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2V4dGVuc2lvbiwgbG9hZGVyXSBvZiBPYmplY3QuZW50cmllcyhsb2FkZXJzKSkge1xuICAgICAgICAgICAgICAgIGFyZ3MucHVzaChgLS1sb2FkZXI6LiR7ZXh0ZW5zaW9ufT0ke2xvYWRlcn1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJ1bmRsZVRhc2sgPSB0aGlzLnByb2plY3QuYWRkVGFzayhgYnVuZGxlOiR7bmFtZX1gLCB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYENyZWF0ZSBhIEphdmFTY3JpcHQgYnVuZGxlIGZyb20gJHtlbnRyeXBvaW50fWAsXG4gICAgICAgICAgICBleGVjOiBhcmdzLmpvaW4oXCIgXCIpLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmJ1bmRsZVRhc2suc3Bhd24oYnVuZGxlVGFzayk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1bmRsZVRhc2s6IGJ1bmRsZVRhc2ssXG4gICAgICAgICAgICBvdXRkaXI6IG91dGRpcixcbiAgICAgICAgICAgIG91dGZpbGU6IG91dGZpbGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRCdW5kbGluZ1N1cHBvcnQoKSB7XG4gICAgICAgIGNvbnN0IGlnbm9yZUVudHJ5ID0gYC8ke3RoaXMuYnVuZGxlZGlyfS9gO1xuICAgICAgICB0aGlzLnByb2plY3QuYWRkR2l0SWdub3JlKGlnbm9yZUVudHJ5KTtcbiAgICAgICAgdGhpcy5wcm9qZWN0LmFkZFBhY2thZ2VJZ25vcmUoYCEke2lnbm9yZUVudHJ5fWApO1xuICAgICAgICBjb25zdCBkZXAgPSB0aGlzLmVzYnVpbGRWZXJzaW9uID8gYGVzYnVpbGRAJHt0aGlzLmVzYnVpbGRWZXJzaW9ufWAgOiBcImVzYnVpbGRcIjtcbiAgICAgICAgdGhpcy5wcm9qZWN0LmRlcHMuYWRkRGVwZW5kZW5jeShkZXAsIERlcGVuZGVuY3lUeXBlLkJVSUxEKTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVuZGxlIHtcbiAgICByZWFkb25seSBidW5kbGVUYXNrOiBUYXNrO1xuICAgIHJlYWRvbmx5IG91dGZpbGU6IHN0cmluZztcbiAgICByZWFkb25seSBvdXRkaXI6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdW5kbGluZ09wdGlvbnMge1xuICAgIHJlYWRvbmx5IGV4dGVybmFscz86IHN0cmluZ1tdO1xuICAgIHJlYWRvbmx5IHNvdXJjZW1hcD86IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgdGFyZ2V0Pzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHBsYXRmb3JtPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG91dGZpbGU/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgdHNjb25maWdQYXRoPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGxvYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIHJlYWRvbmx5IGZvcm1hdD86IHN0cmluZztcbiAgICByZWFkb25seSBtaW5pZnk/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IHNvdXJjZXNDb250ZW50PzogYm9vbGVhbjtcbiAgICByZWFkb25seSBtYWluRmllbGRzPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGJhbm5lcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFGdW5jdGlvbkNvZGVCdW5kbGVPcHRpb25zIHtcbiAgICByZWFkb25seSBlbnRyeXBvaW50OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgZXh0ZW5zaW9uOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgY29uc3RydWN0RmlsZT86IHN0cmluZztcbiAgICByZWFkb25seSBjb25zdHJ1Y3ROYW1lPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGJ1bmRsaW5nT3B0aW9ucz86IEJ1bmRsaW5nT3B0aW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIExhbWJkYUZ1bmN0aW9uQ29kZUJ1bmRsZSBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogTGFtYmRhRnVuY3Rpb25Db2RlQnVuZGxlT3B0aW9ucykge1xuICAgICAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgICAgICBjb25zdCBidW5kbGVyID0gQnVuZGxlci5vZihwcm9qZWN0KTtcbiAgICAgICAgaWYgKCFidW5kbGVyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBidW5kbGVyIGZvdW5kLiBQbGVhc2UgYWRkIGEgQnVuZGxlciBjb21wb25lbnQgdG8geW91ciBwcm9qZWN0LlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVzbGludCA9IGphdmFzY3JpcHQuRXNsaW50Lm9mKHByb2plY3QpO1xuICAgICAgICBlc2xpbnQ/LmFsbG93RGV2RGVwcyhvcHRpb25zLmVudHJ5cG9pbnQpO1xuXG4gICAgICAgIGNvbnN0IGVudHJ5cG9pbnQgPSBvcHRpb25zLmVudHJ5cG9pbnQ7XG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IG9wdGlvbnMuZXh0ZW5zaW9uID8/IFwiLmxhbWJkYS50c1wiO1xuXG4gICAgICAgIGlmICghZW50cnlwb2ludC5lbmRzV2l0aChleHRlbnNpb24pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZW50cnlwb2ludH0gbXVzdCBoYXZlIGEgJHtleHRlbnNpb259IGV4dGVuc2lvbmApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmFzZVBhdGggPSBwYXRoLnBvc2l4LmpvaW4ocGF0aC5kaXJuYW1lKGVudHJ5cG9pbnQpLCBwYXRoLmJhc2VuYW1lKGVudHJ5cG9pbnQsIGV4dGVuc2lvbikpO1xuICAgICAgICBjb25zdCBjb25zdHJ1Y3RGaWxlID0gb3B0aW9ucy5jb25zdHJ1Y3RGaWxlID8/IGAke2Jhc2VQYXRofS1jb2RlLnRzYDtcblxuICAgICAgICBpZiAocGF0aC5leHRuYW1lKGNvbnN0cnVjdEZpbGUpICE9PSBcIi50c1wiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbnN0cnVjdCBmaWxlIG5hbWUgXCIke2NvbnN0cnVjdEZpbGV9XCIgbXVzdCBoYXZlIGEgLnRzIGV4dGVuc2lvbmApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29uc3RydWN0TmFtZSA9IG9wdGlvbnMuY29uc3RydWN0TmFtZSA/PyBgJHtwYXNjYWwocGF0aC5iYXNlbmFtZShiYXNlUGF0aCkpfUZ1bmN0aW9uQ29kZWA7XG5cbiAgICAgICAgY29uc3QgYnVuZGxlID0gYnVuZGxlci5hZGRCdW5kbGUoZW50cnlwb2ludCwge1xuICAgICAgICAgICAgLi4ub3B0aW9ucy5idW5kbGluZ09wdGlvbnMsXG4gICAgICAgICAgICB0c2NvbmZpZ1BhdGg6IChwcm9qZWN0IGFzIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3QpPy50c2NvbmZpZ0Rldj8uZmlsZU5hbWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IG91dGZpbGVBYnMgPSBwYXRoLmpvaW4ocHJvamVjdC5vdXRkaXIsIGJ1bmRsZS5vdXRmaWxlKTtcbiAgICAgICAgY29uc3QgY29uc3RydWN0QWJzID0gcGF0aC5qb2luKHByb2plY3Qub3V0ZGlyLCBjb25zdHJ1Y3RGaWxlKTtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVPdXRmaWxlID0gcGF0aC5yZWxhdGl2ZShwYXRoLmRpcm5hbWUoY29uc3RydWN0QWJzKSwgcGF0aC5kaXJuYW1lKG91dGZpbGVBYnMpKTtcblxuICAgICAgICBjb25zdCBzcmMgPSBuZXcgU291cmNlQ29kZShwcm9qZWN0LCBjb25zdHJ1Y3RGaWxlKTtcbiAgICAgICAgaWYgKHNyYy5tYXJrZXIpIHtcbiAgICAgICAgICAgIHNyYy5saW5lKGAvLyAke3NyYy5tYXJrZXJ9YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3JjLmxpbmUoXCJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1wiKTtcbiAgICAgICAgc3JjLmxpbmUoXCJpbXBvcnQgeyBhd3NfbGFtYmRhIH0gZnJvbSAnYXdzLWNkay1saWInO1wiKTtcbiAgICAgICAgc3JjLmxpbmUoKTtcbiAgICAgICAgc3JjLm9wZW4oYGV4cG9ydCBjb25zdCAke2NvbnN0cnVjdE5hbWV9ID0gYXdzX2xhbWJkYS5Db2RlLmZyb21Bc3NldChgKTtcbiAgICAgICAgc3JjLmxpbmUoYHBhdGguam9pbihfX2Rpcm5hbWUsICcke2NvbnZlcnRUb1Bvc2l4UGF0aChyZWxhdGl2ZU91dGZpbGUpfScpLGApO1xuICAgICAgICBzcmMuY2xvc2UoXCIpO1wiKTtcblxuICAgICAgICB0aGlzLnByb2plY3QubG9nZ2VyLnZlcmJvc2UoYCR7YmFzZVBhdGh9OiBjb25zdHJ1Y3QgXCIke2NvbnN0cnVjdE5hbWV9XCIgZ2VuZXJhdGVkIHVuZGVyIFwiJHtjb25zdHJ1Y3RGaWxlfVwiYCk7XG4gICAgICAgIHRoaXMucHJvamVjdC5sb2dnZXIudmVyYm9zZShgJHtiYXNlUGF0aH06IGJ1bmRsZSB0YXNrIFwiJHtidW5kbGUuYnVuZGxlVGFzay5uYW1lfVwiYCk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUZ1bmN0aW9uQ29kZUJ1bmRsZXJPcHRpb25zIHtcbiAgICByZWFkb25seSBleHRlbnNpb246IHN0cmluZztcbiAgICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcbiAgICByZWFkb25seSBidW5kbGVPcHRpb25zPzogTGFtYmRhRnVuY3Rpb25Db2RlQnVuZGxlT3B0aW9ucztcbn1cblxuLyoqXG4gKiBDcmVhdGVzIExhbWJkYSBGdW5jdGlvbiBjb2RlIGJ1bmRsZXMgZnJvbSBlbnRyeXBvaW50cyBkaXNjb3ZlcmVkIGluIHRoZSBwcm9qZWN0J3Mgc291cmNlIHRyZWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBMYW1iZGFGdW5jdGlvbkNvZGVCdW5kbGVyIGV4dGVuZHMgY2RrLkF1dG9EaXNjb3ZlckJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IExhbWJkYUZ1bmN0aW9uQ29kZUJ1bmRsZXJPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKHByb2plY3QsIHtcbiAgICAgICAgICAgIHByb2plY3RkaXI6IG9wdGlvbnMuc3JjZGlyLFxuICAgICAgICAgICAgZXh0ZW5zaW9uOiBvcHRpb25zLmV4dGVuc2lvbixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9yIChjb25zdCBlbnRyeXBvaW50IG9mIHRoaXMuZW50cnlwb2ludHMpIHtcbiAgICAgICAgICAgIG5ldyBMYW1iZGFGdW5jdGlvbkNvZGVCdW5kbGUodGhpcy5wcm9qZWN0LCB7XG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucy5idW5kbGVPcHRpb25zLFxuICAgICAgICAgICAgICAgIGVudHJ5cG9pbnQ6IGVudHJ5cG9pbnQsXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uOiBvcHRpb25zLmV4dGVuc2lvbixcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
292
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLWxhbWJkYS1mdW5jdGlvbi1jb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvYnVuZGxlLWxhbWJkYS1mdW5jdGlvbi1jb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW1CQSw0Q0FTQztBQUtELGdEQUVDOztBQW5DRCxnREFBa0M7QUFDbEMseUNBQXlFO0FBQ3pFLCtCQUE4QjtBQUM5QixtQ0FTZ0I7QUFFaEI7Ozs7R0FJRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLFVBQWtCO0lBQy9DLE1BQU0sS0FBSyxHQUFHLElBQUEsZ0JBQUksRUFBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsZUFBRyxDQUFDLENBQUM7SUFDMUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDckIsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsNERBQTREO0lBQy9FLENBQUM7SUFDRCxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQUcsQ0FBQyxDQUFDO0lBQzFCLE1BQU0sR0FBRyxHQUFHLElBQUEsbUJBQU8sRUFBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixNQUFNLElBQUksR0FBRyxJQUFBLG9CQUFRLEVBQUMsQ0FBQyxFQUFFLElBQUEsbUJBQU8sRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLE9BQU8sSUFBQSxnQkFBSSxFQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxDQUFTO0lBQ3hDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBb0NEOzs7R0FHRztBQUNILE1B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QUFDLHlCQUF5QixrQkFBa0IsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVoQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxRQUFRLGdCQUFnQixhQUFhLHNCQUFzQixhQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLFFBQVEsa0JBQWtCLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUN4RixDQUFDOztBQXhETCw0REF5REM7QUE2QkQ7O0dBRUc7QUFDSCxNQUFhLHlCQUEwQixTQUFRLFlBQUcsQ0FBQyxnQkFBZ0I7O0lBQy9ELFlBQVksT0FBZ0IsRUFBRSxPQUF5QztRQUNuRSxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ1gsVUFBVSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQzFCLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztTQUMvQixDQUFDLENBQUM7UUFFSCxLQUFLLE1BQU0sVUFBVSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN4QyxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ3ZDLEdBQUcsT0FBTyxDQUFDLGFBQWE7Z0JBQ3hCLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7YUFDL0IsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7O0FBZEwsOERBZUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGJhc2VuYW1lLCBkaXJuYW1lLCBleHRuYW1lLCBqb2luLCBwb3NpeCwgc2VwIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgcGFzY2FsIH0gZnJvbSBcImNhc2VcIjtcbmltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIGNkayxcbiAgICBEZXBlbmRlbmN5VHlwZSxcbiAgICBqYXZhc2NyaXB0LFxuICAgIHR5cGUgUHJvamVjdCxcbiAgICBTb3VyY2VDb2RlLFxuICAgIHR5cGUgVGFzayxcbiAgICB0eXBlIHR5cGVzY3JpcHQsXG59IGZyb20gXCJwcm9qZW5cIjtcblxuLyoqXG4gKiBSZW5kZXJzIHRoZSBidW5kbGUgbmFtZSBvZiBhbiBlbnRyeXBvaW50OiBpdHMgcGF0aCB3aXRob3V0IHRoZSBleHRlbnNpb24gYW5kIHdpdGhvdXQgYSBsZWFkaW5nIGBzcmNgIGRpcmVjdG9yeS5cbiAqXG4gKiBAZXhhbXBsZSByZW5kZXJCdW5kbGVOYW1lKFwic3JjL2hhbmRsZXJzL2Zvby5sYW1iZGEudHNcIikgLy8gXCJoYW5kbGVycy9mb28ubGFtYmRhXCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckJ1bmRsZU5hbWUoZW50cnlwb2ludDogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFydHMgPSBqb2luKGVudHJ5cG9pbnQpLnNwbGl0KHNlcCk7XG4gICAgaWYgKHBhcnRzWzBdID09PSBcInNyY1wiKSB7XG4gICAgICAgIHBhcnRzLnNoaWZ0KCk7IC8vIGp1c3QgcmVtb3ZlICdzcmMnIGlmIGl0cyB0aGUgZmlyc3QgZWxlbWVudCBmb3IgZXJnb25vbWljc1xuICAgIH1cbiAgICBjb25zdCBwID0gcGFydHMuam9pbihzZXApO1xuICAgIGNvbnN0IGRpciA9IGRpcm5hbWUocCk7XG4gICAgY29uc3QgYmFzZSA9IGJhc2VuYW1lKHAsIGV4dG5hbWUocCkpO1xuICAgIHJldHVybiBqb2luKGRpciwgYmFzZSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGdpdmVuIHBhdGggc3RyaW5nIHRvIHBvc2l4IGlmIGl0IHdhc24ndCBhbHJlYWR5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydFRvUG9zaXhQYXRoKHA6IHN0cmluZykge1xuICAgIHJldHVybiBwLnNwbGl0KHNlcCkuam9pbihwb3NpeC5zZXApO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGBCdW5kbGVyYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdW5kbGVyT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogVGhlIHNlbWFudGljIHZlcnNpb24gcmVxdWlyZW1lbnQgZm9yIGBlc2J1aWxkYC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0gbm8gc3BlY2lmaWMgdmVyc2lvbiAoaW1wbGllcyBsYXRlc3QpXG4gICAgICovXG4gICAgcmVhZG9ubHkgZXNidWlsZFZlcnNpb24/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBPdXRwdXQgZGlyZWN0b3J5IGZvciBhbGwgYnVuZGxlcy5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiYXNzZXRzXCJcbiAgICAgKi9cbiAgICByZWFkb25seSBhc3NldHNEaXI/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBJbnN0YWxsIHRoZSBgYnVuZGxlYCBjb21tYW5kIGFzIGEgcHJlLWNvbXBpbGUgcGhhc2UuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgcmVhZG9ubHkgYWRkVG9QcmVDb21waWxlPzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIE1hcCBvZiBmaWxlIGV4dGVuc2lvbnMgKHdpdGhvdXQgZG90KSBhbmQgbG9hZGVycyB0byB1c2UgZm9yIHRoaXMgZmlsZSB0eXBlLlxuICAgICAqIExvYWRlcnMgYXJlIGFwcGVuZGVkIHRvIHRoZSBlc2J1aWxkIGNvbW1hbmQgYnkgYC0tbG9hZGVyOi5leHRlbnNpb249bG9hZGVyYFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgLSBubyBsb2FkZXJzXG4gICAgICovXG4gICAgcmVhZG9ubHkgbG9hZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogQWRkcyBzdXBwb3J0IGZvciBidW5kbGluZyBKYXZhU2NyaXB0IGFwcGxpY2F0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGludG8gYVxuICogc2luZ2xlIGZpbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBCdW5kbGVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBgQnVuZGxlcmAgaW5zdGFuY2UgYXNzb2NpYXRlZCB3aXRoIGEgcHJvamVjdCBvciBgdW5kZWZpbmVkYCBpZlxuICAgICAqIHRoZXJlIGlzIG5vIEJ1bmRsZXIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvamVjdCBUaGUgcHJvamVjdFxuICAgICAqIEByZXR1cm5zIEEgYnVuZGxlclxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgb2YocHJvamVjdDogUHJvamVjdCk6IEJ1bmRsZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBpc0J1bmRsZXIgPSAobzogQ29tcG9uZW50KTogbyBpcyBCdW5kbGVyID0+IG8gaW5zdGFuY2VvZiBCdW5kbGVyO1xuICAgICAgICByZXR1cm4gcHJvamVjdC5jb21wb25lbnRzLmZpbmQoaXNCdW5kbGVyKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgc2VtYW50aWMgdmVyc2lvbiByZXF1aXJlbWVudCBmb3IgYGVzYnVpbGRgIChpZiBkZWZpbmVkKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgZXNidWlsZFZlcnNpb246IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIFJvb3QgYnVuZGxlIGRpcmVjdG9yeS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgYnVuZGxlZGlyOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIF90YXNrOiBUYXNrIHwgdW5kZWZpbmVkO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWRkVG9QcmVDb21waWxlOiBib29sZWFuO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9hZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgYEJ1bmRsZXJgLlxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IEJ1bmRsZXJPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIocHJvamVjdCk7XG4gICAgICAgIHRoaXMuZXNidWlsZFZlcnNpb24gPSBvcHRpb25zLmVzYnVpbGRWZXJzaW9uO1xuICAgICAgICB0aGlzLmJ1bmRsZWRpciA9IG9wdGlvbnMuYXNzZXRzRGlyID8/IFwiYXNzZXRzXCI7XG4gICAgICAgIHRoaXMuYWRkVG9QcmVDb21waWxlID0gb3B0aW9ucy5hZGRUb1ByZUNvbXBpbGUgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2FkZXJzID0gb3B0aW9ucy5sb2FkZXJzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgb3IgY3JlYXRlcyB0aGUgc2luZ2xldG9uIFwiYnVuZGxlXCIgdGFzayBvZiB0aGUgcHJvamVjdC5cbiAgICAgKlxuICAgICAqIElmIHRoZSBwcm9qZWN0IGRvZXNuJ3QgaGF2ZSBhIFwiYnVuZGxlXCIgdGFzaywgaXQgd2lsbCBiZSBjcmVhdGVkIGFuZCBzcGF3bmVkXG4gICAgICogZHVyaW5nIHRoZSBwcmUtY29tcGlsZSBwaGFzZSAodW5sZXNzIGBhZGRUb1ByZUNvbXBpbGVgIGlzIGBmYWxzZWApLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgYnVuZGxlVGFzaygpOiBUYXNrIHtcbiAgICAgICAgaWYgKCF0aGlzLl90YXNrKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEJ1bmRsaW5nU3VwcG9ydCgpO1xuICAgICAgICAgICAgdGhpcy5fdGFzayA9IHRoaXMucHJvamVjdC50YXNrcy5hZGRUYXNrKFwiYnVuZGxlXCIsIHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQcmVwYXJlIGFzc2V0c1wiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodGhpcy5hZGRUb1ByZUNvbXBpbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2plY3QucHJlQ29tcGlsZVRhc2suc3Bhd24odGhpcy5fdGFzayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rhc2s7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIHRhc2sgdG8gdGhlIHByb2plY3Qgd2hpY2ggYnVuZGxlcyBhIHNwZWNpZmljIGVudHJ5cG9pbnQgYW5kIGFsbCBvZlxuICAgICAqIGl0cyBkZXBlbmRlbmNpZXMgaW50byBhIHNpbmdsZSBqYXZhc2NyaXB0IG91dHB1dCBmaWxlLlxuICAgICAqXG4gICAgICogQHBhcmFtIGVudHJ5cG9pbnQgVGhlIHJlbGF0aXZlIHBhdGggb2YgdGhlIGFydGlmYWN0IHdpdGhpbiB0aGUgcHJvamVjdFxuICAgICAqIEBwYXJhbSBvcHRpb25zIEJ1bmRsaW5nIG9wdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkQnVuZGxlKGVudHJ5cG9pbnQ6IHN0cmluZywgb3B0aW9uczogQnVuZGxpbmdPcHRpb25zKTogQnVuZGxlIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IHJlbmRlckJ1bmRsZU5hbWUoZW50cnlwb2ludCk7XG4gICAgICAgIGNvbnN0IG91dGRpciA9IHBhdGgucG9zaXguam9pbih0aGlzLmJ1bmRsZWRpciwgbmFtZSk7XG4gICAgICAgIGNvbnN0IG91dGZpbGUgPSBwYXRoLnBvc2l4LmpvaW4ob3V0ZGlyLCBvcHRpb25zLm91dGZpbGUgPz8gXCJpbmRleC5tanNcIik7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IG9wdGlvbnMudGFyZ2V0ID8/IFwiZXNuZXh0XCI7XG4gICAgICAgIGNvbnN0IHBsYXRmb3JtID0gb3B0aW9ucy5wbGF0Zm9ybSA/PyBcIm5vZGVcIjtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gb3B0aW9ucy5mb3JtYXQgPz8gXCJlc21cIjtcbiAgICAgICAgY29uc3Qgc291cmNlbWFwID0gb3B0aW9ucy5zb3VyY2VtYXAgPz8gdHJ1ZTtcbiAgICAgICAgY29uc3Qgc291cmNlc0NvbnRlbnQgPSBvcHRpb25zLnNvdXJjZXNDb250ZW50ID8/IGZhbHNlO1xuICAgICAgICBjb25zdCBtaW5pZnkgPSBvcHRpb25zLm1pbmlmeSA/PyB0cnVlO1xuICAgICAgICBjb25zdCBtYWluRmllbGRzID0gb3B0aW9ucy5tYWluRmllbGRzID8/IFwibW9kdWxlLG1haW5cIjtcbiAgICAgICAgY29uc3QgYmFubmVyID1cbiAgICAgICAgICAgIG9wdGlvbnMuYmFubmVyID8/XG4gICAgICAgICAgICBcIjpqcz1pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIGFzIHRvcExldmVsQ3JlYXRlUmVxdWlyZSB9IGZyb20gJ21vZHVsZSc7Y29uc3QgcmVxdWlyZSA9IHRvcExldmVsQ3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpXCI7XG5cbiAgICAgICAgY29uc3QgYXJncyA9IFtcbiAgICAgICAgICAgIFwiZXNidWlsZFwiLFxuICAgICAgICAgICAgXCItLWJ1bmRsZVwiLFxuICAgICAgICAgICAgZW50cnlwb2ludCxcbiAgICAgICAgICAgIGAtLXRhcmdldD1cIiR7dGFyZ2V0fVwiYCxcbiAgICAgICAgICAgIGAtLXBsYXRmb3JtPVwiJHtwbGF0Zm9ybX1cImAsXG4gICAgICAgICAgICBgLS1vdXRmaWxlPVwiJHtvdXRmaWxlfVwiYCxcbiAgICAgICAgXTtcblxuICAgICAgICBjb25zdCB0c2NvbmZpZyA9IG9wdGlvbnMudHNjb25maWdQYXRoID8/IGZhbHNlO1xuICAgICAgICBpZiAodHNjb25maWcpIHtcbiAgICAgICAgICAgIGFyZ3MucHVzaChgLS10c2NvbmZpZz1cIiR7dHNjb25maWd9XCJgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgeCBvZiBvcHRpb25zLmV4dGVybmFscyA/PyBbXSkge1xuICAgICAgICAgICAgYXJncy5wdXNoKGAtLWV4dGVybmFsOiR7eH1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzb3VyY2VtYXApIHtcbiAgICAgICAgICAgIGFyZ3MucHVzaChcIi0tc291cmNlbWFwXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHNvdXJjZXNDb250ZW50KSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goYC0tc291cmNlcy1jb250ZW50PSR7c291cmNlc0NvbnRlbnR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWluaWZ5KSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goXCItLW1pbmlmeVwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb3JtYXQpIHtcbiAgICAgICAgICAgIGFyZ3MucHVzaChgLS1mb3JtYXQ9JHtmb3JtYXR9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWFpbkZpZWxkcykge1xuICAgICAgICAgICAgYXJncy5wdXNoKGAtLW1haW4tZmllbGRzPSR7bWFpbkZpZWxkc31gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiYW5uZXIpIHtcbiAgICAgICAgICAgIGFyZ3MucHVzaChgLS1iYW5uZXIke2Jhbm5lcn1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxvYWRlcnMgPSAob3B0aW9ucy5sb2FkZXJzID8/IGZhbHNlKSA/IG9wdGlvbnMubG9hZGVycyA6ICh0aGlzLmxvYWRlcnMgPz8gZmFsc2UpO1xuICAgICAgICBpZiAobG9hZGVycykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBbZXh0ZW5zaW9uLCBsb2FkZXJdIG9mIE9iamVjdC5lbnRyaWVzKGxvYWRlcnMpKSB7XG4gICAgICAgICAgICAgICAgYXJncy5wdXNoKGAtLWxvYWRlcjouJHtleHRlbnNpb259PSR7bG9hZGVyfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYnVuZGxlVGFzayA9IHRoaXMucHJvamVjdC5hZGRUYXNrKGBidW5kbGU6JHtuYW1lfWAsIHtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgQ3JlYXRlIGEgSmF2YVNjcmlwdCBidW5kbGUgZnJvbSAke2VudHJ5cG9pbnR9YCxcbiAgICAgICAgICAgIGV4ZWM6IGFyZ3Muam9pbihcIiBcIiksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuYnVuZGxlVGFzay5zcGF3bihidW5kbGVUYXNrKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYnVuZGxlVGFzazogYnVuZGxlVGFzayxcbiAgICAgICAgICAgIG91dGRpcjogb3V0ZGlyLFxuICAgICAgICAgICAgb3V0ZmlsZTogb3V0ZmlsZSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgYnVuZGxpbmcgc3VwcG9ydCB0byBhIHByb2plY3QuIFRoaXMgaXMgY2FsbGVkIGltcGxpY2l0bHkgd2hlblxuICAgICAqIGBidW5kbGVUYXNrYCBpcyByZWZlcmVuY2VkIGZpcnN0LiBJdCBhZGRzIHRoZSBkZXBlbmRlbmN5IG9uIGBlc2J1aWxkYCxcbiAgICAgKiBnaXRpZ25vcmUvbnBtaWdub3JlLCBldGMuXG4gICAgICovXG4gICAgcHJpdmF0ZSBhZGRCdW5kbGluZ1N1cHBvcnQoKSB7XG4gICAgICAgIGNvbnN0IGlnbm9yZUVudHJ5ID0gYC8ke3RoaXMuYnVuZGxlZGlyfS9gO1xuICAgICAgICB0aGlzLnByb2plY3QuYWRkR2l0SWdub3JlKGlnbm9yZUVudHJ5KTtcbiAgICAgICAgdGhpcy5wcm9qZWN0LmFkZFBhY2thZ2VJZ25vcmUoYCEke2lnbm9yZUVudHJ5fWApO1xuICAgICAgICBjb25zdCBkZXAgPSB0aGlzLmVzYnVpbGRWZXJzaW9uID8gYGVzYnVpbGRAJHt0aGlzLmVzYnVpbGRWZXJzaW9ufWAgOiBcImVzYnVpbGRcIjtcbiAgICAgICAgdGhpcy5wcm9qZWN0LmRlcHMuYWRkRGVwZW5kZW5jeShkZXAsIERlcGVuZGVuY3lUeXBlLkJVSUxEKTtcbiAgICB9XG59XG5cbi8qKlxuICogQSBidW5kbGUgY3JlYXRlZCBieSBgQnVuZGxlci5hZGRCdW5kbGVgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsZSB7XG4gICAgLyoqXG4gICAgICogVGhlIHRhc2sgdGhhdCBwcm9kdWNlcyB0aGlzIGJ1bmRsZS5cbiAgICAgKi9cbiAgICByZWFkb25seSBidW5kbGVUYXNrOiBUYXNrO1xuXG4gICAgLyoqXG4gICAgICogTG9jYXRpb24gb2YgdGhlIG91dHB1dCBmaWxlIChyZWxhdGl2ZSB0byBwcm9qZWN0IHJvb3QpLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IG91dGZpbGU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEJhc2UgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIG91dHB1dCBmaWxlIChyZWxhdGl2ZSB0byBwcm9qZWN0IHJvb3QpLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IG91dGRpcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGJ1bmRsaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1bmRsaW5nT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogWW91IGNhbiBtYXJrIGEgZmlsZSBvciBhIHBhY2thZ2UgYXMgZXh0ZXJuYWwgdG8gZXhjbHVkZSBpdCBmcm9tIHlvdXIgYnVpbGQuXG4gICAgICogSW5zdGVhZCBvZiBiZWluZyBidW5kbGVkLCB0aGUgaW1wb3J0IHdpbGwgYmUgcHJlc2VydmVkICh1c2luZyByZXF1aXJlIGZvclxuICAgICAqIHRoZSBpaWZlIGFuZCBjanMgZm9ybWF0cyBhbmQgdXNpbmcgaW1wb3J0IGZvciB0aGUgZXNtIGZvcm1hdCkgYW5kIHdpbGwgYmVcbiAgICAgKiBldmFsdWF0ZWQgYXQgcnVuIHRpbWUgaW5zdGVhZC5cbiAgICAgKlxuICAgICAqIFRoaXMgaGFzIHNldmVyYWwgdXNlcy4gRmlyc3Qgb2YgYWxsLCBpdCBjYW4gYmUgdXNlZCB0byB0cmltIHVubmVjZXNzYXJ5XG4gICAgICogY29kZSBmcm9tIHlvdXIgYnVuZGxlIGZvciBhIGNvZGUgcGF0aCB0aGF0IHlvdSBrbm93IHdpbGwgbmV2ZXIgYmUgZXhlY3V0ZWQuXG4gICAgICogRm9yIGV4YW1wbGUsIGEgcGFja2FnZSBtYXkgY29udGFpbiBjb2RlIHRoYXQgb25seSBydW5zIGluIG5vZGUgYnV0IHlvdSB3aWxsXG4gICAgICogb25seSBiZSB1c2luZyB0aGF0IHBhY2thZ2UgaW4gdGhlIGJyb3dzZXIuIEl0IGNhbiBhbHNvIGJlIHVzZWQgdG8gaW1wb3J0XG4gICAgICogY29kZSBpbiBub2RlIGF0IHJ1biB0aW1lIGZyb20gYSBwYWNrYWdlIHRoYXQgY2Fubm90IGJlIGJ1bmRsZWQuIEZvclxuICAgICAqIGV4YW1wbGUsIHRoZSBmc2V2ZW50cyBwYWNrYWdlIGNvbnRhaW5zIGEgbmF0aXZlIGV4dGVuc2lvbiwgd2hpY2ggZXNidWlsZFxuICAgICAqIGRvZXNuJ3Qgc3VwcG9ydC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFtdXG4gICAgICovXG4gICAgcmVhZG9ubHkgZXh0ZXJuYWxzPzogc3RyaW5nW107XG5cbiAgICAvKipcbiAgICAgKiBJbmNsdWRlIGEgc291cmNlIG1hcCBpbiB0aGUgYnVuZGxlLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IHNvdXJjZW1hcD86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBlc2J1aWxkIHRhcmdldC5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiZXNuZXh0XCJcbiAgICAgKi9cbiAgICByZWFkb25seSB0YXJnZXQ/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBlc2J1aWxkIHBsYXRmb3JtLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgXCJub2RlXCJcbiAgICAgKi9cbiAgICByZWFkb25seSBwbGF0Zm9ybT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEJ1bmRsZXIgb3V0cHV0IHBhdGggcmVsYXRpdmUgdG8gdGhlIGFzc2V0J3Mgb3V0cHV0IGRpcmVjdG9yeS5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IFwiaW5kZXgubWpzXCJcbiAgICAgKi9cbiAgICByZWFkb25seSBvdXRmaWxlPzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHBhdGggb2YgdGhlIHRzY29uZmlnLmpzb24gZmlsZSB0byB1c2UgZm9yIGJ1bmRsaW5nLlxuICAgICAqXG4gICAgICogYExhbWJkYUZ1bmN0aW9uQ29kZUJ1bmRsZWAgYWx3YXlzIHNldHMgdGhpcyB0byB0aGUgcHJvamVjdCdzIGRldmVsb3BtZW50IHRzY29uZmlnLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgLSBubyB0c2NvbmZpZyBpcyBwYXNzZWQgdG8gZXNidWlsZFxuICAgICAqL1xuICAgIHJlYWRvbmx5IHRzY29uZmlnUGF0aD86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE1hcCBvZiBmaWxlIGV4dGVuc2lvbnMgKHdpdGhvdXQgZG90KSBhbmQgbG9hZGVycyB0byB1c2UgZm9yIHRoaXMgZmlsZSB0eXBlLlxuICAgICAqIExvYWRlcnMgYXJlIGFwcGVuZGVkIHRvIHRoZSBlc2J1aWxkIGNvbW1hbmQgYnkgYC0tbG9hZGVyOi5leHRlbnNpb249bG9hZGVyYFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgLSB0aGUgbG9hZGVycyBvZiB0aGUgYEJ1bmRsZXJgXG4gICAgICovXG4gICAgcmVhZG9ubHkgbG9hZGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgICAvKipcbiAgICAgKiBPdXRwdXQgZm9ybWF0IGZvciB0aGUgZ2VuZXJhdGVkIEphdmFTY3JpcHQgZmlsZXM6IGBcImlpZmVcImAsIGBcImNqc1wiYCBvciBgXCJlc21cImAuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcImVzbVwiXG4gICAgICogQHNlZSBodHRwczovL2VzYnVpbGQuZ2l0aHViLmlvL2FwaS8jZm9ybWF0XG4gICAgICovXG4gICAgcmVhZG9ubHkgZm9ybWF0Pzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogTWluaWZ5IHRoZSBidW5kbGUuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICogQHNlZSBodHRwczovL2VzYnVpbGQuZ2l0aHViLmlvL2FwaS8jbWluaWZ5XG4gICAgICovXG4gICAgcmVhZG9ubHkgbWluaWZ5PzogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEluY2x1ZGUgdGhlIG9yaWdpbmFsIHNvdXJjZSBjb2RlIGluIHRoZSBzb3VyY2UgbWFwLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKiBAc2VlIGh0dHBzOi8vZXNidWlsZC5naXRodWIuaW8vYXBpLyNzb3VyY2VzLWNvbnRlbnRcbiAgICAgKi9cbiAgICByZWFkb25seSBzb3VyY2VzQ29udGVudD86IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBgcGFja2FnZS5qc29uYCBmaWVsZHMgZXNidWlsZCB0cmllcyB3aGVuIHJlc29sdmluZyBhIHBhY2thZ2UuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcIm1vZHVsZSxtYWluXCJcbiAgICAgKiBAc2VlIGh0dHBzOi8vZXNidWlsZC5naXRodWIuaW8vYXBpLyNtYWluLWZpZWxkc1xuICAgICAqL1xuICAgIHJlYWRvbmx5IG1haW5GaWVsZHM/OiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBlc2J1aWxkIGAtLWJhbm5lcmAgYXJndW1lbnQsIGFwcGVuZGVkIGFzIGlzIChzbyBpdCBzdGFydHMgd2l0aCB0aGUgZmlsZSB0eXBlLCBlLmcuIGA6anM9YCkuXG4gICAgICpcbiAgICAgKiBUaGUgZGVmYXVsdCBkZWZpbmVzIGByZXF1aXJlYCBzbyB0aGF0IENvbW1vbkpTIGRlcGVuZGVuY2llcyB3b3JrIGluIGFuIEVTIG1vZHVsZSBidW5kbGUuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcIjpqcz1pbXBvcnQgeyBjcmVhdGVSZXF1aXJlIGFzIHRvcExldmVsQ3JlYXRlUmVxdWlyZSB9IGZyb20gJ21vZHVsZSc7Y29uc3QgcmVxdWlyZSA9IHRvcExldmVsQ3JlYXRlUmVxdWlyZShpbXBvcnQubWV0YS51cmwpXCJcbiAgICAgKiBAc2VlIGh0dHBzOi8vZXNidWlsZC5naXRodWIuaW8vYXBpLyNiYW5uZXJcbiAgICAgKi9cbiAgICByZWFkb25seSBiYW5uZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYExhbWJkYUZ1bmN0aW9uQ29kZUJ1bmRsZWAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhRnVuY3Rpb25Db2RlQnVuZGxlT3B0aW9ucyB7XG4gICAgLyoqXG4gICAgICogQSBwYXRoIGZyb20gdGhlIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkgdG8gYSBUeXBlU2NyaXB0IGZpbGUgd2hpY2ggY29udGFpbnNcbiAgICAgKiB0aGUgQVdTIExhbWJkYSBoYW5kbGVyIGVudHJ5cG9pbnQgKGV4cG9ydHMgYSBgaGFuZGxlcmAgZnVuY3Rpb24pLlxuICAgICAqXG4gICAgICogVGhpcyBpcyByZWxhdGl2ZSB0byB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHByb2plY3QuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZSBcInNyYy9zdWJkaXIvZm9vLmxhbWJkYS50c1wiXG4gICAgICovXG4gICAgcmVhZG9ubHkgZW50cnlwb2ludDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogU3VmZml4IGZvciBBV1MgTGFtYmRhIGhhbmRsZXJzLlxuICAgICAqXG4gICAgICogQGV4YW1wbGUgXCIubGFtYmRhLnRzXCJcbiAgICAgKi9cbiAgICByZWFkb25seSBleHRlbnNpb246IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgVHlwZVNjcmlwdCBzb3VyY2UgZmlsZS4gVGhpcyBmaWxlIHNob3VsZCBhbHNvIGJlXG4gICAgICogdW5kZXIgdGhlIHNvdXJjZSB0cmVlLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgLSBUaGUgcGF0aCBvZiB0aGUgZW50cnlwb2ludCBmaWxlLCB3aXRoIHRoZSBgLWNvZGUudHNgIHN1ZmZpeFxuICAgICAqIGluc3RlYWQgb2YgdGhlIGV4dGVuc2lvbiAoZS5nLiBgc3JjL2Zvby1jb2RlLnRzYCkuXG4gICAgICovXG4gICAgcmVhZG9ubHkgY29uc3RydWN0RmlsZT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFRoZSBuYW1lIG9mIHRoZSBnZW5lcmF0ZWQgYGF3c19sYW1iZGEuQ29kZWAgY29uc3RhbnQuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIEEgcGFzY2FsIGNhc2VkIHZlcnNpb24gb2YgdGhlIG5hbWUgb2YgdGhlIGVudHJ5cG9pbnQgZmlsZSwgd2l0aFxuICAgICAqIHRoZSBzdWZmaXggYEZ1bmN0aW9uQ29kZWAgKGUuZy4gYFJlc2l6ZUltYWdlRnVuY3Rpb25Db2RlYCkuXG4gICAgICovXG4gICAgcmVhZG9ubHkgY29uc3RydWN0TmFtZT86IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIEJ1bmRsaW5nIG9wdGlvbnMgZm9yIHRoaXMgQVdTIExhbWJkYSBGdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0gdGhlIGRlZmF1bHRzIG9mIGBCdW5kbGluZ09wdGlvbnNgXG4gICAgICovXG4gICAgcmVhZG9ubHkgYnVuZGxpbmdPcHRpb25zPzogQnVuZGxpbmdPcHRpb25zO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHByZS1idW5kbGVkIEFXUyBMYW1iZGEgRnVuY3Rpb24gY29kZSBhc3NldCBmcm9tIGhhbmRsZXIgY29kZS5cbiAqXG4gKiBBZGRzIGEgdGFzayB0byB0aGUgcHJvamVjdCdzIGBCdW5kbGVyYCB0aGF0IHVzZXMgYGVzYnVpbGRgIHRvIGJ1bmRsZSB0aGVcbiAqIGhhbmRsZXIgaW50byB0aGUgYXNzZXRzIGRpcmVjdG9yeSwgYW5kIGdlbmVyYXRlcyBhIGZpbGUgKGUuZy4gYHNyYy9mb28tY29kZS50c2ApXG4gKiBleHBvcnRpbmcgYW4gYGF3c19sYW1iZGEuQ29kZWAgY29uc3RhbnQgKGUuZy4gYEZvb0Z1bmN0aW9uQ29kZWApIHRoYXQgcG9pbnRzIHRvXG4gKiB0aGUgYnVuZGxlLiBQYXNzIGl0IGFzIHRoZSBgY29kZWAgb2YgYW4gYGF3c19sYW1iZGEuRnVuY3Rpb25gLlxuICpcbiAqIFJlcXVpcmVzIGEgYEJ1bmRsZXJgIGNvbXBvbmVudCBpbiB0aGUgcHJvamVjdC5cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIG5ldyBCdW5kbGVyKG15UHJvamVjdCk7XG4gKiBuZXcgTGFtYmRhRnVuY3Rpb25Db2RlQnVuZGxlKG15UHJvamVjdCwge1xuICogICBlbnRyeXBvaW50OiBcInNyYy9mb28ubGFtYmRhLnRzXCIsXG4gKiAgIGV4dGVuc2lvbjogXCIubGFtYmRhLnRzXCIsXG4gKiB9KTtcbiAqL1xuZXhwb3J0IGNsYXNzIExhbWJkYUZ1bmN0aW9uQ29kZUJ1bmRsZSBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyBhIHByZS1idW5kbGVkIEFXUyBMYW1iZGEgRnVuY3Rpb24gY29kZSBhc3NldCBmcm9tIGhhbmRsZXIgY29kZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwcm9qZWN0IFRoZSBwcm9qZWN0IHRvIHVzZVxuICAgICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcm9qZWN0OiBQcm9qZWN0LCBvcHRpb25zOiBMYW1iZGFGdW5jdGlvbkNvZGVCdW5kbGVPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgICAgIGNvbnN0IGJ1bmRsZXIgPSBCdW5kbGVyLm9mKHByb2plY3QpO1xuICAgICAgICBpZiAoIWJ1bmRsZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIGJ1bmRsZXIgZm91bmQuIFBsZWFzZSBhZGQgYSBCdW5kbGVyIGNvbXBvbmVudCB0byB5b3VyIHByb2plY3QuXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXNsaW50ID0gamF2YXNjcmlwdC5Fc2xpbnQub2YocHJvamVjdCk7XG4gICAgICAgIGVzbGludD8uYWxsb3dEZXZEZXBzKG9wdGlvbnMuZW50cnlwb2ludCk7XG5cbiAgICAgICAgY29uc3QgZW50cnlwb2ludCA9IG9wdGlvbnMuZW50cnlwb2ludDtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gb3B0aW9ucy5leHRlbnNpb24gPz8gXCIubGFtYmRhLnRzXCI7XG5cbiAgICAgICAgaWYgKCFlbnRyeXBvaW50LmVuZHNXaXRoKGV4dGVuc2lvbikpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJHtlbnRyeXBvaW50fSBtdXN0IGhhdmUgYSAke2V4dGVuc2lvbn0gZXh0ZW5zaW9uYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYXNlUGF0aCA9IHBhdGgucG9zaXguam9pbihwYXRoLmRpcm5hbWUoZW50cnlwb2ludCksIHBhdGguYmFzZW5hbWUoZW50cnlwb2ludCwgZXh0ZW5zaW9uKSk7XG4gICAgICAgIGNvbnN0IGNvbnN0cnVjdEZpbGUgPSBvcHRpb25zLmNvbnN0cnVjdEZpbGUgPz8gYCR7YmFzZVBhdGh9LWNvZGUudHNgO1xuXG4gICAgICAgIGlmIChwYXRoLmV4dG5hbWUoY29uc3RydWN0RmlsZSkgIT09IFwiLnRzXCIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29uc3RydWN0IGZpbGUgbmFtZSBcIiR7Y29uc3RydWN0RmlsZX1cIiBtdXN0IGhhdmUgYSAudHMgZXh0ZW5zaW9uYCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb25zdHJ1Y3ROYW1lID0gb3B0aW9ucy5jb25zdHJ1Y3ROYW1lID8/IGAke3Bhc2NhbChwYXRoLmJhc2VuYW1lKGJhc2VQYXRoKSl9RnVuY3Rpb25Db2RlYDtcblxuICAgICAgICBjb25zdCBidW5kbGUgPSBidW5kbGVyLmFkZEJ1bmRsZShlbnRyeXBvaW50LCB7XG4gICAgICAgICAgICAuLi5vcHRpb25zLmJ1bmRsaW5nT3B0aW9ucyxcbiAgICAgICAgICAgIHRzY29uZmlnUGF0aDogKHByb2plY3QgYXMgdHlwZXNjcmlwdC5UeXBlU2NyaXB0UHJvamVjdCk/LnRzY29uZmlnRGV2Py5maWxlTmFtZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgb3V0ZmlsZUFicyA9IHBhdGguam9pbihwcm9qZWN0Lm91dGRpciwgYnVuZGxlLm91dGZpbGUpO1xuICAgICAgICBjb25zdCBjb25zdHJ1Y3RBYnMgPSBwYXRoLmpvaW4ocHJvamVjdC5vdXRkaXIsIGNvbnN0cnVjdEZpbGUpO1xuICAgICAgICBjb25zdCByZWxhdGl2ZU91dGZpbGUgPSBwYXRoLnJlbGF0aXZlKHBhdGguZGlybmFtZShjb25zdHJ1Y3RBYnMpLCBwYXRoLmRpcm5hbWUob3V0ZmlsZUFicykpO1xuXG4gICAgICAgIGNvbnN0IHNyYyA9IG5ldyBTb3VyY2VDb2RlKHByb2plY3QsIGNvbnN0cnVjdEZpbGUpO1xuICAgICAgICBpZiAoc3JjLm1hcmtlcikge1xuICAgICAgICAgICAgc3JjLmxpbmUoYC8vICR7c3JjLm1hcmtlcn1gKTtcbiAgICAgICAgfVxuICAgICAgICBzcmMubGluZShcImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XCIpO1xuICAgICAgICBzcmMubGluZShcImltcG9ydCB7IGF3c19sYW1iZGEgfSBmcm9tICdhd3MtY2RrLWxpYic7XCIpO1xuICAgICAgICBzcmMubGluZSgpO1xuICAgICAgICBzcmMub3BlbihgZXhwb3J0IGNvbnN0ICR7Y29uc3RydWN0TmFtZX0gPSBhd3NfbGFtYmRhLkNvZGUuZnJvbUFzc2V0KGApO1xuICAgICAgICBzcmMubGluZShgcGF0aC5qb2luKF9fZGlybmFtZSwgJyR7Y29udmVydFRvUG9zaXhQYXRoKHJlbGF0aXZlT3V0ZmlsZSl9JyksYCk7XG4gICAgICAgIHNyYy5jbG9zZShcIik7XCIpO1xuXG4gICAgICAgIHRoaXMucHJvamVjdC5sb2dnZXIudmVyYm9zZShgJHtiYXNlUGF0aH06IGNvbnN0cnVjdCBcIiR7Y29uc3RydWN0TmFtZX1cIiBnZW5lcmF0ZWQgdW5kZXIgXCIke2NvbnN0cnVjdEZpbGV9XCJgKTtcbiAgICAgICAgdGhpcy5wcm9qZWN0LmxvZ2dlci52ZXJib3NlKGAke2Jhc2VQYXRofTogYnVuZGxlIHRhc2sgXCIke2J1bmRsZS5idW5kbGVUYXNrLm5hbWV9XCJgKTtcbiAgICB9XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYExhbWJkYUZ1bmN0aW9uQ29kZUJ1bmRsZXJgXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGFtYmRhRnVuY3Rpb25Db2RlQnVuZGxlck9wdGlvbnMge1xuICAgIC8qKlxuICAgICAqIExvY2F0ZSBmaWxlcyB3aXRoIHRoZSBnaXZlbiBleHRlbnNpb24uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZSBcIi5sYW1iZGEudHNcIlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGV4dGVuc2lvbjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUHJvamVjdCBzb3VyY2UgdHJlZSAocmVsYXRpdmUgdG8gcHJvamVjdCBvdXRwdXQgZGlyZWN0b3J5KS5cbiAgICAgKi9cbiAgICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIE9wdGlvbnMgZm9yIEFXUyBMYW1iZGEgRnVuY3Rpb24gYnVuZGxpbmcsIGFwcGxpZWQgdG8gZXZlcnkgZGlzY292ZXJlZCBlbnRyeXBvaW50LlxuICAgICAqXG4gICAgICogVGhlIGBlbnRyeXBvaW50YCBhbmQgYGV4dGVuc2lvbmAgZ2l2ZW4gaGVyZSBhcmUgaWdub3JlZDogZWFjaCBidW5kbGUgdXNlcyBpdHNcbiAgICAgKiBkaXNjb3ZlcmVkIGVudHJ5cG9pbnQgYW5kIHRoZSBgZXh0ZW5zaW9uYCBvZiB0aGUgYnVuZGxlci5cbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0gdGhlIGRlZmF1bHRzIG9mIGBMYW1iZGFGdW5jdGlvbkNvZGVCdW5kbGVPcHRpb25zYFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGJ1bmRsZU9wdGlvbnM/OiBMYW1iZGFGdW5jdGlvbkNvZGVCdW5kbGVPcHRpb25zO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgTGFtYmRhIEZ1bmN0aW9uIGNvZGUgYnVuZGxlcyBmcm9tIGVudHJ5cG9pbnRzIGRpc2NvdmVyZWQgaW4gdGhlIHByb2plY3QncyBzb3VyY2UgdHJlZS5cbiAqL1xuZXhwb3J0IGNsYXNzIExhbWJkYUZ1bmN0aW9uQ29kZUJ1bmRsZXIgZXh0ZW5kcyBjZGsuQXV0b0Rpc2NvdmVyQmFzZSB7XG4gICAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogTGFtYmRhRnVuY3Rpb25Db2RlQnVuZGxlck9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIocHJvamVjdCwge1xuICAgICAgICAgICAgcHJvamVjdGRpcjogb3B0aW9ucy5zcmNkaXIsXG4gICAgICAgICAgICBleHRlbnNpb246IG9wdGlvbnMuZXh0ZW5zaW9uLFxuICAgICAgICB9KTtcblxuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5cG9pbnQgb2YgdGhpcy5lbnRyeXBvaW50cykge1xuICAgICAgICAgICAgbmV3IExhbWJkYUZ1bmN0aW9uQ29kZUJ1bmRsZSh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgICAgICAgICAuLi5vcHRpb25zLmJ1bmRsZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgZW50cnlwb2ludDogZW50cnlwb2ludCxcbiAgICAgICAgICAgICAgICBleHRlbnNpb246IG9wdGlvbnMuZXh0ZW5zaW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { IConstruct } from "constructs";
|
|
2
2
|
import { Component } from "projen/lib/component";
|
|
3
|
+
/**
|
|
4
|
+
* Colima component for projen projects.
|
|
5
|
+
*
|
|
6
|
+
* Adds Colima support to your project with automatic installation and startup.
|
|
7
|
+
*/
|
|
3
8
|
export declare class Colima extends Component {
|
|
4
9
|
constructor(scope: IConstruct);
|
|
5
10
|
}
|
package/lib/components/colima.js
CHANGED
|
@@ -5,8 +5,13 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
5
5
|
const component_1 = require("projen/lib/component");
|
|
6
6
|
const task_shell_1 = require("projen/lib/task-shell");
|
|
7
7
|
const homebrew_1 = require("./homebrew");
|
|
8
|
+
/**
|
|
9
|
+
* Colima component for projen projects.
|
|
10
|
+
*
|
|
11
|
+
* Adds Colima support to your project with automatic installation and startup.
|
|
12
|
+
*/
|
|
8
13
|
class Colima extends component_1.Component {
|
|
9
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.Colima", version: "0.3.
|
|
14
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.Colima", version: "0.3.80" };
|
|
10
15
|
constructor(scope) {
|
|
11
16
|
super(scope);
|
|
12
17
|
const project = this.project;
|
|
@@ -25,4 +30,4 @@ class Colima extends component_1.Component {
|
|
|
25
30
|
}
|
|
26
31
|
}
|
|
27
32
|
exports.Colima = Colima;
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29saW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvY29saW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxvREFBaUQ7QUFDakQsc0RBQWtEO0FBQ2xELHlDQUFzQztBQUV0Qzs7OztHQUlHO0FBQ0gsTUFBYSxNQUFPLFNBQVEscUJBQVM7O0lBQ2pDLFlBQVksS0FBaUI7UUFDekIsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQWtCLENBQUM7UUFFeEMsSUFBSSxRQUFRLEdBQUcsbUJBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ1osUUFBUSxHQUFHLElBQUksbUJBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxDQUFDO1FBRUQsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTlCLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQ3RCLDJFQUEyRTtZQUMzRSxrQ0FBa0M7WUFDbEMsS0FBSyxFQUFFLHNCQUFTLENBQUMsSUFBSSxFQUFFO1lBQ3ZCLElBQUksRUFBRSwrQ0FBK0M7U0FDeEQsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7QUFwQkwsd0JBcUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB0eXBlIHsgUHJvamVjdCB9IGZyb20gXCJwcm9qZW5cIjtcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJwcm9qZW4vbGliL2NvbXBvbmVudFwiO1xuaW1wb3J0IHsgVGFza1NoZWxsIH0gZnJvbSBcInByb2plbi9saWIvdGFzay1zaGVsbFwiO1xuaW1wb3J0IHsgSG9tZWJyZXcgfSBmcm9tIFwiLi9ob21lYnJld1wiO1xuXG4vKipcbiAqIENvbGltYSBjb21wb25lbnQgZm9yIHByb2plbiBwcm9qZWN0cy5cbiAqXG4gKiBBZGRzIENvbGltYSBzdXBwb3J0IHRvIHlvdXIgcHJvamVjdCB3aXRoIGF1dG9tYXRpYyBpbnN0YWxsYXRpb24gYW5kIHN0YXJ0dXAuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb2xpbWEgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBJQ29uc3RydWN0KSB7XG4gICAgICAgIHN1cGVyKHNjb3BlKTtcblxuICAgICAgICBjb25zdCBwcm9qZWN0ID0gdGhpcy5wcm9qZWN0IGFzIFByb2plY3Q7XG5cbiAgICAgICAgbGV0IGhvbWVicmV3ID0gSG9tZWJyZXcub2YocHJvamVjdCk7XG4gICAgICAgIGlmICghaG9tZWJyZXcpIHtcbiAgICAgICAgICAgIGhvbWVicmV3ID0gbmV3IEhvbWVicmV3KHByb2plY3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgaG9tZWJyZXcuYWRkUGFja2FnZShcImNvbGltYVwiKTtcbiAgICAgICAgaG9tZWJyZXcuYWRkUGFja2FnZShcImRvY2tlclwiKTtcblxuICAgICAgICBwcm9qZWN0LmFkZFRhc2soXCJjb2xpbWFcIiwge1xuICAgICAgICAgICAgLy8gbXVsdGlwbGUgcmVkaXJlY3RzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHByb2plbidzIGJ1aWx0LWluIGNyb3NzLXBsYXRmb3JtXG4gICAgICAgICAgICAvLyBzaGVsbCwgc28gcnVuIHRoaXMgdGhyb3VnaCBiYXNoXG4gICAgICAgICAgICBzaGVsbDogVGFza1NoZWxsLmJhc2goKSxcbiAgICAgICAgICAgIGV4ZWM6IFwiY29saW1hIHN0YXR1cyA+L2Rldi9udWxsIDI+JjEgfHwgY29saW1hIHN0YXJ0XCIsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -6,7 +6,7 @@ const component_1 = require("projen/lib/component");
|
|
|
6
6
|
const task_shell_1 = require("projen/lib/task-shell");
|
|
7
7
|
const textfile_1 = require("projen/lib/textfile");
|
|
8
8
|
class Homebrew extends component_1.Component {
|
|
9
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.Homebrew", version: "0.3.
|
|
9
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.Homebrew", version: "0.3.80" };
|
|
10
10
|
static of(project) {
|
|
11
11
|
const isHomebrew = (c) => c instanceof Homebrew;
|
|
12
12
|
return project.components.find(isHomebrew);
|