projalf 0.0.6 → 0.0.8
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 +4 -4
- package/lib/Projalf.d.ts +1 -1
- package/lib/Projalf.js +10 -45
- package/lib/files.d.ts +6 -0
- package/lib/files.js +44 -0
- package/package.json +1 -1
package/.jsii
CHANGED
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
},
|
|
120
120
|
"locationInModule": {
|
|
121
121
|
"filename": "src/Projalf.ts",
|
|
122
|
-
"line":
|
|
122
|
+
"line": 9
|
|
123
123
|
},
|
|
124
124
|
"parameters": [
|
|
125
125
|
{
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
"kind": "class",
|
|
134
134
|
"locationInModule": {
|
|
135
135
|
"filename": "src/Projalf.ts",
|
|
136
|
-
"line":
|
|
136
|
+
"line": 8
|
|
137
137
|
},
|
|
138
138
|
"name": "Projalf",
|
|
139
139
|
"symbolId": "src/Projalf:Projalf"
|
|
@@ -151,12 +151,12 @@
|
|
|
151
151
|
"kind": "interface",
|
|
152
152
|
"locationInModule": {
|
|
153
153
|
"filename": "src/Projalf.ts",
|
|
154
|
-
"line":
|
|
154
|
+
"line": 6
|
|
155
155
|
},
|
|
156
156
|
"name": "ProjalfOptions",
|
|
157
157
|
"symbolId": "src/Projalf:ProjalfOptions"
|
|
158
158
|
}
|
|
159
159
|
},
|
|
160
160
|
"version": "0.0.0",
|
|
161
|
-
"fingerprint": "
|
|
161
|
+
"fingerprint": "uysqT9WQFFtB5OEgulZj4lIA+ewTw3z5iKeXG/N1Yac="
|
|
162
162
|
}
|
package/lib/Projalf.d.ts
CHANGED
package/lib/Projalf.js
CHANGED
|
@@ -6,6 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
6
6
|
const cp = require("child_process");
|
|
7
7
|
const path = require("path");
|
|
8
8
|
const projen_1 = require("projen");
|
|
9
|
+
const files_1 = require("./files");
|
|
9
10
|
class Projalf extends projen_1.awscdk.AwsCdkTypeScriptApp {
|
|
10
11
|
constructor(options) {
|
|
11
12
|
const inferredName = options.name ?? inferNameFromGit() ?? inferNameFromCwd();
|
|
@@ -18,51 +19,15 @@ class Projalf extends projen_1.awscdk.AwsCdkTypeScriptApp {
|
|
|
18
19
|
super({
|
|
19
20
|
...options,
|
|
20
21
|
name: inferredName,
|
|
21
|
-
defaultReleaseBranch: options.defaultReleaseBranch ??
|
|
22
|
+
defaultReleaseBranch: options.defaultReleaseBranch ?? 'main',
|
|
22
23
|
packageManager: options.packageManager ?? projen_1.javascript.NodePackageManager.NPM,
|
|
23
24
|
projenrcTs: options.projenrcTs ?? true,
|
|
24
|
-
cdkVersion: options.cdkVersion ??
|
|
25
|
-
appEntrypoint: options.appEntrypoint ?? "src/main.ts",
|
|
25
|
+
cdkVersion: options.cdkVersion ?? '2.156.0',
|
|
26
26
|
context: mergedContext,
|
|
27
27
|
deps: options.deps ?? [],
|
|
28
28
|
devDeps: options.devDeps ?? [],
|
|
29
29
|
});
|
|
30
|
-
new
|
|
31
|
-
contents: `import * as cdk from 'aws-cdk-lib';
|
|
32
|
-
import { Construct } from 'constructs';
|
|
33
|
-
|
|
34
|
-
export interface ${className}Props extends cdk.StackProps {
|
|
35
|
-
serviceName: string;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export class ${className} extends cdk.Stack {
|
|
39
|
-
constructor(scope: Construct, id: string, props: ${className}Props) {
|
|
40
|
-
super(scope, id, props);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
`,
|
|
44
|
-
});
|
|
45
|
-
this.tryRemoveFile("src/main.ts");
|
|
46
|
-
// Force-replace default entrypoint with our customized main.ts
|
|
47
|
-
new projen_1.TextFile(this, "src/main.ts", {
|
|
48
|
-
lines: [
|
|
49
|
-
"import * as cdk from 'aws-cdk-lib';",
|
|
50
|
-
`import { ${className} } from './${fileBase}';`,
|
|
51
|
-
"",
|
|
52
|
-
"const env = {",
|
|
53
|
-
" account: process.env.CDK_DEPLOY_ACCOUNT ?? process.env.CDK_DEFAULT_ACCOUNT,",
|
|
54
|
-
" region: process.env.CDK_DEPLOY_REGION ?? process.env.CDK_DEFAULT_REGION,",
|
|
55
|
-
"};",
|
|
56
|
-
"",
|
|
57
|
-
"const app = new cdk.App();",
|
|
58
|
-
"",
|
|
59
|
-
`const serviceName = (app.node.tryGetContext('serviceName') as string | undefined) ?? '${inferredName}';`,
|
|
60
|
-
"",
|
|
61
|
-
`new ${className}(app, serviceName, { env, serviceName });`,
|
|
62
|
-
"",
|
|
63
|
-
"app.synth();",
|
|
64
|
-
],
|
|
65
|
-
});
|
|
30
|
+
new files_1.SampleCode(this, className, fileBase, inferredName);
|
|
66
31
|
}
|
|
67
32
|
}
|
|
68
33
|
exports.Projalf = Projalf;
|
|
@@ -71,8 +36,8 @@ Projalf[_a] = { fqn: "projalf.Projalf", version: "0.0.0" };
|
|
|
71
36
|
function inferNameFromGit() {
|
|
72
37
|
try {
|
|
73
38
|
const remote = cp
|
|
74
|
-
.execSync(
|
|
75
|
-
stdio: [
|
|
39
|
+
.execSync('git config --get remote.origin.url', {
|
|
40
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
76
41
|
})
|
|
77
42
|
.toString()
|
|
78
43
|
.trim();
|
|
@@ -90,10 +55,10 @@ function inferNameFromCwd() {
|
|
|
90
55
|
}
|
|
91
56
|
function toPascalCase(input) {
|
|
92
57
|
return input
|
|
93
|
-
.replace(/[^a-zA-Z0-9]+/g,
|
|
94
|
-
.split(
|
|
58
|
+
.replace(/[^a-zA-Z0-9]+/g, ' ')
|
|
59
|
+
.split(' ')
|
|
95
60
|
.filter(Boolean)
|
|
96
61
|
.map((part) => part.charAt(0).toUpperCase() + part.slice(1).toLowerCase())
|
|
97
|
-
.join(
|
|
62
|
+
.join('');
|
|
98
63
|
}
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvamFsZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9Qcm9qYWxmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0NBQW9DO0FBQ3BDLDZCQUE2QjtBQUM3QixtQ0FBNEM7QUFDNUMsbUNBQXFDO0FBSXJDLE1BQWEsT0FBUSxTQUFRLGVBQU0sQ0FBQyxtQkFBbUI7SUFDckQsWUFBWSxPQUF1QjtRQUNqQyxNQUFNLFlBQVksR0FDaEIsT0FBTyxDQUFDLElBQUksSUFBSSxnQkFBZ0IsRUFBRSxJQUFJLGdCQUFnQixFQUFFLENBQUM7UUFDM0QsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUU1QyxNQUFNLGFBQWEsR0FBRyxFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxFQUF5QixDQUFDO1FBQzVFLElBQUksYUFBYSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM1QyxhQUFhLENBQUMsV0FBVyxHQUFHLFlBQVksQ0FBQztRQUMzQyxDQUFDO1FBRUQsS0FBSyxDQUFDO1lBQ0osR0FBRyxPQUFPO1lBQ1YsSUFBSSxFQUFFLFlBQVk7WUFDbEIsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLG9CQUFvQixJQUFJLE1BQU07WUFDNUQsY0FBYyxFQUNaLE9BQU8sQ0FBQyxjQUFjLElBQUksbUJBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHO1lBQzdELFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUk7WUFDdEMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksU0FBUztZQUMzQyxPQUFPLEVBQUUsYUFBYTtZQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFO1lBQ3hCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTyxJQUFJLEVBQUU7U0FDL0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxrQkFBVSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQzFELENBQUM7O0FBMUJILDBCQTJCQzs7O0FBRUQsU0FBUyxnQkFBZ0I7SUFDdkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsRUFBRTthQUNkLFFBQVEsQ0FBQyxvQ0FBb0MsRUFBRTtZQUM5QyxLQUFLLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQztTQUNwQyxDQUFDO2FBQ0QsUUFBUSxFQUFFO2FBQ1YsSUFBSSxFQUFFLENBQUM7UUFDVixJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQzlCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNyRCxPQUFPLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsZ0JBQWdCO0lBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsS0FBYTtJQUNqQyxPQUFPLEtBQUs7U0FDVCxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDO1NBQzlCLEtBQUssQ0FBQyxHQUFHLENBQUM7U0FDVixNQUFNLENBQUMsT0FBTyxDQUFDO1NBQ2YsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDekUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNwIGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGF3c2NkaywgamF2YXNjcmlwdCB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBTYW1wbGVDb2RlIH0gZnJvbSAnLi9maWxlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvamFsZk9wdGlvbnMgZXh0ZW5kcyBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcE9wdGlvbnMge31cblxuZXhwb3J0IGNsYXNzIFByb2phbGYgZXh0ZW5kcyBhd3NjZGsuQXdzQ2RrVHlwZVNjcmlwdEFwcCB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFByb2phbGZPcHRpb25zKSB7XG4gICAgY29uc3QgaW5mZXJyZWROYW1lID1cbiAgICAgIG9wdGlvbnMubmFtZSA/PyBpbmZlck5hbWVGcm9tR2l0KCkgPz8gaW5mZXJOYW1lRnJvbUN3ZCgpO1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9IHRvUGFzY2FsQ2FzZShpbmZlcnJlZE5hbWUpO1xuICAgIGNvbnN0IGZpbGVCYXNlID0gaW5mZXJyZWROYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBjb25zdCBtZXJnZWRDb250ZXh0ID0geyAuLi4ob3B0aW9ucy5jb250ZXh0ID8/IHt9KSB9IGFzIFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgaWYgKG1lcmdlZENvbnRleHQuc2VydmljZU5hbWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbWVyZ2VkQ29udGV4dC5zZXJ2aWNlTmFtZSA9IGluZmVycmVkTmFtZTtcbiAgICB9XG5cbiAgICBzdXBlcih7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbmFtZTogaW5mZXJyZWROYW1lLFxuICAgICAgZGVmYXVsdFJlbGVhc2VCcmFuY2g6IG9wdGlvbnMuZGVmYXVsdFJlbGVhc2VCcmFuY2ggPz8gJ21haW4nLFxuICAgICAgcGFja2FnZU1hbmFnZXI6XG4gICAgICAgIG9wdGlvbnMucGFja2FnZU1hbmFnZXIgPz8gamF2YXNjcmlwdC5Ob2RlUGFja2FnZU1hbmFnZXIuTlBNLFxuICAgICAgcHJvamVucmNUczogb3B0aW9ucy5wcm9qZW5yY1RzID8/IHRydWUsXG4gICAgICBjZGtWZXJzaW9uOiBvcHRpb25zLmNka1ZlcnNpb24gPz8gJzIuMTU2LjAnLFxuICAgICAgY29udGV4dDogbWVyZ2VkQ29udGV4dCxcbiAgICAgIGRlcHM6IG9wdGlvbnMuZGVwcyA/PyBbXSxcbiAgICAgIGRldkRlcHM6IG9wdGlvbnMuZGV2RGVwcyA/PyBbXSxcbiAgICB9KTtcblxuICAgIG5ldyBTYW1wbGVDb2RlKHRoaXMsIGNsYXNzTmFtZSwgZmlsZUJhc2UsIGluZmVycmVkTmFtZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5mZXJOYW1lRnJvbUdpdCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICB0cnkge1xuICAgIGNvbnN0IHJlbW90ZSA9IGNwXG4gICAgICAuZXhlY1N5bmMoJ2dpdCBjb25maWcgLS1nZXQgcmVtb3RlLm9yaWdpbi51cmwnLCB7XG4gICAgICAgIHN0ZGlvOiBbJ2lnbm9yZScsICdwaXBlJywgJ2lnbm9yZSddLFxuICAgICAgfSlcbiAgICAgIC50b1N0cmluZygpXG4gICAgICAudHJpbSgpO1xuICAgIGlmICghcmVtb3RlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IG1hdGNoID0gcmVtb3RlLm1hdGNoKC9cXC8oW15cXC9dKz8pKD86XFwuZ2l0KT8kLyk7XG4gICAgcmV0dXJuIG1hdGNoPy5bMV07XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gaW5mZXJOYW1lRnJvbUN3ZCgpOiBzdHJpbmcge1xuICByZXR1cm4gcGF0aC5iYXNlbmFtZShwcm9jZXNzLmN3ZCgpKTtcbn1cblxuZnVuY3Rpb24gdG9QYXNjYWxDYXNlKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gaW5wdXRcbiAgICAucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCAnICcpXG4gICAgLnNwbGl0KCcgJylcbiAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgLm1hcCgocGFydCkgPT4gcGFydC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHBhcnQuc2xpY2UoMSkudG9Mb3dlckNhc2UoKSlcbiAgICAuam9pbignJyk7XG59XG4iXX0=
|
package/lib/files.d.ts
ADDED
package/lib/files.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SampleCode = void 0;
|
|
4
|
+
const projen_1 = require("projen");
|
|
5
|
+
class SampleCode extends projen_1.Component {
|
|
6
|
+
constructor(appProject, className, fileBase, inferredName) {
|
|
7
|
+
super(appProject);
|
|
8
|
+
this.appProject = appProject;
|
|
9
|
+
this.appProject = appProject;
|
|
10
|
+
new projen_1.SampleFile(this.appProject, `src/${fileBase}.ts`, {
|
|
11
|
+
contents: `import * as cdk from 'aws-cdk-lib';
|
|
12
|
+
import { Construct } from 'constructs';
|
|
13
|
+
|
|
14
|
+
export interface ${className}Props extends cdk.StackProps {
|
|
15
|
+
serviceName: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export class ${className} extends cdk.Stack {
|
|
19
|
+
constructor(scope: Construct, id: string, props: ${className}Props) {
|
|
20
|
+
super(scope, id, props);
|
|
21
|
+
// Add your infra here...
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
`,
|
|
25
|
+
});
|
|
26
|
+
this.appProject.tryRemoveFile("src/main.ts");
|
|
27
|
+
new projen_1.SampleFile(this.appProject, "src/main.ts", {
|
|
28
|
+
contents: `
|
|
29
|
+
import * as cdk from 'aws-cdk-lib';
|
|
30
|
+
import { ${className} } from './${fileBase}';
|
|
31
|
+
const env = {
|
|
32
|
+
account: process.env.CDK_DEPLOY_ACCOUNT ?? process.env.CDK_DEFAULT_ACCOUNT,
|
|
33
|
+
region: process.env.CDK_DEPLOY_REGION ?? process.env.CDK_DEFAULT_REGION,
|
|
34
|
+
};
|
|
35
|
+
const app = new cdk.App();
|
|
36
|
+
const serviceName = (app.node.tryGetContext('serviceName') as string | undefined) ?? '${inferredName}';
|
|
37
|
+
new ${className}(app, serviceName, { env, serviceName });
|
|
38
|
+
app.synth();
|
|
39
|
+
`,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.SampleCode = SampleCode;
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZmlsZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQStDO0FBRy9DLE1BQWEsVUFBVyxTQUFRLGtCQUFTO0lBQ3ZDLFlBQ1UsVUFBbUIsRUFDM0IsU0FBaUIsRUFDakIsUUFBZ0IsRUFDaEIsWUFBb0I7UUFFcEIsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBTFYsZUFBVSxHQUFWLFVBQVUsQ0FBUztRQU0zQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUU3QixJQUFJLG1CQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLFFBQVEsS0FBSyxFQUFFO1lBQ3BELFFBQVEsRUFBRTs7O21CQUdHLFNBQVM7Ozs7ZUFJYixTQUFTO3FEQUM2QixTQUFTOzs7OztDQUs3RDtTQUNJLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdDLElBQUksbUJBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRTtZQUM3QyxRQUFRLEVBQUU7O2lCQUVDLFNBQVMsY0FBYyxRQUFROzs7Ozs7OEZBTThDLFlBQVk7WUFDOUYsU0FBUzs7T0FFZDtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTNDRCxnQ0EyQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFNhbXBsZUZpbGUgfSBmcm9tIFwicHJvamVuXCI7XG5pbXBvcnQgeyBQcm9qYWxmIH0gZnJvbSBcIi4vUHJvamFsZlwiO1xuXG5leHBvcnQgY2xhc3MgU2FtcGxlQ29kZSBleHRlbmRzIENvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXBwUHJvamVjdDogUHJvamFsZixcbiAgICBjbGFzc05hbWU6IHN0cmluZyxcbiAgICBmaWxlQmFzZTogc3RyaW5nLFxuICAgIGluZmVycmVkTmFtZTogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKGFwcFByb2plY3QpO1xuICAgIHRoaXMuYXBwUHJvamVjdCA9IGFwcFByb2plY3Q7XG5cbiAgICBuZXcgU2FtcGxlRmlsZSh0aGlzLmFwcFByb2plY3QsIGBzcmMvJHtmaWxlQmFzZX0udHNgLCB7XG4gICAgICBjb250ZW50czogYGltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSAke2NsYXNzTmFtZX1Qcm9wcyBleHRlbmRzIGNkay5TdGFja1Byb3BzIHtcbiAgc2VydmljZU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzICR7Y2xhc3NOYW1lfSBleHRlbmRzIGNkay5TdGFjayB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiAke2NsYXNzTmFtZX1Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIC8vIEFkZCB5b3VyIGluZnJhIGhlcmUuLi5cbiAgfVxufVxuYCxcbiAgICB9KTtcblxuICAgIHRoaXMuYXBwUHJvamVjdC50cnlSZW1vdmVGaWxlKFwic3JjL21haW4udHNcIik7XG4gICAgbmV3IFNhbXBsZUZpbGUodGhpcy5hcHBQcm9qZWN0LCBcInNyYy9tYWluLnRzXCIsIHtcbiAgICAgIGNvbnRlbnRzOiBgXG4gICAgICBpbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuICAgICAgaW1wb3J0IHsgJHtjbGFzc05hbWV9IH0gZnJvbSAnLi8ke2ZpbGVCYXNlfSc7XG4gICAgICBjb25zdCBlbnYgPSB7XG4gICAgICAgIGFjY291bnQ6IHByb2Nlc3MuZW52LkNES19ERVBMT1lfQUNDT1VOVCA/PyBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9BQ0NPVU5ULFxuICAgICAgICByZWdpb246IHByb2Nlc3MuZW52LkNES19ERVBMT1lfUkVHSU9OID8/IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTixcbiAgICAgIH07XG4gICAgICBjb25zdCBhcHAgPSBuZXcgY2RrLkFwcCgpO1xuICAgICAgY29uc3Qgc2VydmljZU5hbWUgPSAoYXBwLm5vZGUudHJ5R2V0Q29udGV4dCgnc2VydmljZU5hbWUnKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQpID8/ICcke2luZmVycmVkTmFtZX0nO1xuICAgICAgbmV3ICR7Y2xhc3NOYW1lfShhcHAsIHNlcnZpY2VOYW1lLCB7IGVudiwgc2VydmljZU5hbWUgfSk7XG4gICAgICBhcHAuc3ludGgoKTtcbiAgICAgIGAsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|