@nlabs/lex 1.39.0 → 1.41.0

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.
Files changed (43) hide show
  1. package/.eslintrc +1 -0
  2. package/.vscode/settings.json +1 -1
  3. package/babel.config.json +13 -0
  4. package/dist/LexConfig.js +40 -36
  5. package/dist/commands/build.js +98 -52
  6. package/dist/commands/bulid.test.js +314 -5
  7. package/dist/commands/clean.js +4 -4
  8. package/dist/commands/clean.test.js +63 -0
  9. package/dist/commands/compile.js +32 -35
  10. package/dist/commands/compile.test.js +93 -0
  11. package/dist/commands/config.js +4 -4
  12. package/dist/commands/copy.js +1 -1
  13. package/dist/commands/create.js +10 -10
  14. package/dist/commands/dev.js +12 -12
  15. package/dist/commands/init.js +17 -17
  16. package/dist/commands/link.js +3 -3
  17. package/dist/commands/lint.js +53 -39
  18. package/dist/commands/migrate.js +4 -4
  19. package/dist/commands/publish.js +7 -7
  20. package/dist/commands/test.js +14 -14
  21. package/dist/commands/update.js +10 -10
  22. package/dist/commands/upgrade.js +7 -7
  23. package/dist/commands/versions.js +8 -9
  24. package/dist/commands/versions.test.js +49 -0
  25. package/dist/create/changelog.js +3 -3
  26. package/dist/lex.js +16 -16
  27. package/dist/lint.js +8 -0
  28. package/dist/utils/app.js +1 -1
  29. package/dist/utils/file.js +20 -10
  30. package/jest.config.cjs +55 -0
  31. package/jest.config.lex.js +27 -28
  32. package/jest.setup.ts +3 -0
  33. package/package.json +76 -71
  34. package/resolver.cjs +86 -0
  35. package/test/javascript.js +6 -0
  36. package/test/typescript.ts +6 -0
  37. package/tsconfig.build.json +1 -1
  38. package/tsconfig.json +1 -1
  39. package/tsconfig.template.json +5 -5
  40. package/webpack.config.js +78 -65
  41. package/dist/resolver.js +0 -70
  42. package/jest.config.js +0 -14
  43. package/jest.setup.js +0 -3
@@ -1,11 +1,11 @@
1
1
  import { execa } from "execa";
2
2
  import { existsSync, lstatSync, readdirSync } from "fs";
3
- import * as glob from "glob";
4
- import * as path from "path";
5
- import { fileURLToPath } from "url";
3
+ import { sync as globSync } from "glob";
4
+ import { extname as pathExtname, join as pathJoin, resolve as pathResolve } from "path";
5
+ import { URL } from "url";
6
6
  import { LexConfig } from "../LexConfig.js";
7
7
  import { checkLinkedModules, copyFiles, createSpinner, getFilesByExt, removeFiles } from "../utils/app.js";
8
- import { relativeFilePath } from "../utils/file.js";
8
+ import { relativeNodePath } from "../utils/file.js";
9
9
  import { log } from "../utils/log.js";
10
10
  const hasFileType = (startPath, ext) => {
11
11
  if (!existsSync(startPath)) {
@@ -13,8 +13,8 @@ const hasFileType = (startPath, ext) => {
13
13
  }
14
14
  const files = readdirSync(startPath);
15
15
  return files.some((file) => {
16
- const filename = path.join(startPath, file);
17
- const fileExt = path.extname(filename);
16
+ const filename = pathJoin(startPath, file);
17
+ const fileExt = pathExtname(filename);
18
18
  const stat = lstatSync(filename);
19
19
  if (stat.isDirectory()) {
20
20
  return hasFileType(filename, ext);
@@ -26,17 +26,17 @@ const compile = async (cmd, callback = () => ({})) => {
26
26
  const { cliName = "Lex", config, quiet, remove, watch } = cmd;
27
27
  const spinner = createSpinner(quiet);
28
28
  log(`${cliName} compiling...`, "info", quiet);
29
- LexConfig.parseConfig(cmd);
29
+ await LexConfig.parseConfig(cmd);
30
30
  const { outputFullPath, preset, sourceFullPath, useTypescript } = LexConfig.config;
31
- const dirName = fileURLToPath(new URL(".", import.meta.url));
32
- const nodePath = path.resolve(dirName, "../../node_modules");
31
+ const dirName = new URL(".", import.meta.url).pathname;
32
+ const dirPath = pathResolve(dirName, "../..");
33
33
  checkLinkedModules();
34
34
  if (remove) {
35
35
  await removeFiles(outputFullPath);
36
36
  }
37
37
  if (useTypescript) {
38
38
  LexConfig.checkTypescriptConfig();
39
- const typescriptPath = relativeFilePath("typescript/bin/tsc", nodePath);
39
+ const typescriptPath = relativeNodePath("typescript/bin/tsc", dirPath);
40
40
  const typescriptOptions = config ? ["-p", config] : [
41
41
  "--allowSyntheticDefaultImports",
42
42
  "--baseUrl",
@@ -48,7 +48,7 @@ const compile = async (cmd, callback = () => ({})) => {
48
48
  "--lib",
49
49
  ["ES5", "ES6", "ES2015", "ES7", "ES2016", "ES2017", "ES2018", "ESNext", "DOM"],
50
50
  "--module",
51
- "commonjs",
51
+ "esnext",
52
52
  "--moduleResolution",
53
53
  "node",
54
54
  "--noImplicitReturns",
@@ -74,7 +74,7 @@ const compile = async (cmd, callback = () => ({})) => {
74
74
  }
75
75
  spinner.start("Static type checking with Typescript...");
76
76
  try {
77
- await execa(typescriptPath, typescriptOptions, { encoding: "utf-8" });
77
+ await execa(typescriptPath, typescriptOptions, { encoding: "utf8" });
78
78
  spinner.succeed("Successfully completed type checking!");
79
79
  } catch (error) {
80
80
  log(`
@@ -83,8 +83,8 @@ ${cliName} Error: ${error.message}`, "error", quiet);
83
83
  console.error(error);
84
84
  }
85
85
  spinner.fail("Type checking failed.");
86
- callback(error.status);
87
- return error.status;
86
+ callback(1);
87
+ return 1;
88
88
  }
89
89
  }
90
90
  const globOptions = {
@@ -93,10 +93,10 @@ ${cliName} Error: ${error.message}`, "error", quiet);
93
93
  nodir: true,
94
94
  nosort: true
95
95
  };
96
- const tsFiles = glob.sync(`${sourceFullPath}/**/**.ts*`, globOptions);
97
- const jsFiles = glob.sync(`${sourceFullPath}/**/**.js`, globOptions);
96
+ const tsFiles = globSync(`${sourceFullPath}/**/**/!(*.spec|*.test).ts*`, globOptions);
97
+ const jsFiles = globSync(`${sourceFullPath}/**/**/!(*.spec|*.test).js`, globOptions);
98
98
  const sourceFiles = [...tsFiles, ...jsFiles];
99
- const esbuildPath = relativeFilePath("esbuild/bin/esbuild", nodePath);
99
+ const esbuildPath = relativeNodePath("esbuild/bin/esbuild", dirPath);
100
100
  const esbuildOptions = [
101
101
  ...sourceFiles,
102
102
  "--color=true",
@@ -107,7 +107,6 @@ ${cliName} Error: ${error.message}`, "error", quiet);
107
107
  "--sourcemap=inline",
108
108
  "--target=node18"
109
109
  ];
110
- console.log({ useTypescript });
111
110
  if (useTypescript) {
112
111
  esbuildOptions.push("--loader:.ts=ts", "--loader:.tsx=tsx");
113
112
  }
@@ -116,9 +115,7 @@ ${cliName} Error: ${error.message}`, "error", quiet);
116
115
  }
117
116
  const cssFiles = getFilesByExt(".css", LexConfig.config);
118
117
  if (cssFiles.length) {
119
- const postcssPath = relativeFilePath("postcss-cli/index.js", nodePath);
120
- console.log({ nodePath, postcssPath });
121
- const dirName2 = fileURLToPath(new URL(".", import.meta.url));
118
+ const postcssPath = relativeNodePath("postcss-cli/index.js", dirPath);
122
119
  const postcssOptions = [
123
120
  `${sourceFullPath}/**/**.css`,
124
121
  "--base",
@@ -126,17 +123,17 @@ ${cliName} Error: ${error.message}`, "error", quiet);
126
123
  "--dir",
127
124
  outputFullPath,
128
125
  "--config",
129
- path.resolve(dirName2, "../../.postcssrc.js")
126
+ pathResolve(dirName, "../../.postcssrc.js")
130
127
  ];
131
128
  try {
132
- await execa(postcssPath, postcssOptions, { encoding: "utf-8" });
129
+ await execa(postcssPath, postcssOptions, { encoding: "utf8" });
133
130
  spinner.succeed(`Successfully formatted ${cssFiles.length} css files!`);
134
131
  } catch (error) {
135
132
  log(`
136
133
  ${cliName} Error: ${error.message}`, "error", quiet);
137
134
  spinner.fail("Failed formatting css.");
138
- callback(error.status);
139
- return error.status;
135
+ callback(1);
136
+ return 1;
140
137
  }
141
138
  }
142
139
  const gifFiles = getFilesByExt(".gif", LexConfig.config);
@@ -151,8 +148,8 @@ ${cliName} Error: ${error.message}`, "error", quiet);
151
148
  log(`
152
149
  ${cliName} Error: ${error.message}`, "error", quiet);
153
150
  spinner.fail("Failed to move images to output directory.");
154
- callback(error.status);
155
- return error.status;
151
+ callback(1);
152
+ return 1;
156
153
  }
157
154
  }
158
155
  const ttfFiles = getFilesByExt(".ttf", LexConfig.config);
@@ -167,8 +164,8 @@ ${cliName} Error: ${error.message}`, "error", quiet);
167
164
  log(`
168
165
  ${cliName} Error: ${error.message}`, "error", quiet);
169
166
  spinner.fail("Failed to move fonts to output directory.");
170
- callback(error.status);
171
- return error.status;
167
+ callback(1);
168
+ return 1;
172
169
  }
173
170
  }
174
171
  const mdFiles = getFilesByExt(".md", LexConfig.config);
@@ -179,13 +176,13 @@ ${cliName} Error: ${error.message}`, "error", quiet);
179
176
  log(`
180
177
  ${cliName} Error: ${error.message}`, "error", quiet);
181
178
  spinner.fail("Failed to move docs to output directory.");
182
- callback(error.status);
183
- return error.status;
179
+ callback(1);
180
+ return 1;
184
181
  }
185
182
  }
186
183
  spinner.start(watch ? "Watching for changes..." : "Compiling with ESBuild...");
187
184
  try {
188
- await execa(esbuildPath, esbuildOptions, { encoding: "utf-8" });
185
+ await execa(esbuildPath, esbuildOptions, { encoding: "utf8" });
189
186
  spinner.succeed("Compile completed successfully!");
190
187
  } catch (error) {
191
188
  log(`
@@ -194,8 +191,8 @@ ${cliName} Error: ${error.message}`, "error", quiet);
194
191
  console.error(error);
195
192
  }
196
193
  spinner.fail("Code compiling failed.");
197
- callback(error.status);
198
- return error.status;
194
+ callback(1);
195
+ return 1;
199
196
  }
200
197
  callback(0);
201
198
  return 0;
@@ -204,4 +201,4 @@ export {
204
201
  compile,
205
202
  hasFileType
206
203
  };
207
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NvbXBpbGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4ZWNhfSBmcm9tICdleGVjYSc7XG5pbXBvcnQge2V4aXN0c1N5bmMsIGxzdGF0U3luYywgcmVhZGRpclN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIGdsb2IgZnJvbSAnZ2xvYic7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtmaWxlVVJMVG9QYXRofSBmcm9tICd1cmwnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y2hlY2tMaW5rZWRNb2R1bGVzLCBjb3B5RmlsZXMsIGNyZWF0ZVNwaW5uZXIsIGdldEZpbGVzQnlFeHQsIHJlbW92ZUZpbGVzfSBmcm9tICcuLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtyZWxhdGl2ZUZpbGVQYXRofSBmcm9tICcuLi91dGlscy9maWxlLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi91dGlscy9sb2cuanMnO1xuXG5leHBvcnQgY29uc3QgaGFzRmlsZVR5cGUgPSAoc3RhcnRQYXRoOiBzdHJpbmcsIGV4dDogc3RyaW5nW10pOiBib29sZWFuID0+IHtcbiAgaWYoIWV4aXN0c1N5bmMoc3RhcnRQYXRoKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGZpbGVzOiBzdHJpbmdbXSA9IHJlYWRkaXJTeW5jKHN0YXJ0UGF0aCk7XG5cbiAgcmV0dXJuIGZpbGVzLnNvbWUoKGZpbGU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGZpbGVuYW1lOiBzdHJpbmcgPSBwYXRoLmpvaW4oc3RhcnRQYXRoLCBmaWxlKTtcbiAgICBjb25zdCBmaWxlRXh0OiBzdHJpbmcgPSBwYXRoLmV4dG5hbWUoZmlsZW5hbWUpO1xuICAgIGNvbnN0IHN0YXQgPSBsc3RhdFN5bmMoZmlsZW5hbWUpO1xuXG4gICAgaWYoc3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAvLyBSZWN1cnNpdmUgc2VhcmNoXG4gICAgICByZXR1cm4gaGFzRmlsZVR5cGUoZmlsZW5hbWUsIGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4dC5pbmNsdWRlcyhmaWxlRXh0KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29tcGlsZSA9IGFzeW5jIChjbWQ6IGFueSwgY2FsbGJhY2s6IGFueSA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBjb25maWcsIHF1aWV0LCByZW1vdmUsIHdhdGNofSA9IGNtZDtcblxuICAvLyBTcGlubmVyXG4gIGNvbnN0IHNwaW5uZXIgPSBjcmVhdGVTcGlubmVyKHF1aWV0KTtcblxuICAvLyBEaXNwbGF5IHN0YXR1c1xuICBsb2coYCR7Y2xpTmFtZX0gY29tcGlsaW5nLi4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIC8vIENvbXBpbGUgdHlwZVxuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHByZXNldCwgc291cmNlRnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcbiAgY29uc3QgZGlyTmFtZSA9IGZpbGVVUkxUb1BhdGgobmV3IFVSTCgnLicsIGltcG9ydC5tZXRhLnVybCkpO1xuICBjb25zdCBub2RlUGF0aDogc3RyaW5nID0gcGF0aC5yZXNvbHZlKGRpck5hbWUsICcuLi8uLi9ub2RlX21vZHVsZXMnKTtcblxuICAvLyBDaGVjayBmb3IgbGlua2VkIG1vZHVsZXNcbiAgY2hlY2tMaW5rZWRNb2R1bGVzKCk7XG5cbiAgLy8gQ2xlYW4gb3V0cHV0IGRpcmVjdG9yeSBiZWZvcmUgd2Ugc3RhcnQgYWRkaW5nIGluIG5ldyBmaWxlc1xuICBpZihyZW1vdmUpIHtcbiAgICBhd2FpdCByZW1vdmVGaWxlcyhvdXRwdXRGdWxsUGF0aCk7XG4gIH1cblxuICAvLyBBZGQgdHNjb25maWcgZmlsZSBpZiBub25lIGV4aXN0c1xuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgLy8gTWFrZSBzdXJlIHRzY29uZmlnLmpzb24gZXhpc3RzXG4gICAgTGV4Q29uZmlnLmNoZWNrVHlwZXNjcmlwdENvbmZpZygpO1xuXG4gICAgLy8gQ2hlY2sgc3RhdGljIHR5cGVzIHdpdGggdHlwZXNjcmlwdFxuICAgIGNvbnN0IHR5cGVzY3JpcHRQYXRoOiBzdHJpbmcgPSByZWxhdGl2ZUZpbGVQYXRoKCd0eXBlc2NyaXB0L2Jpbi90c2MnLCBub2RlUGF0aCk7XG4gICAgY29uc3QgdHlwZXNjcmlwdE9wdGlvbnM6IHN0cmluZ1tdID0gY29uZmlnID9cbiAgICAgIFsnLXAnLCBjb25maWddIDpcbiAgICAgIFtcbiAgICAgICAgJy0tYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0cycsXG4gICAgICAgICctLWJhc2VVcmwnLCBzb3VyY2VGdWxsUGF0aCxcbiAgICAgICAgJy0tZGVjbGFyYXRpb24nLFxuICAgICAgICAnLS1pbmxpbmVTb3VyY2VNYXAnLFxuICAgICAgICAnLS1qc3gnLCAncmVhY3QtanN4JyxcbiAgICAgICAgJy0tbGliJywgWydFUzUnLCAnRVM2JywgJ0VTMjAxNScsICdFUzcnLCAnRVMyMDE2JywgJ0VTMjAxNycsICdFUzIwMTgnLCAnRVNOZXh0JywgJ0RPTSddLFxuICAgICAgICAnLS1tb2R1bGUnLCAnY29tbW9uanMnLFxuICAgICAgICAnLS1tb2R1bGVSZXNvbHV0aW9uJywgJ25vZGUnLFxuICAgICAgICAnLS1ub0ltcGxpY2l0UmV0dXJucycsXG4gICAgICAgICctLW5vSW1wbGljaXRUaGlzJyxcbiAgICAgICAgJy0tb3V0RGlyJywgb3V0cHV0RnVsbFBhdGgsXG4gICAgICAgICctLXJlbW92ZUNvbW1lbnRzJyxcbiAgICAgICAgJy0tcmVzb2x2ZUpzb25Nb2R1bGUnLFxuICAgICAgICAnLS1yb290RGlyJywgc291cmNlRnVsbFBhdGgsXG4gICAgICAgICctLXNvdXJjZVJvb3QnLCBzb3VyY2VGdWxsUGF0aCxcbiAgICAgICAgJy0tdGFyZ2V0JywgJ0VTNScsXG4gICAgICAgICctLXR5cGVSb290cycsIFsnbm9kZV9tb2R1bGVzL0B0eXBlcycsICdub2RlX21vZHVsZXMvanNvbi1kLXRzJ11cbiAgICAgIF07XG5cbiAgICBjb25zdCBkZWxjYXJhdGlvblByZXNldHMgPSBbXG4gICAgICAnd2ViJ1xuICAgIF07XG5cbiAgICBpZihkZWxjYXJhdGlvblByZXNldHMuaW5jbHVkZXMocHJlc2V0KSkge1xuICAgICAgdHlwZXNjcmlwdE9wdGlvbnMucHVzaCgnLS1lbWl0RGVjbGFyYXRpb25Pbmx5Jyk7XG4gICAgfVxuXG4gICAgLy8gU3RhcnQgdHlwZSBjaGVja2luZyBzcGlubmVyXG4gICAgc3Bpbm5lci5zdGFydCgnU3RhdGljIHR5cGUgY2hlY2tpbmcgd2l0aCBUeXBlc2NyaXB0Li4uJyk7XG5cbiAgICAvLyBUeXBlIGNoZWNraW5nXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGV4ZWNhKHR5cGVzY3JpcHRQYXRoLCB0eXBlc2NyaXB0T3B0aW9ucywge2VuY29kaW5nOiAndXRmLTgnfSk7XG5cbiAgICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdTdWNjZXNzZnVsbHkgY29tcGxldGVkIHR5cGUgY2hlY2tpbmchJyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgLy8gRGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAgIGlmKCFxdWlldCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgLy8gU3RvcCBzcGlubmVyXG4gICAgICBzcGlubmVyLmZhaWwoJ1R5cGUgY2hlY2tpbmcgZmFpbGVkLicpO1xuXG4gICAgICAvLyBLaWxsIFByb2Nlc3NcbiAgICAgIGNhbGxiYWNrKGVycm9yLnN0YXR1cyk7XG4gICAgICByZXR1cm4gZXJyb3Iuc3RhdHVzO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNvdXJjZSBmaWxlc1xuICBjb25zdCBnbG9iT3B0aW9ucyA9IHtcbiAgICBjd2Q6IHNvdXJjZUZ1bGxQYXRoLFxuICAgIGRvdDogZmFsc2UsXG4gICAgbm9kaXI6IHRydWUsXG4gICAgbm9zb3J0OiB0cnVlXG4gIH07XG4gIGNvbnN0IHRzRmlsZXM6IHN0cmluZ1tdID0gZ2xvYi5zeW5jKGAke3NvdXJjZUZ1bGxQYXRofS8qKi8qKi50cypgLCBnbG9iT3B0aW9ucyk7XG4gIGNvbnN0IGpzRmlsZXM6IHN0cmluZ1tdID0gZ2xvYi5zeW5jKGAke3NvdXJjZUZ1bGxQYXRofS8qKi8qKi5qc2AsIGdsb2JPcHRpb25zKTtcbiAgY29uc3Qgc291cmNlRmlsZXM6IHN0cmluZ1tdID0gWy4uLnRzRmlsZXMsIC4uLmpzRmlsZXNdO1xuXG4gIC8vIEVTQnVpbGQgb3B0aW9uc1xuICBjb25zdCBlc2J1aWxkUGF0aDogc3RyaW5nID0gcmVsYXRpdmVGaWxlUGF0aCgnZXNidWlsZC9iaW4vZXNidWlsZCcsIG5vZGVQYXRoKTtcbiAgY29uc3QgZXNidWlsZE9wdGlvbnM6IHN0cmluZ1tdID0gW1xuICAgIC4uLnNvdXJjZUZpbGVzLFxuICAgICctLWNvbG9yPXRydWUnLFxuICAgICctLWZvcm1hdD1janMnLFxuICAgICctLWxvYWRlcjouanM9anMnLFxuICAgICctLW91dGRpcj1saWInLFxuICAgICctLXBsYXRmb3JtPW5vZGUnLFxuICAgICctLXNvdXJjZW1hcD1pbmxpbmUnLFxuICAgICctLXRhcmdldD1ub2RlMTgnXG4gIF07XG5cbiAgY29uc29sZS5sb2coe3VzZVR5cGVzY3JpcHR9KTtcbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIGVzYnVpbGRPcHRpb25zLnB1c2goJy0tbG9hZGVyOi50cz10cycsICctLWxvYWRlcjoudHN4PXRzeCcpO1xuICB9XG5cbiAgaWYod2F0Y2gpIHtcbiAgICBlc2J1aWxkT3B0aW9ucy5wdXNoKCctLXdhdGNoJyk7XG4gIH1cblxuICAvLyBVc2UgUG9zdENTUyBmb3IgQ1NTIGZpbGVzXG4gIGNvbnN0IGNzc0ZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5jc3MnLCBMZXhDb25maWcuY29uZmlnKTtcblxuICBpZihjc3NGaWxlcy5sZW5ndGgpIHtcbiAgICBjb25zdCBwb3N0Y3NzUGF0aDogc3RyaW5nID0gcmVsYXRpdmVGaWxlUGF0aCgncG9zdGNzcy1jbGkvaW5kZXguanMnLCBub2RlUGF0aCk7XG4gICAgY29uc29sZS5sb2coe25vZGVQYXRoLCBwb3N0Y3NzUGF0aH0pO1xuICAgIGNvbnN0IGRpck5hbWUgPSBmaWxlVVJMVG9QYXRoKG5ldyBVUkwoJy4nLCBpbXBvcnQubWV0YS51cmwpKTtcbiAgICBjb25zdCBwb3N0Y3NzT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgICBgJHtzb3VyY2VGdWxsUGF0aH0vKiovKiouY3NzYCxcbiAgICAgICctLWJhc2UnLFxuICAgICAgc291cmNlRnVsbFBhdGgsXG4gICAgICAnLS1kaXInLFxuICAgICAgb3V0cHV0RnVsbFBhdGgsXG4gICAgICAnLS1jb25maWcnLFxuICAgICAgcGF0aC5yZXNvbHZlKGRpck5hbWUsICcuLi8uLi8ucG9zdGNzc3JjLmpzJylcbiAgICBdO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGV4ZWNhKHBvc3Rjc3NQYXRoLCBwb3N0Y3NzT3B0aW9ucywge2VuY29kaW5nOiAndXRmLTgnfSk7XG4gICAgICBzcGlubmVyLnN1Y2NlZWQoYFN1Y2Nlc3NmdWxseSBmb3JtYXR0ZWQgJHtjc3NGaWxlcy5sZW5ndGh9IGNzcyBmaWxlcyFgKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgLy8gU3RvcCBzcGlubmVyXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCBmb3JtYXR0aW5nIGNzcy4nKTtcblxuICAgICAgLy8gS2lsbCBQcm9jZXNzXG4gICAgICBjYWxsYmFjayhlcnJvci5zdGF0dXMpO1xuICAgICAgcmV0dXJuIGVycm9yLnN0YXR1cztcbiAgICB9XG4gIH1cblxuICAvLyBDb3B5IGltYWdlIGZpbGVzXG4gIGNvbnN0IGdpZkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5naWYnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3QganBnRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLmpwZycsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBwbmdGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcucG5nJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IHN2Z0ZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5zdmcnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3QgaW1hZ2VGaWxlczogc3RyaW5nW10gPSBbLi4uZ2lmRmlsZXMsIC4uLmpwZ0ZpbGVzLCAuLi5wbmdGaWxlcywgLi4uc3ZnRmlsZXNdO1xuXG4gIGlmKGltYWdlRmlsZXMubGVuZ3RoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNvcHlGaWxlcyhpbWFnZUZpbGVzLCAnaW1hZ2UnLCBzcGlubmVyLCBMZXhDb25maWcuY29uZmlnKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgLy8gU3RvcCBzcGlubmVyXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBtb3ZlIGltYWdlcyB0byBvdXRwdXQgZGlyZWN0b3J5LicpO1xuXG4gICAgICAvLyBLaWxsIFByb2Nlc3NcbiAgICAgIGNhbGxiYWNrKGVycm9yLnN0YXR1cyk7XG4gICAgICByZXR1cm4gZXJyb3Iuc3RhdHVzO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvcHkgZm9udCBmaWxlc1xuICBjb25zdCB0dGZGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcudHRmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IG90ZkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5vdGYnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgd29mZkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy53b2ZmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IHdvZmYyRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLndvZmYyJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IGZvbnRGaWxlczogc3RyaW5nW10gPSBbLi4udHRmRmlsZXMsIC4uLm90ZkZpbGVzLCAuLi53b2ZmRmlsZXMsIC4uLndvZmYyRmlsZXNdO1xuXG4gIGlmKGZvbnRGaWxlcy5sZW5ndGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29weUZpbGVzKGZvbnRGaWxlcywgJ2ZvbnQnLCBzcGlubmVyLCBMZXhDb25maWcuY29uZmlnKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgLy8gU3RvcCBzcGlubmVyXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBtb3ZlIGZvbnRzIHRvIG91dHB1dCBkaXJlY3RvcnkuJyk7XG5cbiAgICAgIC8vIEtpbGwgUHJvY2Vzc1xuICAgICAgY2FsbGJhY2soZXJyb3Iuc3RhdHVzKTtcbiAgICAgIHJldHVybiBlcnJvci5zdGF0dXM7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29weSBtYXJrZG93biBmaWxlc1xuICBjb25zdCBtZEZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5tZCcsIExleENvbmZpZy5jb25maWcpO1xuXG4gIGlmKG1kRmlsZXMubGVuZ3RoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNvcHlGaWxlcyhtZEZpbGVzLCAnZG9jdW1lbnRzJywgc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgLy8gRGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gbW92ZSBkb2NzIHRvIG91dHB1dCBkaXJlY3RvcnkuJyk7XG5cbiAgICAgIC8vIEtpbGwgUHJvY2Vzc1xuICAgICAgY2FsbGJhY2soZXJyb3Iuc3RhdHVzKTtcbiAgICAgIHJldHVybiBlcnJvci5zdGF0dXM7XG4gICAgfVxuICB9XG5cbiAgLy8gU3RhcnQgY29tcGlsZSBzcGlubmVyXG4gIHNwaW5uZXIuc3RhcnQod2F0Y2ggPyAnV2F0Y2hpbmcgZm9yIGNoYW5nZXMuLi4nIDogJ0NvbXBpbGluZyB3aXRoIEVTQnVpbGQuLi4nKTtcblxuICB0cnkge1xuICAgIGF3YWl0IGV4ZWNhKGVzYnVpbGRQYXRoLCBlc2J1aWxkT3B0aW9ucywge2VuY29kaW5nOiAndXRmLTgnfSk7XG5cbiAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICBzcGlubmVyLnN1Y2NlZWQoJ0NvbXBpbGUgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSEnKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIC8vIERpc3BsYXkgZXJyb3IgbWVzc2FnZVxuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIGlmKCFxdWlldCkge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgfVxuXG4gICAgLy8gU3RvcCBzcGlubmVyXG4gICAgc3Bpbm5lci5mYWlsKCdDb2RlIGNvbXBpbGluZyBmYWlsZWQuJyk7XG5cbiAgICAvLyBLaWxsIFByb2Nlc3NcbiAgICBjYWxsYmFjayhlcnJvci5zdGF0dXMpO1xuICAgIHJldHVybiBlcnJvci5zdGF0dXM7XG4gIH1cblxuICAvLyBTdG9wIHByb2Nlc3NcbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiAwO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLFNBQVEsYUFBWTtBQUNwQixTQUFRLFlBQVksV0FBVyxtQkFBa0I7QUFDakQsWUFBWSxVQUFVO0FBQ3RCLFlBQVksVUFBVTtBQUN0QixTQUFRLHFCQUFvQjtBQUU1QixTQUFRLGlCQUFnQjtBQUN4QixTQUFRLG9CQUFvQixXQUFXLGVBQWUsZUFBZSxtQkFBa0I7QUFDdkYsU0FBUSx3QkFBdUI7QUFDL0IsU0FBUSxXQUFVO0FBRVgsTUFBTSxjQUFjLENBQUMsV0FBbUIsUUFBMkI7QUFDeEUsTUFBRyxDQUFDLFdBQVcsU0FBUyxHQUFHO0FBQ3pCLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxRQUFrQixZQUFZLFNBQVM7QUFFN0MsU0FBTyxNQUFNLEtBQUssQ0FBQyxTQUFpQjtBQUNsQyxVQUFNLFdBQW1CLEtBQUssS0FBSyxXQUFXLElBQUk7QUFDbEQsVUFBTSxVQUFrQixLQUFLLFFBQVEsUUFBUTtBQUM3QyxVQUFNLE9BQU8sVUFBVSxRQUFRO0FBRS9C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aEUsU0FBUSxPQUFOO0FBRUEsVUFBSTtBQUFBLEVBQUssa0JBQWtCLE1BQU0sV0FBVyxTQUFTLEtBQUs7QUFHMUQsY0FBUSxLQUFLLDRDQUE0QztBQUd6RCxlQUFTLE1BQU0sTUFBTTtBQUNyQixhQUFPLE1BQU07QUFBQSxJQUNmO0FBQUEsRUFDRjtBQUdBLFFBQU0sV0FBcUIsY0FBYyxRQUFRLFVBQVUsTUFBTTtBQUNqRSxRQUFNLFdBQXFCLGNBQWMsUUFBUSxVQUFVLE1BQU07QUFDakUsUUFBTSxZQUFzQixjQUFjLFNBQVMsVUFBVSxNQUFNO0FBQ25FLFFBQU0sYUFBdUIsY0FBYyxVQUFVLFVBQVUsTUFBTTtBQUNyRSxRQUFNLFlBQXNCLENBQUMsR0FBRyxVQUFVLEdBQUcsVUFBVSxHQUFHLFdBQVcsR0FBRyxVQUFVO0FBRWxGLE1BQUcsVUFBVSxRQUFRO0FBQ25CLFFBQUk7QUFDRixZQUFNLFVBQVUsV0FBVyxRQUFRLFNBQVMsVUFBVSxNQUFNO0FBQUEsSUFDOUQsU0FBUSxPQUFOO0FBRUEsVUFBSTtBQUFBLEVBQUssa0JBQWtCLE1BQU0sV0FBVyxTQUFTLEtBQUs7QUFHMUQsY0FBUSxLQUFLLDJDQUEyQztBQUd4RCxlQUFTLE1BQU0sTUFBTTtBQUNyQixhQUFPLE1BQU07QUFBQSxJQUNmO0FBQUEsRUFDRjtBQUdBLFFBQU0sVUFBb0IsY0FBYyxPQUFPLFVBQVUsTUFBTTtBQUUvRCxNQUFHLFFBQVEsUUFBUTtBQUNqQixRQUFJO0FBQ0YsWUFBTSxVQUFVLFNBQVMsYUFBYSxTQUFTLFVBQVUsTUFBTTtBQUFBLElBQ2pFLFNBQVEsT0FBTjtBQUVBLFVBQUk7QUFBQSxFQUFLLGtCQUFrQixNQUFNLFdBQVcsU0FBUyxLQUFLO0FBRzFELGNBQVEsS0FBSywwQ0FBMEM7QUFHdkQsZUFBUyxNQUFNLE1BQU07QUFDckIsYUFBTyxNQUFNO0FBQUEsSUFDZjtBQUFBLEVBQ0Y7QUFHQSxVQUFRLE1BQU0sUUFBUSw0QkFBNEIsMkJBQTJCO0FBRTdFLE1BQUk7QUFDRixVQUFNLE1BQU0sYUFBYSxnQkFBZ0IsRUFBQyxVQUFVLFFBQU8sQ0FBQztBQUc1RCxZQUFRLFFBQVEsaUNBQWlDO0FBQUEsRUFDbkQsU0FBUSxPQUFOO0FBRUEsUUFBSTtBQUFBLEVBQUssa0JBQWtCLE1BQU0sV0FBVyxTQUFTLEtBQUs7QUFFMUQsUUFBRyxDQUFDLE9BQU87QUFDVCxjQUFRLE1BQU0sS0FBSztBQUFBLElBQ3JCO0FBR0EsWUFBUSxLQUFLLHdCQUF3QjtBQUdyQyxhQUFTLE1BQU0sTUFBTTtBQUNyQixXQUFPLE1BQU07QUFBQSxFQUNmO0FBR0EsV0FBUyxDQUFDO0FBQ1YsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogWyJkaXJOYW1lIl0KfQo=
204
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NvbXBpbGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4ZWNhfSBmcm9tICdleGVjYSc7XG5pbXBvcnQge2V4aXN0c1N5bmMsIGxzdGF0U3luYywgcmVhZGRpclN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7c3luYyBhcyBnbG9iU3luY30gZnJvbSAnZ2xvYic7XG5pbXBvcnQge2V4dG5hbWUgYXMgcGF0aEV4dG5hbWUsIGpvaW4gYXMgcGF0aEpvaW4sIHJlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtVUkx9IGZyb20gJ3VybCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjaGVja0xpbmtlZE1vZHVsZXMsIGNvcHlGaWxlcywgY3JlYXRlU3Bpbm5lciwgZ2V0RmlsZXNCeUV4dCwgcmVtb3ZlRmlsZXN9IGZyb20gJy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge3JlbGF0aXZlTm9kZVBhdGh9IGZyb20gJy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBjb25zdCBoYXNGaWxlVHlwZSA9IChzdGFydFBhdGg6IHN0cmluZywgZXh0OiBzdHJpbmdbXSk6IGJvb2xlYW4gPT4ge1xuICBpZighZXhpc3RzU3luYyhzdGFydFBhdGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZmlsZXM6IHN0cmluZ1tdID0gcmVhZGRpclN5bmMoc3RhcnRQYXRoKTtcblxuICByZXR1cm4gZmlsZXMuc29tZSgoZmlsZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgZmlsZW5hbWU6IHN0cmluZyA9IHBhdGhKb2luKHN0YXJ0UGF0aCwgZmlsZSk7XG4gICAgY29uc3QgZmlsZUV4dDogc3RyaW5nID0gcGF0aEV4dG5hbWUoZmlsZW5hbWUpO1xuICAgIGNvbnN0IHN0YXQgPSBsc3RhdFN5bmMoZmlsZW5hbWUpO1xuXG4gICAgaWYoc3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAvLyBSZWN1cnNpdmUgc2VhcmNoXG4gICAgICByZXR1cm4gaGFzRmlsZVR5cGUoZmlsZW5hbWUsIGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4dC5pbmNsdWRlcyhmaWxlRXh0KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29tcGlsZSA9IGFzeW5jIChjbWQ6IGFueSwgY2FsbGJhY2s6IGFueSA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBjb25maWcsIHF1aWV0LCByZW1vdmUsIHdhdGNofSA9IGNtZDtcblxuICAvLyBTcGlubmVyXG4gIGNvbnN0IHNwaW5uZXIgPSBjcmVhdGVTcGlubmVyKHF1aWV0KTtcblxuICAvLyBEaXNwbGF5IHN0YXR1c1xuICBsb2coYCR7Y2xpTmFtZX0gY29tcGlsaW5nLi4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIC8vIENvbXBpbGUgdHlwZVxuICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIHByZXNldCwgc291cmNlRnVsbFBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcbiAgY29uc3QgZGlyTmFtZSA9IG5ldyBVUkwoJy4nLCBpbXBvcnQubWV0YS51cmwpLnBhdGhuYW1lO1xuICBjb25zdCBkaXJQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4nKTtcblxuICAvLyBDaGVjayBmb3IgbGlua2VkIG1vZHVsZXNcbiAgY2hlY2tMaW5rZWRNb2R1bGVzKCk7XG5cbiAgLy8gQ2xlYW4gb3V0cHV0IGRpcmVjdG9yeSBiZWZvcmUgd2Ugc3RhcnQgYWRkaW5nIGluIG5ldyBmaWxlc1xuICBpZihyZW1vdmUpIHtcbiAgICBhd2FpdCByZW1vdmVGaWxlcyhvdXRwdXRGdWxsUGF0aCk7XG4gIH1cblxuICAvLyBBZGQgdHNjb25maWcgZmlsZSBpZiBub25lIGV4aXN0c1xuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgLy8gTWFrZSBzdXJlIHRzY29uZmlnLmpzb24gZXhpc3RzXG4gICAgTGV4Q29uZmlnLmNoZWNrVHlwZXNjcmlwdENvbmZpZygpO1xuXG4gICAgLy8gQ2hlY2sgc3RhdGljIHR5cGVzIHdpdGggdHlwZXNjcmlwdFxuICAgIGNvbnN0IHR5cGVzY3JpcHRQYXRoOiBzdHJpbmcgPSByZWxhdGl2ZU5vZGVQYXRoKCd0eXBlc2NyaXB0L2Jpbi90c2MnLCBkaXJQYXRoKTtcbiAgICBjb25zdCB0eXBlc2NyaXB0T3B0aW9uczogc3RyaW5nW10gPSBjb25maWcgP1xuICAgICAgWyctcCcsIGNvbmZpZ10gOlxuICAgICAgW1xuICAgICAgICAnLS1hbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzJyxcbiAgICAgICAgJy0tYmFzZVVybCcsIHNvdXJjZUZ1bGxQYXRoLFxuICAgICAgICAnLS1kZWNsYXJhdGlvbicsXG4gICAgICAgICctLWlubGluZVNvdXJjZU1hcCcsXG4gICAgICAgICctLWpzeCcsICdyZWFjdC1qc3gnLFxuICAgICAgICAnLS1saWInLCBbJ0VTNScsICdFUzYnLCAnRVMyMDE1JywgJ0VTNycsICdFUzIwMTYnLCAnRVMyMDE3JywgJ0VTMjAxOCcsICdFU05leHQnLCAnRE9NJ10sXG4gICAgICAgICctLW1vZHVsZScsICdlc25leHQnLFxuICAgICAgICAnLS1tb2R1bGVSZXNvbHV0aW9uJywgJ25vZGUnLFxuICAgICAgICAnLS1ub0ltcGxpY2l0UmV0dXJucycsXG4gICAgICAgICctLW5vSW1wbGljaXRUaGlzJyxcbiAgICAgICAgJy0tb3V0RGlyJywgb3V0cHV0RnVsbFBhdGgsXG4gICAgICAgICctLXJlbW92ZUNvbW1lbnRzJyxcbiAgICAgICAgJy0tcmVzb2x2ZUpzb25Nb2R1bGUnLFxuICAgICAgICAnLS1yb290RGlyJywgc291cmNlRnVsbFBhdGgsXG4gICAgICAgICctLXNvdXJjZVJvb3QnLCBzb3VyY2VGdWxsUGF0aCxcbiAgICAgICAgJy0tdGFyZ2V0JywgJ0VTNScsXG4gICAgICAgICctLXR5cGVSb290cycsIFsnbm9kZV9tb2R1bGVzL0B0eXBlcycsICdub2RlX21vZHVsZXMvanNvbi1kLXRzJ11cbiAgICAgIF07XG5cbiAgICBjb25zdCBkZWxjYXJhdGlvblByZXNldHMgPSBbXG4gICAgICAnd2ViJ1xuICAgIF07XG5cbiAgICBpZihkZWxjYXJhdGlvblByZXNldHMuaW5jbHVkZXMocHJlc2V0KSkge1xuICAgICAgdHlwZXNjcmlwdE9wdGlvbnMucHVzaCgnLS1lbWl0RGVjbGFyYXRpb25Pbmx5Jyk7XG4gICAgfVxuXG4gICAgLy8gU3RhcnQgdHlwZSBjaGVja2luZyBzcGlubmVyXG4gICAgc3Bpbm5lci5zdGFydCgnU3RhdGljIHR5cGUgY2hlY2tpbmcgd2l0aCBUeXBlc2NyaXB0Li4uJyk7XG5cbiAgICAvLyBUeXBlIGNoZWNraW5nXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGV4ZWNhKHR5cGVzY3JpcHRQYXRoLCB0eXBlc2NyaXB0T3B0aW9ucywge2VuY29kaW5nOiAndXRmOCd9KTtcblxuICAgICAgLy8gU3RvcCBzcGlubmVyXG4gICAgICBzcGlubmVyLnN1Y2NlZWQoJ1N1Y2Nlc3NmdWxseSBjb21wbGV0ZWQgdHlwZSBjaGVja2luZyEnKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgaWYoIXF1aWV0KSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICAgIHNwaW5uZXIuZmFpbCgnVHlwZSBjaGVja2luZyBmYWlsZWQuJyk7XG5cbiAgICAgIC8vIEtpbGwgUHJvY2Vzc1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICAvLyBTb3VyY2UgZmlsZXNcbiAgY29uc3QgZ2xvYk9wdGlvbnMgPSB7XG4gICAgY3dkOiBzb3VyY2VGdWxsUGF0aCxcbiAgICBkb3Q6IGZhbHNlLFxuICAgIG5vZGlyOiB0cnVlLFxuICAgIG5vc29ydDogdHJ1ZVxuICB9O1xuICBjb25zdCB0c0ZpbGVzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKGAke3NvdXJjZUZ1bGxQYXRofS8qKi8qKi8hKCouc3BlY3wqLnRlc3QpLnRzKmAsIGdsb2JPcHRpb25zKTtcbiAgY29uc3QganNGaWxlczogc3RyaW5nW10gPSBnbG9iU3luYyhgJHtzb3VyY2VGdWxsUGF0aH0vKiovKiovISgqLnNwZWN8Ki50ZXN0KS5qc2AsIGdsb2JPcHRpb25zKTtcbiAgY29uc3Qgc291cmNlRmlsZXM6IHN0cmluZ1tdID0gWy4uLnRzRmlsZXMsIC4uLmpzRmlsZXNdO1xuXG4gIC8vIEVTQnVpbGQgb3B0aW9uc1xuICBjb25zdCBlc2J1aWxkUGF0aDogc3RyaW5nID0gcmVsYXRpdmVOb2RlUGF0aCgnZXNidWlsZC9iaW4vZXNidWlsZCcsIGRpclBhdGgpO1xuICBjb25zdCBlc2J1aWxkT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgLi4uc291cmNlRmlsZXMsXG4gICAgJy0tY29sb3I9dHJ1ZScsXG4gICAgJy0tZm9ybWF0PWNqcycsXG4gICAgJy0tbG9hZGVyOi5qcz1qcycsXG4gICAgJy0tb3V0ZGlyPWxpYicsXG4gICAgJy0tcGxhdGZvcm09bm9kZScsXG4gICAgJy0tc291cmNlbWFwPWlubGluZScsXG4gICAgJy0tdGFyZ2V0PW5vZGUxOCdcbiAgXTtcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgZXNidWlsZE9wdGlvbnMucHVzaCgnLS1sb2FkZXI6LnRzPXRzJywgJy0tbG9hZGVyOi50c3g9dHN4Jyk7XG4gIH1cblxuICBpZih3YXRjaCkge1xuICAgIGVzYnVpbGRPcHRpb25zLnB1c2goJy0td2F0Y2gnKTtcbiAgfVxuXG4gIC8vIFVzZSBQb3N0Q1NTIGZvciBDU1MgZmlsZXNcbiAgY29uc3QgY3NzRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLmNzcycsIExleENvbmZpZy5jb25maWcpO1xuXG4gIGlmKGNzc0ZpbGVzLmxlbmd0aCkge1xuICAgIGNvbnN0IHBvc3Rjc3NQYXRoOiBzdHJpbmcgPSByZWxhdGl2ZU5vZGVQYXRoKCdwb3N0Y3NzLWNsaS9pbmRleC5qcycsIGRpclBhdGgpO1xuICAgIGNvbnN0IHBvc3Rjc3NPcHRpb25zOiBzdHJpbmdbXSA9IFtcbiAgICAgIGAke3NvdXJjZUZ1bGxQYXRofS8qKi8qKi5jc3NgLFxuICAgICAgJy0tYmFzZScsXG4gICAgICBzb3VyY2VGdWxsUGF0aCxcbiAgICAgICctLWRpcicsXG4gICAgICBvdXRwdXRGdWxsUGF0aCxcbiAgICAgICctLWNvbmZpZycsXG4gICAgICBwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vLnBvc3Rjc3NyYy5qcycpXG4gICAgXTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBleGVjYShwb3N0Y3NzUGF0aCwgcG9zdGNzc09wdGlvbnMsIHtlbmNvZGluZzogJ3V0ZjgnfSk7XG4gICAgICBzcGlubmVyLnN1Y2NlZWQoYFN1Y2Nlc3NmdWxseSBmb3JtYXR0ZWQgJHtjc3NGaWxlcy5sZW5ndGh9IGNzcyBmaWxlcyFgKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgLy8gU3RvcCBzcGlubmVyXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCBmb3JtYXR0aW5nIGNzcy4nKTtcblxuICAgICAgLy8gS2lsbCBQcm9jZXNzXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvcHkgaW1hZ2UgZmlsZXNcbiAgY29uc3QgZ2lmRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLmdpZicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBqcGdGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuanBnJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IHBuZ0ZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5wbmcnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgc3ZnRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLnN2ZycsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBpbWFnZUZpbGVzOiBzdHJpbmdbXSA9IFsuLi5naWZGaWxlcywgLi4uanBnRmlsZXMsIC4uLnBuZ0ZpbGVzLCAuLi5zdmdGaWxlc107XG5cbiAgaWYoaW1hZ2VGaWxlcy5sZW5ndGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29weUZpbGVzKGltYWdlRmlsZXMsICdpbWFnZScsIHNwaW5uZXIsIExleENvbmZpZy5jb25maWcpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIC8vIERpc3BsYXkgZXJyb3IgbWVzc2FnZVxuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIG1vdmUgaW1hZ2VzIHRvIG91dHB1dCBkaXJlY3RvcnkuJyk7XG5cbiAgICAgIC8vIEtpbGwgUHJvY2Vzc1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICAvLyBDb3B5IGZvbnQgZmlsZXNcbiAgY29uc3QgdHRmRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLnR0ZicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBvdGZGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcub3RmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IHdvZmZGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcud29mZicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCB3b2ZmMkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy53b2ZmMicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBmb250RmlsZXM6IHN0cmluZ1tdID0gWy4uLnR0ZkZpbGVzLCAuLi5vdGZGaWxlcywgLi4ud29mZkZpbGVzLCAuLi53b2ZmMkZpbGVzXTtcblxuICBpZihmb250RmlsZXMubGVuZ3RoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNvcHlGaWxlcyhmb250RmlsZXMsICdmb250Jywgc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgLy8gRGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gbW92ZSBmb250cyB0byBvdXRwdXQgZGlyZWN0b3J5LicpO1xuXG4gICAgICAvLyBLaWxsIFByb2Nlc3NcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29weSBtYXJrZG93biBmaWxlc1xuICBjb25zdCBtZEZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5tZCcsIExleENvbmZpZy5jb25maWcpO1xuXG4gIGlmKG1kRmlsZXMubGVuZ3RoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNvcHlGaWxlcyhtZEZpbGVzLCAnZG9jdW1lbnRzJywgc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgLy8gRGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gbW92ZSBkb2NzIHRvIG91dHB1dCBkaXJlY3RvcnkuJyk7XG5cbiAgICAgIC8vIEtpbGwgUHJvY2Vzc1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICAvLyBTdGFydCBjb21waWxlIHNwaW5uZXJcbiAgc3Bpbm5lci5zdGFydCh3YXRjaCA/ICdXYXRjaGluZyBmb3IgY2hhbmdlcy4uLicgOiAnQ29tcGlsaW5nIHdpdGggRVNCdWlsZC4uLicpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY2EoZXNidWlsZFBhdGgsIGVzYnVpbGRPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4J30pO1xuXG4gICAgLy8gU3RvcCBzcGlubmVyXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdDb21waWxlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJyk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICBpZighcXVpZXQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgIHNwaW5uZXIuZmFpbCgnQ29kZSBjb21waWxpbmcgZmFpbGVkLicpO1xuXG4gICAgLy8gS2lsbCBQcm9jZXNzXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvLyBTdG9wIHByb2Nlc3NcbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiAwO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLFNBQVEsYUFBWTtBQUNwQixTQUFRLFlBQVksV0FBVyxtQkFBa0I7QUFDakQsU0FBUSxRQUFRLGdCQUFlO0FBQy9CLFNBQVEsV0FBVyxhQUFhLFFBQVEsVUFBVSxXQUFXLG1CQUFrQjtBQUMvRSxTQUFRLFdBQVU7QUFFbEIsU0FBUSxpQkFBZ0I7QUFDeEIsU0FBUSxvQkFBb0IsV0FBVyxlQUFlLGVBQWUsbUJBQWtCO0FBQ3ZGLFNBQVEsd0JBQXVCO0FBQy9CLFNBQVEsV0FBVTtBQUVYLE1BQU0sY0FBYyxDQUFDLFdBQW1CLFFBQTJCO0FBQ3hFLE1BQUcsQ0FBQyxXQUFXLFNBQVMsR0FBRztBQUN6QixXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sUUFBa0IsWUFBWSxTQUFTO0FBRTdDLFNBQU8sTUFBTSxLQUFLLENBQUMsU0FBaUI7QUFDbEMsVUFBTSxXQUFtQixTQUFTLFdBQVcsSUFBSTtBQUNqRCxVQUFNLFVBQWtCLFlBQVksUUFBUTtBQUM1QyxVQUFNLE9BQU8sVUFBVSxRQUFRO0FBRS9CLFFBQUcsS0FBSyxZQUFZLEdBQUc7QUFFckIsYUFBTyxZQUFZLFVBQVUsR0FBRztBQUFBLElBQ2xDO0FBRUEsV0FBTyxJQUFJLFNBQVMsT0FBTztBQUFBLEVBQzdCLENBQUM7QUFDSDtBQUVPLE1BQU0sVUFBVSxPQUFPLEtBQVUsV0FBZ0IsT0FBTyxDQUFDLE9BQXdCO0FBQ3RGLFFBQU0sRUFBQyxVQUFVLE9BQU8sUUFBUSxPQUFPLFFBQVEs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
@@ -0,0 +1,93 @@
1
+ import { existsSync, readdirSync } from "fs";
2
+ import { compile, hasFileType } from "./compile.js";
3
+ import { LexConfig, defaultConfigValues } from "../LexConfig.js";
4
+ import { checkLinkedModules, removeFiles } from "../utils/app.js";
5
+ jest.mock("execa", () => ({
6
+ ...jest.requireActual("execa"),
7
+ execa: jest.fn(() => Promise.resolve({}))
8
+ }));
9
+ jest.mock("fs", () => ({
10
+ ...jest.requireActual("fs"),
11
+ existsSync: jest.fn(() => true),
12
+ lstatSync: jest.fn(() => ({
13
+ isDirectory: jest.fn(() => false)
14
+ })),
15
+ readdirSync: jest.fn(() => [])
16
+ }));
17
+ jest.mock("../utils/app", () => ({
18
+ ...jest.requireActual("../utils/app"),
19
+ checkLinkedModules: jest.fn(),
20
+ removeFiles: jest.fn(() => Promise.resolve()),
21
+ removeModules: jest.fn(() => Promise.resolve())
22
+ }));
23
+ jest.mock("../LexConfig", () => ({
24
+ LexConfig: {
25
+ config: {},
26
+ checkTypescriptConfig: jest.fn(),
27
+ parseConfig: jest.fn()
28
+ }
29
+ }));
30
+ describe("compile", () => {
31
+ let callback;
32
+ let oldConsole;
33
+ beforeAll(() => {
34
+ oldConsole = { ...console };
35
+ console = {
36
+ ...oldConsole,
37
+ debug: jest.fn(),
38
+ error: jest.fn(),
39
+ warn: jest.fn()
40
+ };
41
+ });
42
+ beforeEach(() => {
43
+ callback = jest.fn();
44
+ LexConfig.config = {
45
+ ...defaultConfigValues
46
+ };
47
+ });
48
+ afterAll(() => {
49
+ console = { ...oldConsole };
50
+ jest.resetAllMocks();
51
+ });
52
+ it("should clean using default config", async () => {
53
+ const status = await compile({}, callback);
54
+ expect(checkLinkedModules).toHaveBeenCalled();
55
+ expect(callback).toHaveBeenCalledWith(0);
56
+ expect(status).toBe(0);
57
+ });
58
+ it("should clean using config", async () => {
59
+ LexConfig.config = {
60
+ ...LexConfig.config,
61
+ useTypescript: true
62
+ };
63
+ const status = await compile({
64
+ remove: true
65
+ }, callback);
66
+ expect(checkLinkedModules).toHaveBeenCalled();
67
+ expect(removeFiles).toHaveBeenCalled();
68
+ expect(LexConfig.checkTypescriptConfig).toHaveBeenCalled();
69
+ expect(callback).toHaveBeenCalledWith(0);
70
+ expect(status).toBe(0);
71
+ });
72
+ describe("hasFileType", () => {
73
+ const filePath = "./";
74
+ it("should return false if path does not exist", () => {
75
+ existsSync.mockImplementation(() => false);
76
+ const status = hasFileType(filePath, [".js"]);
77
+ expect(status).toBe(false);
78
+ });
79
+ it("should return true if path has file type", () => {
80
+ existsSync.mockImplementation(() => true);
81
+ readdirSync.mockImplementation(() => ["test.js"]);
82
+ const status = hasFileType(filePath, [".js"]);
83
+ expect(status).toBe(true);
84
+ });
85
+ it("should return false if path does not have file type", () => {
86
+ existsSync.mockImplementation(() => true);
87
+ readdirSync.mockImplementation(() => ["test.css"]);
88
+ const status = hasFileType(filePath, [".js"]);
89
+ expect(status).toBe(false);
90
+ });
91
+ });
92
+ });
93
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NvbXBpbGUudGVzdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtleGlzdHNTeW5jLCByZWFkZGlyU3luY30gZnJvbSAnZnMnO1xuXG5pbXBvcnQge2NvbXBpbGUsIGhhc0ZpbGVUeXBlfSBmcm9tICcuL2NvbXBpbGUuanMnO1xuaW1wb3J0IHtMZXhDb25maWcsIGRlZmF1bHRDb25maWdWYWx1ZXN9IGZyb20gJy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NoZWNrTGlua2VkTW9kdWxlcywgcmVtb3ZlRmlsZXN9IGZyb20gJy4uL3V0aWxzL2FwcC5qcyc7XG5cbmplc3QubW9jaygnZXhlY2EnLCAoKSA9PiAoe1xuICAuLi5qZXN0LnJlcXVpcmVBY3R1YWwoJ2V4ZWNhJyksXG4gIGV4ZWNhOiBqZXN0LmZuKCgpID0+IFByb21pc2UucmVzb2x2ZSh7fSkpXG59KSk7XG5cbmplc3QubW9jaygnZnMnLCAoKSA9PiAoe1xuICAuLi5qZXN0LnJlcXVpcmVBY3R1YWwoJ2ZzJyksXG4gIGV4aXN0c1N5bmM6IGplc3QuZm4oKCkgPT4gdHJ1ZSksXG4gIGxzdGF0U3luYzogamVzdC5mbigoKSA9PiAoe1xuICAgIGlzRGlyZWN0b3J5OiBqZXN0LmZuKCgpID0+IGZhbHNlKVxuICB9KSksXG4gIHJlYWRkaXJTeW5jOiBqZXN0LmZuKCgpID0+IFtdKVxufSkpO1xuXG5qZXN0Lm1vY2soJy4uL3V0aWxzL2FwcCcsICgpID0+ICh7XG4gIC4uLmplc3QucmVxdWlyZUFjdHVhbCgnLi4vdXRpbHMvYXBwJyksXG4gIGNoZWNrTGlua2VkTW9kdWxlczogamVzdC5mbigpLFxuICByZW1vdmVGaWxlczogamVzdC5mbigoKSA9PiBQcm9taXNlLnJlc29sdmUoKSksXG4gIHJlbW92ZU1vZHVsZXM6IGplc3QuZm4oKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCkpXG59KSk7XG5cbmplc3QubW9jaygnLi4vTGV4Q29uZmlnJywgKCkgPT4gKHtcbiAgTGV4Q29uZmlnOiB7XG4gICAgY29uZmlnOiB7fSxcbiAgICBjaGVja1R5cGVzY3JpcHRDb25maWc6IGplc3QuZm4oKSxcbiAgICBwYXJzZUNvbmZpZzogamVzdC5mbigpXG4gIH1cbn0pKTtcblxuZGVzY3JpYmUoJ2NvbXBpbGUnLCAoKSA9PiB7XG4gIGxldCBjYWxsYmFjazogamVzdC5Nb2NrO1xuICBsZXQgb2xkQ29uc29sZTtcblxuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIG9sZENvbnNvbGUgPSB7Li4uY29uc29sZX07XG4gICAgY29uc29sZSA9IHtcbiAgICAgIC4uLm9sZENvbnNvbGUsXG4gICAgICBkZWJ1ZzogamVzdC5mbigpLFxuICAgICAgZXJyb3I6IGplc3QuZm4oKSxcbiAgICAgIHdhcm46IGplc3QuZm4oKVxuICAgIH07XG4gIH0pO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGNhbGxiYWNrID0gamVzdC5mbigpO1xuICAgIExleENvbmZpZy5jb25maWcgPSB7XG4gICAgICAuLi5kZWZhdWx0Q29uZmlnVmFsdWVzXG4gICAgfTtcbiAgfSk7XG5cbiAgYWZ0ZXJBbGwoKCkgPT4ge1xuICAgIGNvbnNvbGUgPSB7Li4ub2xkQ29uc29sZX07XG4gICAgamVzdC5yZXNldEFsbE1vY2tzKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2xlYW4gdXNpbmcgZGVmYXVsdCBjb25maWcnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc3RhdHVzOiBudW1iZXIgPSBhd2FpdCBjb21waWxlKHt9LCBjYWxsYmFjayk7XG4gICAgZXhwZWN0KGNoZWNrTGlua2VkTW9kdWxlcykudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIGV4cGVjdChjYWxsYmFjaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoMCk7XG4gICAgZXhwZWN0KHN0YXR1cykudG9CZSgwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjbGVhbiB1c2luZyBjb25maWcnLCBhc3luYyAoKSA9PiB7XG4gICAgTGV4Q29uZmlnLmNvbmZpZyA9IHtcbiAgICAgIC4uLkxleENvbmZpZy5jb25maWcsXG4gICAgICB1c2VUeXBlc2NyaXB0OiB0cnVlXG4gICAgfTtcbiAgICBjb25zdCBzdGF0dXM6IG51bWJlciA9IGF3YWl0IGNvbXBpbGUoe1xuICAgICAgcmVtb3ZlOiB0cnVlXG4gICAgfSwgY2FsbGJhY2spO1xuICAgIGV4cGVjdChjaGVja0xpbmtlZE1vZHVsZXMpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBleHBlY3QocmVtb3ZlRmlsZXMpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBleHBlY3QoTGV4Q29uZmlnLmNoZWNrVHlwZXNjcmlwdENvbmZpZykudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIGV4cGVjdChjYWxsYmFjaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoMCk7XG4gICAgZXhwZWN0KHN0YXR1cykudG9CZSgwKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2hhc0ZpbGVUeXBlJywgKCkgPT4ge1xuICAgIGNvbnN0IGZpbGVQYXRoID0gJy4vJztcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGlmIHBhdGggZG9lcyBub3QgZXhpc3QnLCAoKSA9PiB7XG4gICAgICAoZXhpc3RzU3luYyBhcyBqZXN0Lk1vY2spLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBmYWxzZSk7XG4gICAgICBjb25zdCBzdGF0dXM6IGJvb2xlYW4gPSBoYXNGaWxlVHlwZShmaWxlUGF0aCwgWycuanMnXSk7XG4gICAgICBleHBlY3Qoc3RhdHVzKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgaWYgcGF0aCBoYXMgZmlsZSB0eXBlJywgKCkgPT4ge1xuICAgICAgKGV4aXN0c1N5bmMgYXMgamVzdC5Nb2NrKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdHJ1ZSk7XG4gICAgICAocmVhZGRpclN5bmMgYXMgamVzdC5Nb2NrKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gWyd0ZXN0LmpzJ10pO1xuICAgICAgY29uc3Qgc3RhdHVzOiBib29sZWFuID0gaGFzRmlsZVR5cGUoZmlsZVBhdGgsIFsnLmpzJ10pO1xuICAgICAgZXhwZWN0KHN0YXR1cykudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGlmIHBhdGggZG9lcyBub3QgaGF2ZSBmaWxlIHR5cGUnLCAoKSA9PiB7XG4gICAgICAoZXhpc3RzU3luYyBhcyBqZXN0Lk1vY2spLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB0cnVlKTtcbiAgICAgIChyZWFkZGlyU3luYyBhcyBqZXN0Lk1vY2spLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBbJ3Rlc3QuY3NzJ10pO1xuICAgICAgY29uc3Qgc3RhdHVzOiBib29sZWFuID0gaGFzRmlsZVR5cGUoZmlsZVBhdGgsIFsnLmpzJ10pO1xuICAgICAgZXhwZWN0KHN0YXR1cykudG9CZShmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFRLFlBQVksbUJBQWtCO0FBRXRDLFNBQVEsU0FBUyxtQkFBa0I7QUFDbkMsU0FBUSxXQUFXLDJCQUEwQjtBQUM3QyxTQUFRLG9CQUFvQixtQkFBa0I7QUFFOUMsS0FBSyxLQUFLLFNBQVMsT0FBTztBQUFBLEVBQ3hCLEdBQUcsS0FBSyxjQUFjLE9BQU87QUFBQSxFQUM3QixPQUFPLEtBQUssR0FBRyxNQUFNLFFBQVEsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUMxQyxFQUFFO0FBRUYsS0FBSyxLQUFLLE1BQU0sT0FBTztBQUFBLEVBQ3JCLEdBQUcsS0FBSyxjQUFjLElBQUk7QUFBQSxFQUMxQixZQUFZLEtBQUssR0FBRyxNQUFNLElBQUk7QUFBQSxFQUM5QixXQUFXLEtBQUssR0FBRyxPQUFPO0FBQUEsSUFDeEIsYUFBYSxLQUFLLEdBQUcsTUFBTSxLQUFLO0FBQUEsRUFDbEMsRUFBRTtBQUFBLEVBQ0YsYUFBYSxLQUFLLEdBQUcsTUFBTSxDQUFDLENB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
@@ -1,6 +1,6 @@
1
1
  import { writeFileSync } from "fs";
2
2
  import startCase from "lodash/startCase.js";
3
- import * as path from "path";
3
+ import { relative as pathRelative } from "path";
4
4
  import { LexConfig } from "../LexConfig.js";
5
5
  import { createSpinner } from "../utils/app.js";
6
6
  import { log } from "../utils/log.js";
@@ -14,7 +14,7 @@ ${cliName} Error: Option for ${type} not found. Configurations only available fo
14
14
  return Promise.resolve(1);
15
15
  }
16
16
  log(`${cliName} generating configuration for ${startCase(type)}...`, "info", quiet);
17
- LexConfig.parseConfig(cmd);
17
+ await LexConfig.parseConfig(cmd);
18
18
  let configOptions;
19
19
  switch (type) {
20
20
  case "app":
@@ -32,7 +32,7 @@ ${cliName} Error: Option for ${type} not found. Configurations only available fo
32
32
  const spinner = createSpinner(quiet);
33
33
  spinner.start("Creating JSON output...");
34
34
  writeFileSync(json, jsonOutput);
35
- spinner.succeed(`Successfully saved JSON output to ${path.relative(process.cwd(), json)}`);
35
+ spinner.succeed(`Successfully saved JSON output to ${pathRelative(process.cwd(), json)}`);
36
36
  }
37
37
  callback(0);
38
38
  return Promise.resolve(0);
@@ -40,4 +40,4 @@ ${cliName} Error: Option for ${type} not found. Configurations only available fo
40
40
  export {
41
41
  config
42
42
  };
43
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7d3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHN0YXJ0Q2FzZSBmcm9tICdsb2Rhc2gvc3RhcnRDYXNlLmpzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBjb25zdCBjb25maWcgPSBhc3luYyAodHlwZTogc3RyaW5nLCBjbWQ6IGFueSwgY2FsbGJhY2s6IGFueSA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBqc29uLCBxdWlldH0gPSBjbWQ7XG4gIGNvbnN0IHZhbGlkVHlwZXM6IHN0cmluZ1tdID0gWydhcHAnLCAnamVzdCcsICd3ZWJwYWNrJ107XG5cbiAgaWYoIXZhbGlkVHlwZXMuaW5jbHVkZXModHlwZSkpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IE9wdGlvbiBmb3IgJHt0eXBlfSBub3QgZm91bmQuIENvbmZpZ3VyYXRpb25zIG9ubHkgYXZhaWxhYmxlIGZvciBhcHAsIGplc3QsIGFuZCB3ZWJwYWNrLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDEpO1xuICB9XG5cbiAgLy8gRGlzcGxheSBzdGF0dXNcbiAgbG9nKGAke2NsaU5hbWV9IGdlbmVyYXRpbmcgY29uZmlndXJhdGlvbiBmb3IgJHtzdGFydENhc2UodHlwZSl9Li4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIGxldCBjb25maWdPcHRpb25zO1xuXG4gIHN3aXRjaCh0eXBlKSB7XG4gICAgY2FzZSAnYXBwJzpcbiAgICAgIGNvbmZpZ09wdGlvbnMgPSBMZXhDb25maWcuY29uZmlnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnamVzdCc6XG4gICAgICBjb25maWdPcHRpb25zID0gaW1wb3J0KCcuLi8uLi9qZXN0LmNvbmZpZy5sZXgnKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3dlYnBhY2snOlxuICAgICAgY29uZmlnT3B0aW9ucyA9IGltcG9ydCgnLi4vLi4vd2VicGFjay5jb25maWcnKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgLy8gT3V0cHV0IGNvbmZpZyB0byBjb25zb2xlXG4gIGNvbnN0IGpzb25PdXRwdXQ6IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGNvbmZpZ09wdGlvbnMsIG51bGwsIDIpO1xuXG4gIGlmKGpzb24pIHtcbiAgICAvLyBTcGlubmVyXG4gICAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gICAgLy8gU3RhcnQgc3Bpbm5lclxuICAgIHNwaW5uZXIuc3RhcnQoJ0NyZWF0aW5nIEpTT04gb3V0cHV0Li4uJyk7XG5cbiAgICAvLyBTYXZlIGpzb24gbG9jYWxseVxuICAgIHdyaXRlRmlsZVN5bmMoanNvbiwganNvbk91dHB1dCk7XG5cbiAgICAvLyBTdWNjZXNzIHNwaW5uZXJcbiAgICBzcGlubmVyLnN1Y2NlZWQoYFN1Y2Nlc3NmdWxseSBzYXZlZCBKU09OIG91dHB1dCB0byAke3BhdGgucmVsYXRpdmUocHJvY2Vzcy5jd2QoKSwganNvbil9YCk7XG4gIH1cblxuICBjYWxsYmFjaygwKTtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgwKTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxTQUFRLHFCQUFvQjtBQUM1QixPQUFPLGVBQWU7QUFDdEIsWUFBWSxVQUFVO0FBRXRCLFNBQVEsaUJBQWdCO0FBQ3hCLFNBQVEscUJBQW9CO0FBQzVCLFNBQVEsV0FBVTtBQUVYLE1BQU0sU0FBUyxPQUFPLE1BQWMsS0FBVSxXQUFnQixPQUFPLENBQUMsT0FBd0I7QUFDbkcsUUFBTSxFQUFDLFVBQVUsT0FBTyxNQUFNLE1BQUssSUFBSTtBQUN2QyxRQUFNLGFBQXVCLENBQUMsT0FBTyxRQUFRLFNBQVM7QUFFdEQsTUFBRyxDQUFDLFdBQVcsU0FBUyxJQUFJLEdBQUc7QUFDN0IsUUFBSTtBQUFBLEVBQUssNkJBQTZCLDZFQUE2RSxTQUFTLEtBQUs7QUFDakksYUFBUyxDQUFDO0FBQ1YsV0FBTyxRQUFRLFFBQVEsQ0FBQztBQUFBLEVBQzFCO0FBR0EsTUFBSSxHQUFHLHdDQUF3QyxVQUFVLElBQUksUUFBUSxRQUFRLEtBQUs7QUFHbEYsWUFBVSxZQUFZLEdBQUc7QUFFekIsTUFBSTtBQUVKLFVBQU8sTUFBTTtBQUFBLElBQ1gsS0FBSztBQUNILHNCQUFnQixVQUFVO0FBQzFCO0FBQUEsSUFDRixLQUFLO0FBQ0gsc0JBQWdCLE9BQU8sdUJBQXVCO0FBQzlDO0FBQUEsSUFDRixLQUFLO0FBQ0gsc0JBQWdCLE9BQU8sc0JBQXNCO0FBQzdDO0FBQUEsRUFDSjtBQUdBLFFBQU0sYUFBcUIsS0FBSyxVQUFVLGVBQWUsTUFBTSxDQUFDO0FBRWhFLE1BQUcsTUFBTTtBQUVQLFVBQU0sVUFBVSxjQUFjLEtBQUs7QUFHbkMsWUFBUSxNQUFNLHlCQUF5QjtBQUd2QyxrQkFBYyxNQUFNLFVBQVU7QUFHOUIsWUFBUSxRQUFRLHFDQUFxQyxLQUFLLFNBQVMsUUFBUSxJQUFJLEdBQUcsSUFBSSxHQUFHO0FBQUEsRUFDM0Y7QUFFQSxXQUFTLENBQUM7QUFDVixTQUFPLFFBQVEsUUFBUSxDQUFDO0FBQzFCOyIsCiAgIm5hbWVzIjogW10KfQo=
43
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7d3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHN0YXJ0Q2FzZSBmcm9tICdsb2Rhc2gvc3RhcnRDYXNlLmpzJztcbmltcG9ydCB7cmVsYXRpdmUgYXMgcGF0aFJlbGF0aXZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNwaW5uZXJ9IGZyb20gJy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGNvbnN0IGNvbmZpZyA9IGFzeW5jICh0eXBlOiBzdHJpbmcsIGNtZDogYW55LCBjYWxsYmFjazogYW55ID0gKCkgPT4gKHt9KSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIGpzb24sIHF1aWV0fSA9IGNtZDtcbiAgY29uc3QgdmFsaWRUeXBlczogc3RyaW5nW10gPSBbJ2FwcCcsICdqZXN0JywgJ3dlYnBhY2snXTtcblxuICBpZighdmFsaWRUeXBlcy5pbmNsdWRlcyh0eXBlKSkge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogT3B0aW9uIGZvciAke3R5cGV9IG5vdCBmb3VuZC4gQ29uZmlndXJhdGlvbnMgb25seSBhdmFpbGFibGUgZm9yIGFwcCwgamVzdCwgYW5kIHdlYnBhY2suYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoMSk7XG4gIH1cblxuICAvLyBEaXNwbGF5IHN0YXR1c1xuICBsb2coYCR7Y2xpTmFtZX0gZ2VuZXJhdGluZyBjb25maWd1cmF0aW9uIGZvciAke3N0YXJ0Q2FzZSh0eXBlKX0uLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICAvLyBHZXQgY3VzdG9tIGNvbmZpZ3VyYXRpb25cbiAgYXdhaXQgTGV4Q29uZmlnLnBhcnNlQ29uZmlnKGNtZCk7XG5cbiAgbGV0IGNvbmZpZ09wdGlvbnM7XG5cbiAgc3dpdGNoKHR5cGUpIHtcbiAgICBjYXNlICdhcHAnOlxuICAgICAgY29uZmlnT3B0aW9ucyA9IExleENvbmZpZy5jb25maWc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdqZXN0JzpcbiAgICAgIGNvbmZpZ09wdGlvbnMgPSBpbXBvcnQoJy4uLy4uL2plc3QuY29uZmlnLmxleCcpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnd2VicGFjayc6XG4gICAgICBjb25maWdPcHRpb25zID0gaW1wb3J0KCcuLi8uLi93ZWJwYWNrLmNvbmZpZycpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICAvLyBPdXRwdXQgY29uZmlnIHRvIGNvbnNvbGVcbiAgY29uc3QganNvbk91dHB1dDogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoY29uZmlnT3B0aW9ucywgbnVsbCwgMik7XG5cbiAgaWYoanNvbikge1xuICAgIC8vIFNwaW5uZXJcbiAgICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgICAvLyBTdGFydCBzcGlubmVyXG4gICAgc3Bpbm5lci5zdGFydCgnQ3JlYXRpbmcgSlNPTiBvdXRwdXQuLi4nKTtcblxuICAgIC8vIFNhdmUganNvbiBsb2NhbGx5XG4gICAgd3JpdGVGaWxlU3luYyhqc29uLCBqc29uT3V0cHV0KTtcblxuICAgIC8vIFN1Y2Nlc3Mgc3Bpbm5lclxuICAgIHNwaW5uZXIuc3VjY2VlZChgU3VjY2Vzc2Z1bGx5IHNhdmVkIEpTT04gb3V0cHV0IHRvICR7cGF0aFJlbGF0aXZlKHByb2Nlc3MuY3dkKCksIGpzb24pfWApO1xuICB9XG5cbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoMCk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxxQkFBb0I7QUFDNUIsT0FBTyxlQUFlO0FBQ3RCLFNBQVEsWUFBWSxvQkFBbUI7QUFFdkMsU0FBUSxpQkFBZ0I7QUFDeEIsU0FBUSxxQkFBb0I7QUFDNUIsU0FBUSxXQUFVO0FBRVgsTUFBTSxTQUFTLE9BQU8sTUFBYyxLQUFVLFdBQWdCLE9BQU8sQ0FBQyxPQUF3QjtBQUNuRyxRQUFNLEVBQUMsVUFBVSxPQUFPLE1BQU0sTUFBSyxJQUFJO0FBQ3ZDLFFBQU0sYUFBdUIsQ0FBQyxPQUFPLFFBQVEsU0FBUztBQUV0RCxNQUFHLENBQUMsV0FBVyxTQUFTLElBQUksR0FBRztBQUM3QixRQUFJO0FBQUEsRUFBSyxPQUFPLHNCQUFzQixJQUFJLHlFQUF5RSxTQUFTLEtBQUs7QUFDakksYUFBUyxDQUFDO0FBQ1YsV0FBTyxRQUFRLFFBQVEsQ0FBQztBQUFBLEVBQzFCO0FBR0EsTUFBSSxHQUFHLE9BQU8saUNBQWlDLFVBQVUsSUFBSSxDQUFDLE9BQU8sUUFBUSxLQUFLO0FBR2xGLFFBQU0sVUFBVSxZQUFZLEdBQUc7QUFFL0IsTUFBSTtBQUVKLFVBQU8sTUFBTTtBQUFBLElBQ1gsS0FBSztBQUNILHNCQUFnQixVQUFVO0FBQzFCO0FBQUEsSUFDRixLQUFLO0FBQ0gsc0JBQWdCLE9BQU8sdUJBQXVCO0FBQzlDO0FBQUEsSUFDRixLQUFLO0FBQ0gsc0JBQWdCLE9BQU8sc0JBQXNCO0FBQzdDO0FBQUEsRUFDSjtBQUdBLFFBQU0sYUFBcUIsS0FBSyxVQUFVLGVBQWUsTUFBTSxDQUFDO0FBRWhFLE1BQUcsTUFBTTtBQUVQLFVBQU0sVUFBVSxjQUFjLEtBQUs7QUFHbkMsWUFBUSxNQUFNLHlCQUF5QjtBQUd2QyxrQkFBYyxNQUFNLFVBQVU7QUFHOUIsWUFBUSxRQUFRLHFDQUFxQyxhQUFhLFFBQVEsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFO0FBQUEsRUFDMUY7QUFFQSxXQUFTLENBQUM7QUFDVixTQUFPLFFBQVEsUUFBUSxDQUFDO0FBQzFCOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -35,4 +35,4 @@ ${cliName} Error: Cannot copy "${from}" ${error.message}`, "error", quiet);
35
35
  export {
36
36
  copy
37
37
  };
38
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NvcHkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4aXN0c1N5bmMsIGxzdGF0U3luY30gZnJvbSAnZnMnO1xuXG5pbXBvcnQge2NvcHlGaWxlU3luYywgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmN9IGZyb20gJy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGNvbnN0IGNvcHkgPSAoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBjbWQ6IGFueSwgY2FsbGJhY2s6IGFueSA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBxdWlldH0gPSBjbWQ7XG5cbiAgLy8gRGlzcGxheSBtZXNzYWdlXG4gIGxvZyhgJHtjbGlOYW1lfSBjb3B5aW5nIFwiJHt0b31cIi4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGlmKCFleGlzdHNTeW5jKGZyb20pKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBQYXRoIG5vdCBmb3VuZCwgXCIke2Zyb219XCIuLi5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgxKTtcbiAgfVxuXG4gIGlmKGxzdGF0U3luYyhmcm9tKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENvcHkgZGlyZWN0b3J5XG4gICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhmcm9tLCB0byk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY29weSBcIiR7ZnJvbX1cIi4gJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgxKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENvcHkgZmlsZVxuICAgICAgY29weUZpbGVTeW5jKGZyb20sIHRvKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjb3B5IFwiJHtmcm9tfVwiICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoMCk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxZQUFZLGlCQUFnQjtBQUVwQyxTQUFRLGNBQWMsK0JBQThCO0FBQ3BELFNBQVEsV0FBVTtBQUVYLE1BQU0sT0FBTyxDQUFDLE1BQWMsSUFBWSxLQUFVLFdBQWdCLE9BQU8sQ0FBQyxPQUF3QjtBQUN2RyxRQUFNLEVBQUMsVUFBVSxPQUFPLE1BQUssSUFBSTtBQUdqQyxNQUFJLEdBQUcsb0JBQW9CLFVBQVUsUUFBUSxLQUFLO0FBRWxELE1BQUcsQ0FBQyxXQUFXLElBQUksR0FBRztBQUNwQixRQUFJO0FBQUEsRUFBSyxtQ0FBbUMsWUFBWSxTQUFTLEtBQUs7QUFDdEUsYUFBUyxDQUFDO0FBQ1YsV0FBTyxRQUFRLFFBQVEsQ0FBQztBQUFBLEVBQzFCO0FBRUEsTUFBRyxVQUFVLElBQUksRUFBRSxZQUFZLEdBQUc7QUFDaEMsUUFBSTtBQUVGLDhCQUF3QixNQUFNLEVBQUU7QUFBQSxJQUNsQyxTQUFRLE9BQU47QUFDQSxVQUFJO0FBQUEsRUFBSywrQkFBK0IsVUFBVSxNQUFNLFdBQVcsU0FBUyxLQUFLO0FBQ2pGLGVBQVMsQ0FBQztBQUNWLGFBQU8sUUFBUSxRQUFRLENBQUM7QUFBQSxJQUMxQjtBQUFBLEVBQ0YsT0FBTztBQUNMLFFBQUk7QUFFRixtQkFBYSxNQUFNLEVBQUU7QUFBQSxJQUN2QixTQUFRLE9BQU47QUFDQSxVQUFJO0FBQUEsRUFBSywrQkFBK0IsU0FBUyxNQUFNLFdBQVcsU0FBUyxLQUFLO0FBQ2hGLGVBQVMsQ0FBQztBQUNWLGFBQU8sUUFBUSxRQUFRLENBQUM7QUFBQSxJQUMxQjtBQUFBLEVBQ0Y7QUFFQSxXQUFTLENBQUM7QUFDVixTQUFPLFFBQVEsUUFBUSxDQUFDO0FBQzFCOyIsCiAgIm5hbWVzIjogW10KfQo=
38
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NvcHkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4aXN0c1N5bmMsIGxzdGF0U3luY30gZnJvbSAnZnMnO1xuXG5pbXBvcnQge2NvcHlGaWxlU3luYywgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmN9IGZyb20gJy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGNvbnN0IGNvcHkgPSAoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBjbWQ6IGFueSwgY2FsbGJhY2s6IGFueSA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBxdWlldH0gPSBjbWQ7XG5cbiAgLy8gRGlzcGxheSBtZXNzYWdlXG4gIGxvZyhgJHtjbGlOYW1lfSBjb3B5aW5nIFwiJHt0b31cIi4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGlmKCFleGlzdHNTeW5jKGZyb20pKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBQYXRoIG5vdCBmb3VuZCwgXCIke2Zyb219XCIuLi5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgxKTtcbiAgfVxuXG4gIGlmKGxzdGF0U3luYyhmcm9tKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENvcHkgZGlyZWN0b3J5XG4gICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhmcm9tLCB0byk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY29weSBcIiR7ZnJvbX1cIi4gJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgxKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENvcHkgZmlsZVxuICAgICAgY29weUZpbGVTeW5jKGZyb20sIHRvKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjb3B5IFwiJHtmcm9tfVwiICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoMCk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxZQUFZLGlCQUFnQjtBQUVwQyxTQUFRLGNBQWMsK0JBQThCO0FBQ3BELFNBQVEsV0FBVTtBQUVYLE1BQU0sT0FBTyxDQUFDLE1BQWMsSUFBWSxLQUFVLFdBQWdCLE9BQU8sQ0FBQyxPQUF3QjtBQUN2RyxRQUFNLEVBQUMsVUFBVSxPQUFPLE1BQUssSUFBSTtBQUdqQyxNQUFJLEdBQUcsT0FBTyxhQUFhLEVBQUUsUUFBUSxRQUFRLEtBQUs7QUFFbEQsTUFBRyxDQUFDLFdBQVcsSUFBSSxHQUFHO0FBQ3BCLFFBQUk7QUFBQSxFQUFLLE9BQU8sNEJBQTRCLElBQUksUUFBUSxTQUFTLEtBQUs7QUFDdEUsYUFBUyxDQUFDO0FBQ1YsV0FBTyxRQUFRLFFBQVEsQ0FBQztBQUFBLEVBQzFCO0FBRUEsTUFBRyxVQUFVLElBQUksRUFBRSxZQUFZLEdBQUc7QUFDaEMsUUFBSTtBQUVGLDhCQUF3QixNQUFNLEVBQUU7QUFBQSxJQUNsQyxTQUFRLE9BQU87QUFDYixVQUFJO0FBQUEsRUFBSyxPQUFPLHdCQUF3QixJQUFJLE1BQU0sTUFBTSxPQUFPLElBQUksU0FBUyxLQUFLO0FBQ2pGLGVBQVMsQ0FBQztBQUNWLGFBQU8sUUFBUSxRQUFRLENBQUM7QUFBQSxJQUMxQjtBQUFBLEVBQ0YsT0FBTztBQUNMLFFBQUk7QUFFRixtQkFBYSxNQUFNLEVBQUU7QUFBQSxJQUN2QixTQUFRLE9BQU87QUFDYixVQUFJO0FBQUEsRUFBSyxPQUFPLHdCQUF3QixJQUFJLEtBQUssTUFBTSxPQUFPLElBQUksU0FBUyxLQUFLO0FBQ2hGLGVBQVMsQ0FBQztBQUNWLGFBQU8sUUFBUSxRQUFRLENBQUM7QUFBQSxJQUMxQjtBQUFBLEVBQ0Y7QUFFQSxXQUFTLENBQUM7QUFDVixTQUFPLFFBQVEsUUFBUSxDQUFDO0FBQzFCOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -1,6 +1,6 @@
1
1
  import { existsSync, readFileSync, renameSync, writeFileSync } from "fs";
2
- import * as path from "path";
3
- import { fileURLToPath } from "url";
2
+ import { resolve as pathResolve } from "path";
3
+ import { URL } from "url";
4
4
  import { createChangelog } from "../create/changelog.js";
5
5
  import { LexConfig } from "../LexConfig.js";
6
6
  import { copyFolderRecursiveSync, getFilenames, removeFiles, updateTemplateName } from "../utils/app.js";
@@ -9,13 +9,13 @@ const create = async (type, cmd, callback = () => ({})) => {
9
9
  const { cliName = "Lex", outputFile, outputName, quiet } = cmd;
10
10
  const cwd = process.cwd();
11
11
  log(`${cliName} creating ${type}...`, "info", quiet);
12
- LexConfig.parseConfig(cmd, false);
12
+ await LexConfig.parseConfig(cmd, false);
13
13
  const { outputPath, sourcePath, useTypescript } = LexConfig.config;
14
14
  if (useTypescript) {
15
15
  LexConfig.checkTypescriptConfig();
16
16
  }
17
17
  const { config } = LexConfig;
18
- const dirName = fileURLToPath(new URL(".", import.meta.url));
18
+ const dirName = new URL(".", import.meta.url).pathname;
19
19
  switch (type) {
20
20
  case "changelog": {
21
21
  const statusChangelog = await createChangelog({ cliName, config, outputFile, quiet });
@@ -33,7 +33,7 @@ const create = async (type, cmd, callback = () => ({})) => {
33
33
  });
34
34
  const storePath = `${cwd}/${nameCaps}Store`;
35
35
  if (!existsSync(storePath)) {
36
- copyFolderRecursiveSync(path.resolve(dirName, templatePath, "./.SampleStore"), cwd);
36
+ copyFolderRecursiveSync(pathResolve(dirName, templatePath, "./.SampleStore"), cwd);
37
37
  renameSync(`${cwd}/.SampleStore`, storePath);
38
38
  const storeTestPath = `${storePath}/${nameCaps}Store.test${templateExt}`;
39
39
  renameSync(`${storePath}/SampleStore.test${templateExt}.txt`, storeTestPath);
@@ -57,11 +57,11 @@ ${cliName} Error: Cannot create new ${type}. ${error.message}`, "error", quiet);
57
57
  }
58
58
  case "tsconfig": {
59
59
  await removeFiles("tsconfig.json", true);
60
- const templatePath = path.resolve(dirName, "../../tsconfig.template.json");
60
+ const templatePath = pathResolve(dirName, "../../tsconfig.template.json");
61
61
  let data = readFileSync(templatePath, "utf8");
62
62
  data = data.replace(/.\/src/g, sourcePath);
63
63
  data = data.replace(/.\/dist/g, outputPath);
64
- const destPath = path.resolve(cwd, "./tsconfig.json");
64
+ const destPath = pathResolve(cwd, "./tsconfig.json");
65
65
  writeFileSync(destPath, data, "utf8");
66
66
  break;
67
67
  }
@@ -76,7 +76,7 @@ ${cliName} Error: Cannot create new ${type}. ${error.message}`, "error", quiet);
76
76
  const viewPath = `${cwd}/${nameCaps}View`;
77
77
  try {
78
78
  if (!existsSync(viewPath)) {
79
- copyFolderRecursiveSync(path.resolve(dirName, templatePath, "./.SampleView"), cwd);
79
+ copyFolderRecursiveSync(pathResolve(dirName, templatePath, "./.SampleView"), cwd);
80
80
  renameSync(`${cwd}/.SampleView`, viewPath);
81
81
  const viewStylePath = `${viewPath}/${outputName}View.css`;
82
82
  renameSync(`${viewPath}/sampleView.css`, viewStylePath);
@@ -103,7 +103,7 @@ ${cliName} Error: Cannot create new ${type}. ${error.message}`, "error", quiet);
103
103
  }
104
104
  case "vscode": {
105
105
  await removeFiles(".vscode", true);
106
- copyFolderRecursiveSync(path.resolve(dirName, "../../.vscode"), cwd);
106
+ copyFolderRecursiveSync(pathResolve(dirName, "../../.vscode"), cwd);
107
107
  break;
108
108
  }
109
109
  }
@@ -113,4 +113,4 @@ ${cliName} Error: Cannot create new ${type}. ${error.message}`, "error", quiet);
113
113
  export {
114
114
  create
115
115
  };
116
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NyZWF0ZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCByZW5hbWVTeW5jLCB3cml0ZUZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtmaWxlVVJMVG9QYXRofSBmcm9tICd1cmwnO1xuXG5pbXBvcnQge2NyZWF0ZUNoYW5nZWxvZ30gZnJvbSAnLi4vY3JlYXRlL2NoYW5nZWxvZy5qcyc7XG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y29weUZvbGRlclJlY3Vyc2l2ZVN5bmMsIGdldEZpbGVuYW1lcywgcmVtb3ZlRmlsZXMsIHVwZGF0ZVRlbXBsYXRlTmFtZX0gZnJvbSAnLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi91dGlscy9sb2cuanMnO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlID0gYXN5bmMgKHR5cGU6IHN0cmluZywgY21kOiBhbnksIGNhbGxiYWNrOiBhbnkgPSAoKSA9PiAoe30pKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge2NsaU5hbWUgPSAnTGV4Jywgb3V0cHV0RmlsZSwgb3V0cHV0TmFtZSwgcXVpZXR9ID0gY21kO1xuICBjb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG4gIGxvZyhgJHtjbGlOYW1lfSBjcmVhdGluZyAke3R5cGV9Li4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQsIGZhbHNlKTtcbiAgY29uc3Qge291dHB1dFBhdGgsIHNvdXJjZVBhdGgsIHVzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgLy8gTWFrZSBzdXJlIHRzY29uZmlnLmpzb24gZXhpc3RzXG4gICAgTGV4Q29uZmlnLmNoZWNrVHlwZXNjcmlwdENvbmZpZygpO1xuICB9XG5cbiAgY29uc3Qge2NvbmZpZ30gPSBMZXhDb25maWc7XG4gIGNvbnN0IGRpck5hbWUgPSBmaWxlVVJMVG9QYXRoKG5ldyBVUkwoJy4nLCBpbXBvcnQubWV0YS51cmwpKTtcblxuICBzd2l0Y2godHlwZSkge1xuICAgIGNhc2UgJ2NoYW5nZWxvZyc6IHtcbiAgICAgIGNvbnN0IHN0YXR1c0NoYW5nZWxvZzogbnVtYmVyID0gYXdhaXQgY3JlYXRlQ2hhbmdlbG9nKHtjbGlOYW1lLCBjb25maWcsIG91dHB1dEZpbGUsIHF1aWV0fSk7XG4gICAgICBjYWxsYmFjayhzdGF0dXNDaGFuZ2Vsb2cpO1xuICAgICAgcmV0dXJuIHN0YXR1c0NoYW5nZWxvZztcbiAgICB9XG4gICAgY2FzZSAnc3RvcmUnOiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB7bmFtZUNhcHMsIHRlbXBsYXRlRXh0LCB0ZW1wbGF0ZVBhdGh9ID0gZ2V0RmlsZW5hbWVzKHtcbiAgICAgICAgICBjbGlOYW1lLFxuICAgICAgICAgIG5hbWU6IG91dHB1dE5hbWUsXG4gICAgICAgICAgcXVpZXQsXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICB1c2VUeXBlc2NyaXB0XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzdG9yZVBhdGg6IHN0cmluZyA9IGAke2N3ZH0vJHtuYW1lQ2Fwc31TdG9yZWA7XG5cbiAgICAgICAgaWYoIWV4aXN0c1N5bmMoc3RvcmVQYXRoKSkge1xuICAgICAgICAgIC8vIENvcHkgc3RvcmUgZmlsZXNcbiAgICAgICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhwYXRoLnJlc29sdmUoZGlyTmFtZSwgdGVtcGxhdGVQYXRoLCAnLi8uU2FtcGxlU3RvcmUnKSwgY3dkKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBkaXJlY3RvcnlcbiAgICAgICAgICByZW5hbWVTeW5jKGAke2N3ZH0vLlNhbXBsZVN0b3JlYCwgc3RvcmVQYXRoKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSB0ZXN0XG4gICAgICAgICAgY29uc3Qgc3RvcmVUZXN0UGF0aDogc3RyaW5nID0gYCR7c3RvcmVQYXRofS8ke25hbWVDYXBzfVN0b3JlLnRlc3Qke3RlbXBsYXRlRXh0fWA7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHtzdG9yZVBhdGh9L1NhbXBsZVN0b3JlLnRlc3Qke3RlbXBsYXRlRXh0fS50eHRgLCBzdG9yZVRlc3RQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSBzdG9yZSBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHN0b3JlVGVzdFBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBzb3VyY2UgZmlsZVxuICAgICAgICAgIGNvbnN0IHN0b3JlRmlsZVBhdGg6IHN0cmluZyA9IGAke3N0b3JlUGF0aH0vJHtuYW1lQ2Fwc31TdG9yZSR7dGVtcGxhdGVFeHR9YDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3N0b3JlUGF0aH0vU2FtcGxlU3RvcmUke3RlbXBsYXRlRXh0fS50eHRgLCBzdG9yZUZpbGVQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSBzdG9yZSBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHN0b3JlRmlsZVBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uIERpcmVjdG9yeSwgJHtzdG9yZVBhdGh9IGFscmVhZHkgZXhpc3RzLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICd0c2NvbmZpZyc6IHtcbiAgICAgIC8vIFJlbW92ZSBleGlzdGluZyBmaWxlXG4gICAgICBhd2FpdCByZW1vdmVGaWxlcygndHNjb25maWcuanNvbicsIHRydWUpO1xuXG4gICAgICAvLyBHZXQgdHNjb25maWcgdGVtcGxhdGVcbiAgICAgIGNvbnN0IHRlbXBsYXRlUGF0aDogc3RyaW5nID0gcGF0aC5yZXNvbHZlKGRpck5hbWUsICcuLi8uLi90c2NvbmZpZy50ZW1wbGF0ZS5qc29uJyk7XG4gICAgICBsZXQgZGF0YTogc3RyaW5nID0gcmVhZEZpbGVTeW5jKHRlbXBsYXRlUGF0aCwgJ3V0ZjgnKTtcblxuICAgICAgLy8gVXBkYXRlIExleCB0c2NvbmZpZyB0ZW1wbGF0ZSB3aXRoIHNvdXJjZSBhbmQgb3V0cHV0IGRpcmVjdG9yaWVzXG4gICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKC8uXFwvc3JjL2csIHNvdXJjZVBhdGgpO1xuICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgvLlxcL2Rpc3QvZywgb3V0cHV0UGF0aCk7XG5cbiAgICAgIC8vIFNhdmUgbmV3IHRzY29uZmlnIHRvIGFwcFxuICAgICAgY29uc3QgZGVzdFBhdGg6IHN0cmluZyA9IHBhdGgucmVzb2x2ZShjd2QsICcuL3RzY29uZmlnLmpzb24nKTtcbiAgICAgIHdyaXRlRmlsZVN5bmMoZGVzdFBhdGgsIGRhdGEsICd1dGY4Jyk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAndmlldyc6IHtcbiAgICAgIGNvbnN0IHtuYW1lQ2FwcywgdGVtcGxhdGVQYXRoLCB0ZW1wbGF0ZVJlYWN0fSA9IGdldEZpbGVuYW1lcyh7XG4gICAgICAgIGNsaU5hbWUsXG4gICAgICAgIG5hbWU6IG91dHB1dE5hbWUsXG4gICAgICAgIHF1aWV0LFxuICAgICAgICB0eXBlLFxuICAgICAgICB1c2VUeXBlc2NyaXB0XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHZpZXdQYXRoOiBzdHJpbmcgPSBgJHtjd2R9LyR7bmFtZUNhcHN9Vmlld2A7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlmKCFleGlzdHNTeW5jKHZpZXdQYXRoKSkge1xuICAgICAgICAgIC8vIENvcHkgdmlldyBmaWxlc1xuICAgICAgICAgIGNvcHlGb2xkZXJSZWN1cnNpdmVTeW5jKHBhdGgucmVzb2x2ZShkaXJOYW1lLCB0ZW1wbGF0ZVBhdGgsICcuLy5TYW1wbGVWaWV3JyksIGN3ZCk7XG5cbiAgICAgICAgICAvLyBSZW5hbWUgZGlyZWN0b3J5XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHtjd2R9Ly5TYW1wbGVWaWV3YCwgdmlld1BhdGgpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIENTU1xuICAgICAgICAgIGNvbnN0IHZpZXdTdHlsZVBhdGg6IHN0cmluZyA9IGAke3ZpZXdQYXRofS8ke291dHB1dE5hbWV9Vmlldy5jc3NgO1xuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7dmlld1BhdGh9L3NhbXBsZVZpZXcuY3NzYCwgdmlld1N0eWxlUGF0aCk7XG5cbiAgICAgICAgICAvLyBTZWFyY2ggYW5kIHJlcGxhY2UgdmlldyBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHZpZXdTdHlsZVBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSB0ZXN0XG4gICAgICAgICAgY29uc3Qgdmlld1Rlc3RQYXRoOiBzdHJpbmcgPSBgJHt2aWV3UGF0aH0vJHtuYW1lQ2Fwc31WaWV3LnRlc3Qke3RlbXBsYXRlUmVhY3R9YDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3ZpZXdQYXRofS9TYW1wbGVWaWV3LnRlc3Qke3RlbXBsYXRlUmVhY3R9LnR4dGAsIHZpZXdUZXN0UGF0aCk7XG5cbiAgICAgICAgICAvLyBTZWFyY2ggYW5kIHJlcGxhY2UgdmlldyBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHZpZXdUZXN0UGF0aCwgb3V0cHV0TmFtZSwgbmFtZUNhcHMpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIHNvdXJjZSBmaWxlXG4gICAgICAgICAgY29uc3Qgdmlld0ZpbGVQYXRoOiBzdHJpbmcgPSBgJHt2aWV3UGF0aH0vJHtuYW1lQ2Fwc31WaWV3JHt0ZW1wbGF0ZVJlYWN0fWA7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHt2aWV3UGF0aH0vU2FtcGxlVmlldyR7dGVtcGxhdGVSZWFjdH0udHh0YCwgdmlld0ZpbGVQYXRoKTtcblxuICAgICAgICAgIC8vIFNlYXJjaCBhbmQgcmVwbGFjZSB2aWV3IG5hbWVcbiAgICAgICAgICB1cGRhdGVUZW1wbGF0ZU5hbWUodmlld0ZpbGVQYXRoLCBvdXRwdXROYW1lLCBuYW1lQ2Fwcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY3JlYXRlIG5ldyAke3R5cGV9LiBEaXJlY3RvcnksICR7dmlld1BhdGh9IGFscmVhZHkgZXhpc3RzLmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjcmVhdGUgbmV3ICR7dHlwZX0uICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICd2c2NvZGUnOiB7XG4gICAgICAvLyBSZW1vdmUgZXhpc3RpbmcgZGlyZWN0b3J5XG4gICAgICBhd2FpdCByZW1vdmVGaWxlcygnLnZzY29kZScsIHRydWUpO1xuXG4gICAgICAvLyBDb3B5IHZzY29kZSBjb25maWd1cmF0aW9uXG4gICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhwYXRoLnJlc29sdmUoZGlyTmFtZSwgJy4uLy4uLy52c2NvZGUnKSwgY3dkKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxTQUFRLFlBQVksY0FBYyxZQUFZLHFCQUFvQjtBQUNsRSxZQUFZLFVBQVU7QUFDdEIsU0FBUSxxQkFBb0I7QUFFNUIsU0FBUSx1QkFBc0I7QUFDOUIsU0FBUSxpQkFBZ0I7QUFDeEIsU0FBUSx5QkFBeUIsY0FBYyxhQUFhLDBCQUF5QjtBQUNyRixTQUFRLFdBQVU7QUFFWCxNQUFNLFNBQVMsT0FBTyxNQUFjLEtBQVUsV0FBZ0IsT0FBTyxDQUFDLE9BQXdCO0FBQ25HLFFBQU0sRUFBQyxVQUFVLE9BQU8sWUFBWSxZQUFZLE1BQUssSUFBSTtBQUN6RCxRQUFNLE1BQWMsUUFBUSxJQUFJO0FBQ2hDLE1BQUksR0FBRyxvQkFBb0IsV0FBVyxRQUFRLEtBQUs7QUFHbkQsWUFBVSxZQUFZLEtBQUssS0FBSztBQUNoQyxRQUFNLEVBQUMsWUFBWSxZQUFZLGNBQWEsSUFBSSxVQUFVO0FBRTFELE1BQUcsZUFBZTtBQUVoQixjQUFVLHNCQUFzQjtBQUFBLEVBQ2xDO0FBRUEsUUFBTSxFQUFDLE9BQU0sSUFBSTtBQUNqQixRQUFNLFVBQVUsY0FBYyxJQUFJLElBQUksS0FB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
116
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NyZWF0ZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCByZW5hbWVTeW5jLCB3cml0ZUZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3Jlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtVUkx9IGZyb20gJ3VybCc7XG5cbmltcG9ydCB7Y3JlYXRlQ2hhbmdlbG9nfSBmcm9tICcuLi9jcmVhdGUvY2hhbmdlbG9nLmpzJztcbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYywgZ2V0RmlsZW5hbWVzLCByZW1vdmVGaWxlcywgdXBkYXRlVGVtcGxhdGVOYW1lfSBmcm9tICcuLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGUgPSBhc3luYyAodHlwZTogc3RyaW5nLCBjbWQ6IGFueSwgY2FsbGJhY2s6IGFueSA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBvdXRwdXRGaWxlLCBvdXRwdXROYW1lLCBxdWlldH0gPSBjbWQ7XG4gIGNvbnN0IGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKTtcbiAgbG9nKGAke2NsaU5hbWV9IGNyZWF0aW5nICR7dHlwZX0uLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICAvLyBHZXQgY3VzdG9tIGNvbmZpZ3VyYXRpb25cbiAgYXdhaXQgTGV4Q29uZmlnLnBhcnNlQ29uZmlnKGNtZCwgZmFsc2UpO1xuICBjb25zdCB7b3V0cHV0UGF0aCwgc291cmNlUGF0aCwgdXNlVHlwZXNjcmlwdH0gPSBMZXhDb25maWcuY29uZmlnO1xuXG4gIGlmKHVzZVR5cGVzY3JpcHQpIHtcbiAgICAvLyBNYWtlIHN1cmUgdHNjb25maWcuanNvbiBleGlzdHNcbiAgICBMZXhDb25maWcuY2hlY2tUeXBlc2NyaXB0Q29uZmlnKCk7XG4gIH1cblxuICBjb25zdCB7Y29uZmlnfSA9IExleENvbmZpZztcbiAgY29uc3QgZGlyTmFtZSA9IG5ldyBVUkwoJy4nLCBpbXBvcnQubWV0YS51cmwpLnBhdGhuYW1lO1xuXG4gIHN3aXRjaCh0eXBlKSB7XG4gICAgY2FzZSAnY2hhbmdlbG9nJzoge1xuICAgICAgY29uc3Qgc3RhdHVzQ2hhbmdlbG9nOiBudW1iZXIgPSBhd2FpdCBjcmVhdGVDaGFuZ2Vsb2coe2NsaU5hbWUsIGNvbmZpZywgb3V0cHV0RmlsZSwgcXVpZXR9KTtcbiAgICAgIGNhbGxiYWNrKHN0YXR1c0NoYW5nZWxvZyk7XG4gICAgICByZXR1cm4gc3RhdHVzQ2hhbmdlbG9nO1xuICAgIH1cbiAgICBjYXNlICdzdG9yZSc6IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHtuYW1lQ2FwcywgdGVtcGxhdGVFeHQsIHRlbXBsYXRlUGF0aH0gPSBnZXRGaWxlbmFtZXMoe1xuICAgICAgICAgIGNsaU5hbWUsXG4gICAgICAgICAgbmFtZTogb3V0cHV0TmFtZSxcbiAgICAgICAgICBxdWlldCxcbiAgICAgICAgICB0eXBlLFxuICAgICAgICAgIHVzZVR5cGVzY3JpcHRcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHN0b3JlUGF0aDogc3RyaW5nID0gYCR7Y3dkfS8ke25hbWVDYXBzfVN0b3JlYDtcblxuICAgICAgICBpZighZXhpc3RzU3luYyhzdG9yZVBhdGgpKSB7XG4gICAgICAgICAgLy8gQ29weSBzdG9yZSBmaWxlc1xuICAgICAgICAgIGNvcHlGb2xkZXJSZWN1cnNpdmVTeW5jKHBhdGhSZXNvbHZlKGRpck5hbWUsIHRlbXBsYXRlUGF0aCwgJy4vLlNhbXBsZVN0b3JlJyksIGN3ZCk7XG5cbiAgICAgICAgICAvLyBSZW5hbWUgZGlyZWN0b3J5XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHtjd2R9Ly5TYW1wbGVTdG9yZWAsIHN0b3JlUGF0aCk7XG5cbiAgICAgICAgICAvLyBSZW5hbWUgdGVzdFxuICAgICAgICAgIGNvbnN0IHN0b3JlVGVzdFBhdGg6IHN0cmluZyA9IGAke3N0b3JlUGF0aH0vJHtuYW1lQ2Fwc31TdG9yZS50ZXN0JHt0ZW1wbGF0ZUV4dH1gO1xuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7c3RvcmVQYXRofS9TYW1wbGVTdG9yZS50ZXN0JHt0ZW1wbGF0ZUV4dH0udHh0YCwgc3RvcmVUZXN0UGF0aCk7XG5cbiAgICAgICAgICAvLyBTZWFyY2ggYW5kIHJlcGxhY2Ugc3RvcmUgbmFtZVxuICAgICAgICAgIHVwZGF0ZVRlbXBsYXRlTmFtZShzdG9yZVRlc3RQYXRoLCBvdXRwdXROYW1lLCBuYW1lQ2Fwcyk7XG5cbiAgICAgICAgICAvLyBSZW5hbWUgc291cmNlIGZpbGVcbiAgICAgICAgICBjb25zdCBzdG9yZUZpbGVQYXRoOiBzdHJpbmcgPSBgJHtzdG9yZVBhdGh9LyR7bmFtZUNhcHN9U3RvcmUke3RlbXBsYXRlRXh0fWA7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHtzdG9yZVBhdGh9L1NhbXBsZVN0b3JlJHt0ZW1wbGF0ZUV4dH0udHh0YCwgc3RvcmVGaWxlUGF0aCk7XG5cbiAgICAgICAgICAvLyBTZWFyY2ggYW5kIHJlcGxhY2Ugc3RvcmUgbmFtZVxuICAgICAgICAgIHVwZGF0ZVRlbXBsYXRlTmFtZShzdG9yZUZpbGVQYXRoLCBvdXRwdXROYW1lLCBuYW1lQ2Fwcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY3JlYXRlIG5ldyAke3R5cGV9LiBEaXJlY3RvcnksICR7c3RvcmVQYXRofSBhbHJlYWR5IGV4aXN0cy5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgICAgY2FsbGJhY2soMSk7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY3JlYXRlIG5ldyAke3R5cGV9LiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAndHNjb25maWcnOiB7XG4gICAgICAvLyBSZW1vdmUgZXhpc3RpbmcgZmlsZVxuICAgICAgYXdhaXQgcmVtb3ZlRmlsZXMoJ3RzY29uZmlnLmpzb24nLCB0cnVlKTtcblxuICAgICAgLy8gR2V0IHRzY29uZmlnIHRlbXBsYXRlXG4gICAgICBjb25zdCB0ZW1wbGF0ZVBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLi90c2NvbmZpZy50ZW1wbGF0ZS5qc29uJyk7XG4gICAgICBsZXQgZGF0YTogc3RyaW5nID0gcmVhZEZpbGVTeW5jKHRlbXBsYXRlUGF0aCwgJ3V0ZjgnKTtcblxuICAgICAgLy8gVXBkYXRlIExleCB0c2NvbmZpZyB0ZW1wbGF0ZSB3aXRoIHNvdXJjZSBhbmQgb3V0cHV0IGRpcmVjdG9yaWVzXG4gICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKC8uXFwvc3JjL2csIHNvdXJjZVBhdGgpO1xuICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgvLlxcL2Rpc3QvZywgb3V0cHV0UGF0aCk7XG5cbiAgICAgIC8vIFNhdmUgbmV3IHRzY29uZmlnIHRvIGFwcFxuICAgICAgY29uc3QgZGVzdFBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGN3ZCwgJy4vdHNjb25maWcuanNvbicpO1xuICAgICAgd3JpdGVGaWxlU3luYyhkZXN0UGF0aCwgZGF0YSwgJ3V0ZjgnKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlICd2aWV3Jzoge1xuICAgICAgY29uc3Qge25hbWVDYXBzLCB0ZW1wbGF0ZVBhdGgsIHRlbXBsYXRlUmVhY3R9ID0gZ2V0RmlsZW5hbWVzKHtcbiAgICAgICAgY2xpTmFtZSxcbiAgICAgICAgbmFtZTogb3V0cHV0TmFtZSxcbiAgICAgICAgcXVpZXQsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIHVzZVR5cGVzY3JpcHRcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgdmlld1BhdGg6IHN0cmluZyA9IGAke2N3ZH0vJHtuYW1lQ2Fwc31WaWV3YDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgaWYoIWV4aXN0c1N5bmModmlld1BhdGgpKSB7XG4gICAgICAgICAgLy8gQ29weSB2aWV3IGZpbGVzXG4gICAgICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMocGF0aFJlc29sdmUoZGlyTmFtZSwgdGVtcGxhdGVQYXRoLCAnLi8uU2FtcGxlVmlldycpLCBjd2QpO1xuXG4gICAgICAgICAgLy8gUmVuYW1lIGRpcmVjdG9yeVxuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7Y3dkfS8uU2FtcGxlVmlld2AsIHZpZXdQYXRoKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBDU1NcbiAgICAgICAgICBjb25zdCB2aWV3U3R5bGVQYXRoOiBzdHJpbmcgPSBgJHt2aWV3UGF0aH0vJHtvdXRwdXROYW1lfVZpZXcuY3NzYDtcbiAgICAgICAgICByZW5hbWVTeW5jKGAke3ZpZXdQYXRofS9zYW1wbGVWaWV3LmNzc2AsIHZpZXdTdHlsZVBhdGgpO1xuXG4gICAgICAgICAgLy8gU2VhcmNoIGFuZCByZXBsYWNlIHZpZXcgbmFtZVxuICAgICAgICAgIHVwZGF0ZVRlbXBsYXRlTmFtZSh2aWV3U3R5bGVQYXRoLCBvdXRwdXROYW1lLCBuYW1lQ2Fwcyk7XG5cbiAgICAgICAgICAvLyBSZW5hbWUgdGVzdFxuICAgICAgICAgIGNvbnN0IHZpZXdUZXN0UGF0aDogc3RyaW5nID0gYCR7dmlld1BhdGh9LyR7bmFtZUNhcHN9Vmlldy50ZXN0JHt0ZW1wbGF0ZVJlYWN0fWA7XG4gICAgICAgICAgcmVuYW1lU3luYyhgJHt2aWV3UGF0aH0vU2FtcGxlVmlldy50ZXN0JHt0ZW1wbGF0ZVJlYWN0fS50eHRgLCB2aWV3VGVzdFBhdGgpO1xuXG4gICAgICAgICAgLy8gU2VhcmNoIGFuZCByZXBsYWNlIHZpZXcgbmFtZVxuICAgICAgICAgIHVwZGF0ZVRlbXBsYXRlTmFtZSh2aWV3VGVzdFBhdGgsIG91dHB1dE5hbWUsIG5hbWVDYXBzKTtcblxuICAgICAgICAgIC8vIFJlbmFtZSBzb3VyY2UgZmlsZVxuICAgICAgICAgIGNvbnN0IHZpZXdGaWxlUGF0aDogc3RyaW5nID0gYCR7dmlld1BhdGh9LyR7bmFtZUNhcHN9VmlldyR7dGVtcGxhdGVSZWFjdH1gO1xuICAgICAgICAgIHJlbmFtZVN5bmMoYCR7dmlld1BhdGh9L1NhbXBsZVZpZXcke3RlbXBsYXRlUmVhY3R9LnR4dGAsIHZpZXdGaWxlUGF0aCk7XG5cbiAgICAgICAgICAvLyBTZWFyY2ggYW5kIHJlcGxhY2UgdmlldyBuYW1lXG4gICAgICAgICAgdXBkYXRlVGVtcGxhdGVOYW1lKHZpZXdGaWxlUGF0aCwgb3V0cHV0TmFtZSwgbmFtZUNhcHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNyZWF0ZSBuZXcgJHt0eXBlfS4gRGlyZWN0b3J5LCAke3ZpZXdQYXRofSBhbHJlYWR5IGV4aXN0cy5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgICAgY2FsbGJhY2soMSk7XG4gICAgICAgICAgcmV0dXJuIDE7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY3JlYXRlIG5ldyAke3R5cGV9LiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICBjYWxsYmFjaygxKTtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAndnNjb2RlJzoge1xuICAgICAgLy8gUmVtb3ZlIGV4aXN0aW5nIGRpcmVjdG9yeVxuICAgICAgYXdhaXQgcmVtb3ZlRmlsZXMoJy52c2NvZGUnLCB0cnVlKTtcblxuICAgICAgLy8gQ29weSB2c2NvZGUgY29uZmlndXJhdGlvblxuICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMocGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uLy52c2NvZGUnKSwgY3dkKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxTQUFRLFlBQVksY0FBYyxZQUFZLHFCQUFvQjtBQUNsRSxTQUFRLFdBQVcsbUJBQWtCO0FBQ3JDLFNBQVEsV0FBVTtBQUVsQixTQUFRLHVCQUFzQjtBQUM5QixTQUFRLGlCQUFnQjtBQUN4QixTQUFRLHlCQUF5QixjQUFjLGFBQWEsMEJBQXlCO0FBQ3JGLFNBQVEsV0FBVTtBQUVYLE1BQU0sU0FBUyxPQUFPLE1BQWMsS0FBVSxXQUFnQixPQUFPLENBQUMsT0FBd0I7QUFDbkcsUUFBTSxFQUFDLFVBQVUsT0FBTyxZQUFZLFlBQVksTUFBSyxJQUFJO0FBQ3pELFFBQU0sTUFBYyxRQUFRLElBQUk7QUFDaEMsTUFBSSxHQUFHLE9BQU8sYUFBYSxJQUFJLE9BQU8sUUFBUSxLQUFLO0FBR25ELFFBQU0sVUFBVSxZQUFZLEtBQUssS0FBSztBQUN0QyxRQUFNLEVBQUMsWUFBWSxZQUFZLGNBQWEsSUFBSSxVQUFVO0FBRTFELE1BQUcsZUFBZTtBQUVoQixjQUFVLHNCQUFzQjtBQUFBLEVBQ2xDO0FBRUEsUUFBTSxFQUFDLE9BQU0sSUFBSTtBQUNqQixRQUFNLFVBQVUs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