@skyux/docs-tools 8.0.0 → 8.0.2
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.
|
@@ -12,13 +12,16 @@ export class SkyDocsCodeExamplesEditorService {
|
|
|
12
12
|
StackBlitzSDK.openProject(project, options);
|
|
13
13
|
}
|
|
14
14
|
getPayload(codeExample) {
|
|
15
|
-
const angularVersion = '^
|
|
16
|
-
const skyuxVersion = '^
|
|
15
|
+
const angularVersion = '^15.0.0';
|
|
16
|
+
const skyuxVersion = '^8.0.0';
|
|
17
17
|
const defaultDependencies = {
|
|
18
|
+
'@angular-devkit/build-angular': angularVersion,
|
|
18
19
|
'@angular/animations': angularVersion,
|
|
19
20
|
'@angular/cdk': angularVersion,
|
|
21
|
+
'@angular/cli': angularVersion,
|
|
20
22
|
'@angular/common': angularVersion,
|
|
21
23
|
'@angular/compiler': angularVersion,
|
|
24
|
+
'@angular/compiler-cli': angularVersion,
|
|
22
25
|
'@angular/core': angularVersion,
|
|
23
26
|
'@angular/forms': angularVersion,
|
|
24
27
|
'@angular/platform-browser': angularVersion,
|
|
@@ -35,6 +38,7 @@ export class SkyDocsCodeExamplesEditorService {
|
|
|
35
38
|
'@skyux/indicators': skyuxVersion,
|
|
36
39
|
'@skyux/layout': skyuxVersion,
|
|
37
40
|
'@skyux/modals': skyuxVersion,
|
|
41
|
+
'@skyux/packages': skyuxVersion,
|
|
38
42
|
'@skyux/popovers': skyuxVersion,
|
|
39
43
|
'@skyux/router': skyuxVersion,
|
|
40
44
|
'@skyux/theme': skyuxVersion,
|
|
@@ -43,7 +47,8 @@ export class SkyDocsCodeExamplesEditorService {
|
|
|
43
47
|
'ng2-dragula': '2.1.1',
|
|
44
48
|
rxjs: '^7',
|
|
45
49
|
tslib: '^2.3.0',
|
|
46
|
-
|
|
50
|
+
typescript: '~4.9.4',
|
|
51
|
+
'zone.js': '~0.12.0',
|
|
47
52
|
};
|
|
48
53
|
const mergedDependencies = Object.assign({}, defaultDependencies, codeExample.packageDependencies);
|
|
49
54
|
// Ensure any @skyux dependencies list the correct version of SKY UX.
|
|
@@ -63,7 +68,7 @@ export class SkyDocsCodeExamplesEditorService {
|
|
|
63
68
|
files,
|
|
64
69
|
title: 'SKY UX Demo',
|
|
65
70
|
description: 'SKY UX Demo',
|
|
66
|
-
template: '
|
|
71
|
+
template: 'node',
|
|
67
72
|
dependencies: mergedDependencies,
|
|
68
73
|
settings: {
|
|
69
74
|
compile: {
|
|
@@ -173,87 +178,147 @@ export class AppComponent {
|
|
|
173
178
|
})
|
|
174
179
|
export class AppModule { }
|
|
175
180
|
`;
|
|
176
|
-
files[`${srcPath}index.html`] =
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
<
|
|
182
|
-
<
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
181
|
+
files[`${srcPath}index.html`] = `<!doctype html>
|
|
182
|
+
<html lang="en">
|
|
183
|
+
<head>
|
|
184
|
+
<meta charset="utf-8">
|
|
185
|
+
<title>Sky UX Demo</title>
|
|
186
|
+
<base href="/">
|
|
187
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
188
|
+
<!--
|
|
189
|
+
The CSS links are needed for the StackBlitz demo only.
|
|
190
|
+
This is a workaround for a known bug that prevents external imports in CSS.
|
|
191
|
+
https://github.com/stackblitz/core/issues/133
|
|
192
|
+
-->
|
|
193
|
+
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
|
|
194
|
+
<link rel="stylesheet" type="text/css" href="https://sky.blackbaudcdn.net/static/skyux-icons/6.0.0/assets/css/skyux-icons.min.css" />
|
|
195
|
+
</head>
|
|
196
|
+
<body>
|
|
197
|
+
<sky-demo-app>
|
|
198
|
+
Loading...
|
|
199
|
+
</sky-demo-app>
|
|
200
|
+
</body>
|
|
201
|
+
</html>
|
|
202
|
+
`;
|
|
187
203
|
files[`${srcPath}main.ts`] = `${banner}
|
|
188
|
-
import '
|
|
189
|
-
|
|
190
|
-
import {
|
|
191
|
-
platformBrowserDynamic
|
|
192
|
-
} from '@angular/platform-browser-dynamic';
|
|
193
|
-
|
|
194
|
-
import {
|
|
195
|
-
AppModule
|
|
196
|
-
} from './app/app.module';
|
|
204
|
+
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
|
197
205
|
|
|
198
|
-
|
|
199
|
-
.bootstrapModule(AppModule)
|
|
200
|
-
.catch((err) => console.error(err));
|
|
206
|
+
import { AppModule } from './app/app.module';
|
|
201
207
|
|
|
208
|
+
platformBrowserDynamic().bootstrapModule(AppModule)
|
|
209
|
+
.catch(err => console.error(err));
|
|
202
210
|
`;
|
|
203
|
-
files[`${srcPath}
|
|
204
|
-
import '
|
|
205
|
-
`;
|
|
206
|
-
files[`${srcPath}styles.scss`] = `@import '~@skyux/theme/css/sky';
|
|
207
|
-
@import '~@skyux/theme/css/themes/modern/styles';
|
|
211
|
+
files[`${srcPath}styles.scss`] = `@import '@skyux/theme/css/sky';
|
|
212
|
+
@import '@skyux/theme/css/themes/modern/styles';
|
|
208
213
|
|
|
209
214
|
body {
|
|
210
215
|
background-color: #fff;
|
|
211
216
|
margin: 15px;
|
|
212
217
|
}`;
|
|
213
218
|
stylesheets.push('src/styles.scss');
|
|
214
|
-
files['angular.json'] =
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
219
|
+
files['angular.json'] = JSON.stringify({
|
|
220
|
+
$schema: './node_modules/@angular/cli/lib/config/schema.json',
|
|
221
|
+
version: 1,
|
|
222
|
+
projects: {
|
|
223
|
+
demo: {
|
|
224
|
+
projectType: 'application',
|
|
225
|
+
root: '',
|
|
226
|
+
sourceRoot: 'src',
|
|
227
|
+
prefix: 'app',
|
|
228
|
+
architect: {
|
|
229
|
+
build: {
|
|
230
|
+
builder: '@angular-devkit/build-angular:browser',
|
|
231
|
+
options: {
|
|
232
|
+
outputPath: 'dist/demo',
|
|
233
|
+
index: 'src/index.html',
|
|
234
|
+
main: 'src/main.ts',
|
|
235
|
+
polyfills: ['zone.js', '@skyux/packages/polyfills'],
|
|
236
|
+
tsConfig: 'tsconfig.app.json',
|
|
237
|
+
inlineStyleLanguage: 'scss',
|
|
238
|
+
assets: [],
|
|
239
|
+
styles: stylesheets,
|
|
240
|
+
scripts: [],
|
|
241
|
+
},
|
|
242
|
+
configurations: {
|
|
243
|
+
development: {
|
|
244
|
+
buildOptimizer: false,
|
|
245
|
+
optimization: false,
|
|
246
|
+
vendorChunk: true,
|
|
247
|
+
extractLicenses: false,
|
|
248
|
+
sourceMap: true,
|
|
249
|
+
namedChunks: true,
|
|
250
|
+
},
|
|
251
|
+
},
|
|
252
|
+
defaultConfiguration: 'development',
|
|
253
|
+
},
|
|
254
|
+
serve: {
|
|
255
|
+
builder: '@angular-devkit/build-angular:dev-server',
|
|
256
|
+
configurations: {
|
|
257
|
+
development: {
|
|
258
|
+
browserTarget: 'demo:build:development',
|
|
259
|
+
},
|
|
260
|
+
},
|
|
261
|
+
defaultConfiguration: 'development',
|
|
262
|
+
},
|
|
263
|
+
'extract-i18n': {
|
|
264
|
+
builder: '@angular-devkit/build-angular:extract-i18n',
|
|
265
|
+
options: {
|
|
266
|
+
browserTarget: 'demo:build',
|
|
267
|
+
},
|
|
268
|
+
},
|
|
269
|
+
},
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
}, undefined, 2);
|
|
228
273
|
files['package.json'] = JSON.stringify({
|
|
274
|
+
name: 'skyux-spa-demo',
|
|
229
275
|
dependencies,
|
|
276
|
+
scripts: {
|
|
277
|
+
start: 'ng serve',
|
|
278
|
+
build: 'ng build',
|
|
279
|
+
},
|
|
280
|
+
}, undefined, 2);
|
|
281
|
+
files['tsconfig.app.json'] = JSON.stringify({
|
|
282
|
+
extends: './tsconfig.json',
|
|
283
|
+
compilerOptions: {
|
|
284
|
+
outDir: './out-tsc/app',
|
|
285
|
+
types: [],
|
|
286
|
+
},
|
|
287
|
+
files: ['src/main.ts'],
|
|
288
|
+
include: ['src/**/*.d.ts'],
|
|
289
|
+
}, undefined, 2);
|
|
290
|
+
files['tsconfig.json'] = JSON.stringify({
|
|
291
|
+
compileOnSave: false,
|
|
292
|
+
compilerOptions: {
|
|
293
|
+
baseUrl: './',
|
|
294
|
+
outDir: './dist/out-tsc',
|
|
295
|
+
forceConsistentCasingInFileNames: true,
|
|
296
|
+
strict: true,
|
|
297
|
+
noImplicitOverride: true,
|
|
298
|
+
noPropertyAccessFromIndexSignature: true,
|
|
299
|
+
noImplicitReturns: true,
|
|
300
|
+
noFallthroughCasesInSwitch: true,
|
|
301
|
+
sourceMap: true,
|
|
302
|
+
declaration: false,
|
|
303
|
+
downlevelIteration: true,
|
|
304
|
+
esModuleInterop: true,
|
|
305
|
+
experimentalDecorators: true,
|
|
306
|
+
moduleResolution: 'node',
|
|
307
|
+
importHelpers: true,
|
|
308
|
+
typeRoots: ['node_modules/@types'],
|
|
309
|
+
target: 'ES2022',
|
|
310
|
+
module: 'ES2022',
|
|
311
|
+
useDefineForClassFields: false,
|
|
312
|
+
lib: ['ES2022', 'dom'],
|
|
313
|
+
},
|
|
314
|
+
angularCompilerOptions: {
|
|
315
|
+
fullTemplateTypeCheck: true,
|
|
316
|
+
enableI18nLegacyMessageIdFormat: false,
|
|
317
|
+
strictInjectionParameters: true,
|
|
318
|
+
strictInputAccessModifiers: true,
|
|
319
|
+
strictTemplates: true,
|
|
320
|
+
},
|
|
230
321
|
}, undefined, 2);
|
|
231
|
-
files['tsconfig.json'] = `{
|
|
232
|
-
"compilerOptions": {
|
|
233
|
-
"strict": true,
|
|
234
|
-
"forceConsistentCasingInFileNames": true,
|
|
235
|
-
"noImplicitReturns": true,
|
|
236
|
-
"noFallthroughCasesInSwitch": true,
|
|
237
|
-
"target": "es2017",
|
|
238
|
-
"module": "es2020",
|
|
239
|
-
"moduleResolution": "node",
|
|
240
|
-
"emitDecoratorMetadata": true,
|
|
241
|
-
"experimentalDecorators": true,
|
|
242
|
-
"importHelpers": true,
|
|
243
|
-
"typeRoots": ["node_modules/@types"],
|
|
244
|
-
"lib": [
|
|
245
|
-
"es2020",
|
|
246
|
-
"dom"
|
|
247
|
-
]
|
|
248
|
-
},
|
|
249
|
-
"angularCompilerOptions": {
|
|
250
|
-
"fullTemplateTypeCheck": true,
|
|
251
|
-
"strictInjectionParameters": true,
|
|
252
|
-
"strictInputAccessModifiers": true,
|
|
253
|
-
"strictTemplates": true,
|
|
254
|
-
"enableIvy": true
|
|
255
|
-
}
|
|
256
|
-
}`;
|
|
257
322
|
return files;
|
|
258
323
|
}
|
|
259
324
|
getModuleName(contents) {
|
|
@@ -294,4 +359,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
294
359
|
providedIn: 'root',
|
|
295
360
|
}]
|
|
296
361
|
}] });
|
|
297
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1leGFtcGxlcy1lZGl0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RvY3MtdG9vbHMvc3JjL21vZHVsZXMvY29kZS1leGFtcGxlcy9jb2RlLWV4YW1wbGVzLWVkaXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxhQUFhLE1BQU0saUJBQWlCLENBQUM7QUFXNUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBSS9EOztHQUVHO0FBSUgsTUFBTSxPQUFPLGdDQUFnQztJQUNwQyxZQUFZLENBQUMsV0FBK0I7UUFDakQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxNQUFNLE9BQU8sR0FBMEIsRUFBRSxDQUFDO1FBRTFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTyxVQUFVLENBQUMsV0FBK0I7UUFDaEQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDO1FBQ2pDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQztRQUU5QixNQUFNLG1CQUFtQixHQUF5QztZQUNoRSxxQkFBcUIsRUFBRSxjQUFjO1lBQ3JDLGNBQWMsRUFBRSxjQUFjO1lBQzlCLGlCQUFpQixFQUFFLGNBQWM7WUFDakMsbUJBQW1CLEVBQUUsY0FBYztZQUNuQyxlQUFlLEVBQUUsY0FBYztZQUMvQixnQkFBZ0IsRUFBRSxjQUFjO1lBQ2hDLDJCQUEyQixFQUFFLGNBQWM7WUFDM0MsbUNBQW1DLEVBQUUsY0FBYztZQUNuRCxpQkFBaUIsRUFBRSxjQUFjO1lBQ2pDLG1CQUFtQixFQUFFLFlBQVk7WUFDakMsZUFBZSxFQUFFLFlBQVk7WUFDN0IsZUFBZSxFQUFFLFlBQVk7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O2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IFN0YWNrQmxpdHpTREsgZnJvbSAnQHN0YWNrYmxpdHovc2RrJztcblxuaW1wb3J0IHtcbiAgT3Blbk9wdGlvbnMgYXMgU3RhY2tCbGl0ek9wZW5PcHRpb25zLFxuICBQcm9qZWN0IGFzIFN0YWNrQmxpdHpQcm9qZWN0LFxufSBmcm9tICdAc3RhY2tibGl0ei9zZGsvdHlwaW5ncy9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHsgU2t5RG9jc1NvdXJjZUNvZGVGaWxlIH0gZnJvbSAnLi4vc291cmNlLWNvZGUvc291cmNlLWNvZGUtZmlsZSc7XG5cbmltcG9ydCB7IFNreURvY3NDb2RlRXhhbXBsZU1vZHVsZURlcGVuZGVuY2llcyB9IGZyb20gJy4vY29kZS1leGFtcGxlLW1vZHVsZS1kZXBlbmRlbmNpZXMnO1xuXG5pbXBvcnQgeyBTa3lEb2NzQ29kZUV4YW1wbGVUaGVtZSB9IGZyb20gJy4vY29kZS1leGFtcGxlLXRoZW1lJztcblxuaW1wb3J0IHsgU2t5RG9jc0NvZGVFeGFtcGxlIH0gZnJvbSAnLi9jb2RlLWV4YW1wbGUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5RG9jc0NvZGVFeGFtcGxlc0VkaXRvclNlcnZpY2Uge1xuICBwdWJsaWMgbGF1bmNoRWRpdG9yKGNvZGVFeGFtcGxlOiBTa3lEb2NzQ29kZUV4YW1wbGUpOiB2b2lkIHtcbiAgICBjb25zdCBwcm9qZWN0ID0gdGhpcy5nZXRQYXlsb2FkKGNvZGVFeGFtcGxlKTtcbiAgICBjb25zdCBvcHRpb25zOiBTdGFja0JsaXR6T3Blbk9wdGlvbnMgPSB7fTtcblxuICAgIFN0YWNrQmxpdHpTREsub3BlblByb2plY3QocHJvamVjdCwgb3B0aW9ucyk7XG4gIH1cblxuICBwcml2YXRlIGdldFBheWxvYWQoY29kZUV4YW1wbGU6IFNreURvY3NDb2RlRXhhbXBsZSk6IFN0YWNrQmxpdHpQcm9qZWN0IHtcbiAgICBjb25zdCBhbmd1bGFyVmVyc2lvbiA9ICdeMTQuMC4wJztcbiAgICBjb25zdCBza3l1eFZlcnNpb24gPSAnXjcuMC4wJztcblxuICAgIGNvbnN0IGRlZmF1bHREZXBlbmRlbmNpZXM6IFNreURvY3NDb2RlRXhhbXBsZU1vZHVsZURlcGVuZGVuY2llcyA9IHtcbiAgICAgICdAYW5ndWxhci9hbmltYXRpb25zJzogYW5ndWxhclZlcnNpb24sXG4gICAgICAnQGFuZ3VsYXIvY2RrJzogYW5ndWxhclZlcnNpb24sXG4gICAgICAnQGFuZ3VsYXIvY29tbW9uJzogYW5ndWxhclZlcnNpb24sXG4gICAgICAnQGFuZ3VsYXIvY29tcGlsZXInOiBhbmd1bGFyVmVyc2lvbixcbiAgICAgICdAYW5ndWxhci9jb3JlJzogYW5ndWxhclZlcnNpb24sXG4gICAgICAnQGFuZ3VsYXIvZm9ybXMnOiBhbmd1bGFyVmVyc2lvbixcbiAgICAgICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJzogYW5ndWxhclZlcnNpb24sXG4gICAgICAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci1keW5hbWljJzogYW5ndWxhclZlcnNpb24sXG4gICAgICAnQGFuZ3VsYXIvcm91dGVyJzogYW5ndWxhclZlcnNpb24sXG4gICAgICAnQHNreXV4L2FuaW1hdGlvbnMnOiBza3l1eFZlcnNpb24sXG4gICAgICAnQHNreXV4L2Fzc2V0cyc6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvY29uZmlnJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9jb3JlJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9lcnJvcnMnOiBza3l1eFZlcnNpb24sXG4gICAgICAnQHNreXV4L2Zvcm1zJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9odHRwJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9pMThuJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9pbmRpY2F0b3JzJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9sYXlvdXQnOiBza3l1eFZlcnNpb24sXG4gICAgICAnQHNreXV4L21vZGFscyc6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvcG9wb3ZlcnMnOiBza3l1eFZlcnNpb24sXG4gICAgICAnQHNreXV4L3JvdXRlcic6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvdGhlbWUnOiBza3l1eFZlcnNpb24sXG4gICAgICAnQHR5cGVzL2phc21pbmUnOiAnfjQuMC4zJyxcbiAgICAgIC8vIFdlIG11c3QgZGVmaW5lIERyYWd1bGEgZGVsaWJlcmF0ZWx5IHNvIHRoYXQgU3RhY2tCbGl0eiBydW5zIE5HQ0MgYWdhaW5zdCBpdC5cbiAgICAgICduZzItZHJhZ3VsYSc6ICcyLjEuMScsXG4gICAgICByeGpzOiAnXjcnLFxuICAgICAgdHNsaWI6ICdeMi4zLjAnLFxuICAgICAgJ3pvbmUuanMnOiAnfjAuMTEuNCcsXG4gICAgfTtcblxuICAgIGNvbnN0IG1lcmdlZERlcGVuZGVuY2llcyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIGRlZmF1bHREZXBlbmRlbmNpZXMsXG4gICAgICBjb2RlRXhhbXBsZS5wYWNrYWdlRGVwZW5kZW5jaWVzXG4gICAgKTtcblxuICAgIC8vIEVuc3VyZSBhbnkgQHNreXV4IGRlcGVuZGVuY2llcyBsaXN0IHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgU0tZIFVYLlxuICAgIC8vIGUuZy4gYFwiQHNreXV4L2NvcmVcIjogXCIqXCJgIC0tPiBgXCJAc2t5dXgvY29yZVwiOiBcIjUuMC4wXCJgXG4gICAgZm9yIChjb25zdCBwYWNrYWdlTmFtZSBpbiBtZXJnZWREZXBlbmRlbmNpZXMpIHtcbiAgICAgIC8qaXN0YW5idWwgaWdub3JlIGVsc2UqL1xuICAgICAgaWYgKG1lcmdlZERlcGVuZGVuY2llcy5oYXNPd25Qcm9wZXJ0eShwYWNrYWdlTmFtZSkpIHtcbiAgICAgICAgY29uc3QgdmVyc2lvbiA9IG1lcmdlZERlcGVuZGVuY2llc1twYWNrYWdlTmFtZV07XG4gICAgICAgIGlmIChcbiAgICAgICAgICB2ZXJzaW9uID09PSAnKicgJiZcbiAgICAgICAgICAvXihAYmxhY2tiYXVkXFwvc2t5dXgtbGliLXxAc2t5dXgpLy50ZXN0KHBhY2thZ2VOYW1lKVxuICAgICAgICApIHtcbiAgICAgICAgICBtZXJnZWREZXBlbmRlbmNpZXNbcGFja2FnZU5hbWVdID0gc2t5dXhWZXJzaW9uO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZmlsZXMgPSB0aGlzLnBhcnNlU3RhY2tCbGl0ekZpbGVzKFxuICAgICAgY29kZUV4YW1wbGUuc291cmNlQ29kZSxcbiAgICAgIG1lcmdlZERlcGVuZGVuY2llcyxcbiAgICAgIGNvZGVFeGFtcGxlLnRoZW1lLFxuICAgICAgY29kZUV4YW1wbGUuc3R5bGVzaGVldHNcbiAgICApO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGZpbGVzLFxuICAgICAgdGl0bGU6ICdTS1kgVVggRGVtbycsXG4gICAgICBkZXNjcmlwdGlvbjogJ1NLWSBVWCBEZW1vJyxcbiAgICAgIHRlbXBsYXRlOiAnYW5ndWxhci1jbGknLFxuICAgICAgZGVwZW5kZW5jaWVzOiBtZXJnZWREZXBlbmRlbmNpZXMsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICBjb21waWxlOiB7XG4gICAgICAgICAgY2xlYXJDb25zb2xlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VTdGFja0JsaXR6RmlsZXMoXG4gICAgc291cmNlQ29kZTogU2t5RG9jc1NvdXJjZUNvZGVGaWxlW10sXG4gICAgZGVwZW5kZW5jaWVzOiBTa3lEb2NzQ29kZUV4YW1wbGVNb2R1bGVEZXBlbmRlbmNpZXMsXG4gICAgdGhlbWU6IFNreURvY3NDb2RlRXhhbXBsZVRoZW1lLFxuICAgIHN0eWxlc2hlZXRzOiBzdHJpbmdbXSA9IFtdXG4gICk6IHtcbiAgICBbcGF0aDogc3RyaW5nXTogc3RyaW5nO1xuICB9IHtcbiAgICBjb25zdCBzcmNQYXRoID0gJ3NyYy8nO1xuICAgIGNvbnN0IGFwcFBhdGggPSBgJHtzcmNQYXRofWFwcC9gO1xuXG4gICAgY29uc3QgYmFubmVyID0gYC8qKlxuICogVGhpcyBmaWxlIGlzIG5lZWRlZCBmb3IgdGhlIFN0YWNrQmxpdHogZGVtbyBvbmx5LlxuICogSXQgaXMgYXV0b21hdGljYWxseSBwcm92aWRlZCB3aGVuIHVzaW5nIHRoZSBBbmd1bGFyIENMSS5cbiAqKi9cbiBgO1xuXG4gICAgY29uc3QgbW9kdWxlSW1wb3J0U3RhdGVtZW50czogc3RyaW5nW10gPSBbXG4gICAgICBgaW1wb3J0IHtcXG4gIE5nTW9kdWxlXFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztgLFxuICAgICAgYGltcG9ydCB7XFxuICBGb3Jtc01vZHVsZSxcXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGVcXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztgLFxuICAgICAgYGltcG9ydCB7XFxuICBCcm93c2VyQW5pbWF0aW9uc01vZHVsZVxcbn0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztgLFxuICAgICAgYGltcG9ydCB7XFxuICBSb3V0ZXJNb2R1bGVcXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7YCxcbiAgICAgIGBpbXBvcnQge1xcbiAgU2t5QXBwTG9jYWxlUHJvdmlkZXJcXG59IGZyb20gJ0Bza3l1eC9pMThuJztgLFxuICAgICAgYGltcG9ydCB7XFxuICBTa3lUaGVtZVNlcnZpY2VcXG59IGZyb20gJ0Bza3l1eC90aGVtZSc7YCxcbiAgICAgIGBpbXBvcnQge1xcbiAgb2YgYXMgb2JzZXJ2YWJsZU9mXFxufSBmcm9tICdyeGpzJztgLFxuICAgICAgYGltcG9ydCB7XFxuICBBcHBDb21wb25lbnRcXG59IGZyb20gJy4vYXBwLmNvbXBvbmVudCc7YCxcbiAgICBdO1xuXG4gICAgY29uc3QgbW9kdWxlSW1wb3J0czogc3RyaW5nW10gPSBbXG4gICAgICAnQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUnLFxuICAgICAgJ0Zvcm1zTW9kdWxlJyxcbiAgICAgICdSZWFjdGl2ZUZvcm1zTW9kdWxlJyxcbiAgICAgICdSb3V0ZXJNb2R1bGUuZm9yUm9vdChbXSknLFxuICAgIF07XG5cbiAgICBjb25zdCBmaWxlczogeyBbXzogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcblxuICAgIGxldCBhcHBDb21wb25lbnRUZW1wbGF0ZSA9ICcnO1xuXG4gICAgc291cmNlQ29kZS5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICBmaWxlc1tgJHthcHBQYXRofSR7ZmlsZS5maWxlTmFtZX1gXSA9IGZpbGUucmF3Q29udGVudHM7XG5cbiAgICAgIC8vIFNldHVwIG1vZHVsZSBpbXBvcnRzIGFuZCBjb21wb25lbnQgc2VsZWN0b3JzLlxuICAgICAgaWYgKGZpbGUuZmlsZU5hbWUuaW5kZXhPZignLm1vZHVsZS50cycpID4gLTEpIHtcbiAgICAgICAgY29uc3QgbW9kdWxlTmFtZSA9IHRoaXMuZ2V0TW9kdWxlTmFtZShmaWxlLnJhd0NvbnRlbnRzKTtcbiAgICAgICAgY29uc3QgaW1wb3J0UGF0aCA9IGAuLyR7dGhpcy5nZXRGaWxlbmFtZU5vRXh0ZW5zaW9uKGZpbGUuZmlsZU5hbWUpfWA7XG5cbiAgICAgICAgY29uc3QgZXhwb3J0ZWRDb21wb25lbnQgPSB0aGlzLmdldEV4cG9ydGVkQ29tcG9uZW50KGZpbGUucmF3Q29udGVudHMpO1xuICAgICAgICBjb25zdCBjb21wb25lbnRTZWxlY3RvciA9IHRoaXMuZ2V0Q29tcG9uZW50U2VsZWN0b3IoXG4gICAgICAgICAgZXhwb3J0ZWRDb21wb25lbnQsXG4gICAgICAgICAgc291cmNlQ29kZVxuICAgICAgICApO1xuXG4gICAgICAgIGFwcENvbXBvbmVudFRlbXBsYXRlICs9IGA8JHtjb21wb25lbnRTZWxlY3Rvcn0+PC8ke2NvbXBvbmVudFNlbGVjdG9yfT5gO1xuXG4gICAgICAgIG1vZHVsZUltcG9ydHMucHVzaChtb2R1bGVOYW1lKTtcbiAgICAgICAgbW9kdWxlSW1wb3J0U3RhdGVtZW50cy5wdXNoKFxuICAgICAgICAgIGBpbXBvcnQge1xcbiAgJHttb2R1bGVOYW1lfVxcbn0gZnJvbSAnJHtpbXBvcnRQYXRofSc7YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZmlsZXNbYCR7YXBwUGF0aH1hcHAuY29tcG9uZW50LnRzYF0gPSBgJHtiYW5uZXJ9XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgU2t5VGhlbWUsXG4gIFNreVRoZW1lTW9kZSxcbiAgU2t5VGhlbWVTZXJ2aWNlLFxuICBTa3lUaGVtZVNldHRpbmdzXG59IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kZW1vLWFwcCcsXG4gIHRlbXBsYXRlOiAnJHthcHBDb21wb25lbnRUZW1wbGF0ZX0nXG59KVxuZXhwb3J0IGNsYXNzIEFwcENvbXBvbmVudCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdGhlbWVTdmM6IFNreVRoZW1lU2VydmljZSxcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge1xuICAgIGNvbnN0IHRoZW1lU2V0dGluZ3MgPSBuZXcgU2t5VGhlbWVTZXR0aW5ncyhcbiAgICAgIFNreVRoZW1lLnByZXNldHNbJyR7XG4gICAgICAgIHRoZW1lID09PSBTa3lEb2NzQ29kZUV4YW1wbGVUaGVtZS5Nb2Rlcm4gPyAnbW9kZXJuJyA6ICdkZWZhdWx0J1xuICAgICAgfSddLFxuICAgICAgU2t5VGhlbWVNb2RlLnByZXNldHMubGlnaHRcbiAgICApO1xuXG4gICAgdGhlbWVTdmMuaW5pdChcbiAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICByZW5kZXJlcixcbiAgICAgIHRoZW1lU2V0dGluZ3NcbiAgICApO1xuICB9XG5cbn1gO1xuXG4gICAgZmlsZXNbYCR7YXBwUGF0aH1hcHAubW9kdWxlLnRzYF0gPSBgJHttb2R1bGVJbXBvcnRTdGF0ZW1lbnRzLmpvaW4oJ1xcblxcbicpfVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgJHttb2R1bGVJbXBvcnRzLmpvaW4oJyxcXG4gICAgJyl9XG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEFwcENvbXBvbmVudFxuICBdLFxuICBib290c3RyYXA6IFtcbiAgICBBcHBDb21wb25lbnRcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2t5VGhlbWVTZXJ2aWNlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFNreUFwcExvY2FsZVByb3ZpZGVyLFxuICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgZ2V0TG9jYWxlSW5mbzogKCkgPT4gb2JzZXJ2YWJsZU9mKHtcbiAgICAgICAgICBsb2NhbGU6ICdlbi1VUydcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwTW9kdWxlIHsgfVxuYDtcblxuICAgIGZpbGVzW2Ake3NyY1BhdGh9aW5kZXguaHRtbGBdID0gYDwhLS1cbiAgVGhlIENTUyBsaW5rcyBhcmUgbmVlZGVkIGZvciB0aGUgU3RhY2tCbGl0eiBkZW1vIG9ubHkuXG4gIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciBhIGtub3duIGJ1ZyB0aGF0IHByZXZlbnRzIGV4dGVybmFsIGltcG9ydHMgaW4gQ1NTLlxuICBodHRwczovL2dpdGh1Yi5jb20vc3RhY2tibGl0ei9jb3JlL2lzc3Vlcy8xMzNcbi0tPlxuPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIHR5cGU9XCJ0ZXh0L2Nzc1wiIGhyZWY9XCJodHRwczovL21heGNkbi5ib290c3RyYXBjZG4uY29tL2ZvbnQtYXdlc29tZS80LjcuMC9jc3MvZm9udC1hd2Vzb21lLm1pbi5jc3NcIiAvPlxuPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIHR5cGU9XCJ0ZXh0L2Nzc1wiIGhyZWY9XCJodHRwczovL3NreS5ibGFja2JhdWRjZG4ubmV0L3N0YXRpYy9za3l1eC1pY29ucy81L2Fzc2V0cy9jc3Mvc2t5dXgtaWNvbnMubWluLmNzc1wiIC8+XG5cbjxza3ktZGVtby1hcHA+XG4gIExvYWRpbmcuLi5cbjwvc2t5LWRlbW8tYXBwPmA7XG5cbiAgICBmaWxlc1tgJHtzcmNQYXRofW1haW4udHNgXSA9IGAke2Jhbm5lcn1cbmltcG9ydCAnLi9wb2x5ZmlsbHMnO1xuXG5pbXBvcnQge1xuICBwbGF0Zm9ybUJyb3dzZXJEeW5hbWljXG59IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXItZHluYW1pYyc7XG5cbmltcG9ydCB7XG4gIEFwcE1vZHVsZVxufSBmcm9tICcuL2FwcC9hcHAubW9kdWxlJztcblxucGxhdGZvcm1Ccm93c2VyRHluYW1pYygpXG4gIC5ib290c3RyYXBNb2R1bGUoQXBwTW9kdWxlKVxuICAuY2F0Y2goKGVycikgPT4gY29uc29sZS5lcnJvcihlcnIpKTtcblxuYDtcblxuICAgIGZpbGVzW2Ake3NyY1BhdGh9cG9seWZpbGxzLnRzYF0gPSBgJHtiYW5uZXJ9XG5pbXBvcnQgJ3pvbmUuanMnO1xuYDtcblxuICAgIGZpbGVzW2Ake3NyY1BhdGh9c3R5bGVzLnNjc3NgXSA9IGBAaW1wb3J0ICd+QHNreXV4L3RoZW1lL2Nzcy9za3knO1xuQGltcG9ydCAnfkBza3l1eC90aGVtZS9jc3MvdGhlbWVzL21vZGVybi9zdHlsZXMnO1xuXG5ib2R5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgbWFyZ2luOiAxNXB4O1xufWA7XG5cbiAgICBzdHlsZXNoZWV0cy5wdXNoKCdzcmMvc3R5bGVzLnNjc3MnKTtcblxuICAgIGZpbGVzWydhbmd1bGFyLmpzb24nXSA9IGB7XG4gIFwicHJvamVjdHNcIjoge1xuICAgIFwiZGVtb1wiOiB7XG4gICAgICBcImFyY2hpdGVjdFwiOiB7XG4gICAgICAgIFwiYnVpbGRcIjoge1xuICAgICAgICAgIFwib3B0aW9uc1wiOiB7XG4gICAgICAgICAgICBcImluZGV4XCI6IFwic3JjL2luZGV4Lmh0bWxcIixcbiAgICAgICAgICAgIFwic3R5bGVzXCI6ICR7SlNPTi5zdHJpbmdpZnkoc3R5bGVzaGVldHMpfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufWA7XG5cbiAgICBmaWxlc1sncGFja2FnZS5qc29uJ10gPSBKU09OLnN0cmluZ2lmeShcbiAgICAgIHtcbiAgICAgICAgZGVwZW5kZW5jaWVzLFxuICAgICAgfSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIDJcbiAgICApO1xuXG4gICAgZmlsZXNbJ3RzY29uZmlnLmpzb24nXSA9IGB7XG4gIFwiY29tcGlsZXJPcHRpb25zXCI6IHtcbiAgICBcInN0cmljdFwiOiB0cnVlLFxuICAgIFwiZm9yY2VDb25zaXN0ZW50Q2FzaW5nSW5GaWxlTmFtZXNcIjogdHJ1ZSxcbiAgICBcIm5vSW1wbGljaXRSZXR1cm5zXCI6IHRydWUsXG4gICAgXCJub0ZhbGx0aHJvdWdoQ2FzZXNJblN3aXRjaFwiOiB0cnVlLFxuICAgIFwidGFyZ2V0XCI6IFwiZXMyMDE3XCIsXG4gICAgXCJtb2R1bGVcIjogXCJlczIwMjBcIixcbiAgICBcIm1vZHVsZVJlc29sdXRpb25cIjogXCJub2RlXCIsXG4gICAgXCJlbWl0RGVjb3JhdG9yTWV0YWRhdGFcIjogdHJ1ZSxcbiAgICBcImV4cGVyaW1lbnRhbERlY29yYXRvcnNcIjogdHJ1ZSxcbiAgICBcImltcG9ydEhlbHBlcnNcIjogdHJ1ZSxcbiAgICBcInR5cGVSb290c1wiOiBbXCJub2RlX21vZHVsZXMvQHR5cGVzXCJdLFxuICAgIFwibGliXCI6IFtcbiAgICAgIFwiZXMyMDIwXCIsXG4gICAgICBcImRvbVwiXG4gICAgXVxuICB9LFxuICBcImFuZ3VsYXJDb21waWxlck9wdGlvbnNcIjoge1xuICAgIFwiZnVsbFRlbXBsYXRlVHlwZUNoZWNrXCI6IHRydWUsXG4gICAgXCJzdHJpY3RJbmplY3Rpb25QYXJhbWV0ZXJzXCI6IHRydWUsXG4gICAgXCJzdHJpY3RJbnB1dEFjY2Vzc01vZGlmaWVyc1wiOiB0cnVlLFxuICAgIFwic3RyaWN0VGVtcGxhdGVzXCI6IHRydWUsXG4gICAgXCJlbmFibGVJdnlcIjogdHJ1ZVxuICB9XG59YDtcblxuICAgIHJldHVybiBmaWxlcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TW9kdWxlTmFtZShjb250ZW50czogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY29udGVudHMuc3BsaXQoJ2V4cG9ydCBjbGFzcyAnKVsxXS5zcGxpdCgnIHsnKVswXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZW5hbWVOb0V4dGVuc2lvbihmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBleHRlbnNpb24gPSBmaWxlTmFtZS5zcGxpdCgnLicpLnBvcCgpO1xuICAgIHJldHVybiBmaWxlTmFtZS5yZXBsYWNlKGAuJHtleHRlbnNpb259YCwgJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeHBvcnRlZENvbXBvbmVudChjb250ZW50czogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0cmltbWVkID0gY29udGVudHMucmVwbGFjZSgvXFxzL2csICcnKTtcblxuICAgIGxldCBmcmFnbWVudCA9IHRyaW1tZWQuc3BsaXQoJ2V4cG9ydHM6WycpWzFdO1xuICAgIGlmICghZnJhZ21lbnQpIHtcbiAgICAgIHRocm93ICdZb3UgbXVzdCBleHBvcnQgYSBjb21wb25lbnQgZnJvbSB0aGUgY29kZSBleGFtcGxlIG1vZHVsZSEnO1xuICAgIH1cblxuICAgIGZyYWdtZW50ID0gZnJhZ21lbnQuc3BsaXQoJ10nKVswXTtcblxuICAgIGNvbnN0IGNvbXBvbmVudHMgPSBmcmFnbWVudC5zcGxpdCgnLCcpLmZpbHRlcigoeCkgPT4geCk7XG5cbiAgICBpZiAoY29tcG9uZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyAoXG4gICAgICAgICdZb3UgbWF5IG9ubHkgZXhwb3J0IGEgc2luZ2xlIGNvbXBvbmVudCBmcm9tIHRoZSBjb2RlIGV4YW1wbGUgbW9kdWxlJyArXG4gICAgICAgIGAod2UgZm91bmQgJHtjb21wb25lbnRzLmxlbmd0aH06ICR7Y29tcG9uZW50cy5qb2luKCcsICcpfSkuYCArXG4gICAgICAgICdJcyBpdCBwb3NzaWJsZSB0byBjcmVhdGUgYSBuZXcgY29kZSBleGFtcGxlIHdpdGggdGhlIGV4dHJhIGNvbXBvbmVudHM/J1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcG9uZW50c1swXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tcG9uZW50U2VsZWN0b3IoXG4gICAgY29tcG9uZW50Q2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc291cmNlQ29kZTogU2t5RG9jc1NvdXJjZUNvZGVGaWxlW11cbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBmb3VuZCA9IHNvdXJjZUNvZGUuZmluZCgoZmlsZSkgPT4ge1xuICAgICAgcmV0dXJuIGZpbGUucmF3Q29udGVudHMuaW5kZXhPZihgY2xhc3MgJHtjb21wb25lbnRDbGFzc05hbWV9YCkgPiAtMTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRyaW1tZWQgPSBmb3VuZC5yYXdDb250ZW50cy5yZXBsYWNlKC9cXHMvZywgJycpO1xuXG4gICAgcmV0dXJuIHRyaW1tZWQuc3BsaXQoYHNlbGVjdG9yOidgKVsxXS5zcGxpdChgJ2ApWzBdO1xuICB9XG59XG4iXX0=
|
|
362
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS1leGFtcGxlcy1lZGl0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RvY3MtdG9vbHMvc3JjL21vZHVsZXMvY29kZS1leGFtcGxlcy9jb2RlLWV4YW1wbGVzLWVkaXRvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxhQUFhLE1BQU0saUJBQWlCLENBQUM7QUFXNUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBSS9EOztHQUVHO0FBSUgsTUFBTSxPQUFPLGdDQUFnQztJQUNwQyxZQUFZLENBQUMsV0FBK0I7UUFDakQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM3QyxNQUFNLE9BQU8sR0FBMEIsRUFBRSxDQUFDO1FBRTFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTyxVQUFVLENBQUMsV0FBK0I7UUFDaEQsTUFBTSxjQUFjLEdBQUcsU0FBUyxDQUFDO1FBQ2pDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQztRQUU5QixNQUFNLG1CQUFtQixHQUF5QztZQUNoRSwrQkFBK0IsRUFBRSxjQUFjO1lBQy9DLHFCQUFxQixFQUFFLGNBQWM7WUFDckMsY0FBYyxFQUFFLGNBQWM7WUFDOUIsY0FBYyxFQUFFLGNBQWM7WUFDOUIsaUJBQWlCLEVBQUUsY0FBYztZQUNqQyxtQkFBbUIsRUFBRSxjQUFjO1lBQ25DLHVCQUF1QixFQUFFLGNBQWM7WUFDdkMsZUFBZSxFQUFFLGNBQWM7WUFDL0IsZ0JBQWdCLEVBQUUsY0FBYztZQUNoQywyQkFBMkIsRUFBRSxjQUFjO1lBQzNDLG1DQUFtQyxFQUFFLGNBQWM7WUFDbkQsaUJBQWlCLEVBQUUsY0FB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QUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs2SEE3YVUsZ0NBQWdDO2lJQUFoQyxnQ0FBZ0MsY0FGL0IsTUFBTTsyRkFFUCxnQ0FBZ0M7a0JBSDVDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgU3RhY2tCbGl0elNESyBmcm9tICdAc3RhY2tibGl0ei9zZGsnO1xuXG5pbXBvcnQge1xuICBPcGVuT3B0aW9ucyBhcyBTdGFja0JsaXR6T3Blbk9wdGlvbnMsXG4gIFByb2plY3QgYXMgU3RhY2tCbGl0elByb2plY3QsXG59IGZyb20gJ0BzdGFja2JsaXR6L3Nkay90eXBpbmdzL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgeyBTa3lEb2NzU291cmNlQ29kZUZpbGUgfSBmcm9tICcuLi9zb3VyY2UtY29kZS9zb3VyY2UtY29kZS1maWxlJztcblxuaW1wb3J0IHsgU2t5RG9jc0NvZGVFeGFtcGxlTW9kdWxlRGVwZW5kZW5jaWVzIH0gZnJvbSAnLi9jb2RlLWV4YW1wbGUtbW9kdWxlLWRlcGVuZGVuY2llcyc7XG5cbmltcG9ydCB7IFNreURvY3NDb2RlRXhhbXBsZVRoZW1lIH0gZnJvbSAnLi9jb2RlLWV4YW1wbGUtdGhlbWUnO1xuXG5pbXBvcnQgeyBTa3lEb2NzQ29kZUV4YW1wbGUgfSBmcm9tICcuL2NvZGUtZXhhbXBsZSc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lEb2NzQ29kZUV4YW1wbGVzRWRpdG9yU2VydmljZSB7XG4gIHB1YmxpYyBsYXVuY2hFZGl0b3IoY29kZUV4YW1wbGU6IFNreURvY3NDb2RlRXhhbXBsZSk6IHZvaWQge1xuICAgIGNvbnN0IHByb2plY3QgPSB0aGlzLmdldFBheWxvYWQoY29kZUV4YW1wbGUpO1xuICAgIGNvbnN0IG9wdGlvbnM6IFN0YWNrQmxpdHpPcGVuT3B0aW9ucyA9IHt9O1xuXG4gICAgU3RhY2tCbGl0elNESy5vcGVuUHJvamVjdChwcm9qZWN0LCBvcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGF5bG9hZChjb2RlRXhhbXBsZTogU2t5RG9jc0NvZGVFeGFtcGxlKTogU3RhY2tCbGl0elByb2plY3Qge1xuICAgIGNvbnN0IGFuZ3VsYXJWZXJzaW9uID0gJ14xNS4wLjAnO1xuICAgIGNvbnN0IHNreXV4VmVyc2lvbiA9ICdeOC4wLjAnO1xuXG4gICAgY29uc3QgZGVmYXVsdERlcGVuZGVuY2llczogU2t5RG9jc0NvZGVFeGFtcGxlTW9kdWxlRGVwZW5kZW5jaWVzID0ge1xuICAgICAgJ0Bhbmd1bGFyLWRldmtpdC9idWlsZC1hbmd1bGFyJzogYW5ndWxhclZlcnNpb24sXG4gICAgICAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bhbmd1bGFyL2Nkayc6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bhbmd1bGFyL2NsaSc6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bhbmd1bGFyL2NvbW1vbic6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bhbmd1bGFyL2NvbXBpbGVyJzogYW5ndWxhclZlcnNpb24sXG4gICAgICAnQGFuZ3VsYXIvY29tcGlsZXItY2xpJzogYW5ndWxhclZlcnNpb24sXG4gICAgICAnQGFuZ3VsYXIvY29yZSc6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bhbmd1bGFyL2Zvcm1zJzogYW5ndWxhclZlcnNpb24sXG4gICAgICAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXItZHluYW1pYyc6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bhbmd1bGFyL3JvdXRlcic6IGFuZ3VsYXJWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9hbmltYXRpb25zJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9hc3NldHMnOiBza3l1eFZlcnNpb24sXG4gICAgICAnQHNreXV4L2NvbmZpZyc6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvY29yZSc6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvZXJyb3JzJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9mb3Jtcyc6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvaHR0cCc6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvaTE4bic6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvaW5kaWNhdG9ycyc6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvbGF5b3V0Jzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9tb2RhbHMnOiBza3l1eFZlcnNpb24sXG4gICAgICAnQHNreXV4L3BhY2thZ2VzJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC9wb3BvdmVycyc6IHNreXV4VmVyc2lvbixcbiAgICAgICdAc2t5dXgvcm91dGVyJzogc2t5dXhWZXJzaW9uLFxuICAgICAgJ0Bza3l1eC90aGVtZSc6IHNreXV4VmVyc2lvbixcbiAgICAgICdAdHlwZXMvamFzbWluZSc6ICd+NC4wLjMnLFxuICAgICAgLy8gV2UgbXVzdCBkZWZpbmUgRHJhZ3VsYSBkZWxpYmVyYXRlbHkgc28gdGhhdCBTdGFja0JsaXR6IHJ1bnMgTkdDQyBhZ2FpbnN0IGl0LlxuICAgICAgJ25nMi1kcmFndWxhJzogJzIuMS4xJyxcbiAgICAgIHJ4anM6ICdeNycsXG4gICAgICB0c2xpYjogJ14yLjMuMCcsXG4gICAgICB0eXBlc2NyaXB0OiAnfjQuOS40JyxcbiAgICAgICd6b25lLmpzJzogJ34wLjEyLjAnLFxuICAgIH07XG5cbiAgICBjb25zdCBtZXJnZWREZXBlbmRlbmNpZXMgPSBPYmplY3QuYXNzaWduKFxuICAgICAge30sXG4gICAgICBkZWZhdWx0RGVwZW5kZW5jaWVzLFxuICAgICAgY29kZUV4YW1wbGUucGFja2FnZURlcGVuZGVuY2llc1xuICAgICk7XG5cbiAgICAvLyBFbnN1cmUgYW55IEBza3l1eCBkZXBlbmRlbmNpZXMgbGlzdCB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIFNLWSBVWC5cbiAgICAvLyBlLmcuIGBcIkBza3l1eC9jb3JlXCI6IFwiKlwiYCAtLT4gYFwiQHNreXV4L2NvcmVcIjogXCI1LjAuMFwiYFxuICAgIGZvciAoY29uc3QgcGFja2FnZU5hbWUgaW4gbWVyZ2VkRGVwZW5kZW5jaWVzKSB7XG4gICAgICAvKmlzdGFuYnVsIGlnbm9yZSBlbHNlKi9cbiAgICAgIGlmIChtZXJnZWREZXBlbmRlbmNpZXMuaGFzT3duUHJvcGVydHkocGFja2FnZU5hbWUpKSB7XG4gICAgICAgIGNvbnN0IHZlcnNpb24gPSBtZXJnZWREZXBlbmRlbmNpZXNbcGFja2FnZU5hbWVdO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdmVyc2lvbiA9PT0gJyonICYmXG4gICAgICAgICAgL14oQGJsYWNrYmF1ZFxcL3NreXV4LWxpYi18QHNreXV4KS8udGVzdChwYWNrYWdlTmFtZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgbWVyZ2VkRGVwZW5kZW5jaWVzW3BhY2thZ2VOYW1lXSA9IHNreXV4VmVyc2lvbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZpbGVzID0gdGhpcy5wYXJzZVN0YWNrQmxpdHpGaWxlcyhcbiAgICAgIGNvZGVFeGFtcGxlLnNvdXJjZUNvZGUsXG4gICAgICBtZXJnZWREZXBlbmRlbmNpZXMsXG4gICAgICBjb2RlRXhhbXBsZS50aGVtZSxcbiAgICAgIGNvZGVFeGFtcGxlLnN0eWxlc2hlZXRzXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBmaWxlcyxcbiAgICAgIHRpdGxlOiAnU0tZIFVYIERlbW8nLFxuICAgICAgZGVzY3JpcHRpb246ICdTS1kgVVggRGVtbycsXG4gICAgICB0ZW1wbGF0ZTogJ25vZGUnLFxuICAgICAgZGVwZW5kZW5jaWVzOiBtZXJnZWREZXBlbmRlbmNpZXMsXG4gICAgICBzZXR0aW5nczoge1xuICAgICAgICBjb21waWxlOiB7XG4gICAgICAgICAgY2xlYXJDb25zb2xlOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VTdGFja0JsaXR6RmlsZXMoXG4gICAgc291cmNlQ29kZTogU2t5RG9jc1NvdXJjZUNvZGVGaWxlW10sXG4gICAgZGVwZW5kZW5jaWVzOiBTa3lEb2NzQ29kZUV4YW1wbGVNb2R1bGVEZXBlbmRlbmNpZXMsXG4gICAgdGhlbWU6IFNreURvY3NDb2RlRXhhbXBsZVRoZW1lLFxuICAgIHN0eWxlc2hlZXRzOiBzdHJpbmdbXSA9IFtdXG4gICk6IHtcbiAgICBbcGF0aDogc3RyaW5nXTogc3RyaW5nO1xuICB9IHtcbiAgICBjb25zdCBzcmNQYXRoID0gJ3NyYy8nO1xuICAgIGNvbnN0IGFwcFBhdGggPSBgJHtzcmNQYXRofWFwcC9gO1xuXG4gICAgY29uc3QgYmFubmVyID0gYC8qKlxuICogVGhpcyBmaWxlIGlzIG5lZWRlZCBmb3IgdGhlIFN0YWNrQmxpdHogZGVtbyBvbmx5LlxuICogSXQgaXMgYXV0b21hdGljYWxseSBwcm92aWRlZCB3aGVuIHVzaW5nIHRoZSBBbmd1bGFyIENMSS5cbiAqKi9cbiBgO1xuXG4gICAgY29uc3QgbW9kdWxlSW1wb3J0U3RhdGVtZW50czogc3RyaW5nW10gPSBbXG4gICAgICBgaW1wb3J0IHtcXG4gIE5nTW9kdWxlXFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztgLFxuICAgICAgYGltcG9ydCB7XFxuICBGb3Jtc01vZHVsZSxcXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGVcXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztgLFxuICAgICAgYGltcG9ydCB7XFxuICBCcm93c2VyQW5pbWF0aW9uc01vZHVsZVxcbn0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztgLFxuICAgICAgYGltcG9ydCB7XFxuICBSb3V0ZXJNb2R1bGVcXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7YCxcbiAgICAgIGBpbXBvcnQge1xcbiAgU2t5QXBwTG9jYWxlUHJvdmlkZXJcXG59IGZyb20gJ0Bza3l1eC9pMThuJztgLFxuICAgICAgYGltcG9ydCB7XFxuICBTa3lUaGVtZVNlcnZpY2VcXG59IGZyb20gJ0Bza3l1eC90aGVtZSc7YCxcbiAgICAgIGBpbXBvcnQge1xcbiAgb2YgYXMgb2JzZXJ2YWJsZU9mXFxufSBmcm9tICdyeGpzJztgLFxuICAgICAgYGltcG9ydCB7XFxuICBBcHBDb21wb25lbnRcXG59IGZyb20gJy4vYXBwLmNvbXBvbmVudCc7YCxcbiAgICBdO1xuXG4gICAgY29uc3QgbW9kdWxlSW1wb3J0czogc3RyaW5nW10gPSBbXG4gICAgICAnQnJvd3NlckFuaW1hdGlvbnNNb2R1bGUnLFxuICAgICAgJ0Zvcm1zTW9kdWxlJyxcbiAgICAgICdSZWFjdGl2ZUZvcm1zTW9kdWxlJyxcbiAgICAgICdSb3V0ZXJNb2R1bGUuZm9yUm9vdChbXSknLFxuICAgIF07XG5cbiAgICBjb25zdCBmaWxlczogeyBbXzogc3RyaW5nXTogc3RyaW5nIH0gPSB7fTtcblxuICAgIGxldCBhcHBDb21wb25lbnRUZW1wbGF0ZSA9ICcnO1xuXG4gICAgc291cmNlQ29kZS5mb3JFYWNoKChmaWxlKSA9PiB7XG4gICAgICBmaWxlc1tgJHthcHBQYXRofSR7ZmlsZS5maWxlTmFtZX1gXSA9IGZpbGUucmF3Q29udGVudHM7XG5cbiAgICAgIC8vIFNldHVwIG1vZHVsZSBpbXBvcnRzIGFuZCBjb21wb25lbnQgc2VsZWN0b3JzLlxuICAgICAgaWYgKGZpbGUuZmlsZU5hbWUuaW5kZXhPZignLm1vZHVsZS50cycpID4gLTEpIHtcbiAgICAgICAgY29uc3QgbW9kdWxlTmFtZSA9IHRoaXMuZ2V0TW9kdWxlTmFtZShmaWxlLnJhd0NvbnRlbnRzKTtcbiAgICAgICAgY29uc3QgaW1wb3J0UGF0aCA9IGAuLyR7dGhpcy5nZXRGaWxlbmFtZU5vRXh0ZW5zaW9uKGZpbGUuZmlsZU5hbWUpfWA7XG5cbiAgICAgICAgY29uc3QgZXhwb3J0ZWRDb21wb25lbnQgPSB0aGlzLmdldEV4cG9ydGVkQ29tcG9uZW50KGZpbGUucmF3Q29udGVudHMpO1xuICAgICAgICBjb25zdCBjb21wb25lbnRTZWxlY3RvciA9IHRoaXMuZ2V0Q29tcG9uZW50U2VsZWN0b3IoXG4gICAgICAgICAgZXhwb3J0ZWRDb21wb25lbnQsXG4gICAgICAgICAgc291cmNlQ29kZVxuICAgICAgICApO1xuXG4gICAgICAgIGFwcENvbXBvbmVudFRlbXBsYXRlICs9IGA8JHtjb21wb25lbnRTZWxlY3Rvcn0+PC8ke2NvbXBvbmVudFNlbGVjdG9yfT5gO1xuXG4gICAgICAgIG1vZHVsZUltcG9ydHMucHVzaChtb2R1bGVOYW1lKTtcbiAgICAgICAgbW9kdWxlSW1wb3J0U3RhdGVtZW50cy5wdXNoKFxuICAgICAgICAgIGBpbXBvcnQge1xcbiAgJHttb2R1bGVOYW1lfVxcbn0gZnJvbSAnJHtpbXBvcnRQYXRofSc7YFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZmlsZXNbYCR7YXBwUGF0aH1hcHAuY29tcG9uZW50LnRzYF0gPSBgJHtiYW5uZXJ9XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFJlbmRlcmVyMlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgU2t5VGhlbWUsXG4gIFNreVRoZW1lTW9kZSxcbiAgU2t5VGhlbWVTZXJ2aWNlLFxuICBTa3lUaGVtZVNldHRpbmdzXG59IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NreS1kZW1vLWFwcCcsXG4gIHRlbXBsYXRlOiAnJHthcHBDb21wb25lbnRUZW1wbGF0ZX0nXG59KVxuZXhwb3J0IGNsYXNzIEFwcENvbXBvbmVudCB7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgdGhlbWVTdmM6IFNreVRoZW1lU2VydmljZSxcbiAgICByZW5kZXJlcjogUmVuZGVyZXIyXG4gICkge1xuICAgIGNvbnN0IHRoZW1lU2V0dGluZ3MgPSBuZXcgU2t5VGhlbWVTZXR0aW5ncyhcbiAgICAgIFNreVRoZW1lLnByZXNldHNbJyR7XG4gICAgICAgIHRoZW1lID09PSBTa3lEb2NzQ29kZUV4YW1wbGVUaGVtZS5Nb2Rlcm4gPyAnbW9kZXJuJyA6ICdkZWZhdWx0J1xuICAgICAgfSddLFxuICAgICAgU2t5VGhlbWVNb2RlLnByZXNldHMubGlnaHRcbiAgICApO1xuXG4gICAgdGhlbWVTdmMuaW5pdChcbiAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICByZW5kZXJlcixcbiAgICAgIHRoZW1lU2V0dGluZ3NcbiAgICApO1xuICB9XG5cbn1gO1xuXG4gICAgZmlsZXNbYCR7YXBwUGF0aH1hcHAubW9kdWxlLnRzYF0gPSBgJHttb2R1bGVJbXBvcnRTdGF0ZW1lbnRzLmpvaW4oJ1xcblxcbicpfVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgJHttb2R1bGVJbXBvcnRzLmpvaW4oJyxcXG4gICAgJyl9XG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEFwcENvbXBvbmVudFxuICBdLFxuICBib290c3RyYXA6IFtcbiAgICBBcHBDb21wb25lbnRcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2t5VGhlbWVTZXJ2aWNlLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IFNreUFwcExvY2FsZVByb3ZpZGVyLFxuICAgICAgdXNlVmFsdWU6IHtcbiAgICAgICAgZ2V0TG9jYWxlSW5mbzogKCkgPT4gb2JzZXJ2YWJsZU9mKHtcbiAgICAgICAgICBsb2NhbGU6ICdlbi1VUydcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwTW9kdWxlIHsgfVxuYDtcblxuICAgIGZpbGVzW2Ake3NyY1BhdGh9aW5kZXguaHRtbGBdID0gYDwhZG9jdHlwZSBodG1sPlxuPGh0bWwgbGFuZz1cImVuXCI+XG48aGVhZD5cbiAgPG1ldGEgY2hhcnNldD1cInV0Zi04XCI+XG4gIDx0aXRsZT5Ta3kgVVggRGVtbzwvdGl0bGU+XG4gIDxiYXNlIGhyZWY9XCIvXCI+XG4gIDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MVwiPlxuICA8IS0tXG4gICAgVGhlIENTUyBsaW5rcyBhcmUgbmVlZGVkIGZvciB0aGUgU3RhY2tCbGl0eiBkZW1vIG9ubHkuXG4gICAgVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIGEga25vd24gYnVnIHRoYXQgcHJldmVudHMgZXh0ZXJuYWwgaW1wb3J0cyBpbiBDU1MuXG4gICAgaHR0cHM6Ly9naXRodWIuY29tL3N0YWNrYmxpdHovY29yZS9pc3N1ZXMvMTMzXG4gIC0tPlxuICA8bGluayByZWw9XCJzdHlsZXNoZWV0XCIgdHlwZT1cInRleHQvY3NzXCIgaHJlZj1cImh0dHBzOi8vbWF4Y2RuLmJvb3RzdHJhcGNkbi5jb20vZm9udC1hd2Vzb21lLzQuNy4wL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzc1wiIC8+XG4gIDxsaW5rIHJlbD1cInN0eWxlc2hlZXRcIiB0eXBlPVwidGV4dC9jc3NcIiBocmVmPVwiaHR0cHM6Ly9za3kuYmxhY2tiYXVkY2RuLm5ldC9zdGF0aWMvc2t5dXgtaWNvbnMvNi4wLjAvYXNzZXRzL2Nzcy9za3l1eC1pY29ucy5taW4uY3NzXCIgLz5cbjwvaGVhZD5cbjxib2R5PlxuICA8c2t5LWRlbW8tYXBwPlxuICAgIExvYWRpbmcuLi5cbiAgPC9za3ktZGVtby1hcHA+XG48L2JvZHk+XG48L2h0bWw+XG5gO1xuXG4gICAgZmlsZXNbYCR7c3JjUGF0aH1tYWluLnRzYF0gPSBgJHtiYW5uZXJ9XG5pbXBvcnQgeyBwbGF0Zm9ybUJyb3dzZXJEeW5hbWljIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci1keW5hbWljJztcblxuaW1wb3J0IHsgQXBwTW9kdWxlIH0gZnJvbSAnLi9hcHAvYXBwLm1vZHVsZSc7XG5cbnBsYXRmb3JtQnJvd3NlckR5bmFtaWMoKS5ib290c3RyYXBNb2R1bGUoQXBwTW9kdWxlKVxuICAuY2F0Y2goZXJyID0+IGNvbnNvbGUuZXJyb3IoZXJyKSk7XG5gO1xuXG4gICAgZmlsZXNbYCR7c3JjUGF0aH1zdHlsZXMuc2Nzc2BdID0gYEBpbXBvcnQgJ0Bza3l1eC90aGVtZS9jc3Mvc2t5JztcbkBpbXBvcnQgJ0Bza3l1eC90aGVtZS9jc3MvdGhlbWVzL21vZGVybi9zdHlsZXMnO1xuXG5ib2R5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgbWFyZ2luOiAxNXB4O1xufWA7XG5cbiAgICBzdHlsZXNoZWV0cy5wdXNoKCdzcmMvc3R5bGVzLnNjc3MnKTtcblxuICAgIGZpbGVzWydhbmd1bGFyLmpzb24nXSA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAge1xuICAgICAgICAkc2NoZW1hOiAnLi9ub2RlX21vZHVsZXMvQGFuZ3VsYXIvY2xpL2xpYi9jb25maWcvc2NoZW1hLmpzb24nLFxuICAgICAgICB2ZXJzaW9uOiAxLFxuICAgICAgICBwcm9qZWN0czoge1xuICAgICAgICAgIGRlbW86IHtcbiAgICAgICAgICAgIHByb2plY3RUeXBlOiAnYXBwbGljYXRpb24nLFxuICAgICAgICAgICAgcm9vdDogJycsXG4gICAgICAgICAgICBzb3VyY2VSb290OiAnc3JjJyxcbiAgICAgICAgICAgIHByZWZpeDogJ2FwcCcsXG4gICAgICAgICAgICBhcmNoaXRlY3Q6IHtcbiAgICAgICAgICAgICAgYnVpbGQ6IHtcbiAgICAgICAgICAgICAgICBidWlsZGVyOiAnQGFuZ3VsYXItZGV2a2l0L2J1aWxkLWFuZ3VsYXI6YnJvd3NlcicsXG4gICAgICAgICAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgICAgICAgb3V0cHV0UGF0aDogJ2Rpc3QvZGVtbycsXG4gICAgICAgICAgICAgICAgICBpbmRleDogJ3NyYy9pbmRleC5odG1sJyxcbiAgICAgICAgICAgICAgICAgIG1haW46ICdzcmMvbWFpbi50cycsXG4gICAgICAgICAgICAgICAgICBwb2x5ZmlsbHM6IFsnem9uZS5qcycsICdAc2t5dXgvcGFja2FnZXMvcG9seWZpbGxzJ10sXG4gICAgICAgICAgICAgICAgICB0c0NvbmZpZzogJ3RzY29uZmlnLmFwcC5qc29uJyxcbiAgICAgICAgICAgICAgICAgIGlubGluZVN0eWxlTGFuZ3VhZ2U6ICdzY3NzJyxcbiAgICAgICAgICAgICAgICAgIGFzc2V0czogW10sXG4gICAgICAgICAgICAgICAgICBzdHlsZXM6IHN0eWxlc2hlZXRzLFxuICAgICAgICAgICAgICAgICAgc2NyaXB0czogW10sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uczoge1xuICAgICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQ6IHtcbiAgICAgICAgICAgICAgICAgICAgYnVpbGRPcHRpbWl6ZXI6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB2ZW5kb3JDaHVuazogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjdExpY2Vuc2VzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgc291cmNlTWFwOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBuYW1lZENodW5rczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkZWZhdWx0Q29uZmlndXJhdGlvbjogJ2RldmVsb3BtZW50JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgc2VydmU6IHtcbiAgICAgICAgICAgICAgICBidWlsZGVyOiAnQGFuZ3VsYXItZGV2a2l0L2J1aWxkLWFuZ3VsYXI6ZGV2LXNlcnZlcicsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgIGRldmVsb3BtZW50OiB7XG4gICAgICAgICAgICAgICAgICAgIGJyb3dzZXJUYXJnZXQ6ICdkZW1vOmJ1aWxkOmRldmVsb3BtZW50JyxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBkZWZhdWx0Q29uZmlndXJhdGlvbjogJ2RldmVsb3BtZW50JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgJ2V4dHJhY3QtaTE4bic6IHtcbiAgICAgICAgICAgICAgICBidWlsZGVyOiAnQGFuZ3VsYXItZGV2a2l0L2J1aWxkLWFuZ3VsYXI6ZXh0cmFjdC1pMThuJyxcbiAgICAgICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBicm93c2VyVGFyZ2V0OiAnZGVtbzpidWlsZCcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICAyXG4gICAgKTtcblxuICAgIGZpbGVzWydwYWNrYWdlLmpzb24nXSA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAge1xuICAgICAgICBuYW1lOiAnc2t5dXgtc3BhLWRlbW8nLFxuICAgICAgICBkZXBlbmRlbmNpZXMsXG4gICAgICAgIHNjcmlwdHM6IHtcbiAgICAgICAgICBzdGFydDogJ25nIHNlcnZlJyxcbiAgICAgICAgICBidWlsZDogJ25nIGJ1aWxkJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICAyXG4gICAgKTtcblxuICAgIGZpbGVzWyd0c2NvbmZpZy5hcHAuanNvbiddID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICB7XG4gICAgICAgIGV4dGVuZHM6ICcuL3RzY29uZmlnLmpzb24nLFxuICAgICAgICBjb21waWxlck9wdGlvbnM6IHtcbiAgICAgICAgICBvdXREaXI6ICcuL291dC10c2MvYXBwJyxcbiAgICAgICAgICB0eXBlczogW10sXG4gICAgICAgIH0sXG4gICAgICAgIGZpbGVzOiBbJ3NyYy9tYWluLnRzJ10sXG4gICAgICAgIGluY2x1ZGU6IFsnc3JjLyoqLyouZC50cyddLFxuICAgICAgfSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIDJcbiAgICApO1xuICAgIGZpbGVzWyd0c2NvbmZpZy5qc29uJ10gPSBKU09OLnN0cmluZ2lmeShcbiAgICAgIHtcbiAgICAgICAgY29tcGlsZU9uU2F2ZTogZmFsc2UsXG4gICAgICAgIGNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIGJhc2VVcmw6ICcuLycsXG4gICAgICAgICAgb3V0RGlyOiAnLi9kaXN0L291dC10c2MnLFxuICAgICAgICAgIGZvcmNlQ29uc2lzdGVudENhc2luZ0luRmlsZU5hbWVzOiB0cnVlLFxuICAgICAgICAgIHN0cmljdDogdHJ1ZSxcbiAgICAgICAgICBub0ltcGxpY2l0T3ZlcnJpZGU6IHRydWUsXG4gICAgICAgICAgbm9Qcm9wZXJ0eUFjY2Vzc0Zyb21JbmRleFNpZ25hdHVyZTogdHJ1ZSxcbiAgICAgICAgICBub0ltcGxpY2l0UmV0dXJuczogdHJ1ZSxcbiAgICAgICAgICBub0ZhbGx0aHJvdWdoQ2FzZXNJblN3aXRjaDogdHJ1ZSxcbiAgICAgICAgICBzb3VyY2VNYXA6IHRydWUsXG4gICAgICAgICAgZGVjbGFyYXRpb246IGZhbHNlLFxuICAgICAgICAgIGRvd25sZXZlbEl0ZXJhdGlvbjogdHJ1ZSxcbiAgICAgICAgICBlc01vZHVsZUludGVyb3A6IHRydWUsXG4gICAgICAgICAgZXhwZXJpbWVudGFsRGVjb3JhdG9yczogdHJ1ZSxcbiAgICAgICAgICBtb2R1bGVSZXNvbHV0aW9uOiAnbm9kZScsXG4gICAgICAgICAgaW1wb3J0SGVscGVyczogdHJ1ZSxcbiAgICAgICAgICB0eXBlUm9vdHM6IFsnbm9kZV9tb2R1bGVzL0B0eXBlcyddLFxuICAgICAgICAgIHRhcmdldDogJ0VTMjAyMicsXG4gICAgICAgICAgbW9kdWxlOiAnRVMyMDIyJyxcbiAgICAgICAgICB1c2VEZWZpbmVGb3JDbGFzc0ZpZWxkczogZmFsc2UsXG4gICAgICAgICAgbGliOiBbJ0VTMjAyMicsICdkb20nXSxcbiAgICAgICAgfSxcbiAgICAgICAgYW5ndWxhckNvbXBpbGVyT3B0aW9uczoge1xuICAgICAgICAgIGZ1bGxUZW1wbGF0ZVR5cGVDaGVjazogdHJ1ZSxcbiAgICAgICAgICBlbmFibGVJMThuTGVnYWN5TWVzc2FnZUlkRm9ybWF0OiBmYWxzZSxcbiAgICAgICAgICBzdHJpY3RJbmplY3Rpb25QYXJhbWV0ZXJzOiB0cnVlLFxuICAgICAgICAgIHN0cmljdElucHV0QWNjZXNzTW9kaWZpZXJzOiB0cnVlLFxuICAgICAgICAgIHN0cmljdFRlbXBsYXRlczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICAyXG4gICAgKTtcblxuICAgIHJldHVybiBmaWxlcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TW9kdWxlTmFtZShjb250ZW50czogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY29udGVudHMuc3BsaXQoJ2V4cG9ydCBjbGFzcyAnKVsxXS5zcGxpdCgnIHsnKVswXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZW5hbWVOb0V4dGVuc2lvbihmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBleHRlbnNpb24gPSBmaWxlTmFtZS5zcGxpdCgnLicpLnBvcCgpO1xuICAgIHJldHVybiBmaWxlTmFtZS5yZXBsYWNlKGAuJHtleHRlbnNpb259YCwgJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFeHBvcnRlZENvbXBvbmVudChjb250ZW50czogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0cmltbWVkID0gY29udGVudHMucmVwbGFjZSgvXFxzL2csICcnKTtcblxuICAgIGxldCBmcmFnbWVudCA9IHRyaW1tZWQuc3BsaXQoJ2V4cG9ydHM6WycpWzFdO1xuICAgIGlmICghZnJhZ21lbnQpIHtcbiAgICAgIHRocm93ICdZb3UgbXVzdCBleHBvcnQgYSBjb21wb25lbnQgZnJvbSB0aGUgY29kZSBleGFtcGxlIG1vZHVsZSEnO1xuICAgIH1cblxuICAgIGZyYWdtZW50ID0gZnJhZ21lbnQuc3BsaXQoJ10nKVswXTtcblxuICAgIGNvbnN0IGNvbXBvbmVudHMgPSBmcmFnbWVudC5zcGxpdCgnLCcpLmZpbHRlcigoeCkgPT4geCk7XG5cbiAgICBpZiAoY29tcG9uZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyAoXG4gICAgICAgICdZb3UgbWF5IG9ubHkgZXhwb3J0IGEgc2luZ2xlIGNvbXBvbmVudCBmcm9tIHRoZSBjb2RlIGV4YW1wbGUgbW9kdWxlJyArXG4gICAgICAgIGAod2UgZm91bmQgJHtjb21wb25lbnRzLmxlbmd0aH06ICR7Y29tcG9uZW50cy5qb2luKCcsICcpfSkuYCArXG4gICAgICAgICdJcyBpdCBwb3NzaWJsZSB0byBjcmVhdGUgYSBuZXcgY29kZSBleGFtcGxlIHdpdGggdGhlIGV4dHJhIGNvbXBvbmVudHM/J1xuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tcG9uZW50c1swXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tcG9uZW50U2VsZWN0b3IoXG4gICAgY29tcG9uZW50Q2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgc291cmNlQ29kZTogU2t5RG9jc1NvdXJjZUNvZGVGaWxlW11cbiAgKTogc3RyaW5nIHtcbiAgICBjb25zdCBmb3VuZCA9IHNvdXJjZUNvZGUuZmluZCgoZmlsZSkgPT4ge1xuICAgICAgcmV0dXJuIGZpbGUucmF3Q29udGVudHMuaW5kZXhPZihgY2xhc3MgJHtjb21wb25lbnRDbGFzc05hbWV9YCkgPiAtMTtcbiAgICB9KTtcblxuICAgIGNvbnN0IHRyaW1tZWQgPSBmb3VuZC5yYXdDb250ZW50cy5yZXBsYWNlKC9cXHMvZywgJycpO1xuXG4gICAgcmV0dXJuIHRyaW1tZWQuc3BsaXQoYHNlbGVjdG9yOidgKVsxXS5zcGxpdChgJ2ApWzBdO1xuICB9XG59XG4iXX0=
|
|
@@ -305,13 +305,16 @@ class SkyDocsCodeExamplesEditorService {
|
|
|
305
305
|
StackBlitzSDK.openProject(project, options);
|
|
306
306
|
}
|
|
307
307
|
getPayload(codeExample) {
|
|
308
|
-
const angularVersion = '^
|
|
309
|
-
const skyuxVersion = '^
|
|
308
|
+
const angularVersion = '^15.0.0';
|
|
309
|
+
const skyuxVersion = '^8.0.0';
|
|
310
310
|
const defaultDependencies = {
|
|
311
|
+
'@angular-devkit/build-angular': angularVersion,
|
|
311
312
|
'@angular/animations': angularVersion,
|
|
312
313
|
'@angular/cdk': angularVersion,
|
|
314
|
+
'@angular/cli': angularVersion,
|
|
313
315
|
'@angular/common': angularVersion,
|
|
314
316
|
'@angular/compiler': angularVersion,
|
|
317
|
+
'@angular/compiler-cli': angularVersion,
|
|
315
318
|
'@angular/core': angularVersion,
|
|
316
319
|
'@angular/forms': angularVersion,
|
|
317
320
|
'@angular/platform-browser': angularVersion,
|
|
@@ -328,6 +331,7 @@ class SkyDocsCodeExamplesEditorService {
|
|
|
328
331
|
'@skyux/indicators': skyuxVersion,
|
|
329
332
|
'@skyux/layout': skyuxVersion,
|
|
330
333
|
'@skyux/modals': skyuxVersion,
|
|
334
|
+
'@skyux/packages': skyuxVersion,
|
|
331
335
|
'@skyux/popovers': skyuxVersion,
|
|
332
336
|
'@skyux/router': skyuxVersion,
|
|
333
337
|
'@skyux/theme': skyuxVersion,
|
|
@@ -336,7 +340,8 @@ class SkyDocsCodeExamplesEditorService {
|
|
|
336
340
|
'ng2-dragula': '2.1.1',
|
|
337
341
|
rxjs: '^7',
|
|
338
342
|
tslib: '^2.3.0',
|
|
339
|
-
|
|
343
|
+
typescript: '~4.9.4',
|
|
344
|
+
'zone.js': '~0.12.0',
|
|
340
345
|
};
|
|
341
346
|
const mergedDependencies = Object.assign({}, defaultDependencies, codeExample.packageDependencies);
|
|
342
347
|
// Ensure any @skyux dependencies list the correct version of SKY UX.
|
|
@@ -356,7 +361,7 @@ class SkyDocsCodeExamplesEditorService {
|
|
|
356
361
|
files,
|
|
357
362
|
title: 'SKY UX Demo',
|
|
358
363
|
description: 'SKY UX Demo',
|
|
359
|
-
template: '
|
|
364
|
+
template: 'node',
|
|
360
365
|
dependencies: mergedDependencies,
|
|
361
366
|
settings: {
|
|
362
367
|
compile: {
|
|
@@ -466,87 +471,147 @@ export class AppComponent {
|
|
|
466
471
|
})
|
|
467
472
|
export class AppModule { }
|
|
468
473
|
`;
|
|
469
|
-
files[`${srcPath}index.html`] =
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
<
|
|
475
|
-
<
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
474
|
+
files[`${srcPath}index.html`] = `<!doctype html>
|
|
475
|
+
<html lang="en">
|
|
476
|
+
<head>
|
|
477
|
+
<meta charset="utf-8">
|
|
478
|
+
<title>Sky UX Demo</title>
|
|
479
|
+
<base href="/">
|
|
480
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
481
|
+
<!--
|
|
482
|
+
The CSS links are needed for the StackBlitz demo only.
|
|
483
|
+
This is a workaround for a known bug that prevents external imports in CSS.
|
|
484
|
+
https://github.com/stackblitz/core/issues/133
|
|
485
|
+
-->
|
|
486
|
+
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
|
|
487
|
+
<link rel="stylesheet" type="text/css" href="https://sky.blackbaudcdn.net/static/skyux-icons/6.0.0/assets/css/skyux-icons.min.css" />
|
|
488
|
+
</head>
|
|
489
|
+
<body>
|
|
490
|
+
<sky-demo-app>
|
|
491
|
+
Loading...
|
|
492
|
+
</sky-demo-app>
|
|
493
|
+
</body>
|
|
494
|
+
</html>
|
|
495
|
+
`;
|
|
480
496
|
files[`${srcPath}main.ts`] = `${banner}
|
|
481
|
-
import '
|
|
482
|
-
|
|
483
|
-
import {
|
|
484
|
-
platformBrowserDynamic
|
|
485
|
-
} from '@angular/platform-browser-dynamic';
|
|
497
|
+
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
|
|
486
498
|
|
|
487
|
-
import {
|
|
488
|
-
AppModule
|
|
489
|
-
} from './app/app.module';
|
|
499
|
+
import { AppModule } from './app/app.module';
|
|
490
500
|
|
|
491
|
-
platformBrowserDynamic()
|
|
492
|
-
.
|
|
493
|
-
.catch((err) => console.error(err));
|
|
494
|
-
|
|
495
|
-
`;
|
|
496
|
-
files[`${srcPath}polyfills.ts`] = `${banner}
|
|
497
|
-
import 'zone.js';
|
|
501
|
+
platformBrowserDynamic().bootstrapModule(AppModule)
|
|
502
|
+
.catch(err => console.error(err));
|
|
498
503
|
`;
|
|
499
|
-
files[`${srcPath}styles.scss`] = `@import '
|
|
500
|
-
@import '
|
|
504
|
+
files[`${srcPath}styles.scss`] = `@import '@skyux/theme/css/sky';
|
|
505
|
+
@import '@skyux/theme/css/themes/modern/styles';
|
|
501
506
|
|
|
502
507
|
body {
|
|
503
508
|
background-color: #fff;
|
|
504
509
|
margin: 15px;
|
|
505
510
|
}`;
|
|
506
511
|
stylesheets.push('src/styles.scss');
|
|
507
|
-
files['angular.json'] =
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
512
|
+
files['angular.json'] = JSON.stringify({
|
|
513
|
+
$schema: './node_modules/@angular/cli/lib/config/schema.json',
|
|
514
|
+
version: 1,
|
|
515
|
+
projects: {
|
|
516
|
+
demo: {
|
|
517
|
+
projectType: 'application',
|
|
518
|
+
root: '',
|
|
519
|
+
sourceRoot: 'src',
|
|
520
|
+
prefix: 'app',
|
|
521
|
+
architect: {
|
|
522
|
+
build: {
|
|
523
|
+
builder: '@angular-devkit/build-angular:browser',
|
|
524
|
+
options: {
|
|
525
|
+
outputPath: 'dist/demo',
|
|
526
|
+
index: 'src/index.html',
|
|
527
|
+
main: 'src/main.ts',
|
|
528
|
+
polyfills: ['zone.js', '@skyux/packages/polyfills'],
|
|
529
|
+
tsConfig: 'tsconfig.app.json',
|
|
530
|
+
inlineStyleLanguage: 'scss',
|
|
531
|
+
assets: [],
|
|
532
|
+
styles: stylesheets,
|
|
533
|
+
scripts: [],
|
|
534
|
+
},
|
|
535
|
+
configurations: {
|
|
536
|
+
development: {
|
|
537
|
+
buildOptimizer: false,
|
|
538
|
+
optimization: false,
|
|
539
|
+
vendorChunk: true,
|
|
540
|
+
extractLicenses: false,
|
|
541
|
+
sourceMap: true,
|
|
542
|
+
namedChunks: true,
|
|
543
|
+
},
|
|
544
|
+
},
|
|
545
|
+
defaultConfiguration: 'development',
|
|
546
|
+
},
|
|
547
|
+
serve: {
|
|
548
|
+
builder: '@angular-devkit/build-angular:dev-server',
|
|
549
|
+
configurations: {
|
|
550
|
+
development: {
|
|
551
|
+
browserTarget: 'demo:build:development',
|
|
552
|
+
},
|
|
553
|
+
},
|
|
554
|
+
defaultConfiguration: 'development',
|
|
555
|
+
},
|
|
556
|
+
'extract-i18n': {
|
|
557
|
+
builder: '@angular-devkit/build-angular:extract-i18n',
|
|
558
|
+
options: {
|
|
559
|
+
browserTarget: 'demo:build',
|
|
560
|
+
},
|
|
561
|
+
},
|
|
562
|
+
},
|
|
563
|
+
},
|
|
564
|
+
},
|
|
565
|
+
}, undefined, 2);
|
|
521
566
|
files['package.json'] = JSON.stringify({
|
|
567
|
+
name: 'skyux-spa-demo',
|
|
522
568
|
dependencies,
|
|
569
|
+
scripts: {
|
|
570
|
+
start: 'ng serve',
|
|
571
|
+
build: 'ng build',
|
|
572
|
+
},
|
|
573
|
+
}, undefined, 2);
|
|
574
|
+
files['tsconfig.app.json'] = JSON.stringify({
|
|
575
|
+
extends: './tsconfig.json',
|
|
576
|
+
compilerOptions: {
|
|
577
|
+
outDir: './out-tsc/app',
|
|
578
|
+
types: [],
|
|
579
|
+
},
|
|
580
|
+
files: ['src/main.ts'],
|
|
581
|
+
include: ['src/**/*.d.ts'],
|
|
582
|
+
}, undefined, 2);
|
|
583
|
+
files['tsconfig.json'] = JSON.stringify({
|
|
584
|
+
compileOnSave: false,
|
|
585
|
+
compilerOptions: {
|
|
586
|
+
baseUrl: './',
|
|
587
|
+
outDir: './dist/out-tsc',
|
|
588
|
+
forceConsistentCasingInFileNames: true,
|
|
589
|
+
strict: true,
|
|
590
|
+
noImplicitOverride: true,
|
|
591
|
+
noPropertyAccessFromIndexSignature: true,
|
|
592
|
+
noImplicitReturns: true,
|
|
593
|
+
noFallthroughCasesInSwitch: true,
|
|
594
|
+
sourceMap: true,
|
|
595
|
+
declaration: false,
|
|
596
|
+
downlevelIteration: true,
|
|
597
|
+
esModuleInterop: true,
|
|
598
|
+
experimentalDecorators: true,
|
|
599
|
+
moduleResolution: 'node',
|
|
600
|
+
importHelpers: true,
|
|
601
|
+
typeRoots: ['node_modules/@types'],
|
|
602
|
+
target: 'ES2022',
|
|
603
|
+
module: 'ES2022',
|
|
604
|
+
useDefineForClassFields: false,
|
|
605
|
+
lib: ['ES2022', 'dom'],
|
|
606
|
+
},
|
|
607
|
+
angularCompilerOptions: {
|
|
608
|
+
fullTemplateTypeCheck: true,
|
|
609
|
+
enableI18nLegacyMessageIdFormat: false,
|
|
610
|
+
strictInjectionParameters: true,
|
|
611
|
+
strictInputAccessModifiers: true,
|
|
612
|
+
strictTemplates: true,
|
|
613
|
+
},
|
|
523
614
|
}, undefined, 2);
|
|
524
|
-
files['tsconfig.json'] = `{
|
|
525
|
-
"compilerOptions": {
|
|
526
|
-
"strict": true,
|
|
527
|
-
"forceConsistentCasingInFileNames": true,
|
|
528
|
-
"noImplicitReturns": true,
|
|
529
|
-
"noFallthroughCasesInSwitch": true,
|
|
530
|
-
"target": "es2017",
|
|
531
|
-
"module": "es2020",
|
|
532
|
-
"moduleResolution": "node",
|
|
533
|
-
"emitDecoratorMetadata": true,
|
|
534
|
-
"experimentalDecorators": true,
|
|
535
|
-
"importHelpers": true,
|
|
536
|
-
"typeRoots": ["node_modules/@types"],
|
|
537
|
-
"lib": [
|
|
538
|
-
"es2020",
|
|
539
|
-
"dom"
|
|
540
|
-
]
|
|
541
|
-
},
|
|
542
|
-
"angularCompilerOptions": {
|
|
543
|
-
"fullTemplateTypeCheck": true,
|
|
544
|
-
"strictInjectionParameters": true,
|
|
545
|
-
"strictInputAccessModifiers": true,
|
|
546
|
-
"strictTemplates": true,
|
|
547
|
-
"enableIvy": true
|
|
548
|
-
}
|
|
549
|
-
}`;
|
|
550
615
|
return files;
|
|
551
616
|
}
|
|
552
617
|
getModuleName(contents) {
|