@nlabs/lex 1.49.5 → 1.50.1
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/.swcrc +35 -0
- package/README.md +43 -59
- package/config.json +32 -8
- package/examples/lex.config.js +110 -10
- package/lex.config.js +34 -7
- package/lib/Button.stories.js +99 -0
- package/lib/LexConfig.d.ts +60 -22
- package/lib/LexConfig.js +285 -244
- package/lib/commands/ai/ai.js +287 -288
- package/lib/commands/ai/index.js +8 -7
- package/lib/commands/build/build.d.ts +2 -2
- package/lib/commands/build/build.js +349 -458
- package/lib/commands/clean/clean.js +45 -33
- package/lib/commands/compile/compile.js +214 -228
- package/lib/commands/config/config.js +46 -42
- package/lib/commands/copy/copy.js +36 -35
- package/lib/commands/create/create.js +200 -121
- package/lib/commands/dev/dev.d.ts +1 -0
- package/lib/commands/dev/dev.js +261 -259
- package/lib/commands/init/init.js +108 -88
- package/lib/commands/link/link.js +18 -14
- package/lib/commands/lint/lint.js +735 -742
- package/lib/commands/migrate/migrate.js +49 -36
- package/lib/commands/publish/publish.js +116 -96
- package/lib/commands/serverless/serverless.js +611 -585
- package/lib/commands/storybook/storybook.js +242 -238
- package/lib/commands/test/test.js +381 -409
- package/lib/commands/update/update.js +141 -120
- package/lib/commands/upgrade/upgrade.js +51 -44
- package/lib/commands/versions/versions.d.ts +1 -1
- package/lib/commands/versions/versions.js +36 -38
- package/lib/create/changelog.js +136 -125
- package/lib/index.js +40 -38
- package/lib/lex.js +95 -68
- package/lib/storybook/index.js +6 -1
- package/lib/test-react/index.js +7 -84
- package/lib/types.d.ts +1 -1
- package/lib/types.js +7 -1
- package/lib/utils/aiService.js +240 -227
- package/lib/utils/app.js +274 -273
- package/lib/utils/deepMerge.js +37 -23
- package/lib/utils/file.js +218 -215
- package/lib/utils/log.js +29 -27
- package/lib/utils/reactShim.js +7 -85
- package/lib/utils/translations.js +92 -82
- package/package.json +59 -60
- package/templates/typescript/DataLayer.js.txt +218 -0
- package/templates/typescript/DataLayer.test.js.txt +268 -0
- package/templates/typescript/DataLayer.test.ts.txt +269 -0
- package/templates/typescript/DataLayer.ts.txt +227 -0
- package/webpack.config.js +38 -28
- package/lib/commands/lint/autofix.d.ts +0 -2
|
@@ -1,43 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ import { writeFileSync } from 'fs';
|
|
5
|
+
import startCase from 'lodash/startCase.js';
|
|
6
|
+
import { relative as pathRelative } from 'path';
|
|
7
|
+
import { LexConfig } from '../../LexConfig.js';
|
|
8
|
+
import { createSpinner } from '../../utils/app.js';
|
|
9
|
+
import { log } from '../../utils/log.js';
|
|
10
|
+
export const config = async (type, cmd, callback = ()=>({}))=>{
|
|
11
|
+
const { cliName = 'Lex', json, quiet } = cmd;
|
|
12
|
+
const validTypes = [
|
|
13
|
+
'app',
|
|
14
|
+
'jest',
|
|
15
|
+
'webpack'
|
|
16
|
+
];
|
|
17
|
+
if (!validTypes.includes(type)) {
|
|
18
|
+
log(`\n${cliName} Error: Option for ${type} not found. Configurations only available for app, jest, and webpack.`, 'error', quiet);
|
|
19
|
+
callback(1);
|
|
20
|
+
return Promise.resolve(1);
|
|
21
|
+
}
|
|
22
|
+
log(`${cliName} generating configuration for ${startCase(type)}...`, 'info', quiet);
|
|
23
|
+
await LexConfig.parseConfig(cmd);
|
|
24
|
+
let configOptions;
|
|
25
|
+
switch(type){
|
|
26
|
+
case 'app':
|
|
27
|
+
configOptions = LexConfig.config;
|
|
28
|
+
break;
|
|
29
|
+
case 'jest':
|
|
30
|
+
configOptions = import('../../../jest.config.mjs');
|
|
31
|
+
break;
|
|
32
|
+
case 'webpack':
|
|
33
|
+
configOptions = import('../../../webpack.config.js');
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
const jsonOutput = JSON.stringify(configOptions, null, 2);
|
|
37
|
+
if (json) {
|
|
38
|
+
const spinner = createSpinner(quiet);
|
|
39
|
+
spinner.start('Creating JSON output...');
|
|
40
|
+
writeFileSync(json, jsonOutput);
|
|
41
|
+
spinner.succeed(`Successfully saved JSON output to ${pathRelative(process.cwd(), json)}`);
|
|
42
|
+
}
|
|
43
|
+
callback(0);
|
|
44
|
+
return Promise.resolve(0);
|
|
39
45
|
};
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
};
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NvbmZpZy9jb25maWcudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3dyaXRlRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBzdGFydENhc2UgZnJvbSAnbG9kYXNoL3N0YXJ0Q2FzZS5qcyc7XG5pbXBvcnQge3JlbGF0aXZlIGFzIHBhdGhSZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGpzb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ29uZmlnQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBjb25zdCBjb25maWcgPSBhc3luYyAodHlwZTogc3RyaW5nLCBjbWQ6IENvbmZpZ09wdGlvbnMsIGNhbGxiYWNrOiBDb25maWdDYWxsYmFjayA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBqc29uLCBxdWlldH0gPSBjbWQ7XG4gIGNvbnN0IHZhbGlkVHlwZXM6IHN0cmluZ1tdID0gWydhcHAnLCAnamVzdCcsICd3ZWJwYWNrJ107XG5cbiAgaWYoIXZhbGlkVHlwZXMuaW5jbHVkZXModHlwZSkpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IE9wdGlvbiBmb3IgJHt0eXBlfSBub3QgZm91bmQuIENvbmZpZ3VyYXRpb25zIG9ubHkgYXZhaWxhYmxlIGZvciBhcHAsIGplc3QsIGFuZCB3ZWJwYWNrLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDEpO1xuICB9XG5cbiAgbG9nKGAke2NsaU5hbWV9IGdlbmVyYXRpbmcgY29uZmlndXJhdGlvbiBmb3IgJHtzdGFydENhc2UodHlwZSl9Li4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgYXdhaXQgTGV4Q29uZmlnLnBhcnNlQ29uZmlnKGNtZCk7XG5cbiAgbGV0IGNvbmZpZ09wdGlvbnM7XG5cbiAgc3dpdGNoKHR5cGUpIHtcbiAgICBjYXNlICdhcHAnOlxuICAgICAgY29uZmlnT3B0aW9ucyA9IExleENvbmZpZy5jb25maWc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdqZXN0JzpcbiAgICAgIGNvbmZpZ09wdGlvbnMgPSBpbXBvcnQoJy4uLy4uLy4uL2plc3QuY29uZmlnLm1qcycpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnd2VicGFjayc6XG4gICAgICBjb25maWdPcHRpb25zID0gaW1wb3J0KCcuLi8uLi8uLi93ZWJwYWNrLmNvbmZpZy5qcycpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBjb25zdCBqc29uT3V0cHV0OiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShjb25maWdPcHRpb25zLCBudWxsLCAyKTtcblxuICBpZihqc29uKSB7XG4gICAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gICAgc3Bpbm5lci5zdGFydCgnQ3JlYXRpbmcgSlNPTiBvdXRwdXQuLi4nKTtcblxuICAgIHdyaXRlRmlsZVN5bmMoanNvbiwganNvbk91dHB1dCk7XG5cbiAgICBzcGlubmVyLnN1Y2NlZWQoYFN1Y2Nlc3NmdWxseSBzYXZlZCBKU09OIG91dHB1dCB0byAke3BhdGhSZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCBqc29uKX1gKTtcbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDApO1xufTsiXSwKICAibWFwcGluZ3MiOiAiQUFJQSxTQUFRLHFCQUFvQjtBQUM1QixPQUFPLGVBQWU7QUFDdEIsU0FBUSxZQUFZLG9CQUFtQjtBQUV2QyxTQUFRLGlCQUFnQjtBQUN4QixTQUFRLHFCQUFvQjtBQUM1QixTQUFRLFdBQVU7QUFVWCxNQUFNLFNBQVMsT0FBTyxNQUFjLEtBQW9CLFdBQTJCLE9BQU8sQ0FBQyxPQUF3QjtBQUN4SCxRQUFNLEVBQUMsVUFBVSxPQUFPLE1BQU0sTUFBSyxJQUFJO0FBQ3ZDLFFBQU0sYUFBdUIsQ0FBQyxPQUFPLFFBQVEsU0FBUztBQUV0RCxNQUFHLENBQUMsV0FBVyxTQUFTLElBQUksR0FBRztBQUM3QixRQUFJO0FBQUEsRUFBSyxPQUFPLHNCQUFzQixJQUFJLHlFQUF5RSxTQUFTLEtBQUs7QUFDakksYUFBUyxDQUFDO0FBQ1YsV0FBTyxRQUFRLFFBQVEsQ0FBQztBQUFBLEVBQzFCO0FBRUEsTUFBSSxHQUFHLE9BQU8saUNBQWlDLFVBQVUsSUFBSSxDQUFDLE9BQU8sUUFBUSxLQUFLO0FBRWxGLFFBQU0sVUFBVSxZQUFZLEdBQUc7QUFFL0IsTUFBSTtBQUVKLFVBQU8sTUFBTTtBQUFBLElBQ1gsS0FBSztBQUNILHNCQUFnQixVQUFVO0FBQzFCO0FBQUEsSUFDRixLQUFLO0FBQ0gsc0JBQWdCLE9BQU8sMEJBQTBCO0FBQ2pEO0FBQUEsSUFDRixLQUFLO0FBQ0gsc0JBQWdCLE9BQU8sNEJBQTRCO0FBQ25EO0FBQUEsRUFDSjtBQUVBLFFBQU0sYUFBcUIsS0FBSyxVQUFVLGVBQWUsTUFBTSxDQUFDO0FBRWhFLE1BQUcsTUFBTTtBQUNQLFVBQU0sVUFBVSxjQUFjLEtBQUs7QUFFbkMsWUFBUSxNQUFNLHlCQUF5QjtBQUV2QyxrQkFBYyxNQUFNLFVBQVU7QUFFOUIsWUFBUSxRQUFRLHFDQUFxQyxhQUFhLFFBQVEsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFO0FBQUEsRUFDMUY7QUFFQSxXQUFTLENBQUM7QUFDVixTQUFPLFFBQVEsUUFBUSxDQUFDO0FBQzFCOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
46
|
+
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb25maWcvY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3dyaXRlRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBzdGFydENhc2UgZnJvbSAnbG9kYXNoL3N0YXJ0Q2FzZS5qcyc7XG5pbXBvcnQge3JlbGF0aXZlIGFzIHBhdGhSZWxhdGl2ZX0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGpzb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ29uZmlnQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBjb25zdCBjb25maWcgPSBhc3luYyAodHlwZTogc3RyaW5nLCBjbWQ6IENvbmZpZ09wdGlvbnMsIGNhbGxiYWNrOiBDb25maWdDYWxsYmFjayA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBqc29uLCBxdWlldH0gPSBjbWQ7XG4gIGNvbnN0IHZhbGlkVHlwZXM6IHN0cmluZ1tdID0gWydhcHAnLCAnamVzdCcsICd3ZWJwYWNrJ107XG5cbiAgaWYoIXZhbGlkVHlwZXMuaW5jbHVkZXModHlwZSkpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IE9wdGlvbiBmb3IgJHt0eXBlfSBub3QgZm91bmQuIENvbmZpZ3VyYXRpb25zIG9ubHkgYXZhaWxhYmxlIGZvciBhcHAsIGplc3QsIGFuZCB3ZWJwYWNrLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDEpO1xuICB9XG5cbiAgbG9nKGAke2NsaU5hbWV9IGdlbmVyYXRpbmcgY29uZmlndXJhdGlvbiBmb3IgJHtzdGFydENhc2UodHlwZSl9Li4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgYXdhaXQgTGV4Q29uZmlnLnBhcnNlQ29uZmlnKGNtZCk7XG5cbiAgbGV0IGNvbmZpZ09wdGlvbnM7XG5cbiAgc3dpdGNoKHR5cGUpIHtcbiAgICBjYXNlICdhcHAnOlxuICAgICAgY29uZmlnT3B0aW9ucyA9IExleENvbmZpZy5jb25maWc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdqZXN0JzpcbiAgICAgIGNvbmZpZ09wdGlvbnMgPSBpbXBvcnQoJy4uLy4uLy4uL2plc3QuY29uZmlnLm1qcycpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnd2VicGFjayc6XG4gICAgICBjb25maWdPcHRpb25zID0gaW1wb3J0KCcuLi8uLi8uLi93ZWJwYWNrLmNvbmZpZy5qcycpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBjb25zdCBqc29uT3V0cHV0OiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShjb25maWdPcHRpb25zLCBudWxsLCAyKTtcblxuICBpZihqc29uKSB7XG4gICAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gICAgc3Bpbm5lci5zdGFydCgnQ3JlYXRpbmcgSlNPTiBvdXRwdXQuLi4nKTtcblxuICAgIHdyaXRlRmlsZVN5bmMoanNvbiwganNvbk91dHB1dCk7XG5cbiAgICBzcGlubmVyLnN1Y2NlZWQoYFN1Y2Nlc3NmdWxseSBzYXZlZCBKU09OIG91dHB1dCB0byAke3BhdGhSZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCBqc29uKX1gKTtcbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDApO1xufTsiXSwibmFtZXMiOlsid3JpdGVGaWxlU3luYyIsInN0YXJ0Q2FzZSIsInJlbGF0aXZlIiwicGF0aFJlbGF0aXZlIiwiTGV4Q29uZmlnIiwiY3JlYXRlU3Bpbm5lciIsImxvZyIsImNvbmZpZyIsInR5cGUiLCJjbWQiLCJjYWxsYmFjayIsImNsaU5hbWUiLCJqc29uIiwicXVpZXQiLCJ2YWxpZFR5cGVzIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInBhcnNlQ29uZmlnIiwiY29uZmlnT3B0aW9ucyIsImpzb25PdXRwdXQiLCJKU09OIiwic3RyaW5naWZ5Iiwic3Bpbm5lciIsInN0YXJ0Iiwic3VjY2VlZCIsInByb2Nlc3MiLCJjd2QiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLGFBQWEsUUFBTyxLQUFLO0FBQ2pDLE9BQU9DLGVBQWUsc0JBQXNCO0FBQzVDLFNBQVFDLFlBQVlDLFlBQVksUUFBTyxPQUFPO0FBRTlDLFNBQVFDLFNBQVMsUUFBTyxxQkFBcUI7QUFDN0MsU0FBUUMsYUFBYSxRQUFPLHFCQUFxQjtBQUNqRCxTQUFRQyxHQUFHLFFBQU8scUJBQXFCO0FBVXZDLE9BQU8sTUFBTUMsU0FBUyxPQUFPQyxNQUFjQyxLQUFvQkMsV0FBMkIsSUFBTyxDQUFBLENBQUMsQ0FBQSxDQUFFO0lBQ2xHLE1BQU0sRUFBQ0MsVUFBVSxLQUFLLEVBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFDLEdBQUdKO0lBQ3ZDLE1BQU1LLGFBQXVCO1FBQUM7UUFBTztRQUFRO0tBQVU7SUFFdkQsSUFBRyxDQUFDQSxXQUFXQyxRQUFRLENBQUNQLE9BQU87UUFDN0JGLElBQUksQ0FBQyxFQUFFLEVBQUVLLFFBQVEsbUJBQW1CLEVBQUVILEtBQUsscUVBQXFFLENBQUMsRUFBRSxTQUFTSztRQUM1SEgsU0FBUztRQUNULE9BQU9NLFFBQVFDLE9BQU8sQ0FBQztJQUN6QjtJQUVBWCxJQUFJLEdBQUdLLFFBQVEsOEJBQThCLEVBQUVWLFVBQVVPLE1BQU0sR0FBRyxDQUFDLEVBQUUsUUFBUUs7SUFFN0UsTUFBTVQsVUFBVWMsV0FBVyxDQUFDVDtJQUU1QixJQUFJVTtJQUVKLE9BQU9YO1FBQ0wsS0FBSztZQUNIVyxnQkFBZ0JmLFVBQVVHLE1BQU07WUFDaEM7UUFDRixLQUFLO1lBQ0hZLGdCQUFnQixNQUFNLENBQUM7WUFDdkI7UUFDRixLQUFLO1lBQ0hBLGdCQUFnQixNQUFNLENBQUM7WUFDdkI7SUFDSjtJQUVBLE1BQU1DLGFBQXFCQyxLQUFLQyxTQUFTLENBQUNILGVBQWUsTUFBTTtJQUUvRCxJQUFHUCxNQUFNO1FBQ1AsTUFBTVcsVUFBVWxCLGNBQWNRO1FBRTlCVSxRQUFRQyxLQUFLLENBQUM7UUFFZHhCLGNBQWNZLE1BQU1RO1FBRXBCRyxRQUFRRSxPQUFPLENBQUMsQ0FBQyxrQ0FBa0MsRUFBRXRCLGFBQWF1QixRQUFRQyxHQUFHLElBQUlmLE9BQU87SUFDMUY7SUFFQUYsU0FBUztJQUNULE9BQU9NLFFBQVFDLE9BQU8sQ0FBQztBQUN6QixFQUFFIn0=
|
|
@@ -1,38 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
copyFolderRecursiveSync(from, to);
|
|
16
|
-
} catch (error) {
|
|
17
|
-
log(`
|
|
18
|
-
${cliName} Error: Cannot copy "${from}". ${error.message}`, "error", quiet);
|
|
19
|
-
callback(1);
|
|
20
|
-
return Promise.resolve(1);
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ import { existsSync, lstatSync } from 'fs';
|
|
5
|
+
import { copyFileSync, copyFolderRecursiveSync } from '../../utils/app.js';
|
|
6
|
+
import { log } from '../../utils/log.js';
|
|
7
|
+
export const copy = (from, to, cmd, callback = ()=>({}))=>{
|
|
8
|
+
const { cliName = 'Lex', quiet } = cmd;
|
|
9
|
+
// Display message
|
|
10
|
+
log(`${cliName} copying "${to}"...`, 'info', quiet);
|
|
11
|
+
if (!existsSync(from)) {
|
|
12
|
+
log(`\n${cliName} Error: Path not found, "${from}"...`, 'error', quiet);
|
|
13
|
+
callback(1);
|
|
14
|
+
return Promise.resolve(1);
|
|
21
15
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
${cliName} Error: Cannot copy "${from}" ${error.message}`,
|
|
28
|
-
|
|
29
|
-
|
|
16
|
+
if (lstatSync(from).isDirectory()) {
|
|
17
|
+
try {
|
|
18
|
+
// Copy directory
|
|
19
|
+
copyFolderRecursiveSync(from, to);
|
|
20
|
+
} catch (error) {
|
|
21
|
+
log(`\n${cliName} Error: Cannot copy "${from}". ${error.message}`, 'error', quiet);
|
|
22
|
+
callback(1);
|
|
23
|
+
return Promise.resolve(1);
|
|
24
|
+
}
|
|
25
|
+
} else {
|
|
26
|
+
try {
|
|
27
|
+
// Copy file
|
|
28
|
+
copyFileSync(from, to);
|
|
29
|
+
} catch (error) {
|
|
30
|
+
log(`\n${cliName} Error: Cannot copy "${from}" ${error.message}`, 'error', quiet);
|
|
31
|
+
callback(1);
|
|
32
|
+
return Promise.resolve(1);
|
|
33
|
+
}
|
|
30
34
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return Promise.resolve(0);
|
|
35
|
+
callback(0);
|
|
36
|
+
return Promise.resolve(0);
|
|
34
37
|
};
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
};
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NvcHkvY29weS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgbHN0YXRTeW5jfSBmcm9tICdmcyc7XG5cbmltcG9ydCB7Y29weUZpbGVTeW5jLCBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luY30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi8uLi91dGlscy9sb2cuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvcHlPcHRpb25zIHtcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBDb3B5Q2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBjb25zdCBjb3B5ID0gKFxuICBmcm9tOiBzdHJpbmcsXG4gIHRvOiBzdHJpbmcsXG4gIGNtZDogQ29weU9wdGlvbnMsXG4gIGNhbGxiYWNrOiBDb3B5Q2FsbGJhY2sgPSAoKSA9PiAoe30pXG4pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBxdWlldH0gPSBjbWQ7XG5cbiAgLy8gRGlzcGxheSBtZXNzYWdlXG4gIGxvZyhgJHtjbGlOYW1lfSBjb3B5aW5nIFwiJHt0b31cIi4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGlmKCFleGlzdHNTeW5jKGZyb20pKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBQYXRoIG5vdCBmb3VuZCwgXCIke2Zyb219XCIuLi5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgxKTtcbiAgfVxuXG4gIGlmKGxzdGF0U3luYyhmcm9tKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENvcHkgZGlyZWN0b3J5XG4gICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhmcm9tLCB0byk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNvcHkgXCIke2Zyb219XCIuICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICAvLyBDb3B5IGZpbGVcbiAgICAgIGNvcHlGaWxlU3luYyhmcm9tLCB0byk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNvcHkgXCIke2Zyb219XCIgJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgxKTtcbiAgICB9XG4gIH1cblxuICBjYWxsYmFjaygwKTtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgwKTtcbn07Il0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxZQUFZLGlCQUFnQjtBQUVwQyxTQUFRLGNBQWMsK0JBQThCO0FBQ3BELFNBQVEsV0FBVTtBQVNYLE1BQU0sT0FBTyxDQUNsQixNQUNBLElBQ0EsS0FDQSxXQUF5QixPQUFPLENBQUMsT0FDYjtBQUNwQixRQUFNLEVBQUMsVUFBVSxPQUFPLE1BQUssSUFBSTtBQUdqQyxNQUFJLEdBQUcsT0FBTyxhQUFhLEVBQUUsUUFBUSxRQUFRLEtBQUs7QUFFbEQsTUFBRyxDQUFDLFdBQVcsSUFBSSxHQUFHO0FBQ3BCLFFBQUk7QUFBQSxFQUFLLE9BQU8sNEJBQTRCLElBQUksUUFBUSxTQUFTLEtBQUs7QUFDdEUsYUFBUyxDQUFDO0FBQ1YsV0FBTyxRQUFRLFFBQVEsQ0FBQztBQUFBLEVBQzFCO0FBRUEsTUFBRyxVQUFVLElBQUksRUFBRSxZQUFZLEdBQUc7QUFDaEMsUUFBSTtBQUVGLDhCQUF3QixNQUFNLEVBQUU7QUFBQSxJQUNsQyxTQUFTLE9BQU87QUFDZCxVQUFJO0FBQUEsRUFBSyxPQUFPLHdCQUF3QixJQUFJLE1BQU0sTUFBTSxPQUFPLElBQUksU0FBUyxLQUFLO0FBQ2pGLGVBQVMsQ0FBQztBQUNWLGFBQU8sUUFBUSxRQUFRLENBQUM7QUFBQSxJQUMxQjtBQUFBLEVBQ0YsT0FBTztBQUNMLFFBQUk7QUFFRixtQkFBYSxNQUFNLEVBQUU7QUFBQSxJQUN2QixTQUFTLE9BQU87QUFDZCxVQUFJO0FBQUEsRUFBSyxPQUFPLHdCQUF3QixJQUFJLEtBQUssTUFBTSxPQUFPLElBQUksU0FBUyxLQUFLO0FBQ2hGLGVBQVMsQ0FBQztBQUNWLGFBQU8sUUFBUSxRQUFRLENBQUM7QUFBQSxJQUMxQjtBQUFBLEVBQ0Y7QUFFQSxXQUFTLENBQUM7QUFDVixTQUFPLFFBQVEsUUFBUSxDQUFDO0FBQzFCOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jb3B5L2NvcHkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgbHN0YXRTeW5jfSBmcm9tICdmcyc7XG5cbmltcG9ydCB7Y29weUZpbGVTeW5jLCBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luY30gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi8uLi91dGlscy9sb2cuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvcHlPcHRpb25zIHtcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBDb3B5Q2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBjb25zdCBjb3B5ID0gKFxuICBmcm9tOiBzdHJpbmcsXG4gIHRvOiBzdHJpbmcsXG4gIGNtZDogQ29weU9wdGlvbnMsXG4gIGNhbGxiYWNrOiBDb3B5Q2FsbGJhY2sgPSAoKSA9PiAoe30pXG4pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBxdWlldH0gPSBjbWQ7XG5cbiAgLy8gRGlzcGxheSBtZXNzYWdlXG4gIGxvZyhgJHtjbGlOYW1lfSBjb3B5aW5nIFwiJHt0b31cIi4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGlmKCFleGlzdHNTeW5jKGZyb20pKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBQYXRoIG5vdCBmb3VuZCwgXCIke2Zyb219XCIuLi5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgxKTtcbiAgfVxuXG4gIGlmKGxzdGF0U3luYyhmcm9tKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENvcHkgZGlyZWN0b3J5XG4gICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhmcm9tLCB0byk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY29weSBcIiR7ZnJvbX1cIi4gJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgxKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENvcHkgZmlsZVxuICAgICAgY29weUZpbGVTeW5jKGZyb20sIHRvKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjb3B5IFwiJHtmcm9tfVwiICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoMCk7XG59OyJdLCJuYW1lcyI6WyJleGlzdHNTeW5jIiwibHN0YXRTeW5jIiwiY29weUZpbGVTeW5jIiwiY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMiLCJsb2ciLCJjb3B5IiwiZnJvbSIsInRvIiwiY21kIiwiY2FsbGJhY2siLCJjbGlOYW1lIiwicXVpZXQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImlzRGlyZWN0b3J5IiwiZXJyb3IiLCJtZXNzYWdlIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxVQUFVLEVBQUVDLFNBQVMsUUFBTyxLQUFLO0FBRXpDLFNBQVFDLFlBQVksRUFBRUMsdUJBQXVCLFFBQU8scUJBQXFCO0FBQ3pFLFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFTdkMsT0FBTyxNQUFNQyxPQUFPLENBQ2xCQyxNQUNBQyxJQUNBQyxLQUNBQyxXQUF5QixJQUFPLENBQUEsQ0FBQyxDQUFBLENBQUU7SUFFbkMsTUFBTSxFQUFDQyxVQUFVLEtBQUssRUFBRUMsS0FBSyxFQUFDLEdBQUdIO0lBRWpDLGtCQUFrQjtJQUNsQkosSUFBSSxHQUFHTSxRQUFRLFVBQVUsRUFBRUgsR0FBRyxJQUFJLENBQUMsRUFBRSxRQUFRSTtJQUU3QyxJQUFHLENBQUNYLFdBQVdNLE9BQU87UUFDcEJGLElBQUksQ0FBQyxFQUFFLEVBQUVNLFFBQVEseUJBQXlCLEVBQUVKLEtBQUssSUFBSSxDQUFDLEVBQUUsU0FBU0s7UUFDakVGLFNBQVM7UUFDVCxPQUFPRyxRQUFRQyxPQUFPLENBQUM7SUFDekI7SUFFQSxJQUFHWixVQUFVSyxNQUFNUSxXQUFXLElBQUk7UUFDaEMsSUFBSTtZQUNGLGlCQUFpQjtZQUNqQlgsd0JBQXdCRyxNQUFNQztRQUNoQyxFQUFFLE9BQU1RLE9BQU87WUFDYlgsSUFBSSxDQUFDLEVBQUUsRUFBRU0sUUFBUSxxQkFBcUIsRUFBRUosS0FBSyxHQUFHLEVBQUVTLE1BQU1DLE9BQU8sRUFBRSxFQUFFLFNBQVNMO1lBQzVFRixTQUFTO1lBQ1QsT0FBT0csUUFBUUMsT0FBTyxDQUFDO1FBQ3pCO0lBQ0YsT0FBTztRQUNMLElBQUk7WUFDRixZQUFZO1lBQ1pYLGFBQWFJLE1BQU1DO1FBQ3JCLEVBQUUsT0FBTVEsT0FBTztZQUNiWCxJQUFJLENBQUMsRUFBRSxFQUFFTSxRQUFRLHFCQUFxQixFQUFFSixLQUFLLEVBQUUsRUFBRVMsTUFBTUMsT0FBTyxFQUFFLEVBQUUsU0FBU0w7WUFDM0VGLFNBQVM7WUFDVCxPQUFPRyxRQUFRQyxPQUFPLENBQUM7UUFDekI7SUFDRjtJQUVBSixTQUFTO0lBQ1QsT0FBT0csUUFBUUMsT0FBTyxDQUFDO0FBQ3pCLEVBQUUifQ==
|
|
@@ -1,124 +1,203 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const statusChangelog = await createChangelog({ cliName, config, outputFile, quiet });
|
|
22
|
-
callback(statusChangelog);
|
|
23
|
-
return statusChangelog;
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2018-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ import { existsSync, readFileSync, renameSync, writeFileSync } from 'fs';
|
|
5
|
+
import { resolve as pathResolve } from 'path';
|
|
6
|
+
import { createChangelog } from '../../create/changelog.js';
|
|
7
|
+
import { LexConfig } from '../../LexConfig.js';
|
|
8
|
+
import { copyFolderRecursiveSync, getFilenames, removeFiles, updateTemplateName } from '../../utils/app.js';
|
|
9
|
+
import { getDirName } from '../../utils/file.js';
|
|
10
|
+
import { log } from '../../utils/log.js';
|
|
11
|
+
export const create = async (type, cmd, callback = ()=>({}))=>{
|
|
12
|
+
const { cliName = 'Lex', outputFile = '', outputName = '', quiet } = cmd;
|
|
13
|
+
const cwd = process.cwd();
|
|
14
|
+
log(`${cliName} creating ${type}...`, 'info', quiet);
|
|
15
|
+
// Get custom configuration
|
|
16
|
+
await LexConfig.parseConfig(cmd, false);
|
|
17
|
+
const { outputPath = '', sourcePath = '', useTypescript } = LexConfig.config;
|
|
18
|
+
if (useTypescript) {
|
|
19
|
+
// Make sure tsconfig.json exists
|
|
20
|
+
LexConfig.checkTypescriptConfig();
|
|
24
21
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
22
|
+
const { config } = LexConfig;
|
|
23
|
+
const dirName = getDirName();
|
|
24
|
+
switch(type){
|
|
25
|
+
case 'changelog':
|
|
26
|
+
{
|
|
27
|
+
const statusChangelog = await createChangelog({
|
|
28
|
+
cliName,
|
|
29
|
+
config,
|
|
30
|
+
outputFile,
|
|
31
|
+
quiet
|
|
32
|
+
});
|
|
33
|
+
callback(statusChangelog);
|
|
34
|
+
return statusChangelog;
|
|
35
|
+
}
|
|
36
|
+
case 'store':
|
|
37
|
+
{
|
|
38
|
+
try {
|
|
39
|
+
const result = getFilenames({
|
|
40
|
+
cliName,
|
|
41
|
+
name: outputName,
|
|
42
|
+
quiet,
|
|
43
|
+
type,
|
|
44
|
+
useTypescript
|
|
45
|
+
});
|
|
46
|
+
if (!result) {
|
|
47
|
+
return 1;
|
|
48
|
+
}
|
|
49
|
+
const { nameCaps, templateExt, templatePath } = result;
|
|
50
|
+
const storePath = `${cwd}/${nameCaps}Store`;
|
|
51
|
+
if (!existsSync(storePath)) {
|
|
52
|
+
// Copy store files
|
|
53
|
+
copyFolderRecursiveSync(pathResolve(dirName, templatePath, './.SampleStore'), cwd);
|
|
54
|
+
// Rename directory
|
|
55
|
+
renameSync(`${cwd}/.SampleStore`, storePath);
|
|
56
|
+
// Rename test
|
|
57
|
+
const storeTestPath = `${storePath}/${nameCaps}Store.test${templateExt}`;
|
|
58
|
+
renameSync(`${storePath}/SampleStore.test${templateExt}.txt`, storeTestPath);
|
|
59
|
+
// Search and replace store name
|
|
60
|
+
updateTemplateName(storeTestPath, outputName, nameCaps);
|
|
61
|
+
// Rename source file
|
|
62
|
+
const storeFilePath = `${storePath}/${nameCaps}Store${templateExt}`;
|
|
63
|
+
renameSync(`${storePath}/SampleStore${templateExt}.txt`, storeFilePath);
|
|
64
|
+
// Search and replace store name
|
|
65
|
+
updateTemplateName(storeFilePath, outputName, nameCaps);
|
|
66
|
+
} else {
|
|
67
|
+
log(`\n${cliName} Error: Cannot create new ${type}. Directory, ${storePath} already exists.`, 'error', quiet);
|
|
68
|
+
callback(1);
|
|
69
|
+
return 1;
|
|
70
|
+
}
|
|
71
|
+
} catch (error) {
|
|
72
|
+
log(`\n${cliName} Error: Cannot create new ${type}. ${error.message}`, 'error', quiet);
|
|
73
|
+
callback(1);
|
|
74
|
+
return 1;
|
|
75
|
+
}
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
case 'tsconfig':
|
|
79
|
+
{
|
|
80
|
+
// Remove existing file
|
|
81
|
+
await removeFiles('tsconfig.json', true);
|
|
82
|
+
// Get tsconfig template
|
|
83
|
+
const templatePath = pathResolve(dirName, '../../../tsconfig.template.json');
|
|
84
|
+
let data = readFileSync(templatePath, 'utf8');
|
|
85
|
+
// Update Lex tsconfig template with source and output directories
|
|
86
|
+
data = data.replace(/.\/src/g, sourcePath);
|
|
87
|
+
data = data.replace(/.\/lib/g, outputPath);
|
|
88
|
+
// Save new tsconfig to app
|
|
89
|
+
const destPath = pathResolve(cwd, './tsconfig.json');
|
|
90
|
+
writeFileSync(destPath, data, 'utf8');
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
case 'view':
|
|
94
|
+
{
|
|
95
|
+
const result = getFilenames({
|
|
96
|
+
cliName,
|
|
97
|
+
name: outputName,
|
|
98
|
+
quiet,
|
|
99
|
+
type,
|
|
100
|
+
useTypescript
|
|
101
|
+
});
|
|
102
|
+
if (!result) {
|
|
103
|
+
return 1;
|
|
104
|
+
}
|
|
105
|
+
const { nameCaps, templatePath, templateReact } = result;
|
|
106
|
+
const viewPath = `${cwd}/${nameCaps}View`;
|
|
107
|
+
try {
|
|
108
|
+
if (!existsSync(viewPath)) {
|
|
109
|
+
// Copy view files
|
|
110
|
+
copyFolderRecursiveSync(pathResolve(dirName, templatePath, './.SampleView'), cwd);
|
|
111
|
+
// Rename directory
|
|
112
|
+
renameSync(`${cwd}/.SampleView`, viewPath);
|
|
113
|
+
// Rename CSS
|
|
114
|
+
const viewStylePath = `${viewPath}/${outputName}View.css`;
|
|
115
|
+
renameSync(`${viewPath}/sampleView.css`, viewStylePath);
|
|
116
|
+
// Search and replace view name
|
|
117
|
+
updateTemplateName(viewStylePath, outputName, nameCaps);
|
|
118
|
+
// Rename test
|
|
119
|
+
const viewTestPath = `${viewPath}/${nameCaps}View.test${templateReact}`;
|
|
120
|
+
renameSync(`${viewPath}/SampleView.test${templateReact}.txt`, viewTestPath);
|
|
121
|
+
// Search and replace view name
|
|
122
|
+
updateTemplateName(viewTestPath, outputName, nameCaps);
|
|
123
|
+
// Rename source file
|
|
124
|
+
const viewFilePath = `${viewPath}/${nameCaps}View${templateReact}`;
|
|
125
|
+
renameSync(`${viewPath}/SampleView${templateReact}.txt`, viewFilePath);
|
|
126
|
+
// Search and replace view name
|
|
127
|
+
updateTemplateName(viewFilePath, outputName, nameCaps);
|
|
128
|
+
} else {
|
|
129
|
+
log(`\n${cliName} Error: Cannot create new ${type}. Directory, ${viewPath} already exists.`, 'error', quiet);
|
|
130
|
+
callback(1);
|
|
131
|
+
return 1;
|
|
132
|
+
}
|
|
133
|
+
} catch (error) {
|
|
134
|
+
log(`\n${cliName} Error: Cannot create new ${type}. ${error.message}`, 'error', quiet);
|
|
135
|
+
callback(1);
|
|
136
|
+
return 1;
|
|
137
|
+
}
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
case 'vscode':
|
|
141
|
+
{
|
|
142
|
+
// Remove existing directory
|
|
143
|
+
await removeFiles('.vscode', true);
|
|
144
|
+
// Copy vscode configuration
|
|
145
|
+
copyFolderRecursiveSync(pathResolve(dirName, '../../../.vscode'), cwd);
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
case 'datalayer':
|
|
149
|
+
{
|
|
150
|
+
try {
|
|
151
|
+
const result = getFilenames({
|
|
152
|
+
cliName,
|
|
153
|
+
name: outputName,
|
|
154
|
+
quiet,
|
|
155
|
+
type,
|
|
156
|
+
useTypescript
|
|
157
|
+
});
|
|
158
|
+
if (!result) {
|
|
159
|
+
return 1;
|
|
160
|
+
}
|
|
161
|
+
const { nameCaps, templateExt, templatePath } = result;
|
|
162
|
+
const dataLayerPath = `${cwd}/${nameCaps}DataLayer`;
|
|
163
|
+
if (!existsSync(dataLayerPath)) {
|
|
164
|
+
// Create data layer directory
|
|
165
|
+
const fs = await import('fs');
|
|
166
|
+
fs.mkdirSync(dataLayerPath, {
|
|
167
|
+
recursive: true
|
|
168
|
+
});
|
|
169
|
+
// Copy and rename main data layer file
|
|
170
|
+
const sourceFile = pathResolve(dirName, templatePath, `./DataLayer${templateExt}.txt`);
|
|
171
|
+
const targetFile = `${dataLayerPath}/${nameCaps}DataLayer${templateExt}`;
|
|
172
|
+
if (existsSync(sourceFile)) {
|
|
173
|
+
const content = readFileSync(sourceFile, 'utf8');
|
|
174
|
+
const updatedContent = content.replace(/DataLayer/g, nameCaps);
|
|
175
|
+
writeFileSync(targetFile, updatedContent);
|
|
176
|
+
}
|
|
177
|
+
// Copy and rename test file
|
|
178
|
+
const sourceTestFile = pathResolve(dirName, templatePath, `./DataLayer.test${templateExt}.txt`);
|
|
179
|
+
const targetTestFile = `${dataLayerPath}/${nameCaps}DataLayer.test${templateExt}`;
|
|
180
|
+
if (existsSync(sourceTestFile)) {
|
|
181
|
+
const testContent = readFileSync(sourceTestFile, 'utf8');
|
|
182
|
+
const updatedTestContent = testContent.replace(/DataLayer/g, nameCaps);
|
|
183
|
+
writeFileSync(targetTestFile, updatedTestContent);
|
|
184
|
+
}
|
|
185
|
+
log(`\n${cliName} Success: Created ${nameCaps}DataLayer with test files.`, 'info', quiet);
|
|
186
|
+
} else {
|
|
187
|
+
log(`\n${cliName} Error: Cannot create new ${type}. Directory, ${dataLayerPath} already exists.`, 'error', quiet);
|
|
188
|
+
callback(1);
|
|
189
|
+
return 1;
|
|
190
|
+
}
|
|
191
|
+
} catch (error) {
|
|
192
|
+
log(`\n${cliName} Error: Cannot create new ${type}. ${error.message}`, 'error', quiet);
|
|
193
|
+
callback(1);
|
|
194
|
+
return 1;
|
|
195
|
+
}
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
61
198
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const templatePath = pathResolve(dirName, "../../../tsconfig.template.json");
|
|
65
|
-
let data = readFileSync(templatePath, "utf8");
|
|
66
|
-
data = data.replace(/.\/src/g, sourcePath);
|
|
67
|
-
data = data.replace(/.\/lib/g, outputPath);
|
|
68
|
-
const destPath = pathResolve(cwd, "./tsconfig.json");
|
|
69
|
-
writeFileSync(destPath, data, "utf8");
|
|
70
|
-
break;
|
|
71
|
-
}
|
|
72
|
-
case "view": {
|
|
73
|
-
const result = getFilenames({
|
|
74
|
-
cliName,
|
|
75
|
-
name: outputName,
|
|
76
|
-
quiet,
|
|
77
|
-
type,
|
|
78
|
-
useTypescript
|
|
79
|
-
});
|
|
80
|
-
if (!result) {
|
|
81
|
-
return 1;
|
|
82
|
-
}
|
|
83
|
-
const { nameCaps, templatePath, templateReact } = result;
|
|
84
|
-
const viewPath = `${cwd}/${nameCaps}View`;
|
|
85
|
-
try {
|
|
86
|
-
if (!existsSync(viewPath)) {
|
|
87
|
-
copyFolderRecursiveSync(pathResolve(dirName, templatePath, "./.SampleView"), cwd);
|
|
88
|
-
renameSync(`${cwd}/.SampleView`, viewPath);
|
|
89
|
-
const viewStylePath = `${viewPath}/${outputName}View.css`;
|
|
90
|
-
renameSync(`${viewPath}/sampleView.css`, viewStylePath);
|
|
91
|
-
updateTemplateName(viewStylePath, outputName, nameCaps);
|
|
92
|
-
const viewTestPath = `${viewPath}/${nameCaps}View.test${templateReact}`;
|
|
93
|
-
renameSync(`${viewPath}/SampleView.test${templateReact}.txt`, viewTestPath);
|
|
94
|
-
updateTemplateName(viewTestPath, outputName, nameCaps);
|
|
95
|
-
const viewFilePath = `${viewPath}/${nameCaps}View${templateReact}`;
|
|
96
|
-
renameSync(`${viewPath}/SampleView${templateReact}.txt`, viewFilePath);
|
|
97
|
-
updateTemplateName(viewFilePath, outputName, nameCaps);
|
|
98
|
-
} else {
|
|
99
|
-
log(`
|
|
100
|
-
${cliName} Error: Cannot create new ${type}. Directory, ${viewPath} already exists.`, "error", quiet);
|
|
101
|
-
callback(1);
|
|
102
|
-
return 1;
|
|
103
|
-
}
|
|
104
|
-
} catch (error) {
|
|
105
|
-
log(`
|
|
106
|
-
${cliName} Error: Cannot create new ${type}. ${error.message}`, "error", quiet);
|
|
107
|
-
callback(1);
|
|
108
|
-
return 1;
|
|
109
|
-
}
|
|
110
|
-
break;
|
|
111
|
-
}
|
|
112
|
-
case "vscode": {
|
|
113
|
-
await removeFiles(".vscode", true);
|
|
114
|
-
copyFolderRecursiveSync(pathResolve(dirName, "../../../.vscode"), cwd);
|
|
115
|
-
break;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
callback(0);
|
|
119
|
-
return 0;
|
|
120
|
-
};
|
|
121
|
-
export {
|
|
122
|
-
create
|
|
199
|
+
callback(0);
|
|
200
|
+
return 0;
|
|
123
201
|
};
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL2NyZWF0ZS9jcmVhdGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4aXN0c1N5bmMsIHJlYWRGaWxlU3luYywgcmVuYW1lU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtyZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtjcmVhdGVDaGFuZ2Vsb2d9IGZyb20gJy4uLy4uL2NyZWF0ZS9jaGFuZ2Vsb2cuanMnO1xuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NvcHlGb2xkZXJSZWN1cnNpdmVTeW5jLCBnZXRGaWxlbmFtZXMsIHJlbW92ZUZpbGVzLCB1cGRhdGVUZW1wbGF0ZU5hbWV9IGZyb20gJy4uLy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2dldERpck5hbWV9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dEZpbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGUgPSBhc3luYyAodHlwZTogc3RyaW5nLCBjbWQ6IENyZWF0ZU9wdGlvbnMsIGNhbGxiYWNrOiBDcmVhdGVDYWxsYmFjayA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBvdXRwdXRGaWxlID0gJycsIG91dHB1dE5hbWUgPSAnJywgcXVpZXR9ID0gY21kO1xuICBjb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG4gIGxvZyhgJHtjbGlOYW1lfSBjcmVhdGluZyAke3R5cGV9Li4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQsIGZhbHNlKTtcbiAgY29uc3Qge291dHB1dFBhdGggPSAnJywgc291cmNlUGF0aCA9ICcnLCB1c2VUeXBlc2NyaXB0fSA9IExleENvbmZpZy5jb25maWc7XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIC8vIE1ha2Ugc3VyZSB0c2NvbmZpZy5qc29uIGV4aXN0c1xuICAgIExleENvbmZpZy5jaGVja1R5cGVzY3JpcHRDb25maWcoKTtcbiAgfVxuXG4gIGNvbnN0IHtjb25maWd9ID0gTGV4Q29uZmlnO1xuICBjb25zdCBkaXJOYW1lID0gZ2V0RGlyTmFtZSgpO1xuXG4gIHN3aXRjaCh0eXBlKSB7XG4gICAgY2FzZSAnY2hhbmdlbG9nJzoge1xuICAgICAgY29uc3Qgc3RhdHVzQ2hhbmdlbG9nOiBudW1iZXIgPSBhd2FpdCBjcmVhdGVDaGFuZ2Vsb2coe2NsaU5hbWUsIGNvbmZpZywgb3V0cHV0RmlsZSwgcXVpZXR9KTtcbiAgICAgIGNhbGxiYWNrKHN0YXR1c0NoYW5nZWxvZyk7XG4gICAgICByZXR1cm4gc3RhdHVzQ2hhbmdlbG9nO1xuICAgIH1cbiAgICBjYXNlICdzdG9yZSc6IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEZpbGVuYW1lcyh7XG4gICAgICAgICAgY2xpTmFtZSxcbiAgICAgICAgICBuYW1lOiBvdXRwdXROYW1lLFxuICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXNlVHlwZXNjcmlwdFxuICAgICAgICB9KTtcblxuICAgICAgICBpZighcmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7bmFtZUNhcHMsIHRlbXBsYXRlRXh0LCB0ZW1wbGF0ZVBhdGh9ID0gcmVzdWx0O1xuICAgICAgICBjb25zdCBzdG9yZVBhdGg6IHN0cmluZyA9IGAke2N3ZH0vJHtuYW1lQ2Fwc31TdG9yZWA7XG5cbiAgICAgICAgaWYoIWV4aXN0c1N5bmMoc3RvcmVQYXRoKSkge1xuICAgICAgICAvLyBDb3B5IHN0b3JlIGZpbGVzXG4gICAgICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMocGF0aFJlc29sdmUoZGlyTmFtZSwgdGVtcGxhdGVQYXRoLCAnLi8uU2FtcGxlU3RvcmUnKSwgY3dkKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBkaXJlY3RvcnlcbiAgICAgICAgICByZW5hbWVTeW5jKGAke2N3ZH0vLlNhbXBsZVN0b3JlYCwgc3RvcmVQYXRoKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSB0ZXN0XG4gICAgICAgICAgY29uc3Qgc3RvcmVUZXN0UGF0aDogc3RyaW5nID0gYCR7c3RvcmVQYXRofS8ke25hbWVDYXBzfVN0b3JlLnRlc3Qke3RlbXBsYXRlRXh0fWA7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHtzdG9yZVBhdGh9L1NhbXBsZVN0b3JlLnRlc3Qke3RlbXBsYXRlRXh0fS50eHRgLCBzdG9yZVRlc3RQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSBzdG9yZSBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHN0b3JlVGVzdFBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBzb3VyY2UgZmlsZVxuICAgICAgICAgIGNvbnN0IHN0b3JlRmlsZVBhdGg6IHN0cmluZyA9IGAke3N0b3JlUGF0aH0vJHtuYW1lQ2Fwc31TdG9yZSR7dGVtcGxhdGVFeHR9YDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3N0b3JlUGF0aH0vU2FtcGxlU3RvcmUke3RlbXBsYXRlRXh0fS50eHRgLCBzdG9yZUZpbGVQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSBzdG9yZSBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHN0b3JlRmlsZVBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uIERpcmVjdG9yeSwgJHtzdG9yZVBhdGh9IGFscmVhZHkgZXhpc3RzLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY3JlYXRlIG5ldyAke3R5cGV9LiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAndHNjb25maWcnOiB7XG4gICAgLy8gUmVtb3ZlIGV4aXN0aW5nIGZpbGVcbiAgICAgIGF3YWl0IHJlbW92ZUZpbGVzKCd0c2NvbmZpZy5qc29uJywgdHJ1ZSk7XG5cbiAgICAgIC8vIEdldCB0c2NvbmZpZyB0ZW1wbGF0ZVxuICAgICAgY29uc3QgdGVtcGxhdGVQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vLi4vdHNjb25maWcudGVtcGxhdGUuanNvbicpO1xuICAgICAgbGV0IGRhdGE6IHN0cmluZyA9IHJlYWRGaWxlU3luYyh0ZW1wbGF0ZVBhdGgsICd1dGY4Jyk7XG5cbiAgICAgIC8vIFVwZGF0ZSBMZXggdHNjb25maWcgdGVtcGxhdGUgd2l0aCBzb3VyY2UgYW5kIG91dHB1dCBkaXJlY3Rvcmllc1xuICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgvLlxcL3NyYy9nLCBzb3VyY2VQYXRoKTtcbiAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoLy5cXC9saWIvZywgb3V0cHV0UGF0aCk7XG5cbiAgICAgIC8vIFNhdmUgbmV3IHRzY29uZmlnIHRvIGFwcFxuICAgICAgY29uc3QgZGVzdFBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGN3ZCwgJy4vdHNjb25maWcuanNvbicpO1xuICAgICAgd3JpdGVGaWxlU3luYyhkZXN0UGF0aCwgZGF0YSwgJ3V0ZjgnKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICd2aWV3Jzoge1xuICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0RmlsZW5hbWVzKHtcbiAgICAgICAgY2xpTmFtZSxcbiAgICAgICAgbmFtZTogb3V0cHV0TmFtZSxcbiAgICAgICAgcXVpZXQsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHVzZVR5cGVzY3JpcHRcbiAgICAgIH0pO1xuXG4gICAgICBpZighcmVzdWx0KSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7bmFtZUNhcHMsIHRlbXBsYXRlUGF0aCwgdGVtcGxhdGVSZWFjdH0gPSByZXN1bHQ7XG4gICAgICBjb25zdCB2aWV3UGF0aDogc3RyaW5nID0gYCR7Y3dkfS8ke25hbWVDYXBzfVZpZXdgO1xuXG4gICAgICB0cnkge1xuICAgICAgICBpZighZXhpc3RzU3luYyh2aWV3UGF0aCkpIHtcbiAgICAgICAgLy8gQ29weSB2aWV3IGZpbGVzXG4gICAgICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMocGF0aFJlc29sdmUoZGlyTmFtZSwgdGVtcGxhdGVQYXRoLCAnLi8uU2FtcGxlVmlldycpLCBjd2QpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIGRpcmVjdG9yeVxuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7Y3dkfS8uU2FtcGxlVmlld2AsIHZpZXdQYXRoKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBDU1NcbiAgICAgICAgICBjb25zdCB2aWV3U3R5bGVQYXRoOiBzdHJpbmcgPSBgJHt2aWV3UGF0aH0vJHtvdXRwdXROYW1lfVZpZXcuY3NzYDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3ZpZXdQYXRofS9zYW1wbGVWaWV3LmNzc2AsIHZpZXdTdHlsZVBhdGgpO1xuXG4gICAgICAgICAgLy8gU2VhcmNoIGFuZCByZXBsYWNlIHZpZXcgbmFtZVxuICAgICAgICAgIHVwZGF0ZVRlbXBsYXRlTmFtZSh2aWV3U3R5bGVQYXRoLCBvdXRwdXROYW1lLCBuYW1lQ2Fwcyk7XG5cbiAgICAgICAgICAvLyBSZW5hbWUgdGVzdFxuICAgICAgICAgIGNvbnN0IHZpZXdUZXN0UGF0aDogc3RyaW5nID0gYCR7dmlld1BhdGh9LyR7bmFtZUNhcHN9Vmlldy50ZXN0JHt0ZW1wbGF0ZVJlYWN0fWA7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHt2aWV3UGF0aH0vU2FtcGxlVmlldy50ZXN0JHt0ZW1wbGF0ZVJlYWN0fS50eHRgLCB2aWV3VGVzdFBhdGgpO1xuXG4gICAgICAgICAgLy8gU2VhcmNoIGFuZCByZXBsYWNlIHZpZXcgbmFtZVxuICAgICAgICAgIHVwZGF0ZVRlbXBsYXRlTmFtZSh2aWV3VGVzdFBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBzb3VyY2UgZmlsZVxuICAgICAgICAgIGNvbnN0IHZpZXdGaWxlUGF0aDogc3RyaW5nID0gYCR7dmlld1BhdGh9LyR7bmFtZUNhcHN9VmlldyR7dGVtcGxhdGVSZWFjdH1gO1xuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7dmlld1BhdGh9L1NhbXBsZVZpZXcke3RlbXBsYXRlUmVhY3R9LnR4dGAsIHZpZXdGaWxlUGF0aCk7XG5cbiAgICAgICAgICAvLyBTZWFyY2ggYW5kIHJlcGxhY2UgdmlldyBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHZpZXdGaWxlUGF0aCwgb3V0cHV0TmFtZSwgbmFtZUNhcHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNyZWF0ZSBuZXcgJHt0eXBlfS4gRGlyZWN0b3J5LCAke3ZpZXdQYXRofSBhbHJlYWR5IGV4aXN0cy5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgICAgY2FsbGJhY2soMSk7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNyZWF0ZSBuZXcgJHt0eXBlfS4gJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgY2FsbGJhY2soMSk7XG4gICAgICAgIHJldHVybiAxO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ3ZzY29kZSc6IHtcbiAgICAvLyBSZW1vdmUgZXhpc3RpbmcgZGlyZWN0b3J5XG4gICAgICBhd2FpdCByZW1vdmVGaWxlcygnLnZzY29kZScsIHRydWUpO1xuXG4gICAgICAvLyBDb3B5IHZzY29kZSBjb25maWd1cmF0aW9uXG4gICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vLi4vLnZzY29kZScpLCBjd2QpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiAwO1xufTsiXSwKICAibWFwcGluZ3MiOiAiQUFJQSxTQUFRLFlBQVksY0FBYyxZQUFZLHFCQUFvQjtB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
|
|
202
|
+
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21tYW5kcy9jcmVhdGUvY3JlYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4aXN0c1N5bmMsIHJlYWRGaWxlU3luYywgcmVuYW1lU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtyZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtjcmVhdGVDaGFuZ2Vsb2d9IGZyb20gJy4uLy4uL2NyZWF0ZS9jaGFuZ2Vsb2cuanMnO1xuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NvcHlGb2xkZXJSZWN1cnNpdmVTeW5jLCBnZXRGaWxlbmFtZXMsIHJlbW92ZUZpbGVzLCB1cGRhdGVUZW1wbGF0ZU5hbWV9IGZyb20gJy4uLy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2dldERpck5hbWV9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dEZpbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG91dHB1dE5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlQ2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGUgPSBhc3luYyAodHlwZTogc3RyaW5nLCBjbWQ6IENyZWF0ZU9wdGlvbnMsIGNhbGxiYWNrOiBDcmVhdGVDYWxsYmFjayA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBvdXRwdXRGaWxlID0gJycsIG91dHB1dE5hbWUgPSAnJywgcXVpZXR9ID0gY21kO1xuICBjb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG4gIGxvZyhgJHtjbGlOYW1lfSBjcmVhdGluZyAke3R5cGV9Li4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQsIGZhbHNlKTtcbiAgY29uc3Qge291dHB1dFBhdGggPSAnJywgc291cmNlUGF0aCA9ICcnLCB1c2VUeXBlc2NyaXB0fSA9IExleENvbmZpZy5jb25maWc7XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIC8vIE1ha2Ugc3VyZSB0c2NvbmZpZy5qc29uIGV4aXN0c1xuICAgIExleENvbmZpZy5jaGVja1R5cGVzY3JpcHRDb25maWcoKTtcbiAgfVxuXG4gIGNvbnN0IHtjb25maWd9ID0gTGV4Q29uZmlnO1xuICBjb25zdCBkaXJOYW1lID0gZ2V0RGlyTmFtZSgpO1xuXG4gIHN3aXRjaCh0eXBlKSB7XG4gICAgY2FzZSAnY2hhbmdlbG9nJzoge1xuICAgICAgY29uc3Qgc3RhdHVzQ2hhbmdlbG9nOiBudW1iZXIgPSBhd2FpdCBjcmVhdGVDaGFuZ2Vsb2coe2NsaU5hbWUsIGNvbmZpZywgb3V0cHV0RmlsZSwgcXVpZXR9KTtcbiAgICAgIGNhbGxiYWNrKHN0YXR1c0NoYW5nZWxvZyk7XG4gICAgICByZXR1cm4gc3RhdHVzQ2hhbmdlbG9nO1xuICAgIH1cbiAgICBjYXNlICdzdG9yZSc6IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldEZpbGVuYW1lcyh7XG4gICAgICAgICAgY2xpTmFtZSxcbiAgICAgICAgICBuYW1lOiBvdXRwdXROYW1lLFxuICAgICAgICAgIHF1aWV0LFxuICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgdXNlVHlwZXNjcmlwdFxuICAgICAgICB9KTtcblxuICAgICAgICBpZighcmVzdWx0KSB7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7bmFtZUNhcHMsIHRlbXBsYXRlRXh0LCB0ZW1wbGF0ZVBhdGh9ID0gcmVzdWx0O1xuICAgICAgICBjb25zdCBzdG9yZVBhdGg6IHN0cmluZyA9IGAke2N3ZH0vJHtuYW1lQ2Fwc31TdG9yZWA7XG5cbiAgICAgICAgaWYoIWV4aXN0c1N5bmMoc3RvcmVQYXRoKSkge1xuICAgICAgICAvLyBDb3B5IHN0b3JlIGZpbGVzXG4gICAgICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMocGF0aFJlc29sdmUoZGlyTmFtZSwgdGVtcGxhdGVQYXRoLCAnLi8uU2FtcGxlU3RvcmUnKSwgY3dkKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBkaXJlY3RvcnlcbiAgICAgICAgICByZW5hbWVTeW5jKGAke2N3ZH0vLlNhbXBsZVN0b3JlYCwgc3RvcmVQYXRoKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSB0ZXN0XG4gICAgICAgICAgY29uc3Qgc3RvcmVUZXN0UGF0aDogc3RyaW5nID0gYCR7c3RvcmVQYXRofS8ke25hbWVDYXBzfVN0b3JlLnRlc3Qke3RlbXBsYXRlRXh0fWA7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHtzdG9yZVBhdGh9L1NhbXBsZVN0b3JlLnRlc3Qke3RlbXBsYXRlRXh0fS50eHRgLCBzdG9yZVRlc3RQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSBzdG9yZSBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHN0b3JlVGVzdFBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBzb3VyY2UgZmlsZVxuICAgICAgICAgIGNvbnN0IHN0b3JlRmlsZVBhdGg6IHN0cmluZyA9IGAke3N0b3JlUGF0aH0vJHtuYW1lQ2Fwc31TdG9yZSR7dGVtcGxhdGVFeHR9YDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3N0b3JlUGF0aH0vU2FtcGxlU3RvcmUke3RlbXBsYXRlRXh0fS50eHRgLCBzdG9yZUZpbGVQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSBzdG9yZSBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHN0b3JlRmlsZVBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uIERpcmVjdG9yeSwgJHtzdG9yZVBhdGh9IGFscmVhZHkgZXhpc3RzLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICd0c2NvbmZpZyc6IHtcbiAgICAvLyBSZW1vdmUgZXhpc3RpbmcgZmlsZVxuICAgICAgYXdhaXQgcmVtb3ZlRmlsZXMoJ3RzY29uZmlnLmpzb24nLCB0cnVlKTtcblxuICAgICAgLy8gR2V0IHRzY29uZmlnIHRlbXBsYXRlXG4gICAgICBjb25zdCB0ZW1wbGF0ZVBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLi8uLi90c2NvbmZpZy50ZW1wbGF0ZS5qc29uJyk7XG4gICAgICBsZXQgZGF0YTogc3RyaW5nID0gcmVhZEZpbGVTeW5jKHRlbXBsYXRlUGF0aCwgJ3V0ZjgnKTtcblxuICAgICAgLy8gVXBkYXRlIExleCB0c2NvbmZpZyB0ZW1wbGF0ZSB3aXRoIHNvdXJjZSBhbmQgb3V0cHV0IGRpcmVjdG9yaWVzXG4gICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKC8uXFwvc3JjL2csIHNvdXJjZVBhdGgpO1xuICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgvLlxcL2xpYi9nLCBvdXRwdXRQYXRoKTtcblxuICAgICAgLy8gU2F2ZSBuZXcgdHNjb25maWcgdG8gYXBwXG4gICAgICBjb25zdCBkZXN0UGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoY3dkLCAnLi90c2NvbmZpZy5qc29uJyk7XG4gICAgICB3cml0ZUZpbGVTeW5jKGRlc3RQYXRoLCBkYXRhLCAndXRmOCcpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ3ZpZXcnOiB7XG4gICAgICBjb25zdCByZXN1bHQgPSBnZXRGaWxlbmFtZXMoe1xuICAgICAgICBjbGlOYW1lLFxuICAgICAgICBuYW1lOiBvdXRwdXROYW1lLFxuICAgICAgICBxdWlldCxcbiAgICAgICAgdHlwZSxcbiAgICAgICAgdXNlVHlwZXNjcmlwdFxuICAgICAgfSk7XG5cbiAgICAgIGlmKCFyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHtuYW1lQ2FwcywgdGVtcGxhdGVQYXRoLCB0ZW1wbGF0ZVJlYWN0fSA9IHJlc3VsdDtcbiAgICAgIGNvbnN0IHZpZXdQYXRoOiBzdHJpbmcgPSBgJHtjd2R9LyR7bmFtZUNhcHN9Vmlld2A7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmKCFleGlzdHNTeW5jKHZpZXdQYXRoKSkge1xuICAgICAgICAvLyBDb3B5IHZpZXcgZmlsZXNcbiAgICAgICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhwYXRoUmVzb2x2ZShkaXJOYW1lLCB0ZW1wbGF0ZVBhdGgsICcuLy5TYW1wbGVWaWV3JyksIGN3ZCk7XG5cbiAgICAgICAgICAvLyBSZW5hbWUgZGlyZWN0b3J5XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHtjd2R9Ly5TYW1wbGVWaWV3YCwgdmlld1BhdGgpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIENTU1xuICAgICAgICAgIGNvbnN0IHZpZXdTdHlsZVBhdGg6IHN0cmluZyA9IGAke3ZpZXdQYXRofS8ke291dHB1dE5hbWV9Vmlldy5jc3NgO1xuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7dmlld1BhdGh9L3NhbXBsZVZpZXcuY3NzYCwgdmlld1N0eWxlUGF0aCk7XG5cbiAgICAgICAgICAvLyBTZWFyY2ggYW5kIHJlcGxhY2UgdmlldyBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHZpZXdTdHlsZVBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSB0ZXN0XG4gICAgICAgICAgY29uc3Qgdmlld1Rlc3RQYXRoOiBzdHJpbmcgPSBgJHt2aWV3UGF0aH0vJHtuYW1lQ2Fwc31WaWV3LnRlc3Qke3RlbXBsYXRlUmVhY3R9YDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3ZpZXdQYXRofS9TYW1wbGVWaWV3LnRlc3Qke3RlbXBsYXRlUmVhY3R9LnR4dGAsIHZpZXdUZXN0UGF0aCk7XG5cbiAgICAgICAgICAvLyBTZWFyY2ggYW5kIHJlcGxhY2UgdmlldyBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHZpZXdUZXN0UGF0aCwgb3V0cHV0TmFtZSwgbmFtZUNhcHMpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIHNvdXJjZSBmaWxlXG4gICAgICAgICAgY29uc3Qgdmlld0ZpbGVQYXRoOiBzdHJpbmcgPSBgJHt2aWV3UGF0aH0vJHtuYW1lQ2Fwc31WaWV3JHt0ZW1wbGF0ZVJlYWN0fWA7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHt2aWV3UGF0aH0vU2FtcGxlVmlldyR7dGVtcGxhdGVSZWFjdH0udHh0YCwgdmlld0ZpbGVQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSB2aWV3IG5hbWVcbiAgICAgICAgICB1cGRhdGVUZW1wbGF0ZU5hbWUodmlld0ZpbGVQYXRoLCBvdXRwdXROYW1lLCBuYW1lQ2Fwcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY3JlYXRlIG5ldyAke3R5cGV9LiBEaXJlY3RvcnksICR7dmlld1BhdGh9IGFscmVhZHkgZXhpc3RzLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICd2c2NvZGUnOiB7XG4gICAgLy8gUmVtb3ZlIGV4aXN0aW5nIGRpcmVjdG9yeVxuICAgICAgYXdhaXQgcmVtb3ZlRmlsZXMoJy52c2NvZGUnLCB0cnVlKTtcblxuICAgICAgLy8gQ29weSB2c2NvZGUgY29uZmlndXJhdGlvblxuICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMocGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uLy4uLy52c2NvZGUnKSwgY3dkKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICdkYXRhbGF5ZXInOiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBnZXRGaWxlbmFtZXMoe1xuICAgICAgICAgIGNsaU5hbWUsXG4gICAgICAgICAgbmFtZTogb3V0cHV0TmFtZSxcbiAgICAgICAgICBxdWlldCxcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHVzZVR5cGVzY3JpcHRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYoIXJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge25hbWVDYXBzLCB0ZW1wbGF0ZUV4dCwgdGVtcGxhdGVQYXRofSA9IHJlc3VsdDtcbiAgICAgICAgY29uc3QgZGF0YUxheWVyUGF0aDogc3RyaW5nID0gYCR7Y3dkfS8ke25hbWVDYXBzfURhdGFMYXllcmA7XG5cbiAgICAgICAgaWYoIWV4aXN0c1N5bmMoZGF0YUxheWVyUGF0aCkpIHtcbiAgICAgICAgICAvLyBDcmVhdGUgZGF0YSBsYXllciBkaXJlY3RvcnlcbiAgICAgICAgICBjb25zdCBmcyA9IGF3YWl0IGltcG9ydCgnZnMnKTtcbiAgICAgICAgICBmcy5ta2RpclN5bmMoZGF0YUxheWVyUGF0aCwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuXG4gICAgICAgICAgLy8gQ29weSBhbmQgcmVuYW1lIG1haW4gZGF0YSBsYXllciBmaWxlXG4gICAgICAgICAgY29uc3Qgc291cmNlRmlsZSA9IHBhdGhSZXNvbHZlKGRpck5hbWUsIHRlbXBsYXRlUGF0aCwgYC4vRGF0YUxheWVyJHt0ZW1wbGF0ZUV4dH0udHh0YCk7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0RmlsZSA9IGAke2RhdGFMYXllclBhdGh9LyR7bmFtZUNhcHN9RGF0YUxheWVyJHt0ZW1wbGF0ZUV4dH1gO1xuXG4gICAgICAgICAgaWYoZXhpc3RzU3luYyhzb3VyY2VGaWxlKSkge1xuICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyhzb3VyY2VGaWxlLCAndXRmOCcpO1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZENvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoL0RhdGFMYXllci9nLCBuYW1lQ2Fwcyk7XG4gICAgICAgICAgICB3cml0ZUZpbGVTeW5jKHRhcmdldEZpbGUsIHVwZGF0ZWRDb250ZW50KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDb3B5IGFuZCByZW5hbWUgdGVzdCBmaWxlXG4gICAgICAgICAgY29uc3Qgc291cmNlVGVzdEZpbGUgPSBwYXRoUmVzb2x2ZShkaXJOYW1lLCB0ZW1wbGF0ZVBhdGgsIGAuL0RhdGFMYXllci50ZXN0JHt0ZW1wbGF0ZUV4dH0udHh0YCk7XG4gICAgICAgICAgY29uc3QgdGFyZ2V0VGVzdEZpbGUgPSBgJHtkYXRhTGF5ZXJQYXRofS8ke25hbWVDYXBzfURhdGFMYXllci50ZXN0JHt0ZW1wbGF0ZUV4dH1gO1xuXG4gICAgICAgICAgaWYoZXhpc3RzU3luYyhzb3VyY2VUZXN0RmlsZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHRlc3RDb250ZW50ID0gcmVhZEZpbGVTeW5jKHNvdXJjZVRlc3RGaWxlLCAndXRmOCcpO1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFRlc3RDb250ZW50ID0gdGVzdENvbnRlbnQucmVwbGFjZSgvRGF0YUxheWVyL2csIG5hbWVDYXBzKTtcbiAgICAgICAgICAgIHdyaXRlRmlsZVN5bmModGFyZ2V0VGVzdEZpbGUsIHVwZGF0ZWRUZXN0Q29udGVudCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IFN1Y2Nlc3M6IENyZWF0ZWQgJHtuYW1lQ2Fwc31EYXRhTGF5ZXIgd2l0aCB0ZXN0IGZpbGVzLmAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNyZWF0ZSBuZXcgJHt0eXBlfS4gRGlyZWN0b3J5LCAke2RhdGFMYXllclBhdGh9IGFscmVhZHkgZXhpc3RzLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07Il0sIm5hbWVzIjpbImV4aXN0c1N5bmMiLCJyZWFkRmlsZVN5bmMiLCJyZW5hbWVTeW5jIiwid3JpdGVGaWxlU3luYyIsInJlc29sdmUiLCJwYXRoUmVzb2x2ZSIsImNyZWF0ZUNoYW5nZWxvZyIsIkxleENvbmZpZyIsImNvcHlGb2xkZXJSZWN1cnNpdmVTeW5jIiwiZ2V0RmlsZW5hbWVzIiwicmVtb3ZlRmlsZXMiLCJ1cGRhdGVUZW1wbGF0ZU5hbWUiLCJnZXREaXJOYW1lIiwibG9nIiwiY3JlYXRlIiwidHlwZSIsImNtZCIsImNhbGxiYWNrIiwiY2xpTmFtZSIsIm91dHB1dEZpbGUiLCJvdXRwdXROYW1lIiwicXVpZXQiLCJjd2QiLCJwcm9jZXNzIiwicGFyc2VDb25maWciLCJvdXRwdXRQYXRoIiwic291cmNlUGF0aCIsInVzZVR5cGVzY3JpcHQiLCJjb25maWciLCJjaGVja1R5cGVzY3JpcHRDb25maWciLCJkaXJOYW1lIiwic3RhdHVzQ2hhbmdlbG9nIiwicmVzdWx0IiwibmFtZSIsIm5hbWVDYXBzIiwidGVtcGxhdGVFeHQiLCJ0ZW1wbGF0ZVBhdGgiLCJzdG9yZVBhdGgiLCJzdG9yZVRlc3RQYXRoIiwic3RvcmVGaWxlUGF0aCIsImVycm9yIiwibWVzc2FnZSIsImRhdGEiLCJyZXBsYWNlIiwiZGVzdFBhdGgiLCJ0ZW1wbGF0ZVJlYWN0Iiwidmlld1BhdGgiLCJ2aWV3U3R5bGVQYXRoIiwidmlld1Rlc3RQYXRoIiwidmlld0ZpbGVQYXRoIiwiZGF0YUxheWVyUGF0aCIsImZzIiwibWtkaXJTeW5jIiwicmVjdXJzaXZlIiwic291cmNlRmlsZSIsInRhcmdldEZpbGUiLCJjb250ZW50IiwidXBkYXRlZENvbnRlbnQiLCJzb3VyY2VUZXN0RmlsZSIsInRhcmdldFRlc3RGaWxlIiwidGVzdENvbnRlbnQiLCJ1cGRhdGVkVGVzdENvbnRlbnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLFVBQVUsRUFBRUMsWUFBWSxFQUFFQyxVQUFVLEVBQUVDLGFBQWEsUUFBTyxLQUFLO0FBQ3ZFLFNBQVFDLFdBQVdDLFdBQVcsUUFBTyxPQUFPO0FBRTVDLFNBQVFDLGVBQWUsUUFBTyw0QkFBNEI7QUFDMUQsU0FBUUMsU0FBUyxRQUFPLHFCQUFxQjtBQUM3QyxTQUFRQyx1QkFBdUIsRUFBRUMsWUFBWSxFQUFFQyxXQUFXLEVBQUVDLGtCQUFrQixRQUFPLHFCQUFxQjtBQUMxRyxTQUFRQyxVQUFVLFFBQU8sc0JBQXNCO0FBQy9DLFNBQVFDLEdBQUcsUUFBTyxxQkFBcUI7QUFXdkMsT0FBTyxNQUFNQyxTQUFTLE9BQU9DLE1BQWNDLEtBQW9CQyxXQUEyQixJQUFPLENBQUEsQ0FBQyxDQUFBLENBQUU7SUFDbEcsTUFBTSxFQUFDQyxVQUFVLEtBQUssRUFBRUMsYUFBYSxFQUFFLEVBQUVDLGFBQWEsRUFBRSxFQUFFQyxLQUFLLEVBQUMsR0FBR0w7SUFDbkUsTUFBTU0sTUFBY0MsUUFBUUQsR0FBRztJQUMvQlQsSUFBSSxHQUFHSyxRQUFRLFVBQVUsRUFBRUgsS0FBSyxHQUFHLENBQUMsRUFBRSxRQUFRTTtJQUU5QywyQkFBMkI7SUFDM0IsTUFBTWQsVUFBVWlCLFdBQVcsQ0FBQ1IsS0FBSztJQUNqQyxNQUFNLEVBQUNTLGFBQWEsRUFBRSxFQUFFQyxhQUFhLEVBQUUsRUFBRUMsYUFBYSxFQUFDLEdBQUdwQixVQUFVcUIsTUFBTTtJQUUxRSxJQUFHRCxlQUFlO1FBQ2hCLGlDQUFpQztRQUNqQ3BCLFVBQVVzQixxQkFBcUI7SUFDakM7SUFFQSxNQUFNLEVBQUNELE1BQU0sRUFBQyxHQUFHckI7SUFDakIs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
|