cdklabs-projen-project-types 0.3.18 → 0.3.20
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 +949 -714
- package/API.md +449 -7
- package/lib/cdk-construct-library-options.d.ts +22 -1
- package/lib/cdk-construct-library-options.js +1 -1
- package/lib/cdk-jsii-options.d.ts +22 -1
- package/lib/cdk-jsii-options.js +1 -1
- package/lib/cdk.js +2 -2
- package/lib/cdklabs.js +3 -3
- package/lib/jsii.js +1 -1
- package/lib/rosetta.js +1 -1
- package/lib/yarn/monorepo-options.d.ts +21 -0
- package/lib/yarn/monorepo-options.js +1 -1
- package/lib/yarn/monorepo-release-options.d.ts +6 -0
- package/lib/yarn/monorepo-release-options.js +1 -1
- package/lib/yarn/monorepo-release.d.ts +1 -0
- package/lib/yarn/monorepo-release.js +10 -8
- package/lib/yarn/monorepo.js +30 -16
- package/lib/yarn/typescript-workspace-options.d.ts +22 -1
- package/lib/yarn/typescript-workspace-options.js +1 -1
- package/lib/yarn/typescript-workspace-release.js +1 -1
- package/lib/yarn/typescript-workspace.js +5 -4
- package/package.json +2 -2
|
@@ -33,6 +33,7 @@ class MonorepoRelease extends projen_1.Component {
|
|
|
33
33
|
this.github = gh;
|
|
34
34
|
this.releaseTrigger = options.releaseTrigger ?? projen_1.release.ReleaseTrigger.continuous();
|
|
35
35
|
this.buildWithNx = options.buildWithNx ?? false;
|
|
36
|
+
this.wsRun = options.yarnBerry ? 'yarn workspaces foreach --all --exclude . run' : 'yarn workspaces run';
|
|
36
37
|
}
|
|
37
38
|
workspaceRelease(project) {
|
|
38
39
|
const ret = this.workspaceReleases.get(project);
|
|
@@ -167,16 +168,16 @@ class MonorepoRelease extends projen_1.Component {
|
|
|
167
168
|
});
|
|
168
169
|
// Unroll out the 'release' task, and do all the phases for each individual package. We need to 'bump' at the same
|
|
169
170
|
// time so that the dependency versions in all 'package.json's are correct.
|
|
170
|
-
this.releaseTask.exec(
|
|
171
|
-
this.releaseTask.exec(
|
|
171
|
+
this.releaseTask.exec(`${this.wsRun} shx rm -rf dist`);
|
|
172
|
+
this.releaseTask.exec(`${this.wsRun} bump`);
|
|
172
173
|
if (this.buildWithNx) {
|
|
173
174
|
this.releaseTask.exec('nx run-many -t build');
|
|
174
175
|
this.releaseTask.env('NX_SKIP_NX_CACHE', 'true');
|
|
175
176
|
}
|
|
176
177
|
else {
|
|
177
|
-
this.releaseTask.exec(
|
|
178
|
+
this.releaseTask.exec(`${this.wsRun} build`);
|
|
178
179
|
}
|
|
179
|
-
this.releaseTask.exec(
|
|
180
|
+
this.releaseTask.exec(`${this.wsRun} unbump`);
|
|
180
181
|
// anti-tamper check (fails if there were changes to committed files)
|
|
181
182
|
// this will identify any non-committed files generated during build (e.g. test snapshots)
|
|
182
183
|
this.releaseTask.exec(projen_1.release.Release.ANTI_TAMPER_CMD);
|
|
@@ -200,14 +201,15 @@ class MonorepoRelease extends projen_1.Component {
|
|
|
200
201
|
const preBuildSteps = [
|
|
201
202
|
{
|
|
202
203
|
name: 'Setup Node.js',
|
|
203
|
-
uses: 'actions/setup-node@
|
|
204
|
+
uses: 'actions/setup-node@v6',
|
|
204
205
|
with: {
|
|
205
206
|
'node-version': this.project.nodeVersion ?? 'lts/*',
|
|
207
|
+
'package-manager-cache': false,
|
|
206
208
|
},
|
|
207
209
|
},
|
|
208
210
|
{
|
|
209
211
|
name: 'Install dependencies',
|
|
210
|
-
run: 'yarn install --check-files --frozen-lockfile',
|
|
212
|
+
run: this.options.yarnBerry ? 'yarn install --immutable' : 'yarn install --check-files --frozen-lockfile',
|
|
211
213
|
},
|
|
212
214
|
...(this.options.releaseWorkflowSetupSteps ?? []),
|
|
213
215
|
];
|
|
@@ -283,7 +285,7 @@ class MonorepoRelease extends projen_1.Component {
|
|
|
283
285
|
}
|
|
284
286
|
exports.MonorepoRelease = MonorepoRelease;
|
|
285
287
|
_a = JSII_RTTI_SYMBOL_1;
|
|
286
|
-
MonorepoRelease[_a] = { fqn: "cdklabs-projen-project-types.yarn.MonorepoRelease", version: "0.3.
|
|
288
|
+
MonorepoRelease[_a] = { fqn: "cdklabs-projen-project-types.yarn.MonorepoRelease", version: "0.3.20" };
|
|
287
289
|
function slugify(x) {
|
|
288
290
|
return x.replace(/[^a-zA-Z0-9_-]/g, '-').replace(/^[0-9-]+/, '');
|
|
289
291
|
}
|
|
@@ -296,4 +298,4 @@ function publishProjectOutputId(project) {
|
|
|
296
298
|
function shouldPublishProjectStepId(project) {
|
|
297
299
|
return `check-${publishProjectOutputId(project)}`;
|
|
298
300
|
}
|
|
299
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8tcmVsZWFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy95YXJuL21vbm9yZXBvLXJlbGVhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsbUNBQW9GO0FBQ3BGLDJEQUEwRjtBQUkxRixpRkFBMkY7QUFFM0YsZ0NBQWdDO0FBQ2hDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUNoQyxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQztBQUN2QyxNQUFNLG9CQUFvQixHQUFHLGVBQWUsQ0FBQztBQUU3QyxNQUFhLGVBQWdCLFNBQVEsa0JBQVM7SUFDNUM7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFnQjtRQUMvQixNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBWSxFQUF3QixFQUFFLENBQUMsQ0FBQyxZQUFZLGVBQWUsQ0FBQztRQUN2RyxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDNUQsQ0FBQztJQW1CRCxZQUFZLE9BQWdCLEVBQW1CLFVBQWtDLEVBQUU7UUFDakYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRDhCLFlBQU8sR0FBUCxPQUFPLENBQTZCO1FBYmxFLHNCQUFpQixHQUFHLElBQUksS0FBSyxFQU8xQyxDQUFDO1FBSVksc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQXlDLENBQUM7UUFLcEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQztRQUMvQyxNQUFNLEVBQUUsR0FBRyxlQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxJQUFJ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LFNBQVMsc0JBQXNCLENBQUMsT0FBZ0I7SUFDOUMsT0FBTyxXQUFXLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUM1QyxDQUFDO0FBRUQsU0FBUywwQkFBMEIsQ0FBQyxPQUFnQjtJQUNsRCxPQUFPLFNBQVMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztBQUNwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGdpdGh1YiwgcmVsZWFzZSBhcyBwcm9qZW5SZWxlYXNlLCBDb21wb25lbnQsIFByb2plY3QsIFRhc2sgfSBmcm9tICdwcm9qZW4nO1xuaW1wb3J0IHsgQlVJTERfQVJUSUZBQ1RfTkFNRSwgUEVSTUlTU0lPTl9CQUNLVVBfRklMRSB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUb29scyB9IGZyb20gJ3Byb2plbi9saWIvZ2l0aHViL3dvcmtmbG93cy1tb2RlbCc7XG5pbXBvcnQgeyBNb25vcmVwb1JlbGVhc2VPcHRpb25zIH0gZnJvbSAnLi9tb25vcmVwby1yZWxlYXNlLW9wdGlvbnMnO1xuaW1wb3J0IHsgVHlwZVNjcmlwdFdvcmtzcGFjZSB9IGZyb20gJy4vdHlwZXNjcmlwdC13b3Jrc3BhY2UnO1xuaW1wb3J0IHsgV29ya3NwYWNlUmVsZWFzZSwgV29ya3NwYWNlUmVsZWFzZU9wdGlvbnMgfSBmcm9tICcuL3R5cGVzY3JpcHQtd29ya3NwYWNlLXJlbGVhc2UnO1xuXG4vLyBjb3BpZWQgZnJvbSBwcm9qZW4vcmVsZWFzZS50c1xuY29uc3QgUkVMRUFTRV9KT0JJRCA9ICdyZWxlYXNlJztcbmNvbnN0IEdJVF9SRU1PVEVfU1RFUElEID0gJ2dpdF9yZW1vdGUnO1xuY29uc3QgTEFURVNUX0NPTU1JVF9PVVRQVVQgPSAnbGF0ZXN0X2NvbW1pdCc7XG5cbmV4cG9ydCBjbGFzcyBNb25vcmVwb1JlbGVhc2UgZXh0ZW5kcyBDb21wb25lbnQge1xuICAvKipcbiAgICogUmV0dXJucyB0aGUgYE1vbm9yZXBvUmVsZWFzZVdvcmtmbG93YCBjb21wb25lbnQgb2YgYSBwcm9qZWN0IG9yIGB1bmRlZmluZWRgIGlmIHRoZSBwcm9qZWN0XG4gICAqIGRvZXMgbm90IGhhdmUgYSBNb25vcmVwb1JlbGVhc2VXb3JrZmxvdyBjb21wb25lbnQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHByb2plY3Q6IFByb2plY3QpOiBNb25vcmVwb1JlbGVhc2UgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGlzTW9ub3JlcG9SZWxlYXNlV29ya2Zsb3cgPSAoYzogQ29tcG9uZW50KTogYyBpcyBNb25vcmVwb1JlbGVhc2UgPT4gYyBpbnN0YW5jZW9mIE1vbm9yZXBvUmVsZWFzZTtcbiAgICByZXR1cm4gcHJvamVjdC5jb21wb25lbnRzLmZpbmQoaXNNb25vcmVwb1JlbGVhc2VXb3JrZmxvdyk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGJyYW5jaE5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBnaXRodWI6IGdpdGh1Yi5HaXRIdWI7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVsZWFzZVRyaWdnZXI6IHByb2plblJlbGVhc2UuUmVsZWFzZVRyaWdnZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVpbGRXaXRoTng6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgcGFja2FnZXNUb1JlbGVhc2UgPSBuZXcgQXJyYXk8e1xuICAgIHJlYWRvbmx5IHdvcmtzcGFjZURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHJlbGVhc2U6IHtcbiAgICAgIHJlYWRvbmx5IHdvcmtzcGFjZTogVHlwZVNjcmlwdFdvcmtzcGFjZTtcbiAgICAgIHJlYWRvbmx5IHB1Ymxpc2hlcjogcHJvamVuUmVsZWFzZS5QdWJsaXNoZXI7XG4gICAgICByZWFkb25seSBvcHRpb25zOiBQYXJ0aWFsPHByb2plblJlbGVhc2UuQnJhbmNoT3B0aW9ucz47XG4gICAgfTtcbiAgfT4oKTtcblxuICBwcml2YXRlIHdvcmtmbG93PzogZ2l0aHViLlRhc2tXb3JrZmxvdztcbiAgcHJpdmF0ZSByZWxlYXNlVGFzaz86IFRhc2s7XG4gIHByaXZhdGUgcmVhZG9ubHkgd29ya3NwYWNlUmVsZWFzZXMgPSBuZXcgTWFwPFR5cGVTY3JpcHRXb3Jrc3BhY2UsIFdvcmtzcGFjZVJlbGVhc2U+KCk7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBNb25vcmVwb1JlbGVhc2VPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuYnJhbmNoTmFtZSA9IG9wdGlvbnMuYnJhbmNoTmFtZSA/PyAnbWFpbic7XG4gICAgY29uc3QgZ2ggPSBnaXRodWIuR2l0SHViLm9mKHByb2plY3QpO1xuICAgIGlmICghZ2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvamVjdCBpcyBub3QgYSBHaXRIdWIgcHJvamVjdDogJHtwcm9qZWN0fWApO1xuICAgIH1cbiAgICB0aGlzLmdpdGh1YiA9IGdoO1xuICAgIHRoaXMucmVsZWFzZVRyaWdnZXIgPSBvcHRpb25zLnJlbGVhc2VUcmlnZ2VyID8/IHByb2plblJlbGVhc2UuUmVsZWFzZVRyaWdnZXIuY29udGludW91cygpO1xuICAgIHRoaXMuYnVpbGRXaXRoTnggPSBvcHRpb25zLmJ1aWxkV2l0aE54ID8/IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHdvcmtzcGFjZVJlbGVhc2UocHJvamVjdDogVHlwZVNjcmlwdFdvcmtzcGFjZSkge1xuICAgIGNvbnN0IHJldCA9IHRoaXMud29ya3NwYWNlUmVsZWFzZXMuZ2V0KHByb2plY3QpO1xuICAgIGlmICghcmV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHJlbGVhc2UgZm9yIHByb2plY3QgJHtwcm9qZWN0Lm5hbWV9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwdWJsaWMgYWRkV29ya3NwYWNlKHByb2plY3Q6IFR5cGVTY3JpcHRXb3Jrc3BhY2UsIG9wdGlvbnM6IFdvcmtzcGFjZVJlbGVhc2VPcHRpb25zKSB7XG4gICAgY29uc3Qgd29ya3NwYWNlUmVsZWFzZSA9IG5ldyBXb3Jrc3BhY2VSZWxlYXNlKHByb2plY3QsIHtcbiAgICAgIHB1Ymxpc2hUb05wbTogdGhpcy5vcHRpb25zLnB1Ymxpc2hUb05wbSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICAvLyBNYWtlIHRoZXNlIHB1YmxpY2x5IGFjY2Vzc2libGVcbiAgICB0aGlzLndvcmtzcGFjZVJlbGVhc2VzLnNldChwcm9qZWN0LCB3b3Jrc3BhY2VSZWxlYXNlKTtcblxuICAgIGlmICghb3B0aW9ucy5wcml2YXRlICYmIHdvcmtzcGFjZVJlbGVhc2UucHVibGlzaGVyKSB7XG4gICAgICB0aGlzLm9idGFpblJlbGVhc2VUYXNrKCk7XG5cbiAgICAgIHRoaXMucGFja2FnZXNUb1JlbGVhc2UucHVzaCh7XG4gICAgICAgIHdvcmtzcGFjZURpcmVjdG9yeTogcHJvamVjdC53b3Jrc3BhY2VEaXJlY3RvcnksXG4gICAgICAgIHJlbGVhc2U6IHtcbiAgICAgICAgICB3b3Jrc3BhY2U6IHdvcmtzcGFjZVJlbGVhc2Uud29ya3NwYWNlLFxuICAgICAgICAgIHB1Ymxpc2hlcjogd29ya3NwYWNlUmVsZWFzZS5wdWJsaXNoZXIsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgLy8gZW5mb3JjZWQgb3B0aW9uc1xuICAgICAgICAgICAgd29ya2Zsb3dOYW1lOiB0aGlzLm9wdGlvbnMucmVsZWFzZVdvcmtmbG93TmFtZSxcbiAgICAgICAgICAgIHRhZ1ByZWZpeDogYCR7cHJvamVjdC5uYW1lfUBgLFxuXG4gICAgICAgICAgICAvLyBvcHRpb25zIHRoYXQgbWF5IGJlIG92ZXJyaWRlIGxvY2FsbHlcbiAgICAgICAgICAgIG1ham9yVmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uQnJhbmNoT3B0aW9ucy5tYWpvclZlcnNpb24gPz8gdGhpcy5vcHRpb25zLm1ham9yVmVyc2lvbixcbiAgICAgICAgICAgIG1pbk1ham9yVmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uQnJhbmNoT3B0aW9ucy5taW5NYWpvclZlcnNpb24gPz8gdGhpcy5vcHRpb25zLm1pbk1ham9yVmVyc2lvbixcbiAgICAgICAgICAgIHByZXJlbGVhc2U6IG9wdGlvbnMudmVyc2lvbkJyYW5jaE9wdGlvbnMucHJlcmVsZWFzZSA/PyB0aGlzLm9wdGlvbnMucHJlcmVsZWFzZSxcbiAgICAgICAgICAgIG5wbURpc3RUYWc6IG9wdGlvbnMubnBtRGlzdFRhZyA/PyB0aGlzLm9wdGlvbnMubnBtRGlzdFRhZyxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiBvcHRpb25zLmVudmlyb25tZW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcHJlU3ludGhlc2l6ZSgpIHtcbiAgICBpZiAoIXRoaXMucmVsZWFzZVRhc2spIHtcbiAgICAgIC8vIFdlIGRpZG4ndCBlbmQgdXAgYWRkaW5nIGFueSBwYWNrYWdlc1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY3JlYXRlUHVibGlzaGluZ01lY2hhbmlzbSgpO1xuICAgIHRoaXMucmVuZGVyUGFja2FnZVVwbG9hZHMoKTtcbiAgICB0aGlzLnJlbmRlclB1Ymxpc2hKb2JzKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclBhY2thZ2VVcGxvYWRzKCkge1xuICAgIGNvbnN0IG5vTmV3Q29tbWl0cyA9IGBcXCR7eyBzdGVwcy4ke0dJVF9SRU1PVEVfU1RFUElEfS5vdXRwdXRzLiR7TEFURVNUX0NPTU1JVF9PVVRQVVR9ID09IGdpdGh1Yi5zaGEgfX1gO1xuXG4gICAgZm9yIChjb25zdCB7IHdvcmtzcGFjZURpcmVjdG9yeSwgcmVsZWFzZSB9IG9mIHRoaXMucGFja2FnZXNUb1JlbGVhc2UpIHtcbiAgICAgIGNvbnN0IGpvYiA9IHRoaXMud29ya2Zsb3c/LmdldEpvYihSRUxFQVNFX0pPQklEKSBhcyBnaXRodWIud29ya2Zsb3dzLkpvYiB8IHVuZGVmaW5lZDtcbiAgICAgIGpvYj8uc3RlcHMucHVzaChcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IGAke3JlbGVhc2Uud29ya3NwYWNlLm5hbWV9OiBCYWNrdXAgYXJ0aWZhY3QgcGVybWlzc2lvbnNgLFxuICAgICAgICAgIGlmOiBub05ld0NvbW1pdHMsXG4gICAgICAgICAgY29udGludWVPbkVycm9yOiB0cnVlLFxuICAgICAgICAgIHJ1bjogYGNkICR7cmVsZWFzZS53b3Jrc3BhY2UuYXJ0aWZhY3RzRGlyZWN0b3J5fSAmJiBnZXRmYWNsIC1SIC4gPiAke1BFUk1JU1NJT05fQkFDS1VQX0ZJTEV9YCxcbiAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3Jrc3BhY2VEaXJlY3RvcnksXG4gICAgICAgIH0sXG4gICAgICAgIGdpdGh1Yi5Xb3JrZmxvd1N0ZXBzLnVwbG9hZEFydGlmYWN0KHtcbiAgICAgICAgICBuYW1lOiBgJHtyZWxlYXNlLndvcmtzcGFjZS5uYW1lfTogVXBsb2FkIGFydGlmYWN0YCxcbiAgICAgICAgICBpZjogbm9OZXdDb21taXRzLFxuICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgIC8vIEV2ZXJ5IGFydGlmYWN0IG11c3QgaGF2ZSBhIHVuaXF1ZSBuYW1lXG4gICAgICAgICAgICBuYW1lOiBidWlsZEFydGlmYWN0TmFtZShyZWxlYXNlLndvcmtzcGFjZSksXG4gICAgICAgICAgICBwYXRoOiBwYXRoLmpvaW4od29ya3NwYWNlRGlyZWN0b3J5LCByZWxlYXNlLndvcmtzcGFjZS5hcnRpZmFjdHNEaXJlY3RvcnkpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclB1Ymxpc2hKb2JzKCkge1xuICAgIGZvciAoY29uc3QgeyByZWxlYXNlIH0gb2YgdGhpcy5wYWNrYWdlc1RvUmVsZWFzZSkge1xuICAgICAgY29uc3QgcGFja2FnZVB1Ymxpc2hKb2JzID0gcmVsZWFzZS5wdWJsaXNoZXIuX3JlbmRlckpvYnNGb3JCcmFuY2godGhpcy5icmFuY2hOYW1lLCByZWxlYXNlLm9wdGlvbnMpO1xuXG4gICAgICBmb3IgKGNvbnN0IGpvYiBvZiBPYmplY3QudmFsdWVzKHBhY2thZ2VQdWJsaXNoSm9icykpIHtcbiAgICAgICAgLy8gRmluZCB0aGUgJ2Rvd25sb2FkLWFydGlmYWN0JyBqb2IgYW5kIHJlcGxhY2UgdGhlIGJ1aWxkIGFydGlmYWN0IG5hbWUgd2l0aCB0aGUgdW5pcXVlIHBlci1wcm9qZWN0IG9uZVxuICAgICAgICBjb25zdCBkb3dubG9hZFN0ZXAgPSBqb2Iuc3RlcHMuZmluZCgoaikgPT4gai51c2VzPy5zdGFydHNXaXRoKCdhY3Rpb25zL2Rvd25sb2FkLWFydGlmYWN0QCcpKTtcbiAgICAgICAgaWYgKCFkb3dubG9hZFN0ZXApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGRvd25sb2FkU3RlcCBhbW9uZyBzdGVwczogJHtKU09OLnN0cmluZ2lmeShqb2Iuc3RlcHMsIHVuZGVmaW5lZCwgMil9YCk7XG4gICAgICAgIH1cbiAgICAgICAgKGRvd25sb2FkU3RlcC53aXRoID8/IHt9KS5uYW1lID0gYnVpbGRBcnRpZmFjdE5hbWUocmVsZWFzZS53b3Jrc3BhY2UpO1xuICAgICAgfVxuXG4gICAgICAvLyBNYWtlIHRoZSBqb2IgbmFtZXMgdW5pcXVlXG4gICAgICB0aGlzLndvcmtmbG93Py5hZGRKb2JzKFxuICAgICAgICBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMocGFja2FnZVB1Ymxpc2hKb2JzKS5tYXAoKFtrZXksIGpvYl0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByZWZpeCA9IHNsdWdpZnkoYCR7cmVsZWFzZS53b3Jrc3BhY2UubmFtZX1gKTtcbiAgICAgICAgICAgIGNvbnN0IG5lZWRzID0gKGpvYi5uZWVkcyA/PyBbXSkubWFwKGRlcCA9PiB7XG4gICAgICAgICAgICAgIC8vIEFsbCBwdWJsaXNoIGpvYnMgZGVwZW5kIG9uIHRoZSBtYWluIHJlbGVhc2Ugam9iXG4gICAgICAgICAgICAgIGlmIChkZXAgPT09ICdyZWxlYXNlJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZXA7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyAuLi4gYW5kIHBvc3NpYmx5IG9uIGluZGl2aWR1YWwgcHVibGlzaCBqb2JzIHRoYXQgYXJlIHByZWZpeGVkXG4gICAgICAgICAgICAgIHJldHVybiBgJHtwcmVmaXh9XyR7ZGVwfWA7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gd2UgYnVpbGQgdGhlIHRvb2xzIG9iamVjdCBzbyB0aGF0IHdlIGNhbiBtb2RpZnkgaXQgd2l0aCBvdXJcbiAgICAgICAgICAgIC8vIG93biBjdXN0b20gcHJvcGVydGllcy5cbiAgICAgICAgICAgIGNvbnN0IHRvb2xzUmVidWlsdDogVG9vbHMgPSB7XG4gICAgICAgICAgICAgIC4uLmpvYi50b29scyxcbiAgICAgICAgICAgICAgbm9kZToge1xuICAgICAgICAgICAgICAgIC4uLmpvYi50b29scz8ubm9kZSA/PyB7fSxcbiAgICAgICAgICAgICAgICAvLyB1c2UgdGhlIG5vZGUgdmVyc2lvbiBzcGVjaWZpZWQgb24gdGhlIG1vbm8gcmVwby5cbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLm9wdGlvbnMubm9kZVZlcnNpb24gPz8gam9iLnRvb2xzPy5ub2RlPy52ZXJzaW9uID8/ICdsdHMvKicsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICBgJHtwcmVmaXh9XyR7a2V5fWAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5qb2IsXG4gICAgICAgICAgICAgICAgdG9vbHM6IHRvb2xzUmVidWlsdCxcbiAgICAgICAgICAgICAgICBuZWVkcyxcbiAgICAgICAgICAgICAgICBpZjogYFxcJHt7IG5lZWRzLnJlbGVhc2Uub3V0cHV0cy5sYXRlc3RfY29tbWl0ID09IGdpdGh1Yi5zaGEgJiYgbmVlZHMucmVsZWFzZS5vdXRwdXRzLiR7cHVibGlzaFByb2plY3RPdXRwdXRJZChcbiAgICAgICAgICAgICAgICAgIHJlbGVhc2Uud29ya3NwYWNlLFxuICAgICAgICAgICAgICAgICl9ID09ICd0cnVlJyB9fWAsXG4gICAgICAgICAgICAgICAgbmFtZTogYCR7cmVsZWFzZS53b3Jrc3BhY2UubmFtZX06ICR7am9iLm5hbWV9YCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb2J0YWluUmVsZWFzZVRhc2soKTogVGFzayB7XG4gICAgaWYgKHRoaXMucmVsZWFzZVRhc2spIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbGVhc2VUYXNrO1xuICAgIH1cblxuICAgIGNvbnN0IGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIFJFTEVBU0U6ICd0cnVlJyxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYWpvclZlcnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgZW52Lk1BSk9SID0gdGhpcy5vcHRpb25zLm1ham9yVmVyc2lvbi50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMubWluTWFqb3JWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMubWFqb3JWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaW5NYWpvclZlcnNpb24gYW5kIG1ham9yVmVyc2lvbiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci4nKTtcbiAgICAgIH1cblxuICAgICAgZW52Lk1JTl9NQUpPUiA9IHRoaXMub3B0aW9ucy5taW5NYWpvclZlcnNpb24udG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbGVhc2VUYXNrID0gdGhpcy5wcm9qZWN0LmFkZFRhc2soJ3JlbGVhc2UnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ByZXBhcmUgYSByZWxlYXNlIGZyb20gYWxsIG1vbm9yZXBvIHBhY2thZ2VzJyxcbiAgICAgIGVudixcbiAgICB9KTtcbiAgICAvLyBVbnJvbGwgb3V0IHRoZSAncmVsZWFzZScgdGFzaywgYW5kIGRvIGFsbCB0aGUgcGhhc2VzIGZvciBlYWNoIGluZGl2aWR1YWwgcGFja2FnZS4gV2UgbmVlZCB0byAnYnVtcCcgYXQgdGhlIHNhbWVcbiAgICAvLyB0aW1lIHNvIHRoYXQgdGhlIGRlcGVuZGVuY3kgdmVyc2lvbnMgaW4gYWxsICdwYWNrYWdlLmpzb24ncyBhcmUgY29ycmVjdC5cbiAgICB0aGlzLnJlbGVhc2VUYXNrLmV4ZWMoJ3lhcm4gd29ya3NwYWNlcyBydW4gc2h4IHJtIC1yZiBkaXN0Jyk7XG4gICAgdGhpcy5yZWxlYXNlVGFzay5leGVjKCd5YXJuIHdvcmtzcGFjZXMgcnVuIGJ1bXAnKTtcbiAgICBpZiAodGhpcy5idWlsZFdpdGhOeCkge1xuICAgICAgdGhpcy5yZWxlYXNlVGFzay5leGVjKCdueCBydW4tbWFueSAtdCBidWlsZCcpO1xuICAgICAgdGhpcy5yZWxlYXNlVGFzay5lbnYoJ05YX1NLSVBfTlhfQ0FDSEUnLCAndHJ1ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbGVhc2VUYXNrLmV4ZWMoJ3lhcm4gd29ya3NwYWNlcyBydW4gYnVpbGQnKTtcbiAgICB9XG4gICAgdGhpcy5yZWxlYXNlVGFzay5leGVjKCd5YXJuIHdvcmtzcGFjZXMgcnVuIHVuYnVtcCcpO1xuICAgIC8vIGFudGktdGFtcGVyIGNoZWNrIChmYWlscyBpZiB0aGVyZSB3ZXJlIGNoYW5nZXMgdG8gY29tbWl0dGVkIGZpbGVzKVxuICAgIC8vIHRoaXMgd2lsbCBpZGVudGlmeSBhbnkgbm9uLWNvbW1pdHRlZCBmaWxlcyBnZW5lcmF0ZWQgZHVyaW5nIGJ1aWxkIChlLmcuIHRlc3Qgc25hcHNob3RzKVxuICAgIHRoaXMucmVsZWFzZVRhc2suZXhlYyhwcm9qZW5SZWxlYXNlLlJlbGVhc2UuQU5USV9UQU1QRVJfQ01EKTtcblxuICAgIHJldHVybiB0aGlzLnJlbGVhc2VUYXNrO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQdWJsaXNoaW5nTWVjaGFuaXNtKCkge1xuICAgIGlmICh0aGlzLnJlbGVhc2VUcmlnZ2VyLmlzTWFudWFsKSB7XG4gICAgICB0aGlzLmNyZWF0ZVB1Ymxpc2hUYXNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3JlYXRlUHVibGlzaFdvcmtmbG93KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQdWJsaXNoVGFzaygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01hbnVhbCBwdWJsaXNoaW5nIGlzIG5vdCBzdXBwb3J0ZWQgcmlnaHQgbm93Jyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVB1Ymxpc2hXb3JrZmxvdygpIHtcbiAgICBjb25zdCB3b3JrZmxvd05hbWUgPVxuICAgICAgdGhpcy5vcHRpb25zLnJlbGVhc2VXb3JrZmxvd05hbWUgPz9cbiAgICAgIChbJ21hc3RlcicsICdtYWluJ10uaW5jbHVkZXModGhpcy5icmFuY2hOYW1lKSA/ICdyZWxlYXNlJyA6IGByZWxlYXNlLSR7dGhpcy5icmFuY2hOYW1lfWApO1xuXG4gICAgLy8gVGhlIGFycmF5cyBhcmUgYmVpbmcgY2xvbmVkIHRvIGF2b2lkIGFjY3VtdWxhdGluZyB2YWx1ZXMgZnJvbSBwcmV2aW91cyBicmFuY2hlc1xuICAgIGNvbnN0IHByZUJ1aWxkU3RlcHMgPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdTZXR1cCBOb2RlLmpzJyxcbiAgICAgICAgdXNlczogJ2FjdGlvbnMvc2V0dXAtbm9kZUB2NCcsXG4gICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAnbm9kZS12ZXJzaW9uJzogKHRoaXMucHJvamVjdCBhcyBhbnkpLm5vZGVWZXJzaW9uID8/ICdsdHMvKicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBuYW1lOiAnSW5zdGFsbCBkZXBlbmRlbmNpZXMnLFxuICAgICAgICBydW46ICd5YXJuIGluc3RhbGwgLS1jaGVjay1maWxlcyAtLWZyb3plbi1sb2NrZmlsZScsXG4gICAgICB9LFxuICAgICAgLi4uKHRoaXMub3B0aW9ucy5yZWxlYXNlV29ya2Zsb3dTZXR1cFN0ZXBzID8/IFtdKSxcbiAgICBdO1xuICAgIGNvbnN0IHBvc3RCdWlsZFN0ZXBzID0gWy4uLih0aGlzLm9wdGlvbnMucG9zdEJ1aWxkU3RlcHMgPz8gW10pXTtcblxuICAgIC8vIEFkZCBhbiBvdXRwdXQgdG8gdGhlIGpvYiB0byBpbmRpY2F0ZSBpZiBhIGNlcnRhaW4gcGFja2FnZSBuZWVkcyBwdWJsaXNoaW5nXG4gICAgY29uc3Qgc2hvdWxkUHVibGlzaE91dHB1dHMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICB0aGlzLnBhY2thZ2VzVG9SZWxlYXNlLm1hcCgoeyByZWxlYXNlIH0pID0+IHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICBwdWJsaXNoUHJvamVjdE91dHB1dElkKHJlbGVhc2Uud29ya3NwYWNlKSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdGVwSWQ6IHNob3VsZFB1Ymxpc2hQcm9qZWN0U3RlcElkKHJlbGVhc2Uud29ya3NwYWNlKSxcbiAgICAgICAgICAgIG91dHB1dE5hbWU6ICdwdWJsaXNoJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIC8vIENoZWNrIGlmIHRoZSBwcm9wb3NlZCByZWxlYXNlIHRhZyBhbHJlYWR5IGV4aXN0c1xuICAgIC8vIE9ubHkgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQgc2hvdWxkIHdlIHB1Ymxpc2hcbiAgICBmb3IgKGNvbnN0IHsgd29ya3NwYWNlRGlyZWN0b3J5LCByZWxlYXNlIH0gb2YgdGhpcy5wYWNrYWdlc1RvUmVsZWFzZSkge1xuICAgICAgcG9zdEJ1aWxkU3RlcHMucHVzaCh7XG4gICAgICAgIGlkOiBzaG91bGRQdWJsaXNoUHJvamVjdFN0ZXBJZChyZWxlYXNlLndvcmtzcGFjZSksXG4gICAgICAgIHdvcmtpbmdEaXJlY3Rvcnk6IHdvcmtzcGFjZURpcmVjdG9yeSxcbiAgICAgICAgcnVuOiAnKGdpdCBscy1yZW1vdGUgLXEgLS1leGl0LWNvZGUgLS10YWdzIG9yaWdpbiAkKGNhdCBkaXN0L3JlbGVhc2V0YWcudHh0KSAmJiAoZWNobyBcInB1Ymxpc2g9ZmFsc2VcIiA+PiAkR0lUSFVCX09VVFBVVCkpIHx8IGVjaG8gXCJwdWJsaXNoPXRydWVcIiA+PiAkR0lUSFVCX09VVFBVVCcsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBjaGVjayBpZiBuZXcgY29tbWl0cyB3ZXJlIHB1c2hlZCB0byB0aGUgcmVwbyB3aGlsZSB3ZSB3ZXJlIGJ1aWxkaW5nLlxuICAgIC8vIGlmIG5ldyBjb21taXRzIGhhdmUgYmVlbiBwdXNoZWQsIHdlIHdpbGwgY2FuY2VsIHRoaXMgcmVsZWFzZVxuICAgIGlmICh0aGlzLm9wdGlvbnMucmVsZWFzZVRyaWdnZXI/LmlzQ29udGludW91cyA/PyB0cnVlKSB7XG4gICAgICBwb3N0QnVpbGRTdGVwcy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ0NoZWNrIGZvciBuZXcgY29tbWl0cycsXG4gICAgICAgIGlkOiBHSVRfUkVNT1RFX1NURVBJRCxcbiAgICAgICAgcnVuOiBgZWNobyBcIiR7TEFURVNUX0NPTU1JVF9PVVRQVVR9PSQoZ2l0IGxzLXJlbW90ZSBvcmlnaW4gLWggXFwke3sgZ2l0aHViLnJlZiB9fSB8IGN1dCAtZjEpXCIgPj4gJEdJVEhVQl9PVVRQVVRgLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEZvciBub24tY29udGludW91cyBidWlsZHMgd2UnbGwganVzdCBwdXQgdGhlIHZhbHVlIHRoZXJlIHRoYXQgZG93bnN0cmVhbSBzdGVwcyBhcmUgZ29pbmcgdG8gY29tcGFyZSBhZ2FpbnN0XG4gICAgICBwb3N0QnVpbGRTdGVwcy5wdXNoKHtcbiAgICAgICAgbmFtZTogJ091dHB1dCB0aGUgc2hhIHZhbHVlIHRoYXQgZG93bnN0cmVhbSBjaGVja3MgZXhwZWN0JyxcbiAgICAgICAgaWQ6IEdJVF9SRU1PVEVfU1RFUElELFxuICAgICAgICBydW46IGBlY2hvIFwiJHtMQVRFU1RfQ09NTUlUX09VVFBVVH09XFwke3sgZ2l0aHViLnNoYSB9fVwiID4+ICRHSVRIVUJfT1VUUFVUYCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMud29ya2Zsb3cgPSBuZXcgZ2l0aHViLlRhc2tXb3JrZmxvdyh0aGlzLmdpdGh1Yiwge1xuICAgICAgbmFtZTogd29ya2Zsb3dOYW1lLFxuICAgICAgam9iSWQ6IFJFTEVBU0VfSk9CSUQsXG4gICAgICBvdXRwdXRzOiB7XG4gICAgICAgIGxhdGVzdF9jb21taXQ6IHtcbiAgICAgICAgICBzdGVwSWQ6IEdJVF9SRU1PVEVfU1RFUElELFxuICAgICAgICAgIG91dHB1dE5hbWU6IExBVEVTVF9DT01NSVRfT1VUUFVULFxuICAgICAgICB9LFxuICAgICAgICAuLi5zaG91bGRQdWJsaXNoT3V0cHV0cyxcbiAgICAgIH0sXG4gICAgICB0cmlnZ2Vyczoge1xuICAgICAgICBzY2hlZHVsZTogdGhpcy5yZWxlYXNlVHJpZ2dlci5zY2hlZHVsZSA/IFt7IGNyb246IHRoaXMucmVsZWFzZVRyaWdnZXIuc2NoZWR1bGUgfV0gOiB1bmRlZmluZWQsXG4gICAgICAgIHB1c2g6IHRoaXMucmVsZWFzZVRyaWdnZXIuaXNDb250aW51b3VzID8geyBicmFuY2hlczogW3RoaXMuYnJhbmNoTmFtZV0gfSA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgICBjb250YWluZXI6IHRoaXMub3B0aW9ucy53b3JrZmxvd0NvbnRhaW5lckltYWdlID8geyBpbWFnZTogdGhpcy5vcHRpb25zLndvcmtmbG93Q29udGFpbmVySW1hZ2UgfSA6IHVuZGVmaW5lZCxcbiAgICAgIGVudjoge1xuICAgICAgICBDSTogJ3RydWUnLFxuICAgICAgfSxcbiAgICAgIHBlcm1pc3Npb25zOiB7XG4gICAgICAgIGNvbnRlbnRzOiAnd3JpdGUnIGFzIGFueSxcbiAgICAgIH0sXG4gICAgICBjaGVja291dFdpdGg6IHtcbiAgICAgICAgLy8gd2UgbXVzdCB1c2UgJ2ZldGNoLWRlcHRoPTAnIGluIG9yZGVyIHRvIGZldGNoIGFsbCB0YWdzXG4gICAgICAgIC8vIG90aGVyd2lzZSB0YWdzIGFyZSBub3QgY2hlY2tlZCBvdXRcbiAgICAgICAgZmV0Y2hEZXB0aDogMCxcbiAgICAgIH0sXG4gICAgICBwcmVCdWlsZFN0ZXBzLFxuICAgICAgdGFzazogdGhpcy5yZWxlYXNlVGFzayEsXG4gICAgICBwb3N0QnVpbGRTdGVwcyxcbiAgICAgIHJ1bnNPbjogdGhpcy5vcHRpb25zLndvcmtmbG93UnVuc09uLFxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNsdWdpZnkoeDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHgucmVwbGFjZSgvW15hLXpBLVowLTlfLV0vZywgJy0nKS5yZXBsYWNlKC9eWzAtOS1dKy8sICcnKTtcbn1cblxuZnVuY3Rpb24gYnVpbGRBcnRpZmFjdE5hbWUocHJvamVjdDogUHJvamVjdCkge1xuICByZXR1cm4gc2x1Z2lmeShgJHtwcm9qZWN0Lm5hbWV9XyR7QlVJTERfQVJUSUZBQ1RfTkFNRX1gKTtcbn1cblxuZnVuY3Rpb24gcHVibGlzaFByb2plY3RPdXRwdXRJZChwcm9qZWN0OiBQcm9qZWN0KSB7XG4gIHJldHVybiBgcHVibGlzaC0ke3NsdWdpZnkocHJvamVjdC5uYW1lKX1gO1xufVxuXG5mdW5jdGlvbiBzaG91bGRQdWJsaXNoUHJvamVjdFN0ZXBJZChwcm9qZWN0OiBQcm9qZWN0KSB7XG4gIHJldHVybiBgY2hlY2stJHtwdWJsaXNoUHJvamVjdE91dHB1dElkKHByb2plY3QpfWA7XG59XG4iXX0=
|
|
301
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8tcmVsZWFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy95YXJuL21vbm9yZXBvLXJlbGVhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2QkFBNkI7QUFDN0IsbUNBQW9GO0FBQ3BGLDJEQUEwRjtBQUkxRixpRkFBMkY7QUFFM0YsZ0NBQWdDO0FBQ2hDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUNoQyxNQUFNLGlCQUFpQixHQUFHLFlBQVksQ0FBQztBQUN2QyxNQUFNLG9CQUFvQixHQUFHLGVBQWUsQ0FBQztBQUU3QyxNQUFhLGVBQWdCLFNBQVEsa0JBQVM7SUFDNUM7OztPQUdHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFnQjtRQUMvQixNQUFNLHlCQUF5QixHQUFHLENBQUMsQ0FBWSxFQUF3QixFQUFFLENBQUMsQ0FBQyxZQUFZLGVBQWUsQ0FBQztRQUN2RyxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDNUQsQ0FBQztJQW9CRCxZQUFZLE9BQWdCLEVBQW1CLFVBQWtDLEVBQUU7UUFDakYsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRDhCLFlBQU8sR0FBUCxPQUFPLENBQTZCO1FBYmxFLHNCQUFpQixHQUFHLElBQUksS0FBSyxFQU8xQyxDQUFDO1FBSVksc0JBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQXlDLENBQUM7UUFLcEYsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQztRQUMvQyxNQUFNLEVBQUUsR0FBRyxlQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDUixNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxJQUFJ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LDBDQXdVQzs7O0FBRUQsU0FBUyxPQUFPLENBQUMsQ0FBUztJQUN4QixPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxPQUFnQjtJQUN6QyxPQUFPLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksK0JBQW1CLEVBQUUsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLE9BQWdCO0lBQzlDLE9BQU8sV0FBVyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDNUMsQ0FBQztBQUVELFNBQVMsMEJBQTBCLENBQUMsT0FBZ0I7SUFDbEQsT0FBTyxTQUFTLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7QUFDcEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBnaXRodWIsIHJlbGVhc2UgYXMgcHJvamVuUmVsZWFzZSwgQ29tcG9uZW50LCBQcm9qZWN0LCBUYXNrIH0gZnJvbSAncHJvamVuJztcbmltcG9ydCB7IEJVSUxEX0FSVElGQUNUX05BTUUsIFBFUk1JU1NJT05fQkFDS1VQX0ZJTEUgfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVG9vbHMgfSBmcm9tICdwcm9qZW4vbGliL2dpdGh1Yi93b3JrZmxvd3MtbW9kZWwnO1xuaW1wb3J0IHsgTW9ub3JlcG9SZWxlYXNlT3B0aW9ucyB9IGZyb20gJy4vbW9ub3JlcG8tcmVsZWFzZS1vcHRpb25zJztcbmltcG9ydCB7IFR5cGVTY3JpcHRXb3Jrc3BhY2UgfSBmcm9tICcuL3R5cGVzY3JpcHQtd29ya3NwYWNlJztcbmltcG9ydCB7IFdvcmtzcGFjZVJlbGVhc2UsIFdvcmtzcGFjZVJlbGVhc2VPcHRpb25zIH0gZnJvbSAnLi90eXBlc2NyaXB0LXdvcmtzcGFjZS1yZWxlYXNlJztcblxuLy8gY29waWVkIGZyb20gcHJvamVuL3JlbGVhc2UudHNcbmNvbnN0IFJFTEVBU0VfSk9CSUQgPSAncmVsZWFzZSc7XG5jb25zdCBHSVRfUkVNT1RFX1NURVBJRCA9ICdnaXRfcmVtb3RlJztcbmNvbnN0IExBVEVTVF9DT01NSVRfT1VUUFVUID0gJ2xhdGVzdF9jb21taXQnO1xuXG5leHBvcnQgY2xhc3MgTW9ub3JlcG9SZWxlYXNlIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGBNb25vcmVwb1JlbGVhc2VXb3JrZmxvd2AgY29tcG9uZW50IG9mIGEgcHJvamVjdCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgcHJvamVjdFxuICAgKiBkb2VzIG5vdCBoYXZlIGEgTW9ub3JlcG9SZWxlYXNlV29ya2Zsb3cgY29tcG9uZW50LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZihwcm9qZWN0OiBQcm9qZWN0KTogTW9ub3JlcG9SZWxlYXNlIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBpc01vbm9yZXBvUmVsZWFzZVdvcmtmbG93ID0gKGM6IENvbXBvbmVudCk6IGMgaXMgTW9ub3JlcG9SZWxlYXNlID0+IGMgaW5zdGFuY2VvZiBNb25vcmVwb1JlbGVhc2U7XG4gICAgcmV0dXJuIHByb2plY3QuY29tcG9uZW50cy5maW5kKGlzTW9ub3JlcG9SZWxlYXNlV29ya2Zsb3cpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBicmFuY2hOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ2l0aHViOiBnaXRodWIuR2l0SHViO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlbGVhc2VUcmlnZ2VyOiBwcm9qZW5SZWxlYXNlLlJlbGVhc2VUcmlnZ2VyO1xuICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkV2l0aE54OiBib29sZWFuO1xuICBwcml2YXRlIHJlYWRvbmx5IHdzUnVuOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGFja2FnZXNUb1JlbGVhc2UgPSBuZXcgQXJyYXk8e1xuICAgIHJlYWRvbmx5IHdvcmtzcGFjZURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHJlbGVhc2U6IHtcbiAgICAgIHJlYWRvbmx5IHdvcmtzcGFjZTogVHlwZVNjcmlwdFdvcmtzcGFjZTtcbiAgICAgIHJlYWRvbmx5IHB1Ymxpc2hlcjogcHJvamVuUmVsZWFzZS5QdWJsaXNoZXI7XG4gICAgICByZWFkb25seSBvcHRpb25zOiBQYXJ0aWFsPHByb2plblJlbGVhc2UuQnJhbmNoT3B0aW9ucz47XG4gICAgfTtcbiAgfT4oKTtcblxuICBwcml2YXRlIHdvcmtmbG93PzogZ2l0aHViLlRhc2tXb3JrZmxvdztcbiAgcHJpdmF0ZSByZWxlYXNlVGFzaz86IFRhc2s7XG4gIHByaXZhdGUgcmVhZG9ubHkgd29ya3NwYWNlUmVsZWFzZXMgPSBuZXcgTWFwPFR5cGVTY3JpcHRXb3Jrc3BhY2UsIFdvcmtzcGFjZVJlbGVhc2U+KCk7XG5cbiAgY29uc3RydWN0b3IocHJvamVjdDogUHJvamVjdCwgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBNb25vcmVwb1JlbGVhc2VPcHRpb25zID0ge30pIHtcbiAgICBzdXBlcihwcm9qZWN0KTtcblxuICAgIHRoaXMuYnJhbmNoTmFtZSA9IG9wdGlvbnMuYnJhbmNoTmFtZSA/PyAnbWFpbic7XG4gICAgY29uc3QgZ2ggPSBnaXRodWIuR2l0SHViLm9mKHByb2plY3QpO1xuICAgIGlmICghZ2gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvamVjdCBpcyBub3QgYSBHaXRIdWIgcHJvamVjdDogJHtwcm9qZWN0fWApO1xuICAgIH1cbiAgICB0aGlzLmdpdGh1YiA9IGdoO1xuICAgIHRoaXMucmVsZWFzZVRyaWdnZXIgPSBvcHRpb25zLnJlbGVhc2VUcmlnZ2VyID8/IHByb2plblJlbGVhc2UuUmVsZWFzZVRyaWdnZXIuY29udGludW91cygpO1xuICAgIHRoaXMuYnVpbGRXaXRoTnggPSBvcHRpb25zLmJ1aWxkV2l0aE54ID8/IGZhbHNlO1xuICAgIHRoaXMud3NSdW4gPSBvcHRpb25zLnlhcm5CZXJyeSA/ICd5YXJuIHdvcmtzcGFjZXMgZm9yZWFjaCAtLWFsbCAtLWV4Y2x1ZGUgLiBydW4nIDogJ3lhcm4gd29ya3NwYWNlcyBydW4nO1xuICB9XG5cbiAgcHVibGljIHdvcmtzcGFjZVJlbGVhc2UocHJvamVjdDogVHlwZVNjcmlwdFdvcmtzcGFjZSkge1xuICAgIGNvbnN0IHJldCA9IHRoaXMud29ya3NwYWNlUmVsZWFzZXMuZ2V0KHByb2plY3QpO1xuICAgIGlmICghcmV0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHJlbGVhc2UgZm9yIHByb2plY3QgJHtwcm9qZWN0Lm5hbWV9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwdWJsaWMgYWRkV29ya3NwYWNlKHByb2plY3Q6IFR5cGVTY3JpcHRXb3Jrc3BhY2UsIG9wdGlvbnM6IFdvcmtzcGFjZVJlbGVhc2VPcHRpb25zKSB7XG4gICAgY29uc3Qgd29ya3NwYWNlUmVsZWFzZSA9IG5ldyBXb3Jrc3BhY2VSZWxlYXNlKHByb2plY3QsIHtcbiAgICAgIHB1Ymxpc2hUb05wbTogdGhpcy5vcHRpb25zLnB1Ymxpc2hUb05wbSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG5cbiAgICAvLyBNYWtlIHRoZXNlIHB1YmxpY2x5IGFjY2Vzc2libGVcbiAgICB0aGlzLndvcmtzcGFjZVJlbGVhc2VzLnNldChwcm9qZWN0LCB3b3Jrc3BhY2VSZWxlYXNlKTtcblxuICAgIGlmICghb3B0aW9ucy5wcml2YXRlICYmIHdvcmtzcGFjZVJlbGVhc2UucHVibGlzaGVyKSB7XG4gICAgICB0aGlzLm9idGFpblJlbGVhc2VUYXNrKCk7XG5cbiAgICAgIHRoaXMucGFja2FnZXNUb1JlbGVhc2UucHVzaCh7XG4gICAgICAgIHdvcmtzcGFjZURpcmVjdG9yeTogcHJvamVjdC53b3Jrc3BhY2VEaXJlY3RvcnksXG4gICAgICAgIHJlbGVhc2U6IHtcbiAgICAgICAgICB3b3Jrc3BhY2U6IHdvcmtzcGFjZVJlbGVhc2Uud29ya3NwYWNlLFxuICAgICAgICAgIHB1Ymxpc2hlcjogd29ya3NwYWNlUmVsZWFzZS5wdWJsaXNoZXIsXG4gICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgLy8gZW5mb3JjZWQgb3B0aW9uc1xuICAgICAgICAgICAgd29ya2Zsb3dOYW1lOiB0aGlzLm9wdGlvbnMucmVsZWFzZVdvcmtmbG93TmFtZSxcbiAgICAgICAgICAgIHRhZ1ByZWZpeDogYCR7cHJvamVjdC5uYW1lfUBgLFxuXG4gICAgICAgICAgICAvLyBvcHRpb25zIHRoYXQgbWF5IGJlIG92ZXJyaWRlIGxvY2FsbHlcbiAgICAgICAgICAgIG1ham9yVmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uQnJhbmNoT3B0aW9ucy5tYWpvclZlcnNpb24gPz8gdGhpcy5vcHRpb25zLm1ham9yVmVyc2lvbixcbiAgICAgICAgICAgIG1pbk1ham9yVmVyc2lvbjogb3B0aW9ucy52ZXJzaW9uQnJhbmNoT3B0aW9ucy5taW5NYWpvclZlcnNpb24gPz8gdGhpcy5vcHRpb25zLm1pbk1ham9yVmVyc2lvbixcbiAgICAgICAgICAgIHByZXJlbGVhc2U6IG9wdGlvbnMudmVyc2lvbkJyYW5jaE9wdGlvbnMucHJlcmVsZWFzZSA/PyB0aGlzLm9wdGlvbnMucHJlcmVsZWFzZSxcbiAgICAgICAgICAgIG5wbURpc3RUYWc6IG9wdGlvbnMubnBtRGlzdFRhZyA/PyB0aGlzLm9wdGlvbnMubnBtRGlzdFRhZyxcbiAgICAgICAgICAgIGVudmlyb25tZW50OiBvcHRpb25zLmVudmlyb25tZW50LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcHJlU3ludGhlc2l6ZSgpIHtcbiAgICBpZiAoIXRoaXMucmVsZWFzZVRhc2spIHtcbiAgICAgIC8vIFdlIGRpZG4ndCBlbmQgdXAgYWRkaW5nIGFueSBwYWNrYWdlc1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuY3JlYXRlUHVibGlzaGluZ01lY2hhbmlzbSgpO1xuICAgIHRoaXMucmVuZGVyUGFja2FnZVVwbG9hZHMoKTtcbiAgICB0aGlzLnJlbmRlclB1Ymxpc2hKb2JzKCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclBhY2thZ2VVcGxvYWRzKCkge1xuICAgIGNvbnN0IG5vTmV3Q29tbWl0cyA9IGBcXCR7eyBzdGVwcy4ke0dJVF9SRU1PVEVfU1RFUElEfS5vdXRwdXRzLiR7TEFURVNUX0NPTU1JVF9PVVRQVVR9ID09IGdpdGh1Yi5zaGEgfX1gO1xuXG4gICAgZm9yIChjb25zdCB7IHdvcmtzcGFjZURpcmVjdG9yeSwgcmVsZWFzZSB9IG9mIHRoaXMucGFja2FnZXNUb1JlbGVhc2UpIHtcbiAgICAgIGNvbnN0IGpvYiA9IHRoaXMud29ya2Zsb3c/LmdldEpvYihSRUxFQVNFX0pPQklEKSBhcyBnaXRodWIud29ya2Zsb3dzLkpvYiB8IHVuZGVmaW5lZDtcbiAgICAgIGpvYj8uc3RlcHMucHVzaChcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IGAke3JlbGVhc2Uud29ya3NwYWNlLm5hbWV9OiBCYWNrdXAgYXJ0aWZhY3QgcGVybWlzc2lvbnNgLFxuICAgICAgICAgIGlmOiBub05ld0NvbW1pdHMsXG4gICAgICAgICAgY29udGludWVPbkVycm9yOiB0cnVlLFxuICAgICAgICAgIHJ1bjogYGNkICR7cmVsZWFzZS53b3Jrc3BhY2UuYXJ0aWZhY3RzRGlyZWN0b3J5fSAmJiBnZXRmYWNsIC1SIC4gPiAke1BFUk1JU1NJT05fQkFDS1VQX0ZJTEV9YCxcbiAgICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3Jrc3BhY2VEaXJlY3RvcnksXG4gICAgICAgIH0sXG4gICAgICAgIGdpdGh1Yi5Xb3JrZmxvd1N0ZXBzLnVwbG9hZEFydGlmYWN0KHtcbiAgICAgICAgICBuYW1lOiBgJHtyZWxlYXNlLndvcmtzcGFjZS5uYW1lfTogVXBsb2FkIGFydGlmYWN0YCxcbiAgICAgICAgICBpZjogbm9OZXdDb21taXRzLFxuICAgICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAgIC8vIEV2ZXJ5IGFydGlmYWN0IG11c3QgaGF2ZSBhIHVuaXF1ZSBuYW1lXG4gICAgICAgICAgICBuYW1lOiBidWlsZEFydGlmYWN0TmFtZShyZWxlYXNlLndvcmtzcGFjZSksXG4gICAgICAgICAgICBwYXRoOiBwYXRoLmpvaW4od29ya3NwYWNlRGlyZWN0b3J5LCByZWxlYXNlLndvcmtzcGFjZS5hcnRpZmFjdHNEaXJlY3RvcnkpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclB1Ymxpc2hKb2JzKCkge1xuICAgIGZvciAoY29uc3QgeyByZWxlYXNlIH0gb2YgdGhpcy5wYWNrYWdlc1RvUmVsZWFzZSkge1xuICAgICAgY29uc3QgcGFja2FnZVB1Ymxpc2hKb2JzID0gcmVsZWFzZS5wdWJsaXNoZXIuX3JlbmRlckpvYnNGb3JCcmFuY2godGhpcy5icmFuY2hOYW1lLCByZWxlYXNlLm9wdGlvbnMpO1xuXG4gICAgICBmb3IgKGNvbnN0IGpvYiBvZiBPYmplY3QudmFsdWVzKHBhY2thZ2VQdWJsaXNoSm9icykpIHtcbiAgICAgICAgLy8gRmluZCB0aGUgJ2Rvd25sb2FkLWFydGlmYWN0JyBqb2IgYW5kIHJlcGxhY2UgdGhlIGJ1aWxkIGFydGlmYWN0IG5hbWUgd2l0aCB0aGUgdW5pcXVlIHBlci1wcm9qZWN0IG9uZVxuICAgICAgICBjb25zdCBkb3dubG9hZFN0ZXAgPSBqb2Iuc3RlcHMuZmluZCgoaikgPT4gai51c2VzPy5zdGFydHNXaXRoKCdhY3Rpb25zL2Rvd25sb2FkLWFydGlmYWN0QCcpKTtcbiAgICAgICAgaWYgKCFkb3dubG9hZFN0ZXApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGRvd25sb2FkU3RlcCBhbW9uZyBzdGVwczogJHtKU09OLnN0cmluZ2lmeShqb2Iuc3RlcHMsIHVuZGVmaW5lZCwgMil9YCk7XG4gICAgICAgIH1cbiAgICAgICAgKGRvd25sb2FkU3RlcC53aXRoID8/IHt9KS5uYW1lID0gYnVpbGRBcnRpZmFjdE5hbWUocmVsZWFzZS53b3Jrc3BhY2UpO1xuICAgICAgfVxuXG4gICAgICAvLyBNYWtlIHRoZSBqb2IgbmFtZXMgdW5pcXVlXG4gICAgICB0aGlzLndvcmtmbG93Py5hZGRKb2JzKFxuICAgICAgICBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMocGFja2FnZVB1Ymxpc2hKb2JzKS5tYXAoKFtrZXksIGpvYl0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHByZWZpeCA9IHNsdWdpZnkoYCR7cmVsZWFzZS53b3Jrc3BhY2UubmFtZX1gKTtcbiAgICAgICAgICAgIGNvbnN0IG5lZWRzID0gKGpvYi5uZWVkcyA/PyBbXSkubWFwKGRlcCA9PiB7XG4gICAgICAgICAgICAgIC8vIEFsbCBwdWJsaXNoIGpvYnMgZGVwZW5kIG9uIHRoZSBtYWluIHJlbGVhc2Ugam9iXG4gICAgICAgICAgICAgIGlmIChkZXAgPT09ICdyZWxlYXNlJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZXA7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyAuLi4gYW5kIHBvc3NpYmx5IG9uIGluZGl2aWR1YWwgcHVibGlzaCBqb2JzIHRoYXQgYXJlIHByZWZpeGVkXG4gICAgICAgICAgICAgIHJldHVybiBgJHtwcmVmaXh9XyR7ZGVwfWA7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gd2UgYnVpbGQgdGhlIHRvb2xzIG9iamVjdCBzbyB0aGF0IHdlIGNhbiBtb2RpZnkgaXQgd2l0aCBvdXJcbiAgICAgICAgICAgIC8vIG93biBjdXN0b20gcHJvcGVydGllcy5cbiAgICAgICAgICAgIGNvbnN0IHRvb2xzUmVidWlsdDogVG9vbHMgPSB7XG4gICAgICAgICAgICAgIC4uLmpvYi50b29scyxcbiAgICAgICAgICAgICAgbm9kZToge1xuICAgICAgICAgICAgICAgIC4uLmpvYi50b29scz8ubm9kZSA/PyB7fSxcbiAgICAgICAgICAgICAgICAvLyB1c2UgdGhlIG5vZGUgdmVyc2lvbiBzcGVjaWZpZWQgb24gdGhlIG1vbm8gcmVwby5cbiAgICAgICAgICAgICAgICB2ZXJzaW9uOiB0aGlzLm9wdGlvbnMubm9kZVZlcnNpb24gPz8gam9iLnRvb2xzPy5ub2RlPy52ZXJzaW9uID8/ICdsdHMvKicsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICBgJHtwcmVmaXh9XyR7a2V5fWAsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAuLi5qb2IsXG4gICAgICAgICAgICAgICAgdG9vbHM6IHRvb2xzUmVidWlsdCxcbiAgICAgICAgICAgICAgICBuZWVkcyxcbiAgICAgICAgICAgICAgICBpZjogYFxcJHt7IG5lZWRzLnJlbGVhc2Uub3V0cHV0cy5sYXRlc3RfY29tbWl0ID09IGdpdGh1Yi5zaGEgJiYgbmVlZHMucmVsZWFzZS5vdXRwdXRzLiR7cHVibGlzaFByb2plY3RPdXRwdXRJZChcbiAgICAgICAgICAgICAgICAgIHJlbGVhc2Uud29ya3NwYWNlLFxuICAgICAgICAgICAgICAgICl9ID09ICd0cnVlJyB9fWAsXG4gICAgICAgICAgICAgICAgbmFtZTogYCR7cmVsZWFzZS53b3Jrc3BhY2UubmFtZX06ICR7am9iLm5hbWV9YCxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfSksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb2J0YWluUmVsZWFzZVRhc2soKTogVGFzayB7XG4gICAgaWYgKHRoaXMucmVsZWFzZVRhc2spIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbGVhc2VUYXNrO1xuICAgIH1cblxuICAgIGNvbnN0IGVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAgIFJFTEVBU0U6ICd0cnVlJyxcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYWpvclZlcnNpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgZW52Lk1BSk9SID0gdGhpcy5vcHRpb25zLm1ham9yVmVyc2lvbi50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMubWluTWFqb3JWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMubWFqb3JWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaW5NYWpvclZlcnNpb24gYW5kIG1ham9yVmVyc2lvbiBjYW5ub3QgYmUgdXNlZCB0b2dldGhlci4nKTtcbiAgICAgIH1cblxuICAgICAgZW52Lk1JTl9NQUpPUiA9IHRoaXMub3B0aW9ucy5taW5NYWpvclZlcnNpb24udG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlbGVhc2VUYXNrID0gdGhpcy5wcm9qZWN0LmFkZFRhc2soJ3JlbGVhc2UnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ByZXBhcmUgYSByZWxlYXNlIGZyb20gYWxsIG1vbm9yZXBvIHBhY2thZ2VzJyxcbiAgICAgIGVudixcbiAgICB9KTtcbiAgICAvLyBVbnJvbGwgb3V0IHRoZSAncmVsZWFzZScgdGFzaywgYW5kIGRvIGFsbCB0aGUgcGhhc2VzIGZvciBlYWNoIGluZGl2aWR1YWwgcGFja2FnZS4gV2UgbmVlZCB0byAnYnVtcCcgYXQgdGhlIHNhbWVcbiAgICAvLyB0aW1lIHNvIHRoYXQgdGhlIGRlcGVuZGVuY3kgdmVyc2lvbnMgaW4gYWxsICdwYWNrYWdlLmpzb24ncyBhcmUgY29ycmVjdC5cbiAgICB0aGlzLnJlbGVhc2VUYXNrLmV4ZWMoYCR7dGhpcy53c1J1bn0gc2h4IHJtIC1yZiBkaXN0YCk7XG4gICAgdGhpcy5yZWxlYXNlVGFzay5leGVjKGAke3RoaXMud3NSdW59IGJ1bXBgKTtcbiAgICBpZiAodGhpcy5idWlsZFdpdGhOeCkge1xuICAgICAgdGhpcy5yZWxlYXNlVGFzay5leGVjKCdueCBydW4tbWFueSAtdCBidWlsZCcpO1xuICAgICAgdGhpcy5yZWxlYXNlVGFzay5lbnYoJ05YX1NLSVBfTlhfQ0FDSEUnLCAndHJ1ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlbGVhc2VUYXNrLmV4ZWMoYCR7dGhpcy53c1J1bn0gYnVpbGRgKTtcbiAgICB9XG4gICAgdGhpcy5yZWxlYXNlVGFzay5leGVjKGAke3RoaXMud3NSdW59IHVuYnVtcGApO1xuICAgIC8vIGFudGktdGFtcGVyIGNoZWNrIChmYWlscyBpZiB0aGVyZSB3ZXJlIGNoYW5nZXMgdG8gY29tbWl0dGVkIGZpbGVzKVxuICAgIC8vIHRoaXMgd2lsbCBpZGVudGlmeSBhbnkgbm9uLWNvbW1pdHRlZCBmaWxlcyBnZW5lcmF0ZWQgZHVyaW5nIGJ1aWxkIChlLmcuIHRlc3Qgc25hcHNob3RzKVxuICAgIHRoaXMucmVsZWFzZVRhc2suZXhlYyhwcm9qZW5SZWxlYXNlLlJlbGVhc2UuQU5USV9UQU1QRVJfQ01EKTtcblxuICAgIHJldHVybiB0aGlzLnJlbGVhc2VUYXNrO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQdWJsaXNoaW5nTWVjaGFuaXNtKCkge1xuICAgIGlmICh0aGlzLnJlbGVhc2VUcmlnZ2VyLmlzTWFudWFsKSB7XG4gICAgICB0aGlzLmNyZWF0ZVB1Ymxpc2hUYXNrKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY3JlYXRlUHVibGlzaFdvcmtmbG93KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVQdWJsaXNoVGFzaygpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01hbnVhbCBwdWJsaXNoaW5nIGlzIG5vdCBzdXBwb3J0ZWQgcmlnaHQgbm93Jyk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVB1Ymxpc2hXb3JrZmxvdygpIHtcbiAgICBjb25zdCB3b3JrZmxvd05hbWUgPVxuICAgICAgdGhpcy5vcHRpb25zLnJlbGVhc2VXb3JrZmxvd05hbWUgPz9cbiAgICAgIChbJ21hc3RlcicsICdtYWluJ10uaW5jbHVkZXModGhpcy5icmFuY2hOYW1lKSA/ICdyZWxlYXNlJyA6IGByZWxlYXNlLSR7dGhpcy5icmFuY2hOYW1lfWApO1xuXG4gICAgLy8gVGhlIGFycmF5cyBhcmUgYmVpbmcgY2xvbmVkIHRvIGF2b2lkIGFjY3VtdWxhdGluZyB2YWx1ZXMgZnJvbSBwcmV2aW91cyBicmFuY2hlc1xuICAgIGNvbnN0IHByZUJ1aWxkU3RlcHMgPSBbXG4gICAgICB7XG4gICAgICAgIG5hbWU6ICdTZXR1cCBOb2RlLmpzJyxcbiAgICAgICAgdXNlczogJ2FjdGlvbnMvc2V0dXAtbm9kZUB2NicsXG4gICAgICAgIHdpdGg6IHtcbiAgICAgICAgICAnbm9kZS12ZXJzaW9uJzogKHRoaXMucHJvamVjdCBhcyBhbnkpLm5vZGVWZXJzaW9uID8/ICdsdHMvKicsXG4gICAgICAgICAgJ3BhY2thZ2UtbWFuYWdlci1jYWNoZSc6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ0luc3RhbGwgZGVwZW5kZW5jaWVzJyxcbiAgICAgICAgcnVuOiB0aGlzLm9wdGlvbnMueWFybkJlcnJ5ID8gJ3lhcm4gaW5zdGFsbCAtLWltbXV0YWJsZScgOiAneWFybiBpbnN0YWxsIC0tY2hlY2stZmlsZXMgLS1mcm96ZW4tbG9ja2ZpbGUnLFxuICAgICAgfSxcbiAgICAgIC4uLih0aGlzLm9wdGlvbnMucmVsZWFzZVdvcmtmbG93U2V0dXBTdGVwcyA/PyBbXSksXG4gICAgXTtcbiAgICBjb25zdCBwb3N0QnVpbGRTdGVwcyA9IFsuLi4odGhpcy5vcHRpb25zLnBvc3RCdWlsZFN0ZXBzID8/IFtdKV07XG5cbiAgICAvLyBBZGQgYW4gb3V0cHV0IHRvIHRoZSBqb2IgdG8gaW5kaWNhdGUgaWYgYSBjZXJ0YWluIHBhY2thZ2UgbmVlZHMgcHVibGlzaGluZ1xuICAgIGNvbnN0IHNob3VsZFB1Ymxpc2hPdXRwdXRzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgdGhpcy5wYWNrYWdlc1RvUmVsZWFzZS5tYXAoKHsgcmVsZWFzZSB9KSA9PiB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgcHVibGlzaFByb2plY3RPdXRwdXRJZChyZWxlYXNlLndvcmtzcGFjZSksXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RlcElkOiBzaG91bGRQdWJsaXNoUHJvamVjdFN0ZXBJZChyZWxlYXNlLndvcmtzcGFjZSksXG4gICAgICAgICAgICBvdXRwdXROYW1lOiAncHVibGlzaCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgcHJvcG9zZWQgcmVsZWFzZSB0YWcgYWxyZWFkeSBleGlzdHNcbiAgICAvLyBPbmx5IGlmIGl0IGRvZXNuJ3QgZXhpc3QgeWV0IHNob3VsZCB3ZSBwdWJsaXNoXG4gICAgZm9yIChjb25zdCB7IHdvcmtzcGFjZURpcmVjdG9yeSwgcmVsZWFzZSB9IG9mIHRoaXMucGFja2FnZXNUb1JlbGVhc2UpIHtcbiAgICAgIHBvc3RCdWlsZFN0ZXBzLnB1c2goe1xuICAgICAgICBpZDogc2hvdWxkUHVibGlzaFByb2plY3RTdGVwSWQocmVsZWFzZS53b3Jrc3BhY2UpLFxuICAgICAgICB3b3JraW5nRGlyZWN0b3J5OiB3b3Jrc3BhY2VEaXJlY3RvcnksXG4gICAgICAgIHJ1bjogJyhnaXQgbHMtcmVtb3RlIC1xIC0tZXhpdC1jb2RlIC0tdGFncyBvcmlnaW4gJChjYXQgZGlzdC9yZWxlYXNldGFnLnR4dCkgJiYgKGVjaG8gXCJwdWJsaXNoPWZhbHNlXCIgPj4gJEdJVEhVQl9PVVRQVVQpKSB8fCBlY2hvIFwicHVibGlzaD10cnVlXCIgPj4gJEdJVEhVQl9PVVRQVVQnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgaWYgbmV3IGNvbW1pdHMgd2VyZSBwdXNoZWQgdG8gdGhlIHJlcG8gd2hpbGUgd2Ugd2VyZSBidWlsZGluZy5cbiAgICAvLyBpZiBuZXcgY29tbWl0cyBoYXZlIGJlZW4gcHVzaGVkLCB3ZSB3aWxsIGNhbmNlbCB0aGlzIHJlbGVhc2VcbiAgICBpZiAodGhpcy5vcHRpb25zLnJlbGVhc2VUcmlnZ2VyPy5pc0NvbnRpbnVvdXMgPz8gdHJ1ZSkge1xuICAgICAgcG9zdEJ1aWxkU3RlcHMucHVzaCh7XG4gICAgICAgIG5hbWU6ICdDaGVjayBmb3IgbmV3IGNvbW1pdHMnLFxuICAgICAgICBpZDogR0lUX1JFTU9URV9TVEVQSUQsXG4gICAgICAgIHJ1bjogYGVjaG8gXCIke0xBVEVTVF9DT01NSVRfT1VUUFVUfT0kKGdpdCBscy1yZW1vdGUgb3JpZ2luIC1oIFxcJHt7IGdpdGh1Yi5yZWYgfX0gfCBjdXQgLWYxKVwiID4+ICRHSVRIVUJfT1VUUFVUYCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGb3Igbm9uLWNvbnRpbnVvdXMgYnVpbGRzIHdlJ2xsIGp1c3QgcHV0IHRoZSB2YWx1ZSB0aGVyZSB0aGF0IGRvd25zdHJlYW0gc3RlcHMgYXJlIGdvaW5nIHRvIGNvbXBhcmUgYWdhaW5zdFxuICAgICAgcG9zdEJ1aWxkU3RlcHMucHVzaCh7XG4gICAgICAgIG5hbWU6ICdPdXRwdXQgdGhlIHNoYSB2YWx1ZSB0aGF0IGRvd25zdHJlYW0gY2hlY2tzIGV4cGVjdCcsXG4gICAgICAgIGlkOiBHSVRfUkVNT1RFX1NURVBJRCxcbiAgICAgICAgcnVuOiBgZWNobyBcIiR7TEFURVNUX0NPTU1JVF9PVVRQVVR9PVxcJHt7IGdpdGh1Yi5zaGEgfX1cIiA+PiAkR0lUSFVCX09VVFBVVGAsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLndvcmtmbG93ID0gbmV3IGdpdGh1Yi5UYXNrV29ya2Zsb3codGhpcy5naXRodWIsIHtcbiAgICAgIG5hbWU6IHdvcmtmbG93TmFtZSxcbiAgICAgIGpvYklkOiBSRUxFQVNFX0pPQklELFxuICAgICAgb3V0cHV0czoge1xuICAgICAgICBsYXRlc3RfY29tbWl0OiB7XG4gICAgICAgICAgc3RlcElkOiBHSVRfUkVNT1RFX1NURVBJRCxcbiAgICAgICAgICBvdXRwdXROYW1lOiBMQVRFU1RfQ09NTUlUX09VVFBVVCxcbiAgICAgICAgfSxcbiAgICAgICAgLi4uc2hvdWxkUHVibGlzaE91dHB1dHMsXG4gICAgICB9LFxuICAgICAgdHJpZ2dlcnM6IHtcbiAgICAgICAgc2NoZWR1bGU6IHRoaXMucmVsZWFzZVRyaWdnZXIuc2NoZWR1bGUgPyBbeyBjcm9uOiB0aGlzLnJlbGVhc2VUcmlnZ2VyLnNjaGVkdWxlIH1dIDogdW5kZWZpbmVkLFxuICAgICAgICBwdXNoOiB0aGlzLnJlbGVhc2VUcmlnZ2VyLmlzQ29udGludW91cyA/IHsgYnJhbmNoZXM6IFt0aGlzLmJyYW5jaE5hbWVdIH0gOiB1bmRlZmluZWQsXG4gICAgICB9LFxuICAgICAgY29udGFpbmVyOiB0aGlzLm9wdGlvbnMud29ya2Zsb3dDb250YWluZXJJbWFnZSA/IHsgaW1hZ2U6IHRoaXMub3B0aW9ucy53b3JrZmxvd0NvbnRhaW5lckltYWdlIH0gOiB1bmRlZmluZWQsXG4gICAgICBlbnY6IHtcbiAgICAgICAgQ0k6ICd0cnVlJyxcbiAgICAgIH0sXG4gICAgICBwZXJtaXNzaW9uczoge1xuICAgICAgICBjb250ZW50czogJ3dyaXRlJyBhcyBhbnksXG4gICAgICB9LFxuICAgICAgY2hlY2tvdXRXaXRoOiB7XG4gICAgICAgIC8vIHdlIG11c3QgdXNlICdmZXRjaC1kZXB0aD0wJyBpbiBvcmRlciB0byBmZXRjaCBhbGwgdGFnc1xuICAgICAgICAvLyBvdGhlcndpc2UgdGFncyBhcmUgbm90IGNoZWNrZWQgb3V0XG4gICAgICAgIGZldGNoRGVwdGg6IDAsXG4gICAgICB9LFxuICAgICAgcHJlQnVpbGRTdGVwcyxcbiAgICAgIHRhc2s6IHRoaXMucmVsZWFzZVRhc2shLFxuICAgICAgcG9zdEJ1aWxkU3RlcHMsXG4gICAgICBydW5zT246IHRoaXMub3B0aW9ucy53b3JrZmxvd1J1bnNPbixcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzbHVnaWZ5KHg6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB4LnJlcGxhY2UoL1teYS16QS1aMC05Xy1dL2csICctJykucmVwbGFjZSgvXlswLTktXSsvLCAnJyk7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQXJ0aWZhY3ROYW1lKHByb2plY3Q6IFByb2plY3QpIHtcbiAgcmV0dXJuIHNsdWdpZnkoYCR7cHJvamVjdC5uYW1lfV8ke0JVSUxEX0FSVElGQUNUX05BTUV9YCk7XG59XG5cbmZ1bmN0aW9uIHB1Ymxpc2hQcm9qZWN0T3V0cHV0SWQocHJvamVjdDogUHJvamVjdCkge1xuICByZXR1cm4gYHB1Ymxpc2gtJHtzbHVnaWZ5KHByb2plY3QubmFtZSl9YDtcbn1cblxuZnVuY3Rpb24gc2hvdWxkUHVibGlzaFByb2plY3RTdGVwSWQocHJvamVjdDogUHJvamVjdCkge1xuICByZXR1cm4gYGNoZWNrLSR7cHVibGlzaFByb2plY3RPdXRwdXRJZChwcm9qZWN0KX1gO1xufVxuIl19
|
package/lib/yarn/monorepo.js
CHANGED
|
@@ -115,33 +115,38 @@ class Monorepo extends projen_1.typescript.TypeScriptProject {
|
|
|
115
115
|
if (fmtTask) {
|
|
116
116
|
buildTask.spawn(fmtTask);
|
|
117
117
|
}
|
|
118
|
+
const wsRun = options.yarnBerry ? 'yarn workspaces foreach --all --exclude . run' : 'yarn workspaces run';
|
|
118
119
|
if (buildWithNx) {
|
|
119
120
|
buildTask.exec('nx run-many -t build');
|
|
120
121
|
this.github?.tryFindWorkflow('build')?.file?.patch(projen_1.JsonPatch.add('/jobs/build/env/NX_SKIP_NX_CACHE', 'true'));
|
|
121
122
|
}
|
|
122
123
|
else {
|
|
123
|
-
buildTask.exec(
|
|
124
|
+
buildTask.exec(`${wsRun} build`);
|
|
124
125
|
}
|
|
125
126
|
// Run in all workspaces tasks
|
|
126
|
-
this.tasks.tryFind('compile')?.reset(
|
|
127
|
-
this.tasks.tryFind('package')?.reset(
|
|
128
|
-
this.tasks.tryFind('test')?.reset(
|
|
127
|
+
this.tasks.tryFind('compile')?.reset(`${wsRun} compile`);
|
|
128
|
+
this.tasks.tryFind('package')?.reset(`${wsRun} package`);
|
|
129
|
+
this.tasks.tryFind('test')?.reset(`${wsRun} test`);
|
|
129
130
|
this.addTask('run', {
|
|
130
|
-
exec:
|
|
131
|
+
exec: wsRun,
|
|
131
132
|
receiveArgs: true,
|
|
132
133
|
});
|
|
133
134
|
// Upgrade all packages
|
|
135
|
+
const cooldown = options.depsUpgradeOptions?.cooldown;
|
|
136
|
+
const upgradeEnv = { CI: '0' };
|
|
137
|
+
if (cooldown && options.yarnBerry) {
|
|
138
|
+
upgradeEnv.YARN_NPM_MINIMAL_AGE_GATE = String(cooldown * 24 * 60);
|
|
139
|
+
}
|
|
134
140
|
this.tasks.removeTask('upgrade');
|
|
135
141
|
this.tasks.addTask('upgrade', {
|
|
136
|
-
env:
|
|
142
|
+
env: upgradeEnv,
|
|
137
143
|
description: 'Upgrade dependencies in all workspaces',
|
|
138
144
|
steps: [
|
|
139
|
-
// It is not safe anymore to have 'npm-check-updates' in a Yarn 1 dependency tree, so run it in a separate
|
|
140
|
-
|
|
141
|
-
{ exec:
|
|
142
|
-
{ exec: 'yarn
|
|
143
|
-
{ exec: 'yarn
|
|
144
|
-
{ exec: 'yarn upgrade' },
|
|
145
|
+
// It is not safe anymore to have 'npm-check-updates' in a Yarn 1 dependency tree, so run it in a separate tree.
|
|
146
|
+
{ exec: `${options.yarnBerry ? 'yarn dlx' : 'npx'} npm-check-updates@20 --dep=dev,optional,peer,prod,bundle --upgrade --target=minor${cooldown ? ` --cooldown=${cooldown}` : ''}` },
|
|
147
|
+
{ exec: `${wsRun} check-for-updates` },
|
|
148
|
+
{ exec: options.yarnBerry ? 'yarn install' : 'yarn install --check-files' },
|
|
149
|
+
{ exec: options.yarnBerry ? 'yarn up' : 'yarn upgrade' },
|
|
145
150
|
{ spawn: 'default' },
|
|
146
151
|
{ spawn: 'post-upgrade' },
|
|
147
152
|
],
|
|
@@ -162,6 +167,7 @@ class Monorepo extends projen_1.typescript.TypeScriptProject {
|
|
|
162
167
|
this.monorepoRelease = new monorepo_release_1.MonorepoRelease(this, {
|
|
163
168
|
workflowRunsOn: options.workflowRunsOn,
|
|
164
169
|
buildWithNx,
|
|
170
|
+
yarnBerry: options.yarnBerry,
|
|
165
171
|
...options.releaseOptions,
|
|
166
172
|
});
|
|
167
173
|
}
|
|
@@ -190,8 +196,16 @@ class Monorepo extends projen_1.typescript.TypeScriptProject {
|
|
|
190
196
|
this.package.addField('private', true);
|
|
191
197
|
this.package.addField('workspaces', {
|
|
192
198
|
packages: this.projects.map((p) => p.workspaceDirectory),
|
|
193
|
-
...this.renderNoHoist(),
|
|
199
|
+
...(!this.options.yarnBerry ? this.renderNoHoist() : undefined),
|
|
194
200
|
});
|
|
201
|
+
// Auto-set hoistingLimits for workspaces with bundled deps when using Yarn Berry
|
|
202
|
+
if (this.options.yarnBerry) {
|
|
203
|
+
for (const p of this.projects) {
|
|
204
|
+
if (p.bundledDeps.length > 0) {
|
|
205
|
+
p.package.addField('installConfig', { hoistingLimits: 'workspaces' });
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
195
209
|
this.tsconfig?.file.addOverride('include', []);
|
|
196
210
|
this.tsconfigDev?.file.addOverride('include', ['.projenrc.ts', 'projenrc/**/*.ts']);
|
|
197
211
|
for (const tsconfig of [this.tsconfig, this.tsconfigDev]) {
|
|
@@ -234,7 +248,7 @@ class Monorepo extends projen_1.typescript.TypeScriptProject {
|
|
|
234
248
|
}
|
|
235
249
|
exports.Monorepo = Monorepo;
|
|
236
250
|
_a = JSII_RTTI_SYMBOL_1;
|
|
237
|
-
Monorepo[_a] = { fqn: "cdklabs-projen-project-types.yarn.Monorepo", version: "0.3.
|
|
251
|
+
Monorepo[_a] = { fqn: "cdklabs-projen-project-types.yarn.Monorepo", version: "0.3.20" };
|
|
238
252
|
function getObjFromFile(project, file) {
|
|
239
253
|
return project.tryFindObjectFile(file)?.obj;
|
|
240
254
|
}
|
|
@@ -269,5 +283,5 @@ class CdkLabsMonorepo extends Monorepo {
|
|
|
269
283
|
}
|
|
270
284
|
exports.CdkLabsMonorepo = CdkLabsMonorepo;
|
|
271
285
|
_b = JSII_RTTI_SYMBOL_1;
|
|
272
|
-
CdkLabsMonorepo[_b] = { fqn: "cdklabs-projen-project-types.yarn.CdkLabsMonorepo", version: "0.3.
|
|
273
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMveWFybi9tb25vcmVwby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE2QztBQUM3QyxtQ0FBc0c7QUFFdEcseURBQXFEO0FBQ3JELDZCQUEwQjtBQUcxQixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7QUFFOUU7O0dBRUc7QUFDSCxNQUFhLFFBQVMsU0FBUSxtQkFBVSxDQUFDLGlCQUFpQjtJQUNqRCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQVU7UUFDakMsT0FBTyxPQUFPLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQWVELFlBQTRCLE9BQXdCO1FBQ2xELEtBQUssQ0FBQztZQUNKLEdBQUcsT0FBTztZQUNWLGNBQWMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxtQkFBVSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsbUJBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZO1lBQ3pILGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0I7Z0JBQzNCLGFBQWEsRUFBRTtvQkFDYixVQUFVLEVBQUUsbUJBQVUsQ0FBQyxjQUFjLENBQUMsWUFBWTtvQkFDbEQsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsYUFBYTtpQkFDM0M7YUFDRixDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ2IsVUFBVSxFQUFFLEtBQUs7WUFDakIsSUFBSSxFQUFFLEtBQUs7WUFDWCxNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBZnVCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBSDVD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LENBQUM7UUFFSCxJQUFJLGVBQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFO1lBQzFCLGdCQUFnQixFQUFFO2dCQUNoQixpQkFBaUIsRUFBRSxlQUFNLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsQ0FBQzthQUN2RztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBekJILDBDQTBCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGhQb3NpeCBmcm9tICdub2RlOnBhdGgvcG9zaXgnO1xuaW1wb3J0IHsgSnNvbkZpbGUsIFByb2plY3QsIGphdmFzY3JpcHQsIHR5cGVzY3JpcHQsIGdpdGh1YiwgRGVwZW5kZW5jeVR5cGUsIEpzb25QYXRjaCB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBNb25vcmVwb09wdGlvbnMgfSBmcm9tICcuL21vbm9yZXBvLW9wdGlvbnMnO1xuaW1wb3J0IHsgTW9ub3JlcG9SZWxlYXNlIH0gZnJvbSAnLi9tb25vcmVwby1yZWxlYXNlJztcbmltcG9ydCB7IE54IH0gZnJvbSAnLi9ueCc7XG5pbXBvcnQgeyBUeXBlU2NyaXB0V29ya3NwYWNlIH0gZnJvbSAnLi90eXBlc2NyaXB0LXdvcmtzcGFjZSc7XG5cbmNvbnN0IE1PTk9SRVBPX1NZTSA9IFN5bWJvbC5mb3IoJ2Nka2xhYnMtcHJvamVuLXByb2plY3QtdHlwZXMueWFybi5Nb25vcmVwbycpO1xuXG4vKipcbiAqIEEgbW9ub3JlcG8gdXNpbmcgeWFybiB3b3Jrc3BhY2VzLlxuICovXG5leHBvcnQgY2xhc3MgTW9ub3JlcG8gZXh0ZW5kcyB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0IHtcbiAgcHVibGljIHN0YXRpYyBpc01vbm9yZXBvKHg6IFByb2plY3QpOiB4IGlzIE1vbm9yZXBvIHtcbiAgICByZXR1cm4gQm9vbGVhbih4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBNT05PUkVQT19TWU0gaW4geCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIE1vbm9yZXBvIFJlbGVhc2UgY29tcG9uZW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbW9ub3JlcG9SZWxlYXNlPzogTW9ub3JlcG9SZWxlYXNlO1xuXG4gIC8qKlxuICAgKiBUaGUgVVJMIHdoZXJlIHRoZSBhY3R1YWwgY29kZSBmb3IgdGhlIHBhY2thZ2UgbGl2ZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVwb3NpdG9yeVVybD86IHN0cmluZztcblxuICBwcml2YXRlIHByb2plY3RzID0gbmV3IEFycmF5PFR5cGVTY3JpcHRXb3Jrc3BhY2U+KCk7XG4gIHByaXZhdGUgcG9zdEluc3RhbGxEZXBlbmRlbmNpZXMgPSBuZXcgQXJyYXk8KCkgPT4gYm9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgb3B0aW9uczogTW9ub3JlcG9PcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHBhY2thZ2VNYW5hZ2VyOiBvcHRpb25zLnlhcm5CZXJyeSA/IGphdmFzY3JpcHQuTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk5fQkVSUlkgOiBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOX0NMQVNTSUMsXG4gICAgICB5YXJuQmVycnlPcHRpb25zOiBvcHRpb25zLnlhcm5CZXJyeSA/IHtcbiAgICAgICAgLi4ub3B0aW9ucy55YXJuQmVycnlPcHRpb25zLFxuICAgICAgICB5YXJuUmNPcHRpb25zOiB7XG4gICAgICAgICAgbm9kZUxpbmtlcjogamF2YXNjcmlwdC5ZYXJuTm9kZUxpbmtlci5OT0RFX01PRFVMRVMsXG4gICAgICAgICAgLi4ub3B0aW9ucy55YXJuQmVycnlPcHRpb25zPy55YXJuUmNPcHRpb25zLFxuICAgICAgICB9LFxuICAgICAgfSA6IHVuZGVmaW5lZCxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuICAgICAgamVzdDogZmFsc2UsXG4gICAgICBlc2xpbnQ6IGZhbHNlLFxuICAgICAgcmVsZWFzZTogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgTU9OT1JFUE9fU1lNLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy5yZXBvc2l0b3J5VXJsID0gb3B0aW9ucy5yZXBvc2l0b3J5O1xuICAgIGNvbnN0IGJ1aWxkV2l0aE54ID0gQm9vbGVhbihvcHRpb25zLm54ICYmIG9wdGlvbnMuYnVpbGRXaXRoTngpO1xuXG4gICAgLy8gWWFybiBCZXJyeSBkZXBlbmRlbmNpZXNNZXRhIGZvciBidWlsZGFibGUgcGFja2FnZXNcbiAgICBpZiAob3B0aW9ucy5idWlsZGFibGVQYWNrYWdlcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoJ2RlcGVuZGVuY2llc01ldGEnLCBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIG9wdGlvbnMuYnVpbGRhYmxlUGFja2FnZXMubWFwKChwa2cpID0+IFtwa2csIHsgYnVpbHQ6IHRydWUgfV0pLFxuICAgICAgKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJldHRpZXIgZm9ybWF0dGluZ1xuICAgICAqL1xuICAgIGlmIChvcHRpb25zLnByZXR0aWVyKSB7XG4gICAgICB0aGlzLmFkZERldkRlcHMoJ2VzbGludC1jb25maWctcHJldHRpZXInLCAnZXNsaW50LXBsdWdpbi1wcmV0dGllcicpO1xuICAgICAgbmV3IEpzb25GaWxlKHRoaXMsICcuZXNsaW50cmMuanNvbicsIHtcbiAgICAgICAgYWxsb3dDb21tZW50czogdHJ1ZSxcbiAgICAgICAgb2JqOiB7XG4gICAgICAgICAgcGx1Z2luczogWydAdHlwZXNjcmlwdC1lc2xpbnQnLCAncHJldHRpZXInXSxcbiAgICAgICAgICBwYXJzZXI6ICdAdHlwZXNjcmlwdC1lc2xpbnQvcGFyc2VyJyxcbiAgICAgICAgICBwYXJzZXJPcHRpb25zOiB7XG4gICAgICAgICAgICBlY21hVmVyc2lvbjogMjAxOCxcbiAgICAgICAgICAgIHNvdXJjZVR5cGU6ICdtb2R1bGUnLFxuICAgICAgICAgICAgcHJvamVjdDogJy4vdHNjb25maWcuZGV2Lmpzb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaWdub3JlUGF0dGVybnM6IFsnIS5wcm9qZW5yYy50cyddLFxuICAgICAgICAgIGV4dGVuZHM6IFsncGx1Z2luOnByZXR0aWVyL3JlY29tbWVuZGVkJ10sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMudGFza3MuYWRkVGFzaygnZm10JywgeyBleGVjOiAnZXNsaW50IC0tZXh0IC50cyAtLWZpeCAtLW5vLWVycm9yLW9uLXVubWF0Y2hlZC1wYXR0ZXJuIHByb2plbnJjIC5wcm9qZW5yYy50cycgfSk7XG5cbiAgICAgIHRoaXMudnNjb2RlPy5leHRlbnNpb25zLmFkZFJlY29tbWVuZGF0aW9ucygnZXNiZW5wLnByZXR0aWVyLXZzY29kZScsICdkYmFldW1lci52c2NvZGUtZXNsaW50Jyk7XG4gICAgICB0aGlzLnZzY29kZT8uc2V0dGluZ3MuYWRkU2V0dGluZygnZWRpdG9yLmRlZmF1bHRGb3JtYXR0ZXInLCAnZXNiZW5wLnByZXR0aWVyLXZzY29kZScpO1xuICAgICAgdGhpcy52c2NvZGU/LnNldHRpbmdzLmFkZFNldHRpbmcoJ2VzbGludC5mb3JtYXQuZW5hYmxlJywgdHJ1ZSk7XG4gICAgICB0aGlzLnZzY29kZT8uc2V0dGluZ3MuYWRkU2V0dGluZ3MoeyAnZWRpdG9yLmRlZmF1bHRGb3JtYXR0ZXInOiAnZGJhZXVtZXIudnNjb2RlLWVzbGludCcgfSwgW1xuICAgICAgICAnamF2YXNjcmlwdCcsXG4gICAgICAgICd0eXBlc2NyaXB0JyxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIFZTQ29kZSBXb3Jrc3BhY2VcbiAgICAgKi9cbiAgICBpZiAob3B0aW9ucy52c2NvZGVXb3Jrc3BhY2UpIHtcbiAgICAgIGNvbnN0IHdvcmtzcGFjZUZpbGUgPSBgJHt0aGlzLm5hbWV9LmNvZGUtd29ya3NwYWNlYDtcbiAgICAgIG5ldyBKc29uRmlsZSh0aGlzLCB3b3Jrc3BhY2VGaWxlLCB7XG4gICAgICAgIGFsbG93Q29tbWVudHM6IHRydWUsXG4gICAgICAgIG9iajogKCkgPT4gKHtcbiAgICAgICAgICBmb2xkZXJzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb2xkZXJzOiBBcnJheTx7XG4gICAgICAgICAgICAgIHBhdGg6IHN0cmluZztcbiAgICAgICAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgICAgIH0+ID0gdGhpcy5wcm9qZWN0c1xuICAgICAgICAgICAgICAuc29ydCgocDEsIHAyKSA9PiBwMS5uYW1lLmxvY2FsZUNvbXBhcmUocDIubmFtZSkpXG4gICAgICAgICAgICAgIC5tYXAoKHApID0+ICh7IHBhdGg6IHAud29ya3NwYWNlRGlyZWN0b3J5IH0pKTtcblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMudnNjb2RlV29ya3NwYWNlT3B0aW9ucz8uaW5jbHVkZVJvb3RXb3Jrc3BhY2UpIHtcbiAgICAgICAgICAgICAgZm9sZGVycy51bnNoaWZ0KHsgcGF0aDogJy4nLCBuYW1lOiBvcHRpb25zLnZzY29kZVdvcmtzcGFjZU9wdGlvbnM/LnJvb3RXb3Jrc3BhY2VOYW1lID8/ICc8cm9vdD4nIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZm9sZGVycztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNldHRpbmdzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXR0aW5ncyA9IChnZXRPYmpGcm9tRmlsZSh0aGlzLCAnLnZzY29kZS9zZXR0aW5ncy5qc29uJykgPz8ge30pIGFzIGFueTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnZzY29kZVdvcmtzcGFjZU9wdGlvbnM/LmluY2x1ZGVSb290V29ya3NwYWNlICYmIHRoaXMucHJvamVjdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHNldHRpbmdzWydmaWxlcy5leGNsdWRlJ10gPSB0aGlzLnByb2plY3RzLnJlZHVjZSgoZXhjbHVkZXMsIHApID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgLi4uZXhjbHVkZXMsXG4gICAgICAgICAgICAgICAgICBbcC53b3Jrc3BhY2VEaXJlY3Rvcnkuc3BsaXQocGF0aFBvc2l4LnNlcClbMF1dOiB0cnVlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0sIHNldHRpbmdzWydmaWxlcy5leGNsdWRlJ10gPz8ge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNldHRpbmdzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXh0ZW5zaW9uczogKCkgPT4gZ2V0T2JqRnJvbUZpbGUodGhpcywgJy52c2NvZGUvZXh0ZW5zaW9ucy5qc29uJyksXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFza3NcbiAgICAgKi9cbiAgICAvLyBidWlsZCB0YXNrXG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdidWlsZCcpO1xuICAgIGNvbnN0IGZtdFRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ2ZtdCcpO1xuICAgIGNvbnN0IGJ1aWxkVGFzayA9IHRoaXMudGFza3MuYWRkVGFzaygnYnVpbGQnKTtcbiAgICBpZiAodGhpcy5kZWZhdWx0VGFzaykge1xuICAgICAgYnVpbGRUYXNrLnNwYXduKHRoaXMuZGVmYXVsdFRhc2spO1xuICAgIH1cbiAgICBpZiAoZm10VGFzaykge1xuICAgICAgYnVpbGRUYXNrLnNwYXduKGZtdFRhc2spO1xuICAgIH1cbiAgICBpZiAoYnVpbGRXaXRoTngpIHtcbiAgICAgIGJ1aWxkVGFzay5leGVjKCdueCBydW4tbWFueSAtdCBidWlsZCcpO1xuICAgICAgdGhpcy5naXRodWI/LnRyeUZpbmRXb3JrZmxvdygnYnVpbGQnKT8uZmlsZT8ucGF0Y2goXG4gICAgICAgIEpzb25QYXRjaC5hZGQoJy9qb2JzL2J1aWxkL2Vudi9OWF9TS0lQX05YX0NBQ0hFJywgJ3RydWUnKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1aWxkVGFzay5leGVjKCd5YXJuIHdvcmtzcGFjZXMgcnVuIGJ1aWxkJyk7XG4gICAgfVxuXG4gICAgLy8gUnVuIGluIGFsbCB3b3Jrc3BhY2VzIHRhc2tzXG4gICAgdGhpcy50YXNrcy50cnlGaW5kKCdjb21waWxlJyk/LnJlc2V0KCd5YXJuIHdvcmtzcGFjZXMgcnVuIGNvbXBpbGUnKTtcbiAgICB0aGlzLnRhc2tzLnRyeUZpbmQoJ3BhY2thZ2UnKT8ucmVzZXQoJ3lhcm4gd29ya3NwYWNlcyBydW4gcGFja2FnZScpO1xuICAgIHRoaXMudGFza3MudHJ5RmluZCgndGVzdCcpPy5yZXNldCgneWFybiB3b3Jrc3BhY2VzIHJ1biB0ZXN0Jyk7XG4gICAgdGhpcy5hZGRUYXNrKCdydW4nLCB7XG4gICAgICBleGVjOiAneWFybiB3b3Jrc3BhY2VzIHJ1bicsXG4gICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIFVwZ3JhZGUgYWxsIHBhY2thZ2VzXG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCd1cGdyYWRlJyk7XG4gICAgdGhpcy50YXNrcy5hZGRUYXNrKCd1cGdyYWRlJywge1xuICAgICAgZW52OiB7IENJOiAnMCcgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVXBncmFkZSBkZXBlbmRlbmNpZXMgaW4gYWxsIHdvcmtzcGFjZXMnLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAgLy8gSXQgaXMgbm90IHNhZmUgYW55bW9yZSB0byBoYXZlICducG0tY2hlY2stdXBkYXRlcycgaW4gYSBZYXJuIDEgZGVwZW5kZW5jeSB0cmVlLCBzbyBydW4gaXQgaW4gYSBzZXBhcmF0ZVxuICAgICAgICAvLyB0cmVlIGJ5IHVzaW5nIG5weC5cbiAgICAgICAgeyBleGVjOiAnbnB4IG5wbS1jaGVjay11cGRhdGVzQDE2IC0tZGVwPWRldixvcHRpb25hbCxwZWVyLHByb2QsYnVuZGxlIC0tdXBncmFkZSAtLXRhcmdldD1taW5vcicgfSxcbiAgICAgICAgeyBleGVjOiAneWFybiB3b3Jrc3BhY2VzIHJ1biBjaGVjay1mb3ItdXBkYXRlcycgfSxcbiAgICAgICAgeyBleGVjOiAneWFybiBpbnN0YWxsIC0tY2hlY2stZmlsZXMnIH0sXG4gICAgICAgIHsgZXhlYzogJ3lhcm4gdXBncmFkZScgfSxcbiAgICAgICAgeyBzcGF3bjogJ2RlZmF1bHQnIH0sXG4gICAgICAgIHsgc3Bhd246ICdwb3N0LXVwZ3JhZGUnIH0sXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgLy8gQ2xlYW4gdXAgdGFza3Mgbm90IHJlcXVpcmVkIGF0IHRvcC1sZXZlbFxuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygnZWplY3QnKTtcbiAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2soJ3dhdGNoJyk7XG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdwcmUtY29tcGlsZScpO1xuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygncG9zdC1jb21waWxlJyk7XG5cbiAgICAvLyBOeFxuICAgIGlmIChvcHRpb25zLm54KSB7XG4gICAgICBuZXcgTngodGhpcywge1xuICAgICAgICBkZWZhdWx0QmFzZTogb3B0aW9ucy5kZWZhdWx0UmVsZWFzZUJyYW5jaCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFJlbGVhc2UgV29ya2Zsb3dcbiAgICBpZiAob3B0aW9ucy5yZWxlYXNlKSB7XG4gICAgICB0aGlzLm1vbm9yZXBvUmVsZWFzZSA9IG5ldyBNb25vcmVwb1JlbGVhc2UodGhpcywge1xuICAgICAgICB3b3JrZmxvd1J1bnNPbjogb3B0aW9ucy53b3JrZmxvd1J1bnNPbixcbiAgICAgICAgYnVpbGRXaXRoTngsXG4gICAgICAgIC4uLm9wdGlvbnMucmVsZWFzZU9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXIocHJvamVjdDogVHlwZVNjcmlwdFdvcmtzcGFjZSkge1xuICAgIHRoaXMucHJvamVjdHMucHVzaChwcm9qZWN0KTtcbiAgfVxuXG4gIHB1YmxpYyBzeW50aCgpIHtcbiAgICB0aGlzLmZpbmFsRXNjYXBlSGF0Y2hlcygpO1xuICAgIHN1cGVyLnN5bnRoKCk7XG4gIH1cblxuICAvKipcbiAgICogQWxsb3dzIGEgc3ViIHByb2plY3QgdG8gcmVxdWVzdCBpbnN0YWxsYXRpb24gb2YgZGVwZW5kZW5jeSBhdCB0aGUgTW9ub3JlcG8gcm9vdFxuICAgKiBUaGV5IG11c3QgcHJvdmlkZSBhIGZ1bmN0aW9uIHRoYXQgaXMgZXhlY3V0ZWQgYWZ0ZXIgZGVwZW5kZW5jaWVzIGhhdmUgYmVlbiBpbnN0YWxsZWRcbiAgICogSWYgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUsIHRoZSBpbnN0YWxsIGNvbW1hbmQgaXMgcnVuIGZvciBhIHNlY29uZCB0aW1lIGFmdGVyIGFsbCBzdWIgcHJvamVjdCByZXF1ZXN0cyBoYXZlIHJ1bi5cbiAgICogVGhpcyBpcyB1c2VkIHRvIHJlc29sdmUgZGVwZW5kZW5jeSB2ZXJzaW9ucyBmcm9tIGAqYCB0byBhIGNvbmNyZXRlIHZlcnNpb24gY29uc3RyYWludC5cbiAgICovXG4gIHB1YmxpYyByZXF1ZXN0SW5zdGFsbERlcGVuZGVuY2llcyhyZXNvbHZlcjogSURlcGVuZGVuY3lSZXNvbHZlcikge1xuICAgIHRoaXMucG9zdEluc3RhbGxEZXBlbmRlbmNpZXMucHVzaChyZXNvbHZlci5yZXNvbHZlRGVwc0FuZFdyaXRlUGFja2FnZUpzb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvZGUgdGhhdCBuZWVkcyB0byBydW4ganVzdCBiZWZvcmUgc3ludGgsIGJ1dCBhZnRlciBhbGwgb3RoZXIgY29kZVxuICAgKi9cbiAgcHJpdmF0ZSBmaW5hbEVzY2FwZUhhdGNoZXMoKSB7XG4gICAgLy8gR2V0IHRoZSBPYmplY3RGaWxlXG4gICAgdGhpcy5wYWNrYWdlLmFkZEZpZWxkKCdwcml2YXRlJywgdHJ1ZSk7XG4gICAgdGhpcy5wYWNrYWdlLmFkZEZpZWxkKCd3b3Jrc3BhY2VzJywge1xuICAgICAgcGFja2FnZXM6IHRoaXMucHJvamVjdHMubWFwKChwKSA9PiBwLndvcmtzcGFjZURpcmVjdG9yeSksXG4gICAgICAuLi50aGlzLnJlbmRlck5vSG9pc3QoKSxcbiAgICB9KTtcblxuICAgIHRoaXMudHNjb25maWc/LmZpbGUuYWRkT3ZlcnJpZGUoJ2luY2x1ZGUnLCBbXSk7XG4gICAgdGhpcy50c2NvbmZpZ0Rldj8uZmlsZS5hZGRPdmVycmlkZSgnaW5jbHVkZScsIFsnLnByb2plbnJjLnRzJywgJ3Byb2plbnJjLyoqLyoudHMnXSk7XG4gICAgZm9yIChjb25zdCB0c2NvbmZpZyBvZiBbdGhpcy50c2NvbmZpZywgdGhpcy50c2NvbmZpZ0Rldl0pIHtcbiAgICAgIHRzY29uZmlnPy5maWxlLmFkZE92ZXJyaWRlKFxuICAgICAgICAncmVmZXJlbmNlcycsXG4gICAgICAgIHRoaXMucHJvamVjdHMubWFwKChwKSA9PiAoeyBwYXRoOiBwLndvcmtzcGFjZURpcmVjdG9yeSB9KSksXG4gICAgICApO1xuICAgIH1cblxuICAgIHRoaXMucGFja2FnZS5hZGRGaWVsZCgnamVzdCcsIHtcbiAgICAgIHByb2plY3RzOiB0aGlzLnByb2plY3RzLm1hcCgocCkgPT4gYDxyb290RGlyPi8ke3Aud29ya3NwYWNlRGlyZWN0b3J5fWApLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciB0aGUgJ25vaG9pc3QnIGRpcmVjdGl2ZVxuICAgKlxuICAgKiBCdW5kbGVkIGRlcGVuZGVuY2llcyBtdXN0IGJlIG5vaG9pc3QnZWQsIG90aGVyd2lzZSBOUE0gc2lsZW50bHkgd29uJ3QgYnVuZGxlIHRoZW0uXG4gICAqXG4gICAqIFJlbmRlcnMgYW4gb2JqZWN0IHRoYXQgc2hvdWxkIGJlIG1peGVkIGludG8gdGhlIGB3b3Jrc3BhY2VzYCBvYmplY3QuXG4gICAqL1xuICBwcml2YXRlIHJlbmRlck5vSG9pc3QoKTogYW55IHtcbiAgICBjb25zdCBub2hvaXN0ID0gdGhpcy5wcm9qZWN0cy5mbGF0TWFwKChwKSA9PlxuICAgICAgcC5kZXBzLmFsbFxuICAgICAgICAuZmlsdGVyKChkZXApID0+IGRlcC50eXBlID09PSBEZXBlbmRlbmN5VHlwZS5CVU5ETEVEKVxuICAgICAgICAuZmxhdE1hcCgoZGVwKSA9PiBbXG4gICAgICAgICAgYCR7cC5uYW1lfS8ke2RlcC5uYW1lfWAsXG4gICAgICAgICAgYCR7cC5uYW1lfS8ke2RlcC5uYW1lfS8qKmAsXG4gICAgICAgIF0pLFxuICAgICk7XG4gICAgcmV0dXJuIG5vaG9pc3QubGVuZ3RoID4gMCA/IHsgbm9ob2lzdCB9IDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvb2tzIGludG8gdGhlIGluc3RhbGwgZGVwZW5kZW5jaWVzIGN5Y2xlXG4gICAqL1xuICBwdWJsaWMgcG9zdFN5bnRoZXNpemUoKSB7XG4gICAgaWYgKHRoaXMucG9zdEluc3RhbGxEZXBlbmRlbmNpZXMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBub2RlUGtnOiBhbnkgPSB0aGlzLnBhY2thZ2U7XG4gICAgICBub2RlUGtnLmluc3RhbGxEZXBlbmRlbmNpZXMoKTtcblxuICAgICAgY29uc3QgY29tcGxldGVkUmVxdWVzdHMgPSB0aGlzLnBvc3RJbnN0YWxsRGVwZW5kZW5jaWVzLm1hcCgocmVxdWVzdCkgPT4gcmVxdWVzdCgpKTtcbiAgICAgIGlmIChjb21wbGV0ZWRSZXF1ZXN0cy5zb21lKEJvb2xlYW4pKSB7XG4gICAgICAgIG5vZGVQa2cuaW5zdGFsbERlcGVuZGVuY2llcygpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBvc3RJbnN0YWxsRGVwZW5kZW5jaWVzID0gW107XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURlcGVuZGVuY3lSZXNvbHZlciB7XG4gIHJlc29sdmVEZXBzQW5kV3JpdGVQYWNrYWdlSnNvbigpOiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBnZXRPYmpGcm9tRmlsZShwcm9qZWN0OiBQcm9qZWN0LCBmaWxlOiBzdHJpbmcpOiBvYmplY3Qge1xuICByZXR1cm4gKHByb2plY3QudHJ5RmluZE9iamVjdEZpbGUoZmlsZSkgYXMgYW55KT8ub2JqO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIENka0xhYnNNb25vcmVwb1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENka0xhYnNNb25vcmVwb09wdGlvbnMgZXh0ZW5kcyBNb25vcmVwb09wdGlvbnMge31cblxuLyoqXG4gKiBPcGluaW9uYXRlZCBpbXBsZW1lbnRhdGlvbiBvZiB5YXJuLk1vbm9yZXBvXG4gKiBAcGppZCBjZGtsYWJzLXlhcm4tbW9ub3JlcG9cbiAqL1xuZXhwb3J0IGNsYXNzIENka0xhYnNNb25vcmVwbyBleHRlbmRzIE1vbm9yZXBvIHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ2RrTGFic01vbm9yZXBvT3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIHByb2plbnJjVHM6IHRydWUsXG5cbiAgICAgIGF1dG9BcHByb3ZlVXBncmFkZXM6IHRydWUsXG4gICAgICBhdXRvQXBwcm92ZU9wdGlvbnM6IHtcbiAgICAgICAgYWxsb3dlZFVzZXJuYW1lczogWydnaXRodWItYm90JywgJ2Nka2xhYnMtYXV0b21hdGlvbicsICdkZXBlbmRhYm90W2JvdF0nXSxcbiAgICAgICAgc2VjcmV0OiAnR0lUSFVCX1RPS0VOJyxcbiAgICAgIH0sXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgZ2l0aHViT3B0aW9uczoge1xuICAgICAgICAuLi5vcHRpb25zLmdpdGh1Yk9wdGlvbnMsXG4gICAgICAgIG1lcmdpZnk6IGZhbHNlLFxuICAgICAgfSxcbiAgICAgIC8vIERldmlhdGlvbiBmcm9tIHVwc3RyZWFtIHByb2plbjogdXBzdHJlYW0gcHJvamVuIGRlZmF1bHRzIHRvIG1pbk5vZGVWZXJzaW9uLCBidXQgd2UgaGF2ZSB0b28gbWFueSB3b3JrZmxvd3NcbiAgICAgIC8vIHRoYXQgdXNlIHRvb2xzIHRoYXQgd2FudCBhIHJlY2VudCBOb2RlIHZlcnNpb24sIHNvIGRlZmF1bHQgdG8gYSByZWFzb25hYmxlIGZsb2F0aW5nIHZlcnNpb24uXG4gICAgICB3b3JrZmxvd05vZGVWZXJzaW9uOiBvcHRpb25zLndvcmtmbG93Tm9kZVZlcnNpb24gPz8gJ2x0cy8qJyxcbiAgICB9KTtcblxuICAgIG5ldyBnaXRodWIuTWVyZ2VRdWV1ZSh0aGlzLCB7XG4gICAgICBhdXRvUXVldWVPcHRpb25zOiB7XG4gICAgICAgIHByb2plbkNyZWRlbnRpYWxzOiBnaXRodWIuR2l0aHViQ3JlZGVudGlhbHMuZnJvbVBlcnNvbmFsQWNjZXNzVG9rZW4oeyBzZWNyZXQ6ICdQUk9KRU5fR0lUSFVCX1RPS0VOJyB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
286
|
+
CdkLabsMonorepo[_b] = { fqn: "cdklabs-projen-project-types.yarn.CdkLabsMonorepo", version: "0.3.20" };
|
|
287
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9ub3JlcG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMveWFybi9tb25vcmVwby50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE2QztBQUM3QyxtQ0FBc0c7QUFFdEcseURBQXFEO0FBQ3JELDZCQUEwQjtBQUcxQixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7QUFFOUU7O0dBRUc7QUFDSCxNQUFhLFFBQVMsU0FBUSxtQkFBVSxDQUFDLGlCQUFpQjtJQUNqRCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQVU7UUFDakMsT0FBTyxPQUFPLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQWVELFlBQTRCLE9BQXdCO1FBQ2xELEtBQUssQ0FBQztZQUNKLEdBQUcsT0FBTztZQUNWLGNBQWMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxtQkFBVSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsbUJBQVUsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZO1lBQ3pILGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNwQyxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0I7Z0JBQzNCLGFBQWEsRUFBRTtvQkFDYixVQUFVLEVBQUUsbUJBQVUsQ0FBQyxjQUFjLENBQUMsWUFBWTtvQkFDbEQsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsYUFBYTtpQkFDM0M7YUFDRixDQUFDLENBQUMsQ0FBQyxTQUFTO1lBQ2IsVUFBVSxFQUFFLEtBQUs7WUFDakIsSUFBSSxFQUFFLEtBQUs7WUFDWCxNQUFNLEVBQUUsS0FBSztZQUNiLE9BQU8sRUFBRSxLQUFLO1NBQ2YsQ0FBQyxDQUFDO1FBZnVCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBSDVD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QUMsbUJBQW1CLElBQUksT0FBTztTQUM1RCxDQUFDLENBQUM7UUFFSCxJQUFJLGVBQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFO1lBQzFCLGdCQUFnQixFQUFFO2dCQUNoQixpQkFBaUIsRUFBRSxlQUFNLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLENBQUMsRUFBRSxNQUFNLEVBQUUscUJBQXFCLEVBQUUsQ0FBQzthQUN2RztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBekJILDBDQTBCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGhQb3NpeCBmcm9tICdub2RlOnBhdGgvcG9zaXgnO1xuaW1wb3J0IHsgSnNvbkZpbGUsIFByb2plY3QsIGphdmFzY3JpcHQsIHR5cGVzY3JpcHQsIGdpdGh1YiwgRGVwZW5kZW5jeVR5cGUsIEpzb25QYXRjaCB9IGZyb20gJ3Byb2plbic7XG5pbXBvcnQgeyBNb25vcmVwb09wdGlvbnMgfSBmcm9tICcuL21vbm9yZXBvLW9wdGlvbnMnO1xuaW1wb3J0IHsgTW9ub3JlcG9SZWxlYXNlIH0gZnJvbSAnLi9tb25vcmVwby1yZWxlYXNlJztcbmltcG9ydCB7IE54IH0gZnJvbSAnLi9ueCc7XG5pbXBvcnQgeyBUeXBlU2NyaXB0V29ya3NwYWNlIH0gZnJvbSAnLi90eXBlc2NyaXB0LXdvcmtzcGFjZSc7XG5cbmNvbnN0IE1PTk9SRVBPX1NZTSA9IFN5bWJvbC5mb3IoJ2Nka2xhYnMtcHJvamVuLXByb2plY3QtdHlwZXMueWFybi5Nb25vcmVwbycpO1xuXG4vKipcbiAqIEEgbW9ub3JlcG8gdXNpbmcgeWFybiB3b3Jrc3BhY2VzLlxuICovXG5leHBvcnQgY2xhc3MgTW9ub3JlcG8gZXh0ZW5kcyB0eXBlc2NyaXB0LlR5cGVTY3JpcHRQcm9qZWN0IHtcbiAgcHVibGljIHN0YXRpYyBpc01vbm9yZXBvKHg6IFByb2plY3QpOiB4IGlzIE1vbm9yZXBvIHtcbiAgICByZXR1cm4gQm9vbGVhbih4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBNT05PUkVQT19TWU0gaW4geCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIE1vbm9yZXBvIFJlbGVhc2UgY29tcG9uZW50XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbW9ub3JlcG9SZWxlYXNlPzogTW9ub3JlcG9SZWxlYXNlO1xuXG4gIC8qKlxuICAgKiBUaGUgVVJMIHdoZXJlIHRoZSBhY3R1YWwgY29kZSBmb3IgdGhlIHBhY2thZ2UgbGl2ZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVwb3NpdG9yeVVybD86IHN0cmluZztcblxuICBwcml2YXRlIHByb2plY3RzID0gbmV3IEFycmF5PFR5cGVTY3JpcHRXb3Jrc3BhY2U+KCk7XG4gIHByaXZhdGUgcG9zdEluc3RhbGxEZXBlbmRlbmNpZXMgPSBuZXcgQXJyYXk8KCkgPT4gYm9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgb3B0aW9uczogTW9ub3JlcG9PcHRpb25zKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIHBhY2thZ2VNYW5hZ2VyOiBvcHRpb25zLnlhcm5CZXJyeSA/IGphdmFzY3JpcHQuTm9kZVBhY2thZ2VNYW5hZ2VyLllBUk5fQkVSUlkgOiBqYXZhc2NyaXB0Lk5vZGVQYWNrYWdlTWFuYWdlci5ZQVJOX0NMQVNTSUMsXG4gICAgICB5YXJuQmVycnlPcHRpb25zOiBvcHRpb25zLnlhcm5CZXJyeSA/IHtcbiAgICAgICAgLi4ub3B0aW9ucy55YXJuQmVycnlPcHRpb25zLFxuICAgICAgICB5YXJuUmNPcHRpb25zOiB7XG4gICAgICAgICAgbm9kZUxpbmtlcjogamF2YXNjcmlwdC5ZYXJuTm9kZUxpbmtlci5OT0RFX01PRFVMRVMsXG4gICAgICAgICAgLi4ub3B0aW9ucy55YXJuQmVycnlPcHRpb25zPy55YXJuUmNPcHRpb25zLFxuICAgICAgICB9LFxuICAgICAgfSA6IHVuZGVmaW5lZCxcbiAgICAgIHNhbXBsZUNvZGU6IGZhbHNlLFxuICAgICAgamVzdDogZmFsc2UsXG4gICAgICBlc2xpbnQ6IGZhbHNlLFxuICAgICAgcmVsZWFzZTogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgTU9OT1JFUE9fU1lNLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy5yZXBvc2l0b3J5VXJsID0gb3B0aW9ucy5yZXBvc2l0b3J5O1xuICAgIGNvbnN0IGJ1aWxkV2l0aE54ID0gQm9vbGVhbihvcHRpb25zLm54ICYmIG9wdGlvbnMuYnVpbGRXaXRoTngpO1xuXG4gICAgLy8gWWFybiBCZXJyeSBkZXBlbmRlbmNpZXNNZXRhIGZvciBidWlsZGFibGUgcGFja2FnZXNcbiAgICBpZiAob3B0aW9ucy5idWlsZGFibGVQYWNrYWdlcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoJ2RlcGVuZGVuY2llc01ldGEnLCBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIG9wdGlvbnMuYnVpbGRhYmxlUGFja2FnZXMubWFwKChwa2cpID0+IFtwa2csIHsgYnVpbHQ6IHRydWUgfV0pLFxuICAgICAgKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJldHRpZXIgZm9ybWF0dGluZ1xuICAgICAqL1xuICAgIGlmIChvcHRpb25zLnByZXR0aWVyKSB7XG4gICAgICB0aGlzLmFkZERldkRlcHMoJ2VzbGludC1jb25maWctcHJldHRpZXInLCAnZXNsaW50LXBsdWdpbi1wcmV0dGllcicpO1xuICAgICAgbmV3IEpzb25GaWxlKHRoaXMsICcuZXNsaW50cmMuanNvbicsIHtcbiAgICAgICAgYWxsb3dDb21tZW50czogdHJ1ZSxcbiAgICAgICAgb2JqOiB7XG4gICAgICAgICAgcGx1Z2luczogWydAdHlwZXNjcmlwdC1lc2xpbnQnLCAncHJldHRpZXInXSxcbiAgICAgICAgICBwYXJzZXI6ICdAdHlwZXNjcmlwdC1lc2xpbnQvcGFyc2VyJyxcbiAgICAgICAgICBwYXJzZXJPcHRpb25zOiB7XG4gICAgICAgICAgICBlY21hVmVyc2lvbjogMjAxOCxcbiAgICAgICAgICAgIHNvdXJjZVR5cGU6ICdtb2R1bGUnLFxuICAgICAgICAgICAgcHJvamVjdDogJy4vdHNjb25maWcuZGV2Lmpzb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgaWdub3JlUGF0dGVybnM6IFsnIS5wcm9qZW5yYy50cyddLFxuICAgICAgICAgIGV4dGVuZHM6IFsncGx1Z2luOnByZXR0aWVyL3JlY29tbWVuZGVkJ10sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMudGFza3MuYWRkVGFzaygnZm10JywgeyBleGVjOiAnZXNsaW50IC0tZXh0IC50cyAtLWZpeCAtLW5vLWVycm9yLW9uLXVubWF0Y2hlZC1wYXR0ZXJuIHByb2plbnJjIC5wcm9qZW5yYy50cycgfSk7XG5cbiAgICAgIHRoaXMudnNjb2RlPy5leHRlbnNpb25zLmFkZFJlY29tbWVuZGF0aW9ucygnZXNiZW5wLnByZXR0aWVyLXZzY29kZScsICdkYmFldW1lci52c2NvZGUtZXNsaW50Jyk7XG4gICAgICB0aGlzLnZzY29kZT8uc2V0dGluZ3MuYWRkU2V0dGluZygnZWRpdG9yLmRlZmF1bHRGb3JtYXR0ZXInLCAnZXNiZW5wLnByZXR0aWVyLXZzY29kZScpO1xuICAgICAgdGhpcy52c2NvZGU/LnNldHRpbmdzLmFkZFNldHRpbmcoJ2VzbGludC5mb3JtYXQuZW5hYmxlJywgdHJ1ZSk7XG4gICAgICB0aGlzLnZzY29kZT8uc2V0dGluZ3MuYWRkU2V0dGluZ3MoeyAnZWRpdG9yLmRlZmF1bHRGb3JtYXR0ZXInOiAnZGJhZXVtZXIudnNjb2RlLWVzbGludCcgfSwgW1xuICAgICAgICAnamF2YXNjcmlwdCcsXG4gICAgICAgICd0eXBlc2NyaXB0JyxcbiAgICAgIF0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZSBhIFZTQ29kZSBXb3Jrc3BhY2VcbiAgICAgKi9cbiAgICBpZiAob3B0aW9ucy52c2NvZGVXb3Jrc3BhY2UpIHtcbiAgICAgIGNvbnN0IHdvcmtzcGFjZUZpbGUgPSBgJHt0aGlzLm5hbWV9LmNvZGUtd29ya3NwYWNlYDtcbiAgICAgIG5ldyBKc29uRmlsZSh0aGlzLCB3b3Jrc3BhY2VGaWxlLCB7XG4gICAgICAgIGFsbG93Q29tbWVudHM6IHRydWUsXG4gICAgICAgIG9iajogKCkgPT4gKHtcbiAgICAgICAgICBmb2xkZXJzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb2xkZXJzOiBBcnJheTx7XG4gICAgICAgICAgICAgIHBhdGg6IHN0cmluZztcbiAgICAgICAgICAgICAgbmFtZT86IHN0cmluZztcbiAgICAgICAgICAgIH0+ID0gdGhpcy5wcm9qZWN0c1xuICAgICAgICAgICAgICAuc29ydCgocDEsIHAyKSA9PiBwMS5uYW1lLmxvY2FsZUNvbXBhcmUocDIubmFtZSkpXG4gICAgICAgICAgICAgIC5tYXAoKHApID0+ICh7IHBhdGg6IHAud29ya3NwYWNlRGlyZWN0b3J5IH0pKTtcblxuICAgICAgICAgICAgaWYgKG9wdGlvbnMudnNjb2RlV29ya3NwYWNlT3B0aW9ucz8uaW5jbHVkZVJvb3RXb3Jrc3BhY2UpIHtcbiAgICAgICAgICAgICAgZm9sZGVycy51bnNoaWZ0KHsgcGF0aDogJy4nLCBuYW1lOiBvcHRpb25zLnZzY29kZVdvcmtzcGFjZU9wdGlvbnM/LnJvb3RXb3Jrc3BhY2VOYW1lID8/ICc8cm9vdD4nIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZm9sZGVycztcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNldHRpbmdzOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZXR0aW5ncyA9IChnZXRPYmpGcm9tRmlsZSh0aGlzLCAnLnZzY29kZS9zZXR0aW5ncy5qc29uJykgPz8ge30pIGFzIGFueTtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnZzY29kZVdvcmtzcGFjZU9wdGlvbnM/LmluY2x1ZGVSb290V29ya3NwYWNlICYmIHRoaXMucHJvamVjdHMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIHNldHRpbmdzWydmaWxlcy5leGNsdWRlJ10gPSB0aGlzLnByb2plY3RzLnJlZHVjZSgoZXhjbHVkZXMsIHApID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgLi4uZXhjbHVkZXMsXG4gICAgICAgICAgICAgICAgICBbcC53b3Jrc3BhY2VEaXJlY3Rvcnkuc3BsaXQocGF0aFBvc2l4LnNlcClbMF1dOiB0cnVlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIH0sIHNldHRpbmdzWydmaWxlcy5leGNsdWRlJ10gPz8ge30pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNldHRpbmdzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXh0ZW5zaW9uczogKCkgPT4gZ2V0T2JqRnJvbUZpbGUodGhpcywgJy52c2NvZGUvZXh0ZW5zaW9ucy5qc29uJyksXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGFza3NcbiAgICAgKi9cbiAgICAvLyBidWlsZCB0YXNrXG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCdidWlsZCcpO1xuICAgIGNvbnN0IGZtdFRhc2sgPSB0aGlzLnRhc2tzLnRyeUZpbmQoJ2ZtdCcpO1xuICAgIGNvbnN0IGJ1aWxkVGFzayA9IHRoaXMudGFza3MuYWRkVGFzaygnYnVpbGQnKTtcbiAgICBpZiAodGhpcy5kZWZhdWx0VGFzaykge1xuICAgICAgYnVpbGRUYXNrLnNwYXduKHRoaXMuZGVmYXVsdFRhc2spO1xuICAgIH1cbiAgICBpZiAoZm10VGFzaykge1xuICAgICAgYnVpbGRUYXNrLnNwYXduKGZtdFRhc2spO1xuICAgIH1cbiAgICBjb25zdCB3c1J1biA9IG9wdGlvbnMueWFybkJlcnJ5ID8gJ3lhcm4gd29ya3NwYWNlcyBmb3JlYWNoIC0tYWxsIC0tZXhjbHVkZSAuIHJ1bicgOiAneWFybiB3b3Jrc3BhY2VzIHJ1bic7XG5cbiAgICBpZiAoYnVpbGRXaXRoTngpIHtcbiAgICAgIGJ1aWxkVGFzay5leGVjKCdueCBydW4tbWFueSAtdCBidWlsZCcpO1xuICAgICAgdGhpcy5naXRodWI/LnRyeUZpbmRXb3JrZmxvdygnYnVpbGQnKT8uZmlsZT8ucGF0Y2goXG4gICAgICAgIEpzb25QYXRjaC5hZGQoJy9qb2JzL2J1aWxkL2Vudi9OWF9TS0lQX05YX0NBQ0hFJywgJ3RydWUnKSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1aWxkVGFzay5leGVjKGAke3dzUnVufSBidWlsZGApO1xuICAgIH1cblxuICAgIC8vIFJ1biBpbiBhbGwgd29ya3NwYWNlcyB0YXNrc1xuICAgIHRoaXMudGFza3MudHJ5RmluZCgnY29tcGlsZScpPy5yZXNldChgJHt3c1J1bn0gY29tcGlsZWApO1xuICAgIHRoaXMudGFza3MudHJ5RmluZCgncGFja2FnZScpPy5yZXNldChgJHt3c1J1bn0gcGFja2FnZWApO1xuICAgIHRoaXMudGFza3MudHJ5RmluZCgndGVzdCcpPy5yZXNldChgJHt3c1J1bn0gdGVzdGApO1xuICAgIHRoaXMuYWRkVGFzaygncnVuJywge1xuICAgICAgZXhlYzogd3NSdW4sXG4gICAgICByZWNlaXZlQXJnczogdHJ1ZSxcbiAgICB9KTtcblxuICAgIC8vIFVwZ3JhZGUgYWxsIHBhY2thZ2VzXG4gICAgY29uc3QgY29vbGRvd24gPSBvcHRpb25zLmRlcHNVcGdyYWRlT3B0aW9ucz8uY29vbGRvd247XG4gICAgY29uc3QgdXBncmFkZUVudjogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgQ0k6ICcwJyB9O1xuICAgIGlmIChjb29sZG93biAmJiBvcHRpb25zLnlhcm5CZXJyeSkge1xuICAgICAgdXBncmFkZUVudi5ZQVJOX05QTV9NSU5JTUFMX0FHRV9HQVRFID0gU3RyaW5nKGNvb2xkb3duICogMjQgKiA2MCk7XG4gICAgfVxuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygndXBncmFkZScpO1xuICAgIHRoaXMudGFza3MuYWRkVGFzaygndXBncmFkZScsIHtcbiAgICAgIGVudjogdXBncmFkZUVudixcbiAgICAgIGRlc2NyaXB0aW9uOiAnVXBncmFkZSBkZXBlbmRlbmNpZXMgaW4gYWxsIHdvcmtzcGFjZXMnLFxuICAgICAgc3RlcHM6IFtcbiAgICAgICAgLy8gSXQgaXMgbm90IHNhZmUgYW55bW9yZSB0byBoYXZlICducG0tY2hlY2stdXBkYXRlcycgaW4gYSBZYXJuIDEgZGVwZW5kZW5jeSB0cmVlLCBzbyBydW4gaXQgaW4gYSBzZXBhcmF0ZSB0cmVlLlxuICAgICAgICB7IGV4ZWM6IGAke29wdGlvbnMueWFybkJlcnJ5ID8gJ3lhcm4gZGx4JyA6ICducHgnfSBucG0tY2hlY2stdXBkYXRlc0AyMCAtLWRlcD1kZXYsb3B0aW9uYWwscGVlcixwcm9kLGJ1bmRsZSAtLXVwZ3JhZGUgLS10YXJnZXQ9bWlub3Ike2Nvb2xkb3duID8gYCAtLWNvb2xkb3duPSR7Y29vbGRvd259YCA6ICcnfWAgfSxcbiAgICAgICAgeyBleGVjOiBgJHt3c1J1bn0gY2hlY2stZm9yLXVwZGF0ZXNgIH0sXG4gICAgICAgIHsgZXhlYzogb3B0aW9ucy55YXJuQmVycnkgPyAneWFybiBpbnN0YWxsJyA6ICd5YXJuIGluc3RhbGwgLS1jaGVjay1maWxlcycgfSxcbiAgICAgICAgeyBleGVjOiBvcHRpb25zLnlhcm5CZXJyeSA/ICd5YXJuIHVwJyA6ICd5YXJuIHVwZ3JhZGUnIH0sXG4gICAgICAgIHsgc3Bhd246ICdkZWZhdWx0JyB9LFxuICAgICAgICB7IHNwYXduOiAncG9zdC11cGdyYWRlJyB9LFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIC8vIENsZWFuIHVwIHRhc2tzIG5vdCByZXF1aXJlZCBhdCB0b3AtbGV2ZWxcbiAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2soJ2VqZWN0Jyk7XG4gICAgdGhpcy50YXNrcy5yZW1vdmVUYXNrKCd3YXRjaCcpO1xuICAgIHRoaXMudGFza3MucmVtb3ZlVGFzaygncHJlLWNvbXBpbGUnKTtcbiAgICB0aGlzLnRhc2tzLnJlbW92ZVRhc2soJ3Bvc3QtY29tcGlsZScpO1xuXG4gICAgLy8gTnhcbiAgICBpZiAob3B0aW9ucy5ueCkge1xuICAgICAgbmV3IE54KHRoaXMsIHtcbiAgICAgICAgZGVmYXVsdEJhc2U6IG9wdGlvbnMuZGVmYXVsdFJlbGVhc2VCcmFuY2gsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBSZWxlYXNlIFdvcmtmbG93XG4gICAgaWYgKG9wdGlvbnMucmVsZWFzZSkge1xuICAgICAgdGhpcy5tb25vcmVwb1JlbGVhc2UgPSBuZXcgTW9ub3JlcG9SZWxlYXNlKHRoaXMsIHtcbiAgICAgICAgd29ya2Zsb3dSdW5zT246IG9wdGlvbnMud29ya2Zsb3dSdW5zT24sXG4gICAgICAgIGJ1aWxkV2l0aE54LFxuICAgICAgICB5YXJuQmVycnk6IG9wdGlvbnMueWFybkJlcnJ5LFxuICAgICAgICAuLi5vcHRpb25zLnJlbGVhc2VPcHRpb25zLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyKHByb2plY3Q6IFR5cGVTY3JpcHRXb3Jrc3BhY2UpIHtcbiAgICB0aGlzLnByb2plY3RzLnB1c2gocHJvamVjdCk7XG4gIH1cblxuICBwdWJsaWMgc3ludGgoKSB7XG4gICAgdGhpcy5maW5hbEVzY2FwZUhhdGNoZXMoKTtcbiAgICBzdXBlci5zeW50aCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG93cyBhIHN1YiBwcm9qZWN0IHRvIHJlcXVlc3QgaW5zdGFsbGF0aW9uIG9mIGRlcGVuZGVuY3kgYXQgdGhlIE1vbm9yZXBvIHJvb3RcbiAgICogVGhleSBtdXN0IHByb3ZpZGUgYSBmdW5jdGlvbiB0aGF0IGlzIGV4ZWN1dGVkIGFmdGVyIGRlcGVuZGVuY2llcyBoYXZlIGJlZW4gaW5zdGFsbGVkXG4gICAqIElmIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlLCB0aGUgaW5zdGFsbCBjb21tYW5kIGlzIHJ1biBmb3IgYSBzZWNvbmQgdGltZSBhZnRlciBhbGwgc3ViIHByb2plY3QgcmVxdWVzdHMgaGF2ZSBydW4uXG4gICAqIFRoaXMgaXMgdXNlZCB0byByZXNvbHZlIGRlcGVuZGVuY3kgdmVyc2lvbnMgZnJvbSBgKmAgdG8gYSBjb25jcmV0ZSB2ZXJzaW9uIGNvbnN0cmFpbnQuXG4gICAqL1xuICBwdWJsaWMgcmVxdWVzdEluc3RhbGxEZXBlbmRlbmNpZXMocmVzb2x2ZXI6IElEZXBlbmRlbmN5UmVzb2x2ZXIpIHtcbiAgICB0aGlzLnBvc3RJbnN0YWxsRGVwZW5kZW5jaWVzLnB1c2gocmVzb2x2ZXIucmVzb2x2ZURlcHNBbmRXcml0ZVBhY2thZ2VKc29uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb2RlIHRoYXQgbmVlZHMgdG8gcnVuIGp1c3QgYmVmb3JlIHN5bnRoLCBidXQgYWZ0ZXIgYWxsIG90aGVyIGNvZGVcbiAgICovXG4gIHByaXZhdGUgZmluYWxFc2NhcGVIYXRjaGVzKCkge1xuICAgIC8vIEdldCB0aGUgT2JqZWN0RmlsZVxuICAgIHRoaXMucGFja2FnZS5hZGRGaWVsZCgncHJpdmF0ZScsIHRydWUpO1xuICAgIHRoaXMucGFja2FnZS5hZGRGaWVsZCgnd29ya3NwYWNlcycsIHtcbiAgICAgIHBhY2thZ2VzOiB0aGlzLnByb2plY3RzLm1hcCgocCkgPT4gcC53b3Jrc3BhY2VEaXJlY3RvcnkpLFxuICAgICAgLi4uKCF0aGlzLm9wdGlvbnMueWFybkJlcnJ5ID8gdGhpcy5yZW5kZXJOb0hvaXN0KCkgOiB1bmRlZmluZWQpLFxuICAgIH0pO1xuXG4gICAgLy8gQXV0by1zZXQgaG9pc3RpbmdMaW1pdHMgZm9yIHdvcmtzcGFjZXMgd2l0aCBidW5kbGVkIGRlcHMgd2hlbiB1c2luZyBZYXJuIEJlcnJ5XG4gICAgaWYgKHRoaXMub3B0aW9ucy55YXJuQmVycnkpIHtcbiAgICAgIGZvciAoY29uc3QgcCBvZiB0aGlzLnByb2plY3RzKSB7XG4gICAgICAgIGlmIChwLmJ1bmRsZWREZXBzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBwLnBhY2thZ2UuYWRkRmllbGQoJ2luc3RhbGxDb25maWcnLCB7IGhvaXN0aW5nTGltaXRzOiAnd29ya3NwYWNlcycgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnRzY29uZmlnPy5maWxlLmFkZE92ZXJyaWRlKCdpbmNsdWRlJywgW10pO1xuICAgIHRoaXMudHNjb25maWdEZXY/LmZpbGUuYWRkT3ZlcnJpZGUoJ2luY2x1ZGUnLCBbJy5wcm9qZW5yYy50cycsICdwcm9qZW5yYy8qKi8qLnRzJ10pO1xuICAgIGZvciAoY29uc3QgdHNjb25maWcgb2YgW3RoaXMudHNjb25maWcsIHRoaXMudHNjb25maWdEZXZdKSB7XG4gICAgICB0c2NvbmZpZz8uZmlsZS5hZGRPdmVycmlkZShcbiAgICAgICAgJ3JlZmVyZW5jZXMnLFxuICAgICAgICB0aGlzLnByb2plY3RzLm1hcCgocCkgPT4gKHsgcGF0aDogcC53b3Jrc3BhY2VEaXJlY3RvcnkgfSkpLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnBhY2thZ2UuYWRkRmllbGQoJ2plc3QnLCB7XG4gICAgICBwcm9qZWN0czogdGhpcy5wcm9qZWN0cy5tYXAoKHApID0+IGA8cm9vdERpcj4vJHtwLndvcmtzcGFjZURpcmVjdG9yeX1gKSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgdGhlICdub2hvaXN0JyBkaXJlY3RpdmVcbiAgICpcbiAgICogQnVuZGxlZCBkZXBlbmRlbmNpZXMgbXVzdCBiZSBub2hvaXN0J2VkLCBvdGhlcndpc2UgTlBNIHNpbGVudGx5IHdvbid0IGJ1bmRsZSB0aGVtLlxuICAgKlxuICAgKiBSZW5kZXJzIGFuIG9iamVjdCB0aGF0IHNob3VsZCBiZSBtaXhlZCBpbnRvIHRoZSBgd29ya3NwYWNlc2Agb2JqZWN0LlxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJOb0hvaXN0KCk6IGFueSB7XG4gICAgY29uc3Qgbm9ob2lzdCA9IHRoaXMucHJvamVjdHMuZmxhdE1hcCgocCkgPT5cbiAgICAgIHAuZGVwcy5hbGxcbiAgICAgICAgLmZpbHRlcigoZGVwKSA9PiBkZXAudHlwZSA9PT0gRGVwZW5kZW5jeVR5cGUuQlVORExFRClcbiAgICAgICAgLmZsYXRNYXAoKGRlcCkgPT4gW1xuICAgICAgICAgIGAke3AubmFtZX0vJHtkZXAubmFtZX1gLFxuICAgICAgICAgIGAke3AubmFtZX0vJHtkZXAubmFtZX0vKipgLFxuICAgICAgICBdKSxcbiAgICApO1xuICAgIHJldHVybiBub2hvaXN0Lmxlbmd0aCA+IDAgPyB7IG5vaG9pc3QgfSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBIb29rcyBpbnRvIHRoZSBpbnN0YWxsIGRlcGVuZGVuY2llcyBjeWNsZVxuICAgKi9cbiAgcHVibGljIHBvc3RTeW50aGVzaXplKCkge1xuICAgIGlmICh0aGlzLnBvc3RJbnN0YWxsRGVwZW5kZW5jaWVzLmxlbmd0aCkge1xuICAgICAgY29uc3Qgbm9kZVBrZzogYW55ID0gdGhpcy5wYWNrYWdlO1xuICAgICAgbm9kZVBrZy5pbnN0YWxsRGVwZW5kZW5jaWVzKCk7XG5cbiAgICAgIGNvbnN0IGNvbXBsZXRlZFJlcXVlc3RzID0gdGhpcy5wb3N0SW5zdGFsbERlcGVuZGVuY2llcy5tYXAoKHJlcXVlc3QpID0+IHJlcXVlc3QoKSk7XG4gICAgICBpZiAoY29tcGxldGVkUmVxdWVzdHMuc29tZShCb29sZWFuKSkge1xuICAgICAgICBub2RlUGtnLmluc3RhbGxEZXBlbmRlbmNpZXMoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wb3N0SW5zdGFsbERlcGVuZGVuY2llcyA9IFtdO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElEZXBlbmRlbmN5UmVzb2x2ZXIge1xuICByZXNvbHZlRGVwc0FuZFdyaXRlUGFja2FnZUpzb24oKTogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gZ2V0T2JqRnJvbUZpbGUocHJvamVjdDogUHJvamVjdCwgZmlsZTogc3RyaW5nKTogb2JqZWN0IHtcbiAgcmV0dXJuIChwcm9qZWN0LnRyeUZpbmRPYmplY3RGaWxlKGZpbGUpIGFzIGFueSk/Lm9iajtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBDZGtMYWJzTW9ub3JlcG9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDZGtMYWJzTW9ub3JlcG9PcHRpb25zIGV4dGVuZHMgTW9ub3JlcG9PcHRpb25zIHt9XG5cbi8qKlxuICogT3BpbmlvbmF0ZWQgaW1wbGVtZW50YXRpb24gb2YgeWFybi5Nb25vcmVwb1xuICogQHBqaWQgY2RrbGFicy15YXJuLW1vbm9yZXBvXG4gKi9cbmV4cG9ydCBjbGFzcyBDZGtMYWJzTW9ub3JlcG8gZXh0ZW5kcyBNb25vcmVwbyB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IENka0xhYnNNb25vcmVwb09wdGlvbnMpIHtcbiAgICBzdXBlcih7XG4gICAgICBwcm9qZW5yY1RzOiB0cnVlLFxuXG4gICAgICBhdXRvQXBwcm92ZVVwZ3JhZGVzOiB0cnVlLFxuICAgICAgYXV0b0FwcHJvdmVPcHRpb25zOiB7XG4gICAgICAgIGFsbG93ZWRVc2VybmFtZXM6IFsnZ2l0aHViLWJvdCcsICdjZGtsYWJzLWF1dG9tYXRpb24nLCAnZGVwZW5kYWJvdFtib3RdJ10sXG4gICAgICAgIHNlY3JldDogJ0dJVEhVQl9UT0tFTicsXG4gICAgICB9LFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIGdpdGh1Yk9wdGlvbnM6IHtcbiAgICAgICAgLi4ub3B0aW9ucy5naXRodWJPcHRpb25zLFxuICAgICAgICBtZXJnaWZ5OiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICAvLyBEZXZpYXRpb24gZnJvbSB1cHN0cmVhbSBwcm9qZW46IHVwc3RyZWFtIHByb2plbiBkZWZhdWx0cyB0byBtaW5Ob2RlVmVyc2lvbiwgYnV0IHdlIGhhdmUgdG9vIG1hbnkgd29ya2Zsb3dzXG4gICAgICAvLyB0aGF0IHVzZSB0b29scyB0aGF0IHdhbnQgYSByZWNlbnQgTm9kZSB2ZXJzaW9uLCBzbyBkZWZhdWx0IHRvIGEgcmVhc29uYWJsZSBmbG9hdGluZyB2ZXJzaW9uLlxuICAgICAgd29ya2Zsb3dOb2RlVmVyc2lvbjogb3B0aW9ucy53b3JrZmxvd05vZGVWZXJzaW9uID8/ICdsdHMvKicsXG4gICAgfSk7XG5cbiAgICBuZXcgZ2l0aHViLk1lcmdlUXVldWUodGhpcywge1xuICAgICAgYXV0b1F1ZXVlT3B0aW9uczoge1xuICAgICAgICBwcm9qZW5DcmVkZW50aWFsczogZ2l0aHViLkdpdGh1YkNyZWRlbnRpYWxzLmZyb21QZXJzb25hbEFjY2Vzc1Rva2VuKHsgc2VjcmV0OiAnUFJPSkVOX0dJVEhVQl9UT0tFTicgfSksXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -4,6 +4,11 @@ import { yarn } from '../';
|
|
|
4
4
|
* TypeScriptWorkspaceOptions
|
|
5
5
|
*/
|
|
6
6
|
export interface TypeScriptWorkspaceOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Automatically add the resolved `packageManager` to `devEngines.packageManager` in `package.json`, setting `onFail` to `ignore`.
|
|
9
|
+
* @default true
|
|
10
|
+
*/
|
|
11
|
+
readonly addPackageManagerToDevEngines?: boolean;
|
|
7
12
|
/**
|
|
8
13
|
* Allow the project to include `peerDependencies` and `bundledDependencies`.
|
|
9
14
|
* This is normally only allowed for libraries. For apps, there's no meaning
|
|
@@ -189,6 +194,15 @@ export interface TypeScriptWorkspaceOptions {
|
|
|
189
194
|
* @default - current year
|
|
190
195
|
*/
|
|
191
196
|
readonly copyrightPeriod?: string;
|
|
197
|
+
/**
|
|
198
|
+
* Automatically delete lockfiles from package managers that are not the active one.
|
|
199
|
+
* Only triggered when the lockfile for the configured package
|
|
200
|
+
* manager already exists.
|
|
201
|
+
*
|
|
202
|
+
* This is useful when migrating between package managers to avoid conflicts.
|
|
203
|
+
* @default true
|
|
204
|
+
*/
|
|
205
|
+
readonly deleteOrphanedLockFiles?: boolean;
|
|
192
206
|
/**
|
|
193
207
|
* Use dependabot to handle dependency upgrades.
|
|
194
208
|
* Cannot be used in conjunction with `depsUpgrade`.
|
|
@@ -243,6 +257,13 @@ export interface TypeScriptWorkspaceOptions {
|
|
|
243
257
|
* @default []
|
|
244
258
|
*/
|
|
245
259
|
readonly devDeps?: Array<string | yarn.IWorkspaceReference>;
|
|
260
|
+
/**
|
|
261
|
+
* Configure the `devEngines` field in `package.json`.
|
|
262
|
+
* The `devEngines.packageManager` field is automatically populated based on
|
|
263
|
+
* the resolved `packageManager` value. Any fields provided here are merged
|
|
264
|
+
* with the auto-populated `packageManager` entry.
|
|
265
|
+
*/
|
|
266
|
+
readonly devEngines?: javascript.DevEngines;
|
|
246
267
|
/**
|
|
247
268
|
* Do not generate a `tsconfig.json` file (used by jsii projects since tsconfig.json is generated by the jsii compiler).
|
|
248
269
|
* @default false
|
|
@@ -522,7 +543,7 @@ export interface TypeScriptWorkspaceOptions {
|
|
|
522
543
|
readonly package?: boolean;
|
|
523
544
|
/**
|
|
524
545
|
* The Node Package Manager used to execute scripts.
|
|
525
|
-
* @default
|
|
546
|
+
* @default - Detected from the calling process or `YARN_CLASSIC` if detection fails.
|
|
526
547
|
*/
|
|
527
548
|
readonly packageManager?: javascript.NodePackageManager;
|
|
528
549
|
/**
|