lerna-projen 0.0.211 → 0.0.214
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 +9 -9
- package/lib/cli.js +7 -8
- package/lib/index.js +19 -17
- package/package.json +1 -1
package/.jsii
CHANGED
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
},
|
|
107
107
|
"locationInModule": {
|
|
108
108
|
"filename": "src/index.ts",
|
|
109
|
-
"line":
|
|
109
|
+
"line": 38
|
|
110
110
|
},
|
|
111
111
|
"parameters": [
|
|
112
112
|
{
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
"kind": "class",
|
|
121
121
|
"locationInModule": {
|
|
122
122
|
"filename": "src/index.ts",
|
|
123
|
-
"line":
|
|
123
|
+
"line": 29
|
|
124
124
|
},
|
|
125
125
|
"methods": [
|
|
126
126
|
{
|
|
@@ -129,7 +129,7 @@
|
|
|
129
129
|
},
|
|
130
130
|
"locationInModule": {
|
|
131
131
|
"filename": "src/index.ts",
|
|
132
|
-
"line":
|
|
132
|
+
"line": 56
|
|
133
133
|
},
|
|
134
134
|
"name": "addSubProject",
|
|
135
135
|
"parameters": [
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
},
|
|
149
149
|
"locationInModule": {
|
|
150
150
|
"filename": "src/index.ts",
|
|
151
|
-
"line":
|
|
151
|
+
"line": 67
|
|
152
152
|
},
|
|
153
153
|
"name": "preSynthesize",
|
|
154
154
|
"overrides": "projen.Project"
|
|
@@ -163,7 +163,7 @@
|
|
|
163
163
|
"immutable": true,
|
|
164
164
|
"locationInModule": {
|
|
165
165
|
"filename": "src/index.ts",
|
|
166
|
-
"line":
|
|
166
|
+
"line": 35
|
|
167
167
|
},
|
|
168
168
|
"name": "docgen",
|
|
169
169
|
"type": {
|
|
@@ -177,7 +177,7 @@
|
|
|
177
177
|
"immutable": true,
|
|
178
178
|
"locationInModule": {
|
|
179
179
|
"filename": "src/index.ts",
|
|
180
|
-
"line":
|
|
180
|
+
"line": 34
|
|
181
181
|
},
|
|
182
182
|
"name": "docsDirectory",
|
|
183
183
|
"type": {
|
|
@@ -191,7 +191,7 @@
|
|
|
191
191
|
"immutable": true,
|
|
192
192
|
"locationInModule": {
|
|
193
193
|
"filename": "src/index.ts",
|
|
194
|
-
"line":
|
|
194
|
+
"line": 36
|
|
195
195
|
},
|
|
196
196
|
"name": "sinceLastRelease",
|
|
197
197
|
"type": {
|
|
@@ -294,6 +294,6 @@
|
|
|
294
294
|
"symbolId": "src/types:LernaProjectOptions"
|
|
295
295
|
}
|
|
296
296
|
},
|
|
297
|
-
"version": "0.0.
|
|
298
|
-
"fingerprint": "
|
|
297
|
+
"version": "0.0.214",
|
|
298
|
+
"fingerprint": "/sm7ZRttwjdf+Vc8G9fK+KrwDciw+QAjI1W4qBlKXk4="
|
|
299
299
|
}
|
package/lib/cli.js
CHANGED
|
@@ -3,20 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const commander_1 = require("commander");
|
|
4
4
|
const fs_extra_1 = require("fs-extra");
|
|
5
5
|
const program = new commander_1.Command();
|
|
6
|
-
const distFolder = './dist';
|
|
7
6
|
program
|
|
8
|
-
.command('clean-dist')
|
|
9
|
-
.action(async () => {
|
|
7
|
+
.command('clean-dist <distFolder>')
|
|
8
|
+
.action(async (distFolder) => {
|
|
10
9
|
fs_extra_1.emptyDirSync(distFolder);
|
|
11
10
|
});
|
|
12
11
|
program
|
|
13
|
-
.command('copy-dist <
|
|
14
|
-
.action(async (subProjectPath) => {
|
|
15
|
-
const subProjectDist = `./${subProjectPath}
|
|
12
|
+
.command('copy-dist <subProjectDist> <parentDist>')
|
|
13
|
+
.action(async (subProjectPath, parentDist) => {
|
|
14
|
+
const subProjectDist = `./${subProjectPath}`;
|
|
16
15
|
if (!fs_extra_1.existsSync(subProjectDist))
|
|
17
16
|
return;
|
|
18
17
|
const entries = fs_extra_1.readdirSync(subProjectDist);
|
|
19
|
-
await Promise.all(entries.map(f => fs_extra_1.copy(`${subProjectDist}/${f}`, `${
|
|
18
|
+
await Promise.all(entries.map(f => fs_extra_1.copy(`${subProjectDist}/${f}`, `${parentDist}/${f}`, { recursive: true, overwrite: true })));
|
|
20
19
|
});
|
|
21
20
|
program
|
|
22
21
|
.command('move-docs <parentDocsDirectory> <subProjectPath> <subProjectDocsDirectory>')
|
|
@@ -40,4 +39,4 @@ async function moveDocs(parentDocsDirectory, subProjectPath, subPath, isFile) {
|
|
|
40
39
|
}
|
|
41
40
|
}
|
|
42
41
|
program.parse(process.argv);
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUFpQztBQUNqQyx1Q0FBMEU7QUFFMUUsTUFBTSxPQUFPLEdBQUcsSUFBSSxtQkFBTyxFQUFFLENBQUE7QUFFN0IsT0FBTztLQUNKLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQztLQUNsQyxNQUFNLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFO0lBQzNCLHVCQUFZLENBQUMsVUFBVSxDQUFDLENBQUE7QUFDMUIsQ0FBQyxDQUFDLENBQUE7QUFFSixPQUFPO0tBQ0osT0FBTyxDQUFDLHlDQUF5QyxDQUFDO0tBQ2xELE1BQU0sQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxFQUFFO0lBQzNDLE1BQU0sY0FBYyxHQUFHLEtBQUssY0FBYyxFQUFFLENBQUE7SUFDNUMsSUFBSSxDQUFDLHFCQUFVLENBQUMsY0FBYyxDQUFDO1FBQzdCLE9BQU07SUFFUixNQUFNLE9BQU8sR0FBRyxzQkFBVyxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQzNDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsZUFBSSxDQUFDLEdBQUcsY0FBYyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsVUFBVSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDL0gsQ0FBQyxDQUFDLENBQUE7QUFHSixPQUFPO0tBQ0osT0FBTyxDQUFDLDRFQUE0RSxDQUFDO0tBQ3JGLE1BQU0sQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLEVBQUU7SUFDN0UsTUFBTSxRQUFRLENBQUMsbUJBQW1CLEVBQUUsY0FBYyxFQUFFLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxDQUFBO0lBQ25GLE1BQU0sUUFBUSxDQUFDLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUE7QUFDckUsQ0FBQyxDQUFDLENBQUE7QUFFSixLQUFLLFVBQVUsUUFBUSxDQUFDLG1CQUEyQixFQUFFLGNBQXNCLEVBQUUsT0FBZSxFQUFFLE1BQWU7SUFDM0csTUFBTSxjQUFjLEdBQUcsS0FBSyxjQUFjLElBQUksT0FBTyxFQUFFLENBQUE7SUFDdkQsSUFBSSxDQUFDLHFCQUFVLENBQUMsY0FBYyxDQUFDO1FBQzdCLE9BQU07SUFFUixNQUFNLGlCQUFpQixHQUFHLEtBQUssbUJBQW1CLElBQUksY0FBYyxFQUFFLENBQUE7SUFDdEUsdUJBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0lBQy9CLE1BQU0sV0FBVyxHQUFHLEVBQUMsU0FBUyxFQUFFLElBQUksRUFBQyxDQUFBO0lBQ3JDLElBQUksTUFBTSxFQUFFO1FBQ1YsTUFBTSxlQUFJLENBQUMsY0FBYyxFQUFFLEdBQUcsaUJBQWlCLElBQUksT0FBTyxFQUFFLEVBQUUsV0FBVyxDQUFDLENBQUE7S0FDM0U7U0FBTTtRQUNMLE1BQU0sT0FBTyxHQUFHLHNCQUFXLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDM0MsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxlQUFJLENBQUMsR0FBRyxjQUFjLElBQUksQ0FBQyxFQUFFLEVBQUUsR0FBRyxpQkFBaUIsSUFBSSxDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDOUc7QUFDSCxDQUFDO0FBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbW1hbmR9IGZyb20gJ2NvbW1hbmRlcidcbmltcG9ydCB7Y29weSwgcmVhZGRpclN5bmMsIGV4aXN0c1N5bmMsIG1vdmUsIGVtcHR5RGlyU3luY30gZnJvbSAnZnMtZXh0cmEnXG5cbmNvbnN0IHByb2dyYW0gPSBuZXcgQ29tbWFuZCgpXG5cbnByb2dyYW1cbiAgLmNvbW1hbmQoJ2NsZWFuLWRpc3QgPGRpc3RGb2xkZXI+JylcbiAgLmFjdGlvbihhc3luYyAoZGlzdEZvbGRlcikgPT4ge1xuICAgIGVtcHR5RGlyU3luYyhkaXN0Rm9sZGVyKVxuICB9KVxuXG5wcm9ncmFtXG4gIC5jb21tYW5kKCdjb3B5LWRpc3QgPHN1YlByb2plY3REaXN0PiA8cGFyZW50RGlzdD4nKVxuICAuYWN0aW9uKGFzeW5jIChzdWJQcm9qZWN0UGF0aCwgcGFyZW50RGlzdCkgPT4ge1xuICAgIGNvbnN0IHN1YlByb2plY3REaXN0ID0gYC4vJHtzdWJQcm9qZWN0UGF0aH1gXG4gICAgaWYgKCFleGlzdHNTeW5jKHN1YlByb2plY3REaXN0KSlcbiAgICAgIHJldHVyblxuXG4gICAgY29uc3QgZW50cmllcyA9IHJlYWRkaXJTeW5jKHN1YlByb2plY3REaXN0KVxuICAgIGF3YWl0IFByb21pc2UuYWxsKGVudHJpZXMubWFwKGYgPT4gY29weShgJHtzdWJQcm9qZWN0RGlzdH0vJHtmfWAsIGAke3BhcmVudERpc3R9LyR7Zn1gLCB7cmVjdXJzaXZlOiB0cnVlLCBvdmVyd3JpdGU6IHRydWV9KSkpXG4gIH0pXG5cblxucHJvZ3JhbVxuICAuY29tbWFuZCgnbW92ZS1kb2NzIDxwYXJlbnREb2NzRGlyZWN0b3J5PiA8c3ViUHJvamVjdFBhdGg+IDxzdWJQcm9qZWN0RG9jc0RpcmVjdG9yeT4nKVxuICAuYWN0aW9uKGFzeW5jIChwYXJlbnREb2NzRGlyZWN0b3J5LCBzdWJQcm9qZWN0UGF0aCwgc3ViUHJvamVjdERvY3NEaXJlY3RvcnkpID0+IHtcbiAgICBhd2FpdCBtb3ZlRG9jcyhwYXJlbnREb2NzRGlyZWN0b3J5LCBzdWJQcm9qZWN0UGF0aCwgc3ViUHJvamVjdERvY3NEaXJlY3RvcnksIGZhbHNlKVxuICAgIGF3YWl0IG1vdmVEb2NzKHBhcmVudERvY3NEaXJlY3RvcnksIHN1YlByb2plY3RQYXRoLCAnQVBJLm1kJywgdHJ1ZSlcbiAgfSlcblxuYXN5bmMgZnVuY3Rpb24gbW92ZURvY3MocGFyZW50RG9jc0RpcmVjdG9yeTogc3RyaW5nLCBzdWJQcm9qZWN0UGF0aDogc3RyaW5nLCBzdWJQYXRoOiBzdHJpbmcsIGlzRmlsZTogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCBzdWJQcm9qZWN0RG9jcyA9IGAuLyR7c3ViUHJvamVjdFBhdGh9LyR7c3ViUGF0aH1gXG4gIGlmICghZXhpc3RzU3luYyhzdWJQcm9qZWN0RG9jcykpXG4gICAgcmV0dXJuXG5cbiAgY29uc3QgZGVzdGluYXRpb25Gb2xkZXIgPSBgLi8ke3BhcmVudERvY3NEaXJlY3Rvcnl9LyR7c3ViUHJvamVjdFBhdGh9YFxuICBlbXB0eURpclN5bmMoZGVzdGluYXRpb25Gb2xkZXIpXG4gIGNvbnN0IG1vdmVPcHRpb25zID0ge292ZXJ3cml0ZTogdHJ1ZX1cbiAgaWYgKGlzRmlsZSkge1xuICAgIGF3YWl0IG1vdmUoc3ViUHJvamVjdERvY3MsIGAke2Rlc3RpbmF0aW9uRm9sZGVyfS8ke3N1YlBhdGh9YCwgbW92ZU9wdGlvbnMpXG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZW50cmllcyA9IHJlYWRkaXJTeW5jKHN1YlByb2plY3REb2NzKVxuICAgIGF3YWl0IFByb21pc2UuYWxsKGVudHJpZXMubWFwKGYgPT4gbW92ZShgJHtzdWJQcm9qZWN0RG9jc30vJHtmfWAsIGAke2Rlc3RpbmF0aW9uRm9sZGVyfS8ke2Z9YCwgbW92ZU9wdGlvbnMpKSlcbiAgfVxufVxuXG5wcm9ncmFtLnBhcnNlKHByb2Nlc3MuYXJndikiXX0=
|
package/lib/index.js
CHANGED
|
@@ -19,6 +19,10 @@ function getDocsDirectory(project) {
|
|
|
19
19
|
const result = Object.entries(project).find(([key]) => key === 'docsDirectory');
|
|
20
20
|
return result?.[1].replace(/\/$/, '');
|
|
21
21
|
}
|
|
22
|
+
function getArtifactsDirectory(project) {
|
|
23
|
+
const result = Object.entries(project).find(([key]) => key === 'artifactsDirectory');
|
|
24
|
+
return result?.[1];
|
|
25
|
+
}
|
|
22
26
|
const jsiiTaskPattern = /jsii-docgen -o (?<output>.+)$/i;
|
|
23
27
|
function extractJsiiDocsOutput(tasks) {
|
|
24
28
|
const jsiiDocStep = tasks.tryFind('docgen')?.steps.find(step => jsiiTaskPattern.test(step.exec ?? ''));
|
|
@@ -30,18 +34,13 @@ function extractJsiiDocsOutput(tasks) {
|
|
|
30
34
|
const lockedTaskNames = ['build', 'upgrade', 'upgrade-projen'];
|
|
31
35
|
class LernaProject extends projen_1.javascript.NodeProject {
|
|
32
36
|
constructor(options) {
|
|
33
|
-
const devDeps = [
|
|
34
|
-
'lerna@5',
|
|
35
|
-
'lerna-projen',
|
|
36
|
-
];
|
|
37
|
-
if (options.projenrcTs)
|
|
38
|
-
devDeps.push('ts-node', 'typescript');
|
|
39
37
|
super({
|
|
40
38
|
...options,
|
|
41
39
|
jest: false,
|
|
42
|
-
devDeps,
|
|
43
40
|
});
|
|
44
|
-
this.addDevDeps('lerna-projen');
|
|
41
|
+
this.addDevDeps('lerna-projen', 'lerna@5');
|
|
42
|
+
if (options.projenrcTs)
|
|
43
|
+
this.addDevDeps('ts-node', 'typescript');
|
|
45
44
|
this.subProjects = {};
|
|
46
45
|
this.docsDirectory = options.docsDirectory ?? 'docs';
|
|
47
46
|
this.docgen = options.docgen ?? false;
|
|
@@ -65,7 +64,7 @@ class LernaProject extends projen_1.javascript.NodeProject {
|
|
|
65
64
|
defaultTask.exec(projenCommand);
|
|
66
65
|
this.packageTask.reset(`mkdir -p ${this.artifactsJavascriptDirectory}`);
|
|
67
66
|
this.appendLernaCommands();
|
|
68
|
-
this.preCompileTask.exec(
|
|
67
|
+
this.preCompileTask.exec(`lerna-projen clean-dist ${this.artifactsDirectory}`);
|
|
69
68
|
this.files.push(new projen_1.JsonFile(this, 'lerna.json', {
|
|
70
69
|
obj: {
|
|
71
70
|
packages: Object.keys(this.subProjects),
|
|
@@ -79,7 +78,7 @@ class LernaProject extends projen_1.javascript.NodeProject {
|
|
|
79
78
|
const upgradeTaskName = 'upgrade';
|
|
80
79
|
const postUpgradeTaskName = 'post-upgrade';
|
|
81
80
|
const postUpgradeTask = this.tasks.tryFind(postUpgradeTaskName);
|
|
82
|
-
postUpgradeTask?.prependExec(this.getLernaCommand(upgradeTaskName));
|
|
81
|
+
postUpgradeTask?.prependExec(this.getLernaCommand(upgradeTaskName, false));
|
|
83
82
|
postUpgradeTask?.exec('npx projen');
|
|
84
83
|
postUpgradeTask?.exec(this.getLernaCommand(postUpgradeTaskName));
|
|
85
84
|
this.tasks.all
|
|
@@ -89,9 +88,9 @@ class LernaProject extends projen_1.javascript.NodeProject {
|
|
|
89
88
|
task.exec(this.getLernaCommand(task.name));
|
|
90
89
|
});
|
|
91
90
|
}
|
|
92
|
-
getLernaCommand(taskName) {
|
|
91
|
+
getLernaCommand(taskName, useSinceFlag = true) {
|
|
93
92
|
const mainCommand = `lerna run ${taskName} --stream`;
|
|
94
|
-
const postCommand = this.sinceLastRelease ? ' --since $(git describe --abbrev=0 --tags --match "v*")' : '';
|
|
93
|
+
const postCommand = useSinceFlag && this.sinceLastRelease ? ' --since $(git describe --abbrev=0 --tags --match "v*")' : '';
|
|
95
94
|
return `${mainCommand}${postCommand}`;
|
|
96
95
|
}
|
|
97
96
|
updateSubProjects() {
|
|
@@ -104,12 +103,15 @@ class LernaProject extends projen_1.javascript.NodeProject {
|
|
|
104
103
|
const packageAllTask = subProject.tasks.tryFind('package-all');
|
|
105
104
|
if (packageAllTask)
|
|
106
105
|
subProject.packageTask.spawn(packageAllTask);
|
|
107
|
-
|
|
106
|
+
const artifactsDirectory = getArtifactsDirectory(subProject);
|
|
107
|
+
this.packageTask.exec(`lerna-projen copy-dist ${subProjectPath}/${artifactsDirectory} ${this.artifactsDirectory}`);
|
|
108
108
|
subProject.defaultTask?.reset();
|
|
109
109
|
const bumpEnvs = {
|
|
110
110
|
OUTFILE: 'package.json',
|
|
111
|
-
CHANGELOG:
|
|
112
|
-
BUMPFILE:
|
|
111
|
+
CHANGELOG: `${artifactsDirectory}/changelog.md`,
|
|
112
|
+
BUMPFILE: `${artifactsDirectory}/version.txt`,
|
|
113
|
+
RELEASETAG: `${artifactsDirectory}/releasetag.txt`,
|
|
114
|
+
RELEASE_TAG_PREFIX: '',
|
|
113
115
|
};
|
|
114
116
|
if (bumpTask) {
|
|
115
117
|
const subBumpTask = subProject.addTask(bumpTask.name, {
|
|
@@ -168,5 +170,5 @@ class LernaProject extends projen_1.javascript.NodeProject {
|
|
|
168
170
|
}
|
|
169
171
|
exports.LernaProject = LernaProject;
|
|
170
172
|
_a = JSII_RTTI_SYMBOL_1;
|
|
171
|
-
LernaProject[_a] = { fqn: "lerna-projen.LernaProject", version: "0.0.
|
|
172
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQXVFO0FBR3ZFLDBDQUF1QjtBQUV2QixTQUFTLGdCQUFnQixDQUFDLE9BQWdCO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLGVBQWUsQ0FBQyxDQUFBO0lBQy9FLE9BQU8sTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUN2QyxDQUFDO0FBRUQsTUFBTSxlQUFlLEdBQUcsZ0NBQWdDLENBQUE7QUFFeEQsU0FBUyxxQkFBcUIsQ0FBQyxLQUFZO0lBQ3pDLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3RHLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSTtRQUNuQyxPQUFNO0lBRVIsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUE7SUFDckQsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQTtBQUM5QixDQUFDO0FBRUQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixDQUFDLENBQUE7QUFFOUQsTUFBYSxZQUFhLFNBQVEsbUJBQVUsQ0FBQyxXQUFXO0lBU3RELFlBQVksT0FBNEI7UUFDdEMsTUFBTSxP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SSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3hCLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDdEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ3ZELFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDdEIsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLENBQUE7WUFDcEMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNwQixTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ3ZCLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDMUIsQ0FBQyxDQUFDLENBQUE7UUFDRixTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3hCLFNBQVMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDMUIsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUN6QixTQUFTLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDbEIsQ0FBQzs7QUEvS0gsb0NBZ0xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtKc29uRmlsZSwgamF2YXNjcmlwdCwgUHJvamVjdCwgVGFza3MsIFNvdXJjZUNvZGV9IGZyb20gJ3Byb2plbidcbmltcG9ydCB7TGVybmFQcm9qZWN0T3B0aW9uc30gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0ICogZnJvbSAnLi90eXBlcydcblxuZnVuY3Rpb24gZ2V0RG9jc0RpcmVjdG9yeShwcm9qZWN0OiBQcm9qZWN0KSB7XG4gIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5lbnRyaWVzKHByb2plY3QpLmZpbmQoKFtrZXldKSA9PiBrZXkgPT09ICdkb2NzRGlyZWN0b3J5JylcbiAgcmV0dXJuIHJlc3VsdD8uWzFdLnJlcGxhY2UoL1xcLyQvLCAnJylcbn1cblxuY29uc3QganNpaVRhc2tQYXR0ZXJuID0gL2pzaWktZG9jZ2VuIC1vICg/PG91dHB1dD4uKykkL2lcblxuZnVuY3Rpb24gZXh0cmFjdEpzaWlEb2NzT3V0cHV0KHRhc2tzOiBUYXNrcyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGpzaWlEb2NTdGVwID0gdGFza3MudHJ5RmluZCgnZG9jZ2VuJyk/LnN0ZXBzLmZpbmQoc3RlcCA9PiBqc2lpVGFza1BhdHRlcm4udGVzdChzdGVwLmV4ZWMgPz8gJycpKVxuICBpZiAoIWpzaWlEb2NTdGVwIHx8ICFqc2lpRG9jU3RlcC5leGVjKVxuICAgIHJldHVyblxuXG4gIGNvbnN0IG1hdGNoID0ganNpaURvY1N0ZXAuZXhlYy5tYXRjaChqc2lpVGFza1BhdHRlcm4pXG4gIHJldHVybiBtYXRjaD8uZ3JvdXBzPy5vdXRwdXRcbn1cblxuY29uc3QgbG9ja2VkVGFza05hbWVzID0gWydidWlsZCcsICd1cGdyYWRlJywgJ3VwZ3JhZGUtcHJvamVuJ11cblxuZXhwb3J0IGNsYXNzIExlcm5hUHJvamVjdCBleHRlbmRzIGphdmFzY3JpcHQuTm9kZVByb2plY3Qge1xuXG4gIHByaXZhdGUgc3ViUHJvamVjdHM6IFJlY29yZDxzdHJpbmcsIFByb2plY3Q+XG4gIHByaXZhdGUgcHJvamVucmNUczogYm9vbGVhblxuXG4gIHJlYWRvbmx5IGRvY3NEaXJlY3Rvcnk6IHN0cmluZ1xuICByZWFkb25seSBkb2NnZW46IGJvb2xlYW5cbiAgcmVhZG9ubHkgc2luY2VMYXN0UmVsZWFzZTogYm9vbGVhblxuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IExlcm5hUHJvamVjdE9wdGlvbnMpIHtcbiAgICBjb25zdCBkZXZEZXBzID0gW1xuICAgICAgJ2xlcm5hQDUnLFxuICAgICAgJ2xlcm5hLXByb2plbicsXG4gICAgXVxuXG4gICAgaWYgKG9wdGlvbnMucHJvamVucmNUcylcbiAgICAgIGRldkRlcHMucHVzaCgndHMtbm9kZScsICd0eXBlc2NyaXB0JylcblxuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBqZXN0OiBmYWxzZSxcbiAgICAgIGRldkRlcHMsXG4gICAgfSlcblxuICAgIHRoaXMuYWRkRGV2RGVwcygnbGVybmEtcHJvamVuJylcblxuICAgIHRoaXMuc3ViUHJvamVjdHMgPSB7fVxuICAgIHRoaXMuZG9jc0RpcmVjdG9yeSA9IG9wdGlvbnMuZG9jc0RpcmVjdG9yeSA/PyAnZG9jcydcbiAgICB0aGlzLmRvY2dlbiA9IG9wdGlvbnMuZG9jZ2VuID8/IGZhbHNlXG4gICAgdGhpcy5zaW5jZUxhc3RSZWxlYXNlID0gb3B0aW9ucy5zaW5jZUxhc3RSZWxlYXNlID8/IGZhbHNlXG4gICAgdGhpcy5wcm9qZW5yY1RzID0gb3B0aW9ucy5wcm9qZW5yY1RzID8/IGZhbHNlXG4gIH1cblxuICBhZGRTdWJQcm9qZWN0KHN1YlByb2plY3Q6IFByb2plY3QpIHtcbiAgICBjb25zdCB7b3V0ZGlyfSA9IHN1YlByb2plY3RcblxuICAgIGlmICghb3V0ZGlyIHx8ICFvdXRkaXIuaW5jbHVkZXModGhpcy5vdXRkaXIpKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBIHN1YiBwcm9qZWN0IG91dCBkaXIgc2hvdWxkIGV4aXN0cyB3aXRoaW4gdGhlIGxlcm5hIHBhY2thZ2UnKVxuXG4gICAgY29uc3QgcmVsYXRpdmVPdXREaXIgPSBvdXRkaXIucmVwbGFjZShgJHt0aGlzLm91dGRpcn0vYCwgJycpXG5cbiAgICB0aGlzLnN1YlByb2plY3RzW3JlbGF0aXZlT3V0RGlyXSA9IHN1YlByb2plY3RcbiAgfVxuXG4gIHByZVN5bnRoZXNpemUoKSB7XG4gICAgc3VwZXIucHJlU3ludGhlc2l6ZSgpXG4gICAgY29uc3QgcHJvamVuQ29tbWFuZCA9IHRoaXMucHJvamVucmNUcyA/ICd0cy1ub2RlIC0tc2tpcC1wcm9qZWN0IC5wcm9qZW5yYy50cycgOiAnbm9kZSAucHJvamVucmMuanMnXG4gICAgY29uc3Qge2RlZmF1bHRUYXNrfSA9IHRoaXNcbiAgICBpZiAoIWRlZmF1bHRUYXNrKVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZmluZCBkZWZhdWx0IHRhc2snKVxuICAgIGRlZmF1bHRUYXNrLnJlc2V0KCducG0gaSBsZXJuYS1wcm9qZW4gLS1wYWNrYWdlLWxvY2s9ZmFsc2UnKVxuICAgIGRlZmF1bHRUYXNrLmV4ZWMocHJvamVuQ29tbWFuZClcbiAgICB0aGlzLnBhY2thZ2VUYXNrLnJlc2V0KGBta2RpciAtcCAke3RoaXMuYXJ0aWZhY3RzSmF2YXNjcmlwdERpcmVjdG9yeX1gKVxuXG4gICAgdGhpcy5hcHBlbmRMZXJuYUNvbW1hbmRzKClcblxuICAgIHRoaXMucHJlQ29tcGlsZVRhc2suZXhlYygnbGVybmEtcHJvamVuIGNsZWFuLWRpc3QnKVxuXG4gICAgdGhpcy5maWxlcy5wdXNoKG5ldyBKc29uRmlsZSh0aGlzLCAnbGVybmEuanNvbicsIHtcbiAgICAgIG9iajoge1xuICAgICAgICBwYWNrYWdlczogT2JqZWN0LmtleXModGhpcy5zdWJQcm9qZWN0cyksXG4gICAgICAgIHZlcnNpb246ICc0LjAuMCcsXG4gICAgICB9LFxuICAgIH0pKVxuXG4gICAgdGhpcy51cGRhdGVTdWJQcm9qZWN0cygpXG4gICAgdGhpcy5hZGREb2N1bWVudHNJbmRleCgpXG4gIH1cblxuICBwcml2YXRlIGFwcGVuZExlcm5hQ29tbWFuZHMoKSB7XG4gICAgY29uc3QgdXBncmFkZVRhc2tOYW1lID0gJ3VwZ3JhZGUnXG4gICAgY29uc3QgcG9zdFVwZ3JhZGVUYXNrTmFtZSA9ICdwb3N0LXVwZ3JhZGUnXG4gICAgY29uc3QgcG9zdFVwZ3JhZGVUYXNrID0gdGhpcy50YXNrcy50cnlGaW5kKHBvc3RVcGdyYWRlVGFza05hbWUpXG4gICAgcG9zdFVwZ3JhZGVUYXNrPy5wcmVwZW5kRXhlYyh0aGlzLmdldExlcm5hQ29tbWFuZCh1cGdyYWRlVGFza05hbWUpKVxuICAgIHBvc3RVcGdyYWRlVGFzaz8uZXhlYygnbnB4IHByb2plbicpXG4gICAgcG9zdFVwZ3JhZGVUYXNrPy5leGVjKHRoaXMuZ2V0TGVybmFDb21tYW5kKHBvc3RVcGdyYWRlVGFza05hbWUpKVxuXG4gICAgdGhpcy50YXNrcy5hbGxcbiAgICAgIC5mb3JFYWNoKHRhc2sgPT4ge1xuICAgICAgICBpZiAobG9ja2VkVGFza05hbWVzLmluY2x1ZGVzKHRhc2submFtZSkgfHwgdGFzay5uYW1lID09PSBwb3N0VXBncmFkZVRhc2tOYW1lKVxuICAgICAgICAgIHJldHVyblxuXG4gICAgICAgIHRhc2suZXhlYyh0aGlzLmdldExlcm5hQ29tbWFuZCh0YXNrLm5hbWUpKVxuICAgICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGVybmFDb21tYW5kKHRhc2tOYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtYWluQ29tbWFuZCA9IGBsZXJuYSBydW4gJHt0YXNrTmFtZX0gLS1zdHJlYW1gXG4gICAgY29uc3QgcG9zdENvbW1hbmQgPSB0aGlzLnNpbmNlTGFzdFJlbGVhc2UgPyAnIC0tc2luY2UgJChnaXQgZGVzY3JpYmUgLS1hYmJyZXY9MCAtLXRhZ3MgLS1tYXRjaCBcInYqXCIpJyA6ICcnXG4gICAgcmV0dXJuIGAke21haW5Db21tYW5kfSR7cG9zdENvbW1hbmR9YFxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVTdWJQcm9qZWN0cygpIHtcbiAgICBjb25zdCBidW1wVGFzayA9IHRoaXMudGFza3MudHJ5RmluZCgnYnVtcCcpXG4gICAgY29uc3QgdW5idW1wVGFzayA9IHRoaXMudGFza3MudHJ5RmluZCgndW5idW1wJylcblxuICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuc3ViUHJvamVjdHMpLmZvckVhY2goKFtzdWJQcm9qZWN0UGF0aCwgc3ViUHJvamVjdF0pID0+IHtcbiAgICAgIGNvbnN0IHN1YlByb2plY3REb2NzRGlyZWN0b3J5ID0gZ2V0RG9jc0RpcmVjdG9yeShzdWJQcm9qZWN0KVxuICAgICAgaWYgKHRoaXMuZG9jZ2VuICYmIHN1YlByb2plY3REb2NzRGlyZWN0b3J5KVxuICAgICAgICB0aGlzLnBvc3RDb21waWxlVGFzay5leGVjKGBsZXJuYS1wcm9qZW4gbW92ZS1kb2NzICR7dGhpcy5kb2NzRGlyZWN0b3J5fSAke3N1YlByb2plY3RQYXRofSAke3N1YlByb2plY3REb2NzRGlyZWN0b3J5fWApXG5cbiAgICAgIGNvbnN0IHBhY2thZ2VBbGxUYXNrID0gc3ViUHJvamVjdC50YXNrcy50cnlGaW5kKCdwYWNrYWdlLWFsbCcpXG5cbiAgICAgIGlmIChwYWNrYWdlQWxsVGFzaylcbiAgICAgICAgc3ViUHJvamVjdC5wYWNrYWdlVGFzay5zcGF3bihwYWNrYWdlQWxsVGFzaylcblxuICAgICAgdGhpcy5wYWNrYWdlVGFzay5leGVjKGBsZXJuYS1wcm9qZW4gY29weS1kaXN0ICR7c3ViUHJvamVjdFBhdGh9YClcblxuICAgICAgc3ViUHJvamVjdC5kZWZhdWx0VGFzaz8ucmVzZXQoKVxuXG4gICAgICBjb25zdCBidW1wRW52cyA9IHtcbiAgICAgICAgT1VURklMRTogJ3BhY2thZ2UuanNvbicsXG4gICAgICAgIENIQU5HRUxPRzogJ2Rpc3QvY2hhbmdlbG9nLm1kJyxcbiAgICAgICAgQlVNUEZJTEU6ICdkaXN0L3ZlcnNpb24udHh0JyxcbiAgICAgIH1cblxuICAgICAgaWYgKGJ1bXBUYXNrKSB7XG4gICAgICAgIGNvbnN0IHN1YkJ1bXBUYXNrID0gc3ViUHJvamVjdC5hZGRUYXNrKGJ1bXBUYXNrLm5hbWUsIHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYnVtcFRhc2suZGVzY3JpcHRpb24sXG4gICAgICAgICAgY29uZGl0aW9uOiBidW1wVGFzay5jb25kaXRpb24sXG4gICAgICAgICAgZW52OiBidW1wRW52cyxcbiAgICAgICAgfSlcbiAgICAgICAgc3ViQnVtcFRhc2suYnVpbHRpbigncmVsZWFzZS9idW1wLXZlcnNpb24nKVxuICAgICAgfVxuXG4gICAgICBpZiAodW5idW1wVGFzaykge1xuICAgICAgICBjb25zdCBzdWJCdW1wVGFzayA9IHN1YlByb2plY3QuYWRkVGFzayh1bmJ1bXBUYXNrLm5hbWUsIHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdW5idW1wVGFzay5kZXNjcmlwdGlvbixcbiAgICAgICAgICBjb25kaXRpb246IHVuYnVtcFRhc2suY29uZGl0aW9uLFxuICAgICAgICAgIGVudjogYnVtcEVudnMsXG4gICAgICAgIH0pXG4gICAgICAgIHN1YkJ1bXBUYXNrLmJ1aWx0aW4oJ3JlbGVhc2UvcmVzZXQtdmVyc2lvbicpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgYWRkRG9jdW1lbnRzSW5kZXgoKSB7XG4gICAgaWYgKCF0aGlzLmRvY2dlbilcbiAgICAgIHJldHVyblxuXG4gICAgY29uc3Qgc3ViUHJvamVjdHNEb2NzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge31cblxuICAgIGNvbnN0IGluZGV4TWFya2Rvd24gPSBuZXcgU291cmNlQ29kZSh0aGlzLCBgJHt0aGlzLmRvY3NEaXJlY3Rvcnl9L2luZGV4Lm1kYClcblxuICAgIE9iamVjdC5lbnRyaWVzKHRoaXMuc3ViUHJvamVjdHMpLmZvckVhY2goKFtzdWJQcm9qZWN0UGF0aCwgc3ViUHJvamVjdF0pID0+IHtcbiAgICAgIGNvbnN0IHN1YlByb2plY3REb2NzRGlyZWN0b3J5ID0gZ2V0RG9jc0RpcmVjdG9yeShzdWJQcm9qZWN0KVxuICAgICAgaWYgKCFzdWJQcm9qZWN0RG9jc0RpcmVjdG9yeSlcbiAgICAgICAgcmV0dXJuXG5cbiAgICAgIGNvbnN0IGpzaWlEb2NzT3V0cHV0ID0gZXh0cmFjdEpzaWlEb2NzT3V0cHV0KHN1YlByb2plY3QudGFza3MpXG4gICAgICBpZiAoanNpaURvY3NPdXRwdXQpIHtcbiAgICAgICAgY29uc3QgcGF0aCA9IGAke3N1YlByb2plY3RQYXRofS8ke2pzaWlEb2NzT3V0cHV0fWBcbiAgICAgICAgaW5kZXhNYXJrZG93bi5saW5lKGAtICMjIFske3N1YlByb2plY3QubmFtZX1dKCR7cGF0aH0pYClcbiAgICAgICAgc3ViUHJvamVjdHNEb2NzW3N1YlByb2plY3QubmFtZV0gPSBwYXRoXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdWJQcm9qZWN0c0RvY3Nbc3ViUHJvamVjdC5uYW1lXSA9IGAke3N1YlByb2plY3RQYXRofS9pbmRleC5odG1sYFxuICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCBpbmRleEh0bWwgPSBuZXcgU291cmNlQ29kZSh0aGlzLCBgJHt0aGlzLmRvY3NEaXJlY3Rvcnl9L2luZGV4Lmh0bWxgKVxuICAgIGluZGV4SHRtbC5saW5lKCc8IURPQ1RZUEUgaHRtbD4nKVxuICAgIGluZGV4SHRtbC5saW5lKCc8aHRtbD4nKVxuICAgIGluZGV4SHRtbC5vcGVuKCc8Ym9keT4nKVxuICAgIGluZGV4SHRtbC5vcGVuKCc8dWw+JylcbiAgICBPYmplY3QuZW50cmllcyhzdWJQcm9qZWN0c0RvY3MpLmZvckVhY2goKFtuYW1lLCBwYXRoXSkgPT4ge1xuICAgICAgaW5kZXhIdG1sLm9wZW4oJzxsaT4nKVxuICAgICAgaW5kZXhIdG1sLm9wZW4oYDxhIGhyZWY9XCIke3BhdGh9XCI+YClcbiAgICAgIGluZGV4SHRtbC5saW5lKG5hbWUpXG4gICAgICBpbmRleEh0bWwuY2xvc2UoJzwvYT4nKVxuICAgICAgaW5kZXhIdG1sLmNsb3NlKCc8L2xpPicpXG4gICAgfSlcbiAgICBpbmRleEh0bWwuY2xvc2UoJzwvdWw+JylcbiAgICBpbmRleEh0bWwuY2xvc2UoJzwvYm9keT4nKVxuICAgIGluZGV4SHRtbC5saW5lKCc8L2h0bWw+JylcbiAgICBpbmRleEh0bWwubGluZSgpXG4gIH1cbn0iXX0=
|
|
173
|
+
LernaProject[_a] = { fqn: "lerna-projen.LernaProject", version: "0.0.214" };
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQXVFO0FBR3ZFLDBDQUF1QjtBQUV2QixTQUFTLGdCQUFnQixDQUFDLE9BQWdCO0lBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLGVBQWUsQ0FBQyxDQUFBO0lBQy9FLE9BQU8sTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtBQUN2QyxDQUFDO0FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxPQUFnQjtJQUM3QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxvQkFBb0IsQ0FBQyxDQUFBO0lBQ3BGLE9BQU8sTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDcEIsQ0FBQztBQUVELE1BQU0sZUFBZSxHQUFHLGdDQUFnQyxDQUFBO0FBRXhELFNBQVMscUJBQXFCLENBQUMsS0FBWTtJQUN6QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUN0RyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7UUFDbkMsT0FBTTtJQUVSLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENB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QixTQUFTLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDbEIsQ0FBQzs7QUE3S0gsb0NBOEtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtKc29uRmlsZSwgamF2YXNjcmlwdCwgUHJvamVjdCwgVGFza3MsIFNvdXJjZUNvZGV9IGZyb20gJ3Byb2plbidcbmltcG9ydCB7TGVybmFQcm9qZWN0T3B0aW9uc30gZnJvbSAnLi90eXBlcydcblxuZXhwb3J0ICogZnJvbSAnLi90eXBlcydcblxuZnVuY3Rpb24gZ2V0RG9jc0RpcmVjdG9yeShwcm9qZWN0OiBQcm9qZWN0KSB7XG4gIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5lbnRyaWVzKHByb2plY3QpLmZpbmQoKFtrZXldKSA9PiBrZXkgPT09ICdkb2NzRGlyZWN0b3J5JylcbiAgcmV0dXJuIHJlc3VsdD8uWzFdLnJlcGxhY2UoL1xcLyQvLCAnJylcbn1cblxuZnVuY3Rpb24gZ2V0QXJ0aWZhY3RzRGlyZWN0b3J5KHByb2plY3Q6IFByb2plY3QpIHtcbiAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmVudHJpZXMocHJvamVjdCkuZmluZCgoW2tleV0pID0+IGtleSA9PT0gJ2FydGlmYWN0c0RpcmVjdG9yeScpXG4gIHJldHVybiByZXN1bHQ/LlsxXVxufVxuXG5jb25zdCBqc2lpVGFza1BhdHRlcm4gPSAvanNpaS1kb2NnZW4gLW8gKD88b3V0cHV0Pi4rKSQvaVxuXG5mdW5jdGlvbiBleHRyYWN0SnNpaURvY3NPdXRwdXQodGFza3M6IFRhc2tzKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QganNpaURvY1N0ZXAgPSB0YXNrcy50cnlGaW5kKCdkb2NnZW4nKT8uc3RlcHMuZmluZChzdGVwID0+IGpzaWlUYXNrUGF0dGVybi50ZXN0KHN0ZXAuZXhlYyA/PyAnJykpXG4gIGlmICghanNpaURvY1N0ZXAgfHwgIWpzaWlEb2NTdGVwLmV4ZWMpXG4gICAgcmV0dXJuXG5cbiAgY29uc3QgbWF0Y2ggPSBqc2lpRG9jU3RlcC5leGVjLm1hdGNoKGpzaWlUYXNrUGF0dGVybilcbiAgcmV0dXJuIG1hdGNoPy5ncm91cHM/Lm91dHB1dFxufVxuXG5jb25zdCBsb2NrZWRUYXNrTmFtZXMgPSBbJ2J1aWxkJywgJ3VwZ3JhZGUnLCAndXBncmFkZS1wcm9qZW4nXVxuXG5leHBvcnQgY2xhc3MgTGVybmFQcm9qZWN0IGV4dGVuZHMgamF2YXNjcmlwdC5Ob2RlUHJvamVjdCB7XG5cbiAgcHJpdmF0ZSBzdWJQcm9qZWN0czogUmVjb3JkPHN0cmluZywgUHJvamVjdD5cbiAgcHJpdmF0ZSBwcm9qZW5yY1RzOiBib29sZWFuXG5cbiAgcmVhZG9ubHkgZG9jc0RpcmVjdG9yeTogc3RyaW5nXG4gIHJlYWRvbmx5IGRvY2dlbjogYm9vbGVhblxuICByZWFkb25seSBzaW5jZUxhc3RSZWxlYXNlOiBib29sZWFuXG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogTGVybmFQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgICBqZXN0OiBmYWxzZSxcbiAgICB9KVxuXG4gICAgdGhpcy5hZGREZXZEZXBzKCdsZXJuYS1wcm9qZW4nLCAnbGVybmFANScpXG5cbiAgICBpZiAob3B0aW9ucy5wcm9qZW5yY1RzKVxuICAgICAgdGhpcy5hZGREZXZEZXBzKCd0cy1ub2RlJywgJ3R5cGVzY3JpcHQnKVxuXG4gICAgdGhpcy5zdWJQcm9qZWN0cyA9IHt9XG4gICAgdGhpcy5kb2NzRGlyZWN0b3J5ID0gb3B0aW9ucy5kb2NzRGlyZWN0b3J5ID8/ICdkb2NzJ1xuICAgIHRoaXMuZG9jZ2VuID0gb3B0aW9ucy5kb2NnZW4gPz8gZmFsc2VcbiAgICB0aGlzLnNpbmNlTGFzdFJlbGVhc2UgPSBvcHRpb25zLnNpbmNlTGFzdFJlbGVhc2UgPz8gZmFsc2VcbiAgICB0aGlzLnByb2plbnJjVHMgPSBvcHRpb25zLnByb2plbnJjVHMgPz8gZmFsc2VcbiAgfVxuXG4gIGFkZFN1YlByb2plY3Qoc3ViUHJvamVjdDogUHJvamVjdCkge1xuICAgIGNvbnN0IHtvdXRkaXJ9ID0gc3ViUHJvamVjdFxuXG4gICAgaWYgKCFvdXRkaXIgfHwgIW91dGRpci5pbmNsdWRlcyh0aGlzLm91dGRpcikpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Egc3ViIHByb2plY3Qgb3V0IGRpciBzaG91bGQgZXhpc3RzIHdpdGhpbiB0aGUgbGVybmEgcGFja2FnZScpXG5cbiAgICBjb25zdCByZWxhdGl2ZU91dERpciA9IG91dGRpci5yZXBsYWNlKGAke3RoaXMub3V0ZGlyfS9gLCAnJylcblxuICAgIHRoaXMuc3ViUHJvamVjdHNbcmVsYXRpdmVPdXREaXJdID0gc3ViUHJvamVjdFxuICB9XG5cbiAgcHJlU3ludGhlc2l6ZSgpIHtcbiAgICBzdXBlci5wcmVTeW50aGVzaXplKClcbiAgICBjb25zdCBwcm9qZW5Db21tYW5kID0gdGhpcy5wcm9qZW5yY1RzID8gJ3RzLW5vZGUgLS1za2lwLXByb2plY3QgLnByb2plbnJjLnRzJyA6ICdub2RlIC5wcm9qZW5yYy5qcydcbiAgICBjb25zdCB7ZGVmYXVsdFRhc2t9ID0gdGhpc1xuICAgIGlmICghZGVmYXVsdFRhc2spXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGRlZmF1bHQgdGFzaycpXG4gICAgZGVmYXVsdFRhc2sucmVzZXQoJ25wbSBpIGxlcm5hLXByb2plbiAtLXBhY2thZ2UtbG9jaz1mYWxzZScpXG4gICAgZGVmYXVsdFRhc2suZXhlYyhwcm9qZW5Db21tYW5kKVxuICAgIHRoaXMucGFja2FnZVRhc2sucmVzZXQoYG1rZGlyIC1wICR7dGhpcy5hcnRpZmFjdHNKYXZhc2NyaXB0RGlyZWN0b3J5fWApXG5cbiAgICB0aGlzLmFwcGVuZExlcm5hQ29tbWFuZHMoKVxuXG4gICAgdGhpcy5wcmVDb21waWxlVGFzay5leGVjKGBsZXJuYS1wcm9qZW4gY2xlYW4tZGlzdCAke3RoaXMuYXJ0aWZhY3RzRGlyZWN0b3J5fWApXG5cbiAgICB0aGlzLmZpbGVzLnB1c2gobmV3IEpzb25GaWxlKHRoaXMsICdsZXJuYS5qc29uJywge1xuICAgICAgb2JqOiB7XG4gICAgICAgIHBhY2thZ2VzOiBPYmplY3Qua2V5cyh0aGlzLnN1YlByb2plY3RzKSxcbiAgICAgICAgdmVyc2lvbjogJzQuMC4wJyxcbiAgICAgIH0sXG4gICAgfSkpXG5cbiAgICB0aGlzLnVwZGF0ZVN1YlByb2plY3RzKClcbiAgICB0aGlzLmFkZERvY3VtZW50c0luZGV4KClcbiAgfVxuXG4gIHByaXZhdGUgYXBwZW5kTGVybmFDb21tYW5kcygpIHtcbiAgICBjb25zdCB1cGdyYWRlVGFza05hbWUgPSAndXBncmFkZSdcbiAgICBjb25zdCBwb3N0VXBncmFkZVRhc2tOYW1lID0gJ3Bvc3QtdXBncmFkZSdcbiAgICBjb25zdCBwb3N0VXBncmFkZVRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQocG9zdFVwZ3JhZGVUYXNrTmFtZSlcbiAgICBwb3N0VXBncmFkZVRhc2s/LnByZXBlbmRFeGVjKHRoaXMuZ2V0TGVybmFDb21tYW5kKHVwZ3JhZGVUYXNrTmFtZSwgZmFsc2UpKVxuICAgIHBvc3RVcGdyYWRlVGFzaz8uZXhlYygnbnB4IHByb2plbicpXG4gICAgcG9zdFVwZ3JhZGVUYXNrPy5leGVjKHRoaXMuZ2V0TGVybmFDb21tYW5kKHBvc3RVcGdyYWRlVGFza05hbWUpKVxuXG4gICAgdGhpcy50YXNrcy5hbGxcbiAgICAgIC5mb3JFYWNoKHRhc2sgPT4ge1xuICAgICAgICBpZiAobG9ja2VkVGFza05hbWVzLmluY2x1ZGVzKHRhc2submFtZSkgfHwgdGFzay5uYW1lID09PSBwb3N0VXBncmFkZVRhc2tOYW1lKVxuICAgICAgICAgIHJldHVyblxuXG4gICAgICAgIHRhc2suZXhlYyh0aGlzLmdldExlcm5hQ29tbWFuZCh0YXNrLm5hbWUpKVxuICAgICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TGVybmFDb21tYW5kKHRhc2tOYW1lOiBzdHJpbmcsIHVzZVNpbmNlRmxhZyA9IHRydWUpIHtcbiAgICBjb25zdCBtYWluQ29tbWFuZCA9IGBsZXJuYSBydW4gJHt0YXNrTmFtZX0gLS1zdHJlYW1gXG4gICAgY29uc3QgcG9zdENvbW1hbmQgPSB1c2VTaW5jZUZsYWcgJiYgdGhpcy5zaW5jZUxhc3RSZWxlYXNlID8gJyAtLXNpbmNlICQoZ2l0IGRlc2NyaWJlIC0tYWJicmV2PTAgLS10YWdzIC0tbWF0Y2ggXCJ2KlwiKScgOiAnJ1xuICAgIHJldHVybiBgJHttYWluQ29tbWFuZH0ke3Bvc3RDb21tYW5kfWBcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3ViUHJvamVjdHMoKSB7XG4gICAgY29uc3QgYnVtcFRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ2J1bXAnKVxuICAgIGNvbnN0IHVuYnVtcFRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ3VuYnVtcCcpXG5cbiAgICBPYmplY3QuZW50cmllcyh0aGlzLnN1YlByb2plY3RzKS5mb3JFYWNoKChbc3ViUHJvamVjdFBhdGgsIHN1YlByb2plY3RdKSA9PiB7XG4gICAgICBjb25zdCBzdWJQcm9qZWN0RG9jc0RpcmVjdG9yeSA9IGdldERvY3NEaXJlY3Rvcnkoc3ViUHJvamVjdClcbiAgICAgIGlmICh0aGlzLmRvY2dlbiAmJiBzdWJQcm9qZWN0RG9jc0RpcmVjdG9yeSlcbiAgICAgICAgdGhpcy5wb3N0Q29tcGlsZVRhc2suZXhlYyhgbGVybmEtcHJvamVuIG1vdmUtZG9jcyAke3RoaXMuZG9jc0RpcmVjdG9yeX0gJHtzdWJQcm9qZWN0UGF0aH0gJHtzdWJQcm9qZWN0RG9jc0RpcmVjdG9yeX1gKVxuXG4gICAgICBjb25zdCBwYWNrYWdlQWxsVGFzayA9IHN1YlByb2plY3QudGFza3MudHJ5RmluZCgncGFja2FnZS1hbGwnKVxuXG4gICAgICBpZiAocGFja2FnZUFsbFRhc2spXG4gICAgICAgIHN1YlByb2plY3QucGFja2FnZVRhc2suc3Bhd24ocGFja2FnZUFsbFRhc2spXG5cbiAgICAgIGNvbnN0IGFydGlmYWN0c0RpcmVjdG9yeSA9IGdldEFydGlmYWN0c0RpcmVjdG9yeShzdWJQcm9qZWN0KVxuXG4gICAgICB0aGlzLnBhY2thZ2VUYXNrLmV4ZWMoYGxlcm5hLXByb2plbiBjb3B5LWRpc3QgJHtzdWJQcm9qZWN0UGF0aH0vJHthcnRpZmFjdHNEaXJlY3Rvcnl9ICR7dGhpcy5hcnRpZmFjdHNEaXJlY3Rvcnl9YClcblxuICAgICAgc3ViUHJvamVjdC5kZWZhdWx0VGFzaz8ucmVzZXQoKVxuXG4gICAgICBjb25zdCBidW1wRW52cyA9IHtcbiAgICAgICAgT1VURklMRTogJ3BhY2thZ2UuanNvbicsXG4gICAgICAgIENIQU5HRUxPRzogYCR7YXJ0aWZhY3RzRGlyZWN0b3J5fS9jaGFuZ2Vsb2cubWRgLFxuICAgICAgICBCVU1QRklMRTogYCR7YXJ0aWZhY3RzRGlyZWN0b3J5fS92ZXJzaW9uLnR4dGAsXG4gICAgICAgIFJFTEVBU0VUQUc6IGAke2FydGlmYWN0c0RpcmVjdG9yeX0vcmVsZWFzZXRhZy50eHRgLFxuICAgICAgICBSRUxFQVNFX1RBR19QUkVGSVg6ICcnLFxuICAgICAgfVxuXG4gICAgICBpZiAoYnVtcFRhc2spIHtcbiAgICAgICAgY29uc3Qgc3ViQnVtcFRhc2sgPSBzdWJQcm9qZWN0LmFkZFRhc2soYnVtcFRhc2submFtZSwge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiBidW1wVGFzay5kZXNjcmlwdGlvbixcbiAgICAgICAgICBjb25kaXRpb246IGJ1bXBUYXNrLmNvbmRpdGlvbixcbiAgICAgICAgICBlbnY6IGJ1bXBFbnZzLFxuICAgICAgICB9KVxuICAgICAgICBzdWJCdW1wVGFzay5idWlsdGluKCdyZWxlYXNlL2J1bXAtdmVyc2lvbicpXG4gICAgICB9XG5cbiAgICAgIGlmICh1bmJ1bXBUYXNrKSB7XG4gICAgICAgIGNvbnN0IHN1YkJ1bXBUYXNrID0gc3ViUHJvamVjdC5hZGRUYXNrKHVuYnVtcFRhc2submFtZSwge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiB1bmJ1bXBUYXNrLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIGNvbmRpdGlvbjogdW5idW1wVGFzay5jb25kaXRpb24sXG4gICAgICAgICAgZW52OiBidW1wRW52cyxcbiAgICAgICAgfSlcbiAgICAgICAgc3ViQnVtcFRhc2suYnVpbHRpbigncmVsZWFzZS9yZXNldC12ZXJzaW9uJylcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBhZGREb2N1bWVudHNJbmRleCgpIHtcbiAgICBpZiAoIXRoaXMuZG9jZ2VuKVxuICAgICAgcmV0dXJuXG5cbiAgICBjb25zdCBzdWJQcm9qZWN0c0RvY3M6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fVxuXG4gICAgY29uc3QgaW5kZXhNYXJrZG93biA9IG5ldyBTb3VyY2VDb2RlKHRoaXMsIGAke3RoaXMuZG9jc0RpcmVjdG9yeX0vaW5kZXgubWRgKVxuXG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5zdWJQcm9qZWN0cykuZm9yRWFjaCgoW3N1YlByb2plY3RQYXRoLCBzdWJQcm9qZWN0XSkgPT4ge1xuICAgICAgY29uc3Qgc3ViUHJvamVjdERvY3NEaXJlY3RvcnkgPSBnZXREb2NzRGlyZWN0b3J5KHN1YlByb2plY3QpXG4gICAgICBpZiAoIXN1YlByb2plY3REb2NzRGlyZWN0b3J5KVxuICAgICAgICByZXR1cm5cblxuICAgICAgY29uc3QganNpaURvY3NPdXRwdXQgPSBleHRyYWN0SnNpaURvY3NPdXRwdXQoc3ViUHJvamVjdC50YXNrcylcbiAgICAgIGlmIChqc2lpRG9jc091dHB1dCkge1xuICAgICAgICBjb25zdCBwYXRoID0gYCR7c3ViUHJvamVjdFBhdGh9LyR7anNpaURvY3NPdXRwdXR9YFxuICAgICAgICBpbmRleE1hcmtkb3duLmxpbmUoYC0gIyMgWyR7c3ViUHJvamVjdC5uYW1lfV0oJHtwYXRofSlgKVxuICAgICAgICBzdWJQcm9qZWN0c0RvY3Nbc3ViUHJvamVjdC5uYW1lXSA9IHBhdGhcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1YlByb2plY3RzRG9jc1tzdWJQcm9qZWN0Lm5hbWVdID0gYCR7c3ViUHJvamVjdFBhdGh9L2luZGV4Lmh0bWxgXG4gICAgICB9XG4gICAgfSlcblxuICAgIGNvbnN0IGluZGV4SHRtbCA9IG5ldyBTb3VyY2VDb2RlKHRoaXMsIGAke3RoaXMuZG9jc0RpcmVjdG9yeX0vaW5kZXguaHRtbGApXG4gICAgaW5kZXhIdG1sLmxpbmUoJzwhRE9DVFlQRSBodG1sPicpXG4gICAgaW5kZXhIdG1sLmxpbmUoJzxodG1sPicpXG4gICAgaW5kZXhIdG1sLm9wZW4oJzxib2R5PicpXG4gICAgaW5kZXhIdG1sLm9wZW4oJzx1bD4nKVxuICAgIE9iamVjdC5lbnRyaWVzKHN1YlByb2plY3RzRG9jcykuZm9yRWFjaCgoW25hbWUsIHBhdGhdKSA9PiB7XG4gICAgICBpbmRleEh0bWwub3BlbignPGxpPicpXG4gICAgICBpbmRleEh0bWwub3BlbihgPGEgaHJlZj1cIiR7cGF0aH1cIj5gKVxuICAgICAgaW5kZXhIdG1sLmxpbmUobmFtZSlcbiAgICAgIGluZGV4SHRtbC5jbG9zZSgnPC9hPicpXG4gICAgICBpbmRleEh0bWwuY2xvc2UoJzwvbGk+JylcbiAgICB9KVxuICAgIGluZGV4SHRtbC5jbG9zZSgnPC91bD4nKVxuICAgIGluZGV4SHRtbC5jbG9zZSgnPC9ib2R5PicpXG4gICAgaW5kZXhIdG1sLmxpbmUoJzwvaHRtbD4nKVxuICAgIGluZGV4SHRtbC5saW5lKClcbiAgfVxufSJdfQ==
|