@nikovirtala/projen-constructs 0.3.76 → 0.3.78

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.
Files changed (31) hide show
  1. package/.jsii +51 -50
  2. package/docs/api/classes/AwsCdkConstructLibraryProject.html +1 -1
  3. package/docs/api/classes/AwsCdkTypeScriptAppProject.html +1 -1
  4. package/docs/api/classes/Colima.html +1 -1
  5. package/docs/api/classes/Homebrew.html +1 -1
  6. package/docs/api/classes/JsiiProject.html +1 -1
  7. package/docs/api/classes/LambdaFunctionCodeBundler.html +26 -15
  8. package/docs/api/classes/LambdaFunctionConstructGenerator.html +1 -1
  9. package/docs/api/classes/LocalStack.html +1 -1
  10. package/docs/api/classes/Mise.html +1 -1
  11. package/docs/api/classes/ProjectGenerator.html +1 -1
  12. package/docs/api/classes/TypeDoc.html +1 -1
  13. package/docs/api/classes/TypeScriptProject.html +1 -1
  14. package/docs/api/classes/Vitest.html +1 -1
  15. package/docs/api/interfaces/ProjectGeneratorOptions.html +1 -1
  16. package/lib/components/bundle-lambda-function-code.d.ts +5 -2
  17. package/lib/components/bundle-lambda-function-code.js +14 -9
  18. package/lib/components/colima.js +1 -1
  19. package/lib/components/homebrew.js +1 -1
  20. package/lib/components/lambda-function-construct-generator.js +1 -1
  21. package/lib/components/localstack.js +1 -1
  22. package/lib/components/mise.js +1 -1
  23. package/lib/components/typedoc.js +1 -1
  24. package/lib/components/vitest.js +1 -1
  25. package/lib/project-generator.d.ts +5 -0
  26. package/lib/project-generator.js +21 -9
  27. package/lib/projects/awscdk-construct-library.generated.js +4 -4
  28. package/lib/projects/awscdk-typescript-app.generated.js +4 -4
  29. package/lib/projects/jsii.generated.js +4 -4
  30. package/lib/projects/typescript.generated.js +4 -4
  31. package/package.json +1 -1
@@ -10,7 +10,7 @@
10
10
  <ul class="tsd-breadcrumb" aria-label="Breadcrumb">
11
11
  <li><a href="" aria-current="page">LambdaFunctionConstructGenerator</a></li></ul>
12
12
  <h1>Class LambdaFunctionConstructGenerator</h1></div>
13
- <section class="tsd-panel tsd-hierarchy" data-refl="233">
13
+ <section class="tsd-panel tsd-hierarchy" data-refl="234">
14
14
  <h4>Hierarchy</h4>
15
15
  <ul class="tsd-hierarchy">
16
16
  <li class="tsd-hierarchy-item"><span class="tsd-signature-type">Component</span>
@@ -10,7 +10,7 @@
10
10
  <ul class="tsd-breadcrumb" aria-label="Breadcrumb">
11
11
  <li><a href="" aria-current="page">LocalStack</a></li></ul>
12
12
  <h1>Class LocalStack</h1></div>
13
- <section class="tsd-panel tsd-hierarchy" data-refl="290">
13
+ <section class="tsd-panel tsd-hierarchy" data-refl="291">
14
14
  <h4>Hierarchy</h4>
15
15
  <ul class="tsd-hierarchy">
16
16
  <li class="tsd-hierarchy-item"><span class="tsd-signature-type">Component</span>
@@ -10,7 +10,7 @@
10
10
  <ul class="tsd-breadcrumb" aria-label="Breadcrumb">
11
11
  <li><a href="" aria-current="page">Mise</a></li></ul>
12
12
  <h1>Class Mise</h1></div>
13
- <section class="tsd-panel tsd-hierarchy" data-refl="322">
13
+ <section class="tsd-panel tsd-hierarchy" data-refl="323">
14
14
  <h4>Hierarchy</h4>
15
15
  <ul class="tsd-hierarchy">
16
16
  <li class="tsd-hierarchy-item"><span class="tsd-signature-type">Component</span>
@@ -15,7 +15,7 @@
15
15
  <p>This component automates the creation of project classes that extend Projen base classes
16
16
  with opinionated defaults and component integration.</p>
17
17
  </div></section>
18
- <section class="tsd-panel tsd-hierarchy" data-refl="712">
18
+ <section class="tsd-panel tsd-hierarchy" data-refl="713">
19
19
  <h4>Hierarchy</h4>
20
20
  <ul class="tsd-hierarchy">
21
21
  <li class="tsd-hierarchy-item"><span class="tsd-signature-type">Component</span>
@@ -13,7 +13,7 @@
13
13
  <section class="tsd-panel tsd-comment">
14
14
  <div class="tsd-comment tsd-typography"><p>TypeDoc component for projen projects</p>
15
15
  </div></section>
16
- <section class="tsd-panel tsd-hierarchy" data-refl="358">
16
+ <section class="tsd-panel tsd-hierarchy" data-refl="359">
17
17
  <h4>Hierarchy</h4>
18
18
  <ul class="tsd-hierarchy">
19
19
  <li class="tsd-hierarchy-item"><span class="tsd-signature-type">Component</span>
@@ -14,7 +14,7 @@
14
14
  <div class="tsd-comment tsd-typography"><p>TypeScriptProject with standard configuration and component integration</p>
15
15
  <p>Extends Projen's base class with opinionated defaults and automatic component setup.</p>
16
16
  </div></section>
17
- <section class="tsd-panel tsd-hierarchy" data-refl="1351">
17
+ <section class="tsd-panel tsd-hierarchy" data-refl="1353">
18
18
  <h4>Hierarchy</h4>
19
19
  <ul class="tsd-hierarchy">
20
20
  <li class="tsd-hierarchy-item"><span class="tsd-signature-type">TypeScriptProject</span>
@@ -10,7 +10,7 @@
10
10
  <ul class="tsd-breadcrumb" aria-label="Breadcrumb">
11
11
  <li><a href="" aria-current="page">Vitest</a></li></ul>
12
12
  <h1>Class Vitest</h1></div>
13
- <section class="tsd-panel tsd-hierarchy" data-refl="510">
13
+ <section class="tsd-panel tsd-hierarchy" data-refl="511">
14
14
  <h4>Hierarchy</h4>
15
15
  <ul class="tsd-hierarchy">
16
16
  <li class="tsd-hierarchy-item"><span class="tsd-signature-type">Component</span>
@@ -16,7 +16,7 @@
16
16
  with standard configuration and component integration.</p>
17
17
  </div></section>
18
18
  <div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">ProjectGeneratorOptions</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-property" href="#additionaloptions">additionalOptions</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#components">components</a><span class="tsd-signature-symbol">?:</span> <a href="Component.html" class="tsd-signature-type tsd-kind-interface">Component</a><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#executable">executable</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#filepath">filePath</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#indent">indent</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#name">name</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#omitoptions">omitOptions</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#projecttype">projectType</a><span class="tsd-signature-symbol">:</span> <a href="../enums/ProjectType.html" class="tsd-signature-type tsd-kind-enum">ProjectType</a><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#readonly">readonly</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div>
19
- <section class="tsd-panel tsd-hierarchy" data-refl="702">
19
+ <section class="tsd-panel tsd-hierarchy" data-refl="703">
20
20
  <h4>Hierarchy</h4>
21
21
  <ul class="tsd-hierarchy">
22
22
  <li class="tsd-hierarchy-item"><span class="tsd-signature-type">SourceCodeOptions</span>
@@ -1,4 +1,4 @@
1
- import { Component, type Project, type Task } from "projen";
1
+ import { Component, cdk, type Project, type Task } from "projen";
2
2
  export declare function renderBundleName(entrypoint: string): string;
3
3
  export declare function convertToPosixPath(p: string): string;
4
4
  export interface BundlerOptions {
@@ -57,6 +57,9 @@ export interface LambdaFunctionCodeBundlerOptions {
57
57
  readonly srcdir: string;
58
58
  readonly bundleOptions?: LambdaFunctionCodeBundleOptions;
59
59
  }
60
- export declare class LambdaFunctionCodeBundler extends Component {
60
+ /**
61
+ * Creates Lambda Function code bundles from entrypoints discovered in the project's source tree.
62
+ */
63
+ export declare class LambdaFunctionCodeBundler extends cdk.AutoDiscoverBase {
61
64
  constructor(project: Project, options: LambdaFunctionCodeBundlerOptions);
62
65
  }
@@ -55,7 +55,7 @@ function convertToPosixPath(p) {
55
55
  return p.split(node_path_1.sep).join(node_path_1.posix.sep);
56
56
  }
57
57
  class Bundler extends projen_1.Component {
58
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.Bundler", version: "0.3.76" };
58
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.Bundler", version: "0.3.78" };
59
59
  static of(project) {
60
60
  const isBundler = (o) => o instanceof Bundler;
61
61
  return project.components.find(isBundler);
@@ -157,7 +157,7 @@ class Bundler extends projen_1.Component {
157
157
  }
158
158
  exports.Bundler = Bundler;
159
159
  class LambdaFunctionCodeBundle extends projen_1.Component {
160
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.LambdaFunctionCodeBundle", version: "0.3.76" };
160
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.LambdaFunctionCodeBundle", version: "0.3.78" };
161
161
  constructor(project, options) {
162
162
  super(project);
163
163
  const bundler = Bundler.of(project);
@@ -199,19 +199,24 @@ class LambdaFunctionCodeBundle extends projen_1.Component {
199
199
  }
200
200
  }
201
201
  exports.LambdaFunctionCodeBundle = LambdaFunctionCodeBundle;
202
- class LambdaFunctionCodeBundler extends projen_1.Component {
203
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.LambdaFunctionCodeBundler", version: "0.3.76" };
202
+ /**
203
+ * Creates Lambda Function code bundles from entrypoints discovered in the project's source tree.
204
+ */
205
+ class LambdaFunctionCodeBundler extends projen_1.cdk.AutoDiscoverBase {
206
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.LambdaFunctionCodeBundler", version: "0.3.78" };
204
207
  constructor(project, options) {
205
- super(project);
206
- const entrypoints = [];
207
- for (const entrypoint of entrypoints) {
208
+ super(project, {
209
+ projectdir: options.srcdir,
210
+ extension: options.extension,
211
+ });
212
+ for (const entrypoint of this.entrypoints) {
208
213
  new LambdaFunctionCodeBundle(this.project, {
214
+ ...options.bundleOptions,
209
215
  entrypoint: entrypoint,
210
216
  extension: options.extension,
211
- ...options.bundleOptions,
212
217
  });
213
218
  }
214
219
  }
215
220
  }
216
221
  exports.LambdaFunctionCodeBundler = LambdaFunctionCodeBundler;
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVuZGxlLWxhbWJkYS1mdW5jdGlvbi1jb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbXBvbmVudHMvYnVuZGxlLWxhbWJkYS1mdW5jdGlvbi1jb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUtBLDRDQVNDO0FBRUQsZ0RBRUM7O0FBbEJELGdEQUFrQztBQUNsQyx5Q0FBeUU7QUFDekUsK0JBQThCO0FBQzlCLG1DQUFxSDtBQUVySCxTQUFnQixnQkFBZ0IsQ0FBQyxVQUFrQjtJQUMvQyxNQUFNLEtBQUssR0FBRyxJQUFBLGdCQUFJLEVBQUMsVUFBVSxDQUFDLENBQUMsS0FBSyxDQUFDLGVBQUcsQ0FBQyxDQUFDO0lBQzFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO1FBQ3JCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFHLENBQUMsQ0FBQztJQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFBLG1CQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkIsTUFBTSxJQUFJLEdBQUcsSUFBQSxvQkFBUSxFQUFDLENBQUMsRUFBRSxJQUFBLG1CQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQyxPQUFPLElBQUEsZ0JBQUksRUFBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVELFNBQWdCLGtCQUFrQixDQUFDLENBQVM7SUFDeEMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLGVBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFTRCxNQUFhLE9BQVEsU0FBUSxrQkFBUzs7SUFDM0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFn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QUM7UUFDNUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsUUFBUSxrQkFBa0IsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ3hGLENBQUM7O0FBbERMLDREQW1EQztBQVFELE1BQWEseUJBQTBCLFNBQVEsa0JBQVM7O0lBQ3BELFlBQVksT0FBZ0IsRUFBRSxPQUF5QztRQUNuRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFZixNQUFNLFdBQVcsR0FBYSxFQUFFLENBQUM7UUFFakMsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNuQyxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ3ZDLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7Z0JBQzVCLEdBQUcsT0FBTyxDQUFDLGFBQWE7YUFDM0IsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7O0FBYkwsOERBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGJhc2VuYW1lLCBkaXJuYW1lLCBleHRuYW1lLCBqb2luLCBwb3NpeCwgc2VwIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgcGFzY2FsIH0gZnJvbSBcImNhc2VcIjtcbmltcG9ydCB7IENvbXBvbmVudCwgRGVwZW5kZW5jeVR5cGUsIGphdmFzY3JpcHQsIHR5cGUgUHJvamVjdCwgU291cmNlQ29kZSwgdHlwZSBUYXNrLCB0eXBlIHR5cGVzY3JpcHQgfSBmcm9tIFwicHJvamVuXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJCdW5kbGVOYW1lKGVudHJ5cG9pbnQ6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcnRzID0gam9pbihlbnRyeXBvaW50KS5zcGxpdChzZXApO1xuICAgIGlmIChwYXJ0c1swXSA9PT0gXCJzcmNcIikge1xuICAgICAgICBwYXJ0cy5zaGlmdCgpO1xuICAgIH1cbiAgICBjb25zdCBwID0gcGFydHMuam9pbihzZXApO1xuICAgIGNvbnN0IGRpciA9IGRpcm5hbWUocCk7XG4gICAgY29uc3QgYmFzZSA9IGJhc2VuYW1lKHAsIGV4dG5hbWUocCkpO1xuICAgIHJldHVybiBqb2luKGRpciwgYmFzZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9Qb3NpeFBhdGgocDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHAuc3BsaXQoc2VwKS5qb2luKHBvc2l4LnNlcCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVuZGxlck9wdGlvbnMge1xuICAgIHJlYWRvbmx5IGVzYnVpbGRWZXJzaW9uPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGFzc2V0c0Rpcj86IHN0cmluZztcbiAgICByZWFkb25seSBhZGRUb1ByZUNvbXBpbGU/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IGxvYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG5leHBvcnQgY2xhc3MgQnVuZGxlciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgcHVibGljIHN0YXRpYyBvZihwcm9qZWN0OiBQcm9qZWN0KTogQnVuZGxlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIGNvbnN0IGlzQnVuZGxlciA9IChvOiBDb21wb25lbnQpOiBvIGlzIEJ1bmRsZXIgPT4gbyBpbnN0YW5jZW9mIEJ1bmRsZXI7XG4gICAgICAgIHJldHVybiBwcm9qZWN0LmNvbXBvbmVudHMuZmluZChpc0J1bmRsZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWFkb25seSBlc2J1aWxkVmVyc2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIHB1YmxpYyByZWFkb25seSBidW5kbGVkaXI6IHN0cmluZztcblxuICAgIHByaXZhdGUgX3Rhc2s6IFRhc2sgfCB1bmRlZmluZWQ7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhZGRUb1ByZUNvbXBpbGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2FkZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IEJ1bmRsZXJPcHRpb25zID0ge30pIHtcbiAgICAgICAgc3VwZXIocHJvamVjdCk7XG4gICAgICAgIHRoaXMuZXNidWlsZFZlcnNpb24gPSBvcHRpb25zLmVzYnVpbGRWZXJzaW9uO1xuICAgICAgICB0aGlzLmJ1bmRsZWRpciA9IG9wdGlvbnMuYXNzZXRzRGlyID8/IFwiYXNzZXRzXCI7XG4gICAgICAgIHRoaXMuYWRkVG9QcmVDb21waWxlID0gb3B0aW9ucy5hZGRUb1ByZUNvbXBpbGUgPz8gdHJ1ZTtcbiAgICAgICAgdGhpcy5sb2FkZXJzID0gb3B0aW9ucy5sb2FkZXJzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYnVuZGxlVGFzaygpOiBUYXNrIHtcbiAgICAgICAgaWYgKCF0aGlzLl90YXNrKSB7XG4gICAgICAgICAgICB0aGlzLmFkZEJ1bmRsaW5nU3VwcG9ydCgpO1xuICAgICAgICAgICAgdGhpcy5fdGFzayA9IHRoaXMucHJvamVjdC50YXNrcy5hZGRUYXNrKFwiYnVuZGxlXCIsIHtcbiAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQcmVwYXJlIGFzc2V0c1wiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAodGhpcy5hZGRUb1ByZUNvbXBpbGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2plY3QucHJlQ29tcGlsZVRhc2suc3Bhd24odGhpcy5fdGFzayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3Rhc2s7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEJ1bmRsZShlbnRyeXBvaW50OiBzdHJpbmcsIG9wdGlvbnM6IEJ1bmRsaW5nT3B0aW9ucyk6IEJ1bmRsZSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSByZW5kZXJCdW5kbGVOYW1lKGVudHJ5cG9pbnQpO1xuICAgICAgICBjb25zdCBvdXRkaXIgPSBwYXRoLnBvc2l4LmpvaW4odGhpcy5idW5kbGVkaXIsIG5hbWUpO1xuICAgICAgICBjb25zdCBvdXRmaWxlID0gcGF0aC5wb3NpeC5qb2luKG91dGRpciwgb3B0aW9ucy5vdXRmaWxlID8/IFwiaW5kZXgubWpzXCIpO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBvcHRpb25zLnRhcmdldCA/PyBcImVzbmV4dFwiO1xuICAgICAgICBjb25zdCBwbGF0Zm9ybSA9IG9wdGlvbnMucGxhdGZvcm0gPz8gXCJub2RlXCI7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IG9wdGlvbnMuZm9ybWF0ID8/IFwiZXNtXCI7XG4gICAgICAgIGNvbnN0IHNvdXJjZW1hcCA9IG9wdGlvbnMuc291cmNlbWFwID8/IHRydWU7XG4gICAgICAgIGNvbnN0IHNvdXJjZXNDb250ZW50ID0gb3B0aW9ucy5zb3VyY2VzQ29udGVudCA/PyBmYWxzZTtcbiAgICAgICAgY29uc3QgbWluaWZ5ID0gb3B0aW9ucy5taW5pZnkgPz8gdHJ1ZTtcbiAgICAgICAgY29uc3QgbWFpbkZpZWxkcyA9IG9wdGlvbnMubWFpbkZpZWxkcyA/PyBcIm1vZHVsZSxtYWluXCI7XG4gICAgICAgIGNvbnN0IGJhbm5lciA9XG4gICAgICAgICAgICBvcHRpb25zLmJhbm5lciA/P1xuICAgICAgICAgICAgXCI6anM9aW1wb3J0IHsgY3JlYXRlUmVxdWlyZSBhcyB0b3BMZXZlbENyZWF0ZVJlcXVpcmUgfSBmcm9tICdtb2R1bGUnO2NvbnN0IHJlcXVpcmUgPSB0b3BMZXZlbENyZWF0ZVJlcXVpcmUoaW1wb3J0Lm1ldGEudXJsKVwiO1xuXG4gICAgICAgIGNvbnN0IGFyZ3MgPSBbXG4gICAgICAgICAgICBcImVzYnVpbGRcIixcbiAgICAgICAgICAgIFwiLS1idW5kbGVcIixcbiAgICAgICAgICAgIGVudHJ5cG9pbnQsXG4gICAgICAgICAgICBgLS10YXJnZXQ9XCIke3RhcmdldH1cImAsXG4gICAgICAgICAgICBgLS1wbGF0Zm9ybT1cIiR7cGxhdGZvcm19XCJgLFxuICAgICAgICAgICAgYC0tb3V0ZmlsZT1cIiR7b3V0ZmlsZX1cImAsXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3QgdHNjb25maWcgPSBvcHRpb25zLnRzY29uZmlnUGF0aCA/PyBmYWxzZTtcbiAgICAgICAgaWYgKHRzY29uZmlnKSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goYC0tdHNjb25maWc9XCIke3RzY29uZmlnfVwiYCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHggb2Ygb3B0aW9ucy5leHRlcm5hbHMgPz8gW10pIHtcbiAgICAgICAgICAgIGFyZ3MucHVzaChgLS1leHRlcm5hbDoke3h9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc291cmNlbWFwKSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goXCItLXNvdXJjZW1hcFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzb3VyY2VzQ29udGVudCkge1xuICAgICAgICAgICAgYXJncy5wdXNoKGAtLXNvdXJjZXMtY29udGVudD0ke3NvdXJjZXNDb250ZW50fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1pbmlmeSkge1xuICAgICAgICAgICAgYXJncy5wdXNoKFwiLS1taW5pZnlcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9ybWF0KSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goYC0tZm9ybWF0PSR7Zm9ybWF0fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG1haW5GaWVsZHMpIHtcbiAgICAgICAgICAgIGFyZ3MucHVzaChgLS1tYWluLWZpZWxkcz0ke21haW5GaWVsZHN9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYmFubmVyKSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goYC0tYmFubmVyJHtiYW5uZXJ9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsb2FkZXJzID0gKG9wdGlvbnMubG9hZGVycyA/PyBmYWxzZSkgPyBvcHRpb25zLmxvYWRlcnMgOiAodGhpcy5sb2FkZXJzID8/IGZhbHNlKTtcbiAgICAgICAgaWYgKGxvYWRlcnMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW2V4dGVuc2lvbiwgbG9hZGVyXSBvZiBPYmplY3QuZW50cmllcyhsb2FkZXJzKSkge1xuICAgICAgICAgICAgICAgIGFyZ3MucHVzaChgLS1sb2FkZXI6LiR7ZXh0ZW5zaW9ufT0ke2xvYWRlcn1gKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGJ1bmRsZVRhc2sgPSB0aGlzLnByb2plY3QuYWRkVGFzayhgYnVuZGxlOiR7bmFtZX1gLCB7XG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYENyZWF0ZSBhIEphdmFTY3JpcHQgYnVuZGxlIGZyb20gJHtlbnRyeXBvaW50fWAsXG4gICAgICAgICAgICBleGVjOiBhcmdzLmpvaW4oXCIgXCIpLFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmJ1bmRsZVRhc2suc3Bhd24oYnVuZGxlVGFzayk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGJ1bmRsZVRhc2s6IGJ1bmRsZVRhc2ssXG4gICAgICAgICAgICBvdXRkaXI6IG91dGRpcixcbiAgICAgICAgICAgIG91dGZpbGU6IG91dGZpbGUsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRCdW5kbGluZ1N1cHBvcnQoKSB7XG4gICAgICAgIGNvbnN0IGlnbm9yZUVudHJ5ID0gYC8ke3RoaXMuYnVuZGxlZGlyfS9gO1xuICAgICAgICB0aGlzLnByb2plY3QuYWRkR2l0SWdub3JlKGlnbm9yZUVudHJ5KTtcbiAgICAgICAgdGhpcy5wcm9qZWN0LmFkZFBhY2thZ2VJZ25vcmUoYCEke2lnbm9yZUVudHJ5fWApO1xuICAgICAgICBjb25zdCBkZXAgPSB0aGlzLmVzYnVpbGRWZXJzaW9uID8gYGVzYnVpbGRAJHt0aGlzLmVzYnVpbGRWZXJzaW9ufWAgOiBcImVzYnVpbGRcIjtcbiAgICAgICAgdGhpcy5wcm9qZWN0LmRlcHMuYWRkRGVwZW5kZW5jeShkZXAsIERlcGVuZGVuY3lUeXBlLkJVSUxEKTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVuZGxlIHtcbiAgICByZWFkb25seSBidW5kbGVUYXNrOiBUYXNrO1xuICAgIHJlYWRvbmx5IG91dGZpbGU6IHN0cmluZztcbiAgICByZWFkb25seSBvdXRkaXI6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdW5kbGluZ09wdGlvbnMge1xuICAgIHJlYWRvbmx5IGV4dGVybmFscz86IHN0cmluZ1tdO1xuICAgIHJlYWRvbmx5IHNvdXJjZW1hcD86IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgdGFyZ2V0Pzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHBsYXRmb3JtPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IG91dGZpbGU/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgdHNjb25maWdQYXRoPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGxvYWRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuICAgIHJlYWRvbmx5IGZvcm1hdD86IHN0cmluZztcbiAgICByZWFkb25seSBtaW5pZnk/OiBib29sZWFuO1xuICAgIHJlYWRvbmx5IHNvdXJjZXNDb250ZW50PzogYm9vbGVhbjtcbiAgICByZWFkb25seSBtYWluRmllbGRzPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGJhbm5lcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFGdW5jdGlvbkNvZGVCdW5kbGVPcHRpb25zIHtcbiAgICByZWFkb25seSBlbnRyeXBvaW50OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgZXh0ZW5zaW9uOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgY29uc3RydWN0RmlsZT86IHN0cmluZztcbiAgICByZWFkb25seSBjb25zdHJ1Y3ROYW1lPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGJ1bmRsaW5nT3B0aW9ucz86IEJ1bmRsaW5nT3B0aW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIExhbWJkYUZ1bmN0aW9uQ29kZUJ1bmRsZSBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgb3B0aW9uczogTGFtYmRhRnVuY3Rpb25Db2RlQnVuZGxlT3B0aW9ucykge1xuICAgICAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgICAgICBjb25zdCBidW5kbGVyID0gQnVuZGxlci5vZihwcm9qZWN0KTtcbiAgICAgICAgaWYgKCFidW5kbGVyKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBidW5kbGVyIGZvdW5kLiBQbGVhc2UgYWRkIGEgQnVuZGxlciBjb21wb25lbnQgdG8geW91ciBwcm9qZWN0LlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVzbGludCA9IGphdmFzY3JpcHQuRXNsaW50Lm9mKHByb2plY3QpO1xuICAgICAgICBlc2xpbnQ/LmFsbG93RGV2RGVwcyhvcHRpb25zLmVudHJ5cG9pbnQpO1xuXG4gICAgICAgIGNvbnN0IGVudHJ5cG9pbnQgPSBvcHRpb25zLmVudHJ5cG9pbnQ7XG4gICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IG9wdGlvbnMuZXh0ZW5zaW9uID8/IFwiLmxhbWJkYS50c1wiO1xuXG4gICAgICAgIGlmICghZW50cnlwb2ludC5lbmRzV2l0aChleHRlbnNpb24pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7ZW50cnlwb2ludH0gbXVzdCBoYXZlIGEgJHtleHRlbnNpb259IGV4dGVuc2lvbmApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmFzZVBhdGggPSBwYXRoLnBvc2l4LmpvaW4ocGF0aC5kaXJuYW1lKGVudHJ5cG9pbnQpLCBwYXRoLmJhc2VuYW1lKGVudHJ5cG9pbnQsIGV4dGVuc2lvbikpO1xuICAgICAgICBjb25zdCBjb25zdHJ1Y3RGaWxlID0gb3B0aW9ucy5jb25zdHJ1Y3RGaWxlID8/IGAke2Jhc2VQYXRofS1jb2RlLnRzYDtcblxuICAgICAgICBpZiAocGF0aC5leHRuYW1lKGNvbnN0cnVjdEZpbGUpICE9PSBcIi50c1wiKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbnN0cnVjdCBmaWxlIG5hbWUgXCIke2NvbnN0cnVjdEZpbGV9XCIgbXVzdCBoYXZlIGEgLnRzIGV4dGVuc2lvbmApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29uc3RydWN0TmFtZSA9IG9wdGlvbnMuY29uc3RydWN0TmFtZSA/PyBgJHtwYXNjYWwocGF0aC5iYXNlbmFtZShiYXNlUGF0aCkpfUZ1bmN0aW9uQ29kZWA7XG5cbiAgICAgICAgY29uc3QgYnVuZGxlID0gYnVuZGxlci5hZGRCdW5kbGUoZW50cnlwb2ludCwge1xuICAgICAgICAgICAgLi4ub3B0aW9ucy5idW5kbGluZ09wdGlvbnMsXG4gICAgICAgICAgICB0c2NvbmZpZ1BhdGg6IChwcm9qZWN0IGFzIHR5cGVzY3JpcHQuVHlwZVNjcmlwdFByb2plY3QpPy50c2NvbmZpZ0Rldj8uZmlsZU5hbWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IG91dGZpbGVBYnMgPSBwYXRoLmpvaW4ocHJvamVjdC5vdXRkaXIsIGJ1bmRsZS5vdXRmaWxlKTtcbiAgICAgICAgY29uc3QgY29uc3RydWN0QWJzID0gcGF0aC5qb2luKHByb2plY3Qub3V0ZGlyLCBjb25zdHJ1Y3RGaWxlKTtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVPdXRmaWxlID0gcGF0aC5yZWxhdGl2ZShwYXRoLmRpcm5hbWUoY29uc3RydWN0QWJzKSwgcGF0aC5kaXJuYW1lKG91dGZpbGVBYnMpKTtcblxuICAgICAgICBjb25zdCBzcmMgPSBuZXcgU291cmNlQ29kZShwcm9qZWN0LCBjb25zdHJ1Y3RGaWxlKTtcbiAgICAgICAgaWYgKHNyYy5tYXJrZXIpIHtcbiAgICAgICAgICAgIHNyYy5saW5lKGAvLyAke3NyYy5tYXJrZXJ9YCk7XG4gICAgICAgIH1cbiAgICAgICAgc3JjLmxpbmUoXCJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1wiKTtcbiAgICAgICAgc3JjLmxpbmUoXCJpbXBvcnQgeyBhd3NfbGFtYmRhIH0gZnJvbSAnYXdzLWNkay1saWInO1wiKTtcbiAgICAgICAgc3JjLmxpbmUoKTtcbiAgICAgICAgc3JjLm9wZW4oYGV4cG9ydCBjb25zdCAke2NvbnN0cnVjdE5hbWV9ID0gYXdzX2xhbWJkYS5Db2RlLmZyb21Bc3NldChgKTtcbiAgICAgICAgc3JjLmxpbmUoYHBhdGguam9pbihfX2Rpcm5hbWUsICcke2NvbnZlcnRUb1Bvc2l4UGF0aChyZWxhdGl2ZU91dGZpbGUpfScpLGApO1xuICAgICAgICBzcmMuY2xvc2UoXCIpO1wiKTtcblxuICAgICAgICB0aGlzLnByb2plY3QubG9nZ2VyLnZlcmJvc2UoYCR7YmFzZVBhdGh9OiBjb25zdHJ1Y3QgXCIke2NvbnN0cnVjdE5hbWV9XCIgZ2VuZXJhdGVkIHVuZGVyIFwiJHtjb25zdHJ1Y3RGaWxlfVwiYCk7XG4gICAgICAgIHRoaXMucHJvamVjdC5sb2dnZXIudmVyYm9zZShgJHtiYXNlUGF0aH06IGJ1bmRsZSB0YXNrIFwiJHtidW5kbGUuYnVuZGxlVGFzay5uYW1lfVwiYCk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhbWJkYUZ1bmN0aW9uQ29kZUJ1bmRsZXJPcHRpb25zIHtcbiAgICByZWFkb25seSBleHRlbnNpb246IHN0cmluZztcbiAgICByZWFkb25seSBzcmNkaXI6IHN0cmluZztcbiAgICByZWFkb25seSBidW5kbGVPcHRpb25zPzogTGFtYmRhRnVuY3Rpb25Db2RlQnVuZGxlT3B0aW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIExhbWJkYUZ1bmN0aW9uQ29kZUJ1bmRsZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIGNvbnN0cnVjdG9yKHByb2plY3Q6IFByb2plY3QsIG9wdGlvbnM6IExhbWJkYUZ1bmN0aW9uQ29kZUJ1bmRsZXJPcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKHByb2plY3QpO1xuXG4gICAgICAgIGNvbnN0IGVudHJ5cG9pbnRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gICAgICAgIGZvciAoY29uc3QgZW50cnlwb2ludCBvZiBlbnRyeXBvaW50cykge1xuICAgICAgICAgICAgbmV3IExhbWJkYUZ1bmN0aW9uQ29kZUJ1bmRsZSh0aGlzLnByb2plY3QsIHtcbiAgICAgICAgICAgICAgICBlbnRyeXBvaW50OiBlbnRyeXBvaW50LFxuICAgICAgICAgICAgICAgIGV4dGVuc2lvbjogb3B0aW9ucy5leHRlbnNpb24sXG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucy5idW5kbGVPcHRpb25zLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
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
@@ -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 homebrew_1 = require("./homebrew");
8
8
  class Colima extends component_1.Component {
9
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.Colima", version: "0.3.76" };
9
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.Colima", version: "0.3.78" };
10
10
  constructor(scope) {
11
11
  super(scope);
12
12
  const project = this.project;
@@ -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.76" };
9
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.Homebrew", version: "0.3.78" };
10
10
  static of(project) {
11
11
  const isHomebrew = (c) => c instanceof Homebrew;
12
12
  return project.components.find(isHomebrew);
@@ -39,7 +39,7 @@ const path = __importStar(require("node:path"));
39
39
  const projen_1 = require("projen");
40
40
  const utils_1 = require("../utils");
41
41
  class LambdaFunctionConstructGenerator extends projen_1.Component {
42
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.LambdaFunctionConstructGenerator", version: "0.3.76" };
42
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.LambdaFunctionConstructGenerator", version: "0.3.78" };
43
43
  sourceDir;
44
44
  outputDir;
45
45
  filePattern;
@@ -7,7 +7,7 @@ const javascript_1 = require("projen/lib/javascript");
7
7
  const colima_1 = require("./colima");
8
8
  const homebrew_1 = require("./homebrew");
9
9
  class LocalStack extends component_1.Component {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.LocalStack", version: "0.3.76" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.LocalStack", version: "0.3.78" };
11
11
  constructor(scope, options = {}) {
12
12
  super(scope);
13
13
  const project = javascript_1.NodeProject.of(this);
@@ -7,7 +7,7 @@ const component_1 = require("projen/lib/component");
7
7
  const textfile_1 = require("projen/lib/textfile");
8
8
  const homebrew_1 = require("./homebrew");
9
9
  class Mise extends component_1.Component {
10
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.Mise", version: "0.3.76" };
10
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.Mise", version: "0.3.78" };
11
11
  static of(project) {
12
12
  const isMise = (c) => c instanceof Mise;
13
13
  return project.components.find(isMise);
@@ -34,7 +34,7 @@ const DEFAULT_CONFIG = {
34
34
  * TypeDoc component for projen projects
35
35
  */
36
36
  class TypeDoc extends component_1.Component {
37
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.TypeDoc", version: "0.3.76" };
37
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.TypeDoc", version: "0.3.78" };
38
38
  static of(project) {
39
39
  const isTypeDoc = (c) => c instanceof TypeDoc;
40
40
  return project.components.find(isTypeDoc);
@@ -140,7 +140,7 @@ var CoverageReporter;
140
140
  CoverageReporter["TEXT"] = "text";
141
141
  })(CoverageReporter || (exports.CoverageReporter = CoverageReporter = {}));
142
142
  class Vitest extends component_1.Component {
143
- static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.Vitest", version: "0.3.76" };
143
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@nikovirtala/projen-constructs.Vitest", version: "0.3.78" };
144
144
  static of(project) {
145
145
  const isVitest = (c) => c instanceof Vitest;
146
146
  return project.components.find(isVitest);
@@ -110,6 +110,11 @@ export declare class ProjectGenerator extends projen.Component {
110
110
  private readonly options;
111
111
  private renderer;
112
112
  private static enumGenerated;
113
+ /**
114
+ * Options property name per component class name, for the components whose options
115
+ * property was added to the generated options interface
116
+ */
117
+ private readonly optionsProperties;
113
118
  /**
114
119
  * @param project - Projen project instance
115
120
  * @param options - Generator configuration