@nlabs/lex 1.46.2 → 1.47.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 (70) hide show
  1. package/__mocks__/LexConfig.js +20 -0
  2. package/__mocks__/boxen.js +7 -0
  3. package/__mocks__/build.js +16 -0
  4. package/__mocks__/chalk.js +23 -0
  5. package/__mocks__/compile.js +8 -0
  6. package/__mocks__/execa.js +21 -0
  7. package/__mocks__/ora.js +17 -0
  8. package/__mocks__/versions.js +12 -0
  9. package/dist/LexConfig.js +72 -14
  10. package/dist/commands/ai/ai.js +303 -0
  11. package/dist/commands/ai/index.js +7 -0
  12. package/dist/commands/build/build.js +350 -0
  13. package/dist/commands/clean/clean.js +31 -0
  14. package/dist/commands/compile/compile.js +195 -0
  15. package/dist/commands/config/config.js +43 -0
  16. package/dist/commands/copy/copy.js +38 -0
  17. package/dist/commands/create/create.js +124 -0
  18. package/dist/commands/dev/dev.js +70 -0
  19. package/dist/commands/init/init.js +93 -0
  20. package/dist/commands/link/link.js +15 -0
  21. package/dist/commands/lint/lint.js +656 -0
  22. package/dist/commands/migrate/migrate.js +37 -0
  23. package/dist/commands/publish/publish.js +104 -0
  24. package/dist/commands/test/test.js +327 -0
  25. package/dist/commands/update/update.js +62 -0
  26. package/dist/commands/upgrade/upgrade.js +47 -0
  27. package/dist/commands/versions/versions.js +41 -0
  28. package/dist/create/changelog.js +3 -3
  29. package/dist/index.js +35 -0
  30. package/dist/jest.config.lex.d.ts +2 -0
  31. package/dist/lex.js +25 -22
  32. package/dist/types.js +1 -0
  33. package/dist/utils/aiService.js +290 -0
  34. package/dist/utils/app.js +3 -3
  35. package/dist/utils/file.js +1 -1
  36. package/dist/utils/log.js +2 -1
  37. package/dist/utils/reactShim.js +3 -3
  38. package/dist/webpack.config.d.ts +2 -0
  39. package/eslint.config.js +10 -0
  40. package/index.cjs +20 -0
  41. package/jest.config.cjs +31 -27
  42. package/jest.config.lex.js +90 -38
  43. package/jest.setup.js +5 -0
  44. package/lex.config.js +50 -0
  45. package/package.json +69 -52
  46. package/{.postcssrc.js → postcss.config.js} +21 -9
  47. package/tsconfig.json +2 -1
  48. package/webpack.config.js +27 -11
  49. package/dist/commands/build.js +0 -265
  50. package/dist/commands/bulid.test.js +0 -317
  51. package/dist/commands/clean.js +0 -31
  52. package/dist/commands/clean.test.js +0 -63
  53. package/dist/commands/compile.js +0 -195
  54. package/dist/commands/compile.test.js +0 -93
  55. package/dist/commands/config.js +0 -43
  56. package/dist/commands/copy.js +0 -38
  57. package/dist/commands/create.js +0 -120
  58. package/dist/commands/dev.js +0 -70
  59. package/dist/commands/init.js +0 -93
  60. package/dist/commands/link.js +0 -15
  61. package/dist/commands/lint.js +0 -179
  62. package/dist/commands/migrate.js +0 -37
  63. package/dist/commands/publish.js +0 -104
  64. package/dist/commands/test.js +0 -190
  65. package/dist/commands/update.js +0 -64
  66. package/dist/commands/upgrade.js +0 -47
  67. package/dist/commands/versions.js +0 -41
  68. package/dist/commands/versions.test.js +0 -49
  69. package/dist/lint.js +0 -11
  70. package/jest.setup.ts +0 -3
@@ -0,0 +1,290 @@
1
+ import { existsSync, readFileSync, writeFileSync } from "fs";
2
+ import { resolve as pathResolve } from "path";
3
+ import readline from "readline";
4
+ import { createSpinner } from "./app.js";
5
+ import { log } from "./log.js";
6
+ import { LexConfig } from "../LexConfig.js";
7
+ const callCursorAI = async (prompt, options) => {
8
+ try {
9
+ log("Using Cursor IDE for AI fixes...", "info");
10
+ log("AI fix requested via Cursor IDE", "info");
11
+ const taskMatch = prompt.match(/^(Generate code according to the following request|Explain the following code|Generate comprehensive unit tests|Analyze the following code|Provide guidance on the following development question):/);
12
+ const task = taskMatch ? taskMatch[1] : "";
13
+ const isGenerateTask = task.startsWith("Generate code");
14
+ const questionMatch = prompt.match(/(?:Generate code according to the following request|Explain the following code|Generate comprehensive unit tests|Analyze the following code|Provide guidance on the following development question):\s*([\s\S]+?)(?:===CONTEXT===|$)/);
15
+ const question = questionMatch ? questionMatch[1].trim() : prompt;
16
+ if (question.toLowerCase().includes("how many files") && prompt.includes("Project structure:")) {
17
+ const projectStructure = prompt.split("Project structure:")[1] || "";
18
+ const files = projectStructure.trim().split("\n");
19
+ return `Based on the project structure provided, there are ${files.length} files in the project.`;
20
+ }
21
+ if (isGenerateTask) {
22
+ return `
23
+ # Code Generation Request: "${question}"
24
+
25
+ To generate code using Cursor's AI capabilities:
26
+
27
+ 1. **Open your project in Cursor IDE** (https://cursor.sh)
28
+ 2. Press **Cmd+L** (or Ctrl+L on Windows/Linux) to open the AI chat
29
+ 3. Type your request: "${question}"
30
+ 4. Cursor will generate the code directly in your editor
31
+
32
+ The current CLI integration doesn't have direct access to Cursor's code generation capabilities.
33
+
34
+ **Alternative options:**
35
+
36
+ 1. **Use OpenAI or Anthropic directly:**
37
+ Configure in lex.config.js:
38
+ \`\`\`js
39
+ export default {
40
+ ai: {
41
+ provider: 'openai',
42
+ apiKey: process.env.OPENAI_API_KEY,
43
+ model: 'gpt-4o'
44
+ }
45
+ }
46
+ \`\`\`
47
+
48
+ 2. **Use Cursor's command line tool:**
49
+ Install: \`npm install -g @cursor/cli\`
50
+ Run: \`cursor ai "${question}"\`
51
+ `;
52
+ }
53
+ return `
54
+ To use Cursor's AI capabilities for "${question}", you need to:
55
+
56
+ 1. Open your project in Cursor IDE (https://cursor.sh)
57
+ 2. Use Cursor's built-in AI features by pressing Cmd+K or Cmd+L
58
+ 3. Or run the 'cursor' command directly from your terminal
59
+
60
+ The current integration is limited and doesn't directly access Cursor's AI capabilities.
61
+
62
+ For the best experience with AI code generation:
63
+ - Use Cursor IDE directly
64
+ - Or configure OpenAI or Anthropic as your provider in lex.config.js:
65
+
66
+ \`\`\`js
67
+ // lex.config.js
68
+ export default {
69
+ ai: {
70
+ provider: 'openai', // or 'anthropic'
71
+ apiKey: process.env.OPENAI_API_KEY, // or ANTHROPIC_API_KEY
72
+ model: 'gpt-4o' // or 'claude-3-opus'
73
+ }
74
+ }
75
+ \`\`\`
76
+
77
+ Then set your API key as an environment variable:
78
+ \`\`\`
79
+ export OPENAI_API_KEY=your_key_here
80
+ \`\`\`
81
+ `;
82
+ } catch (error) {
83
+ throw new Error(`Cursor AI error: ${error.message}`);
84
+ }
85
+ };
86
+ const callOpenAIAI = async (prompt, options) => {
87
+ try {
88
+ const apiKey = options.apiKey || process.env.OPENAI_API_KEY;
89
+ if (!apiKey) {
90
+ throw new Error("OpenAI API key is required. Set it in lex.config.js or as OPENAI_API_KEY environment variable.");
91
+ }
92
+ const response = await fetch("https://api.openai.com/v1/chat/completions", {
93
+ body: JSON.stringify({
94
+ max_tokens: options.maxTokens || 4e3,
95
+ messages: [
96
+ { content: "You are a helpful assistant that fixes ESLint errors in code.", role: "system" },
97
+ { content: prompt, role: "user" }
98
+ ],
99
+ model: options.model || "gpt-4o",
100
+ temperature: options.temperature || 0.1
101
+ }),
102
+ headers: {
103
+ Authorization: `Bearer ${apiKey}`,
104
+ "Content-Type": "application/json"
105
+ },
106
+ method: "POST"
107
+ });
108
+ if (!response.ok) {
109
+ const error = await response.json();
110
+ throw new Error(`OpenAI API error: ${error.error?.message || response.statusText}`);
111
+ }
112
+ const data = await response.json();
113
+ return data.choices[0].message.content;
114
+ } catch (error) {
115
+ throw new Error(`OpenAI AI error: ${error.message}`);
116
+ }
117
+ };
118
+ const callAnthropicAI = async (prompt, options) => {
119
+ try {
120
+ const apiKey = options.apiKey || process.env.ANTHROPIC_API_KEY;
121
+ if (!apiKey) {
122
+ throw new Error("Anthropic API key is required. Set it in lex.config.js or as ANTHROPIC_API_KEY environment variable.");
123
+ }
124
+ const response = await fetch("https://api.anthropic.com/v1/messages", {
125
+ body: JSON.stringify({
126
+ max_tokens: options.maxTokens || 4e3,
127
+ messages: [
128
+ { content: prompt, role: "user" }
129
+ ],
130
+ model: options.model || "claude-3-sonnet-20240229",
131
+ temperature: options.temperature || 0.1
132
+ }),
133
+ headers: {
134
+ "Content-Type": "application/json",
135
+ "anthropic-version": "2023-06-01",
136
+ "x-api-key": apiKey
137
+ },
138
+ method: "POST"
139
+ });
140
+ if (!response.ok) {
141
+ const error = await response.json();
142
+ throw new Error(`Anthropic API error: ${error.error?.message || response.statusText}`);
143
+ }
144
+ const data = await response.json();
145
+ return data.content[0].text;
146
+ } catch (error) {
147
+ throw new Error(`Anthropic AI error: ${error.message}`);
148
+ }
149
+ };
150
+ const callCopilotAI = async (prompt, options) => {
151
+ try {
152
+ log("GitHub Copilot AI fixes not directly supported. Using manual fix mode.", "info");
153
+ return prompt;
154
+ } catch (error) {
155
+ throw new Error(`GitHub Copilot AI error: ${error.message}`);
156
+ }
157
+ };
158
+ const promptForAIProvider = async (quiet = false) => {
159
+ const rl = readline.createInterface({
160
+ input: process.stdin,
161
+ output: process.stdout
162
+ });
163
+ return new Promise((resolve) => {
164
+ log("\nNo AI provider configured. Please choose an AI provider:", "info");
165
+ log("1. Cursor IDE", "info");
166
+ log("2. OpenAI", "info");
167
+ log("3. Anthropic", "info");
168
+ log("4. GitHub Copilot", "info");
169
+ log("5. None (Skip AI features)", "info");
170
+ rl.question("Enter your choice (1-5): ", (answer) => {
171
+ rl.close();
172
+ switch (answer) {
173
+ case "1":
174
+ resolve("cursor");
175
+ break;
176
+ case "2":
177
+ resolve("openai");
178
+ break;
179
+ case "3":
180
+ resolve("anthropic");
181
+ break;
182
+ case "4":
183
+ resolve("copilot");
184
+ break;
185
+ default:
186
+ resolve("none");
187
+ }
188
+ });
189
+ });
190
+ };
191
+ const promptForAPIKey = async (provider, quiet = false) => {
192
+ const rl = readline.createInterface({
193
+ input: process.stdin,
194
+ output: process.stdout
195
+ });
196
+ return new Promise((resolve) => {
197
+ rl.question(`Please enter your ${provider} API key: `, (answer) => {
198
+ rl.close();
199
+ resolve(answer);
200
+ });
201
+ });
202
+ };
203
+ const getAIService = (provider, options) => {
204
+ switch (provider) {
205
+ case "cursor":
206
+ return callCursorAI;
207
+ case "openai":
208
+ return callOpenAIAI;
209
+ case "anthropic":
210
+ return callAnthropicAI;
211
+ case "copilot":
212
+ return callCopilotAI;
213
+ default:
214
+ return async () => "No AI provider configured";
215
+ }
216
+ };
217
+ const callAIService = async (prompt, quiet = false) => {
218
+ const spinner = createSpinner(quiet);
219
+ spinner.start("Calling AI service to fix code issues...");
220
+ try {
221
+ const aiConfig = LexConfig.config.ai || { provider: "none" };
222
+ const isInCursorIDE = process.env.CURSOR_IDE === "true";
223
+ if (isInCursorIDE && (aiConfig.provider === "none" || !aiConfig.provider)) {
224
+ log("Detected Cursor IDE environment, using Cursor as AI provider", "info", quiet);
225
+ aiConfig.provider = "cursor";
226
+ }
227
+ if (aiConfig.provider === "none") {
228
+ const provider = await promptForAIProvider(quiet);
229
+ if (provider === "none") {
230
+ spinner.fail("AI features skipped");
231
+ return "";
232
+ }
233
+ aiConfig.provider = provider;
234
+ if (provider !== "cursor" && provider !== "copilot" && !process.env[`${provider.toUpperCase()}_API_KEY`]) {
235
+ aiConfig.apiKey = await promptForAPIKey(provider, quiet);
236
+ }
237
+ LexConfig.config.ai = aiConfig;
238
+ const configPath = pathResolve(process.cwd(), "lex.config.js");
239
+ if (existsSync(configPath)) {
240
+ try {
241
+ const configContent = readFileSync(configPath, "utf8");
242
+ const updatedConfig = configContent.replace(
243
+ /ai:.*?[,}]/s,
244
+ `ai: { provider: '${aiConfig.provider}' },`
245
+ );
246
+ writeFileSync(configPath, updatedConfig);
247
+ } catch (_error) {
248
+ }
249
+ }
250
+ }
251
+ let result = "";
252
+ switch (aiConfig.provider) {
253
+ case "cursor":
254
+ result = await callCursorAI(prompt, aiConfig);
255
+ log("Cursor IDE AI integration active", "info", quiet);
256
+ break;
257
+ case "openai":
258
+ result = await callOpenAIAI(prompt, aiConfig);
259
+ break;
260
+ case "anthropic":
261
+ result = await callAnthropicAI(prompt, aiConfig);
262
+ break;
263
+ case "copilot":
264
+ result = await callCopilotAI(prompt, aiConfig);
265
+ break;
266
+ default:
267
+ spinner.fail("No AI provider configured");
268
+ return "";
269
+ }
270
+ spinner.succeed("AI code fixes generated successfully");
271
+ return result;
272
+ } catch (error) {
273
+ spinner.fail(`AI service error: ${error.message}`);
274
+ if (!quiet) {
275
+ log(error, "error");
276
+ }
277
+ return "";
278
+ }
279
+ };
280
+ export {
281
+ callAIService,
282
+ callAnthropicAI,
283
+ callCopilotAI,
284
+ callCursorAI,
285
+ callOpenAIAI,
286
+ getAIService,
287
+ promptForAIProvider,
288
+ promptForAPIKey
289
+ };
290
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2FpU2VydmljZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjItUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3Jlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHJlYWRsaW5lIGZyb20gJ3JlYWRsaW5lJztcblxuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuL2FwcC5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi9sb2cuanMnO1xuaW1wb3J0IHtMZXhDb25maWcsIEFJQ29uZmlnfSBmcm9tICcuLi9MZXhDb25maWcuanMnO1xuXG4vLyBDdXJzb3IgSURFIGludGVncmF0aW9uXG5leHBvcnQgY29uc3QgY2FsbEN1cnNvckFJID0gYXN5bmMgKHByb21wdDogc3RyaW5nLCBvcHRpb25zOiBBSUNvbmZpZyk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIHRyeSB7XG4gICAgLy8gV2hlbiBydW5uaW5nIHdpdGhpbiBDdXJzb3IgSURFLCB3ZSBjYW4gd3JpdGUgdGhlIHByb21wdCB0byBhIHRlbXBvcmFyeSBmaWxlXG4gICAgLy8gdGhhdCBDdXJzb3IgY2FuIHVzZSB0byBwcm92aWRlIEFJIGFzc2lzdGFuY2VcbiAgICBsb2coJ1VzaW5nIEN1cnNvciBJREUgZm9yIEFJIGZpeGVzLi4uJywgJ2luZm8nKTtcblxuICAgIC8vIEZvciBub3csIGp1c3QgbG9nIHRoZSBwcm9tcHQgYW5kIHJldHVybiBhIHBsYWNlaG9sZGVyXG4gICAgLy8gSW4gYSByZWFsIGltcGxlbWVudGF0aW9uLCBDdXJzb3Igd291bGQgaGFuZGxlIHRoaXMgYXV0b21hdGljYWxseVxuICAgIGxvZygnQUkgZml4IHJlcXVlc3RlZCB2aWEgQ3Vyc29yIElERScsICdpbmZvJyk7XG5cbiAgICBjb25zdCB0YXNrTWF0Y2ggPSBwcm9tcHQubWF0Y2goL14oR2VuZXJhdGUgY29kZSBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyByZXF1ZXN0fEV4cGxhaW4gdGhlIGZvbGxvd2luZyBjb2RlfEdlbmVyYXRlIGNvbXByZWhlbnNpdmUgdW5pdCB0ZXN0c3xBbmFseXplIHRoZSBmb2xsb3dpbmcgY29kZXxQcm92aWRlIGd1aWRhbmNlIG9uIHRoZSBmb2xsb3dpbmcgZGV2ZWxvcG1lbnQgcXVlc3Rpb24pOi8pO1xuICAgIGNvbnN0IHRhc2sgPSB0YXNrTWF0Y2ggPyB0YXNrTWF0Y2hbMV0gOiAnJztcbiAgICBjb25zdCBpc0dlbmVyYXRlVGFzayA9IHRhc2suc3RhcnRzV2l0aCgnR2VuZXJhdGUgY29kZScpO1xuICAgIFxuICAgIGNvbnN0IHF1ZXN0aW9uTWF0Y2ggPSBwcm9tcHQubWF0Y2goLyg/OkdlbmVyYXRlIGNvZGUgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgcmVxdWVzdHxFeHBsYWluIHRoZSBmb2xsb3dpbmcgY29kZXxHZW5lcmF0ZSBjb21wcmVoZW5zaXZlIHVuaXQgdGVzdHN8QW5hbHl6ZSB0aGUgZm9sbG93aW5nIGNvZGV8UHJvdmlkZSBndWlkYW5jZSBvbiB0aGUgZm9sbG93aW5nIGRldmVsb3BtZW50IHF1ZXN0aW9uKTpcXHMqKFtcXHNcXFNdKz8pKD86PT09Q09OVEVYVD09PXwkKS8pO1xuICAgIGNvbnN0IHF1ZXN0aW9uID0gcXVlc3Rpb25NYXRjaCA/IHF1ZXN0aW9uTWF0Y2hbMV0udHJpbSgpIDogcHJvbXB0O1xuICAgIFxuICAgIGlmIChxdWVzdGlvbi50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCdob3cgbWFueSBmaWxlcycpICYmIHByb21wdC5pbmNsdWRlcygnUHJvamVjdCBzdHJ1Y3R1cmU6JykpIHtcbiAgICAgIGNvbnN0IHByb2plY3RTdHJ1Y3R1cmUgPSBwcm9tcHQuc3BsaXQoJ1Byb2plY3Qgc3RydWN0dXJlOicpWzFdIHx8ICcnO1xuICAgICAgY29uc3QgZmlsZXMgPSBwcm9qZWN0U3RydWN0dXJlLnRyaW0oKS5zcGxpdCgnXFxuJyk7XG4gICAgICByZXR1cm4gYEJhc2VkIG9uIHRoZSBwcm9qZWN0IHN0cnVjdHVyZSBwcm92aWRlZCwgdGhlcmUgYXJlICR7ZmlsZXMubGVuZ3RofSBmaWxlcyBpbiB0aGUgcHJvamVjdC5gO1xuICAgIH1cbiAgICBcbiAgICBpZiAoaXNHZW5lcmF0ZVRhc2spIHtcbiAgICAgIHJldHVybiBgXG4jIENvZGUgR2VuZXJhdGlvbiBSZXF1ZXN0OiBcIiR7cXVlc3Rpb259XCJcblxuVG8gZ2VuZXJhdGUgY29kZSB1c2luZyBDdXJzb3IncyBBSSBjYXBhYmlsaXRpZXM6XG5cbjEuICoqT3BlbiB5b3VyIHByb2plY3QgaW4gQ3Vyc29yIElERSoqIChodHRwczovL2N1cnNvci5zaClcbjIuIFByZXNzICoqQ21kK0wqKiAob3IgQ3RybCtMIG9uIFdpbmRvd3MvTGludXgpIHRvIG9wZW4gdGhlIEFJIGNoYXRcbjMuIFR5cGUgeW91ciByZXF1ZXN0OiBcIiR7cXVlc3Rpb259XCJcbjQuIEN1cnNvciB3aWxsIGdlbmVyYXRlIHRoZSBjb2RlIGRpcmVjdGx5IGluIHlvdXIgZWRpdG9yXG5cblRoZSBjdXJyZW50IENMSSBpbnRlZ3JhdGlvbiBkb2Vzbid0IGhhdmUgZGlyZWN0IGFjY2VzcyB0byBDdXJzb3IncyBjb2RlIGdlbmVyYXRpb24gY2FwYWJpbGl0aWVzLlxuXG4qKkFsdGVybmF0aXZlIG9wdGlvbnM6KipcblxuMS4gKipVc2UgT3BlbkFJIG9yIEFudGhyb3BpYyBkaXJlY3RseToqKlxuICAgQ29uZmlndXJlIGluIGxleC5jb25maWcuanM6XG4gICBcXGBcXGBcXGBqc1xuICAgZXhwb3J0IGRlZmF1bHQge1xuICAgICBhaToge1xuICAgICAgIHByb3ZpZGVyOiAnb3BlbmFpJyxcbiAgICAgICBhcGlLZXk6IHByb2Nlc3MuZW52Lk9QRU5BSV9BUElfS0VZLFxuICAgICAgIG1vZGVsOiAnZ3B0LTRvJ1xuICAgICB9XG4gICB9XG4gICBcXGBcXGBcXGBcblxuMi4gKipVc2UgQ3Vyc29yJ3MgY29tbWFuZCBsaW5lIHRvb2w6KipcbiAgIEluc3RhbGw6IFxcYG5wbSBpbnN0YWxsIC1nIEBjdXJzb3IvY2xpXFxgXG4gICBSdW46IFxcYGN1cnNvciBhaSBcIiR7cXVlc3Rpb259XCJcXGBcbmA7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBgXG5UbyB1c2UgQ3Vyc29yJ3MgQUkgY2FwYWJpbGl0aWVzIGZvciBcIiR7cXVlc3Rpb259XCIsIHlvdSBuZWVkIHRvOlxuXG4xLiBPcGVuIHlvdXIgcHJvamVjdCBpbiBDdXJzb3IgSURFIChodHRwczovL2N1cnNvci5zaClcbjIuIFVzZSBDdXJzb3IncyBidWlsdC1pbiBBSSBmZWF0dXJlcyBieSBwcmVzc2luZyBDbWQrSyBvciBDbWQrTFxuMy4gT3IgcnVuIHRoZSAnY3Vyc29yJyBjb21tYW5kIGRpcmVjdGx5IGZyb20geW91ciB0ZXJtaW5hbFxuXG5UaGUgY3VycmVudCBpbnRlZ3JhdGlvbiBpcyBsaW1pdGVkIGFuZCBkb2Vzbid0IGRpcmVjdGx5IGFjY2VzcyBDdXJzb3IncyBBSSBjYXBhYmlsaXRpZXMuXG5cbkZvciB0aGUgYmVzdCBleHBlcmllbmNlIHdpdGggQUkgY29kZSBnZW5lcmF0aW9uOlxuLSBVc2UgQ3Vyc29yIElERSBkaXJlY3RseVxuLSBPciBjb25maWd1cmUgT3BlbkFJIG9yIEFudGhyb3BpYyBhcyB5b3VyIHByb3ZpZGVyIGluIGxleC5jb25maWcuanM6XG5cblxcYFxcYFxcYGpzXG4vLyBsZXguY29uZmlnLmpzXG5leHBvcnQgZGVmYXVsdCB7XG4gIGFpOiB7XG4gICAgcHJvdmlkZXI6ICdvcGVuYWknLCAvLyBvciAnYW50aHJvcGljJ1xuICAgIGFwaUtleTogcHJvY2Vzcy5lbnYuT1BFTkFJX0FQSV9LRVksIC8vIG9yIEFOVEhST1BJQ19BUElfS0VZXG4gICAgbW9kZWw6ICdncHQtNG8nIC8vIG9yICdjbGF1ZGUtMy1vcHVzJ1xuICB9XG59XG5cXGBcXGBcXGBcblxuVGhlbiBzZXQgeW91ciBBUEkga2V5IGFzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlOlxuXFxgXFxgXFxgXG5leHBvcnQgT1BFTkFJX0FQSV9LRVk9eW91cl9rZXlfaGVyZVxuXFxgXFxgXFxgXG5gO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDdXJzb3IgQUkgZXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNhbGxPcGVuQUlBSSA9IGFzeW5jIChwcm9tcHQ6IHN0cmluZywgb3B0aW9uczogQUlDb25maWcpOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGFwaUtleSA9IG9wdGlvbnMuYXBpS2V5IHx8IHByb2Nlc3MuZW52Lk9QRU5BSV9BUElfS0VZO1xuICAgIGlmKCFhcGlLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignT3BlbkFJIEFQSSBrZXkgaXMgcmVxdWlyZWQuIFNldCBpdCBpbiBsZXguY29uZmlnLmpzIG9yIGFzIE9QRU5BSV9BUElfS0VZIGVudmlyb25tZW50IHZhcmlhYmxlLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goJ2h0dHBzOi8vYXBpLm9wZW5haS5jb20vdjEvY2hhdC9jb21wbGV0aW9ucycsIHtcbiAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgbWF4X3Rva2Vuczogb3B0aW9ucy5tYXhUb2tlbnMgfHwgNDAwMCxcbiAgICAgICAgbWVzc2FnZXM6IFtcbiAgICAgICAgICB7Y29udGVudDogJ1lvdSBhcmUgYSBoZWxwZnVsIGFzc2lzdGFudCB0aGF0IGZpeGVzIEVTTGludCBlcnJvcnMgaW4gY29kZS4nLCByb2xlOiAnc3lzdGVtJ30sXG4gICAgICAgICAge2NvbnRlbnQ6IHByb21wdCwgcm9sZTogJ3VzZXInfVxuICAgICAgICBdLFxuICAgICAgICBtb2RlbDogb3B0aW9ucy5tb2RlbCB8fCAnZ3B0LTRvJyxcbiAgICAgICAgdGVtcGVyYXR1cmU6IG9wdGlvbnMudGVtcGVyYXR1cmUgfHwgMC4xXG4gICAgICB9KSxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2FwaUtleX1gLFxuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICB9LFxuICAgICAgbWV0aG9kOiAnUE9TVCdcbiAgICB9KTtcblxuICAgIGlmKCFyZXNwb25zZS5vaykge1xuICAgICAgY29uc3QgZXJyb3IgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE9wZW5BSSBBUEkgZXJyb3I6ICR7ZXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgcmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgIHJldHVybiBkYXRhLmNob2ljZXNbMF0ubWVzc2FnZS5jb250ZW50O1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBPcGVuQUkgQUkgZXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNhbGxBbnRocm9waWNBSSA9IGFzeW5jIChwcm9tcHQ6IHN0cmluZywgb3B0aW9uczogQUlDb25maWcpOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGFwaUtleSA9IG9wdGlvbnMuYXBpS2V5IHx8IHByb2Nlc3MuZW52LkFOVEhST1BJQ19BUElfS0VZO1xuICAgIGlmKCFhcGlLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQW50aHJvcGljIEFQSSBrZXkgaXMgcmVxdWlyZWQuIFNldCBpdCBpbiBsZXguY29uZmlnLmpzIG9yIGFzIEFOVEhST1BJQ19BUElfS0VZIGVudmlyb25tZW50IHZhcmlhYmxlLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goJ2h0dHBzOi8vYXBpLmFudGhyb3BpYy5jb20vdjEvbWVzc2FnZXMnLCB7XG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIG1heF90b2tlbnM6IG9wdGlvbnMubWF4VG9rZW5zIHx8IDQwMDAsXG4gICAgICAgIG1lc3NhZ2VzOiBbXG4gICAgICAgICAge2NvbnRlbnQ6IHByb21wdCwgcm9sZTogJ3VzZXInfVxuICAgICAgICBdLFxuICAgICAgICBtb2RlbDogb3B0aW9ucy5tb2RlbCB8fCAnY2xhdWRlLTMtc29ubmV0LTIwMjQwMjI5JyxcbiAgICAgICAgdGVtcGVyYXR1cmU6IG9wdGlvbnMudGVtcGVyYXR1cmUgfHwgMC4xXG4gICAgICB9KSxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgJ2FudGhyb3BpYy12ZXJzaW9uJzogJzIwMjMtMDYtMDEnLFxuICAgICAgICAneC1hcGkta2V5JzogYXBpS2V5XG4gICAgICB9LFxuICAgICAgbWV0aG9kOiAnUE9TVCdcbiAgICB9KTtcblxuICAgIGlmKCFyZXNwb25zZS5vaykge1xuICAgICAgY29uc3QgZXJyb3IgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEFudGhyb3BpYyBBUEkgZXJyb3I6ICR7ZXJyb3IuZXJyb3I/Lm1lc3NhZ2UgfHwgcmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgIHJldHVybiBkYXRhLmNvbnRlbnRbMF0udGV4dDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgQW50aHJvcGljIEFJIGVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjYWxsQ29waWxvdEFJID0gYXN5bmMgKHByb21wdDogc3RyaW5nLCBvcHRpb25zOiBBSUNvbmZpZyk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIHRyeSB7XG4gICAgbG9nKCdHaXRIdWIgQ29waWxvdCBBSSBmaXhlcyBub3QgZGlyZWN0bHkgc3VwcG9ydGVkLiBVc2luZyBtYW51YWwgZml4IG1vZGUuJywgJ2luZm8nKTtcbiAgICByZXR1cm4gcHJvbXB0O1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBHaXRIdWIgQ29waWxvdCBBSSBlcnJvcjogJHtlcnJvci5tZXNzYWdlfWApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcHJvbXB0Rm9yQUlQcm92aWRlciA9IGFzeW5jIChxdWlldCA9IGZhbHNlKTogUHJvbWlzZTwnY3Vyc29yJyB8ICdjb3BpbG90JyB8ICdvcGVuYWknIHwgJ2FudGhyb3BpYycgfCAnbm9uZSc+ID0+IHtcbiAgY29uc3QgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgIGlucHV0OiBwcm9jZXNzLnN0ZGluLFxuICAgIG91dHB1dDogcHJvY2Vzcy5zdGRvdXRcbiAgfSk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgbG9nKCdcXG5ObyBBSSBwcm92aWRlciBjb25maWd1cmVkLiBQbGVhc2UgY2hvb3NlIGFuIEFJIHByb3ZpZGVyOicsICdpbmZvJyk7XG4gICAgbG9nKCcxLiBDdXJzb3IgSURFJywgJ2luZm8nKTtcbiAgICBsb2coJzIuIE9wZW5BSScsICdpbmZvJyk7XG4gICAgbG9nKCczLiBBbnRocm9waWMnLCAnaW5mbycpO1xuICAgIGxvZygnNC4gR2l0SHViIENvcGlsb3QnLCAnaW5mbycpO1xuICAgIGxvZygnNS4gTm9uZSAoU2tpcCBBSSBmZWF0dXJlcyknLCAnaW5mbycpO1xuXG4gICAgcmwucXVlc3Rpb24oJ0VudGVyIHlvdXIgY2hvaWNlICgxLTUpOiAnLCAoYW5zd2VyKSA9PiB7XG4gICAgICBybC5jbG9zZSgpO1xuXG4gICAgICBzd2l0Y2goYW5zd2VyKSB7XG4gICAgICAgIGNhc2UgJzEnOlxuICAgICAgICAgIHJlc29sdmUoJ2N1cnNvcicpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICcyJzpcbiAgICAgICAgICByZXNvbHZlKCdvcGVuYWknKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnMyc6XG4gICAgICAgICAgcmVzb2x2ZSgnYW50aHJvcGljJyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJzQnOlxuICAgICAgICAgIHJlc29sdmUoJ2NvcGlsb3QnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXNvbHZlKCdub25lJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHByb21wdEZvckFQSUtleSA9IGFzeW5jIChwcm92aWRlcjogc3RyaW5nLCBxdWlldCA9IGZhbHNlKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgY29uc3QgcmwgPSByZWFkbGluZS5jcmVhdGVJbnRlcmZhY2Uoe1xuICAgIGlucHV0OiBwcm9jZXNzLnN0ZGluLFxuICAgIG91dHB1dDogcHJvY2Vzcy5zdGRvdXRcbiAgfSk7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgcmwucXVlc3Rpb24oYFBsZWFzZSBlbnRlciB5b3VyICR7cHJvdmlkZXJ9IEFQSSBrZXk6IGAsIChhbnN3ZXIpID0+IHtcbiAgICAgIHJsLmNsb3NlKCk7XG4gICAgICByZXNvbHZlKGFuc3dlcik7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFJU2VydmljZSA9IChwcm92aWRlcjogc3RyaW5nLCBvcHRpb25zOiBBSUNvbmZpZyk6IChwcm9tcHQ6IHN0cmluZywgb3B0aW9uczogQUlDb25maWcpID0+IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIHN3aXRjaChwcm92aWRlcikge1xuICAgIGNhc2UgJ2N1cnNvcic6XG4gICAgICByZXR1cm4gY2FsbEN1cnNvckFJO1xuICAgIGNhc2UgJ29wZW5haSc6XG4gICAgICByZXR1cm4gY2FsbE9wZW5BSUFJO1xuICAgIGNhc2UgJ2FudGhyb3BpYyc6XG4gICAgICByZXR1cm4gY2FsbEFudGhyb3BpY0FJO1xuICAgIGNhc2UgJ2NvcGlsb3QnOlxuICAgICAgcmV0dXJuIGNhbGxDb3BpbG90QUk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBhc3luYyAoKSA9PiAnTm8gQUkgcHJvdmlkZXIgY29uZmlndXJlZCc7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjYWxsQUlTZXJ2aWNlID0gYXN5bmMgKHByb21wdDogc3RyaW5nLCBxdWlldCA9IGZhbHNlKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuICBzcGlubmVyLnN0YXJ0KCdDYWxsaW5nIEFJIHNlcnZpY2UgdG8gZml4IGNvZGUgaXNzdWVzLi4uJyk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBhaUNvbmZpZyA9IExleENvbmZpZy5jb25maWcuYWkgfHwge3Byb3ZpZGVyOiAnbm9uZSd9O1xuXG4gICAgY29uc3QgaXNJbkN1cnNvcklERSA9IHByb2Nlc3MuZW52LkNVUlNPUl9JREUgPT09ICd0cnVlJztcbiAgICBpZihpc0luQ3Vyc29ySURFICYmIChhaUNvbmZpZy5wcm92aWRlciA9PT0gJ25vbmUnIHx8ICFhaUNvbmZpZy5wcm92aWRlcikpIHtcbiAgICAgIGxvZygnRGV0ZWN0ZWQgQ3Vyc29yIElERSBlbnZpcm9ubWVudCwgdXNpbmcgQ3Vyc29yIGFzIEFJIHByb3ZpZGVyJywgJ2luZm8nLCBxdWlldCk7XG4gICAgICBhaUNvbmZpZy5wcm92aWRlciA9ICdjdXJzb3InO1xuICAgIH1cblxuICAgIGlmKGFpQ29uZmlnLnByb3ZpZGVyID09PSAnbm9uZScpIHtcbiAgICAgIGNvbnN0IHByb3ZpZGVyID0gYXdhaXQgcHJvbXB0Rm9yQUlQcm92aWRlcihxdWlldCk7XG5cbiAgICAgIGlmKHByb3ZpZGVyID09PSAnbm9uZScpIHtcbiAgICAgICAgc3Bpbm5lci5mYWlsKCdBSSBmZWF0dXJlcyBza2lwcGVkJyk7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cblxuICAgICAgYWlDb25maWcucHJvdmlkZXIgPSBwcm92aWRlcjtcblxuICAgICAgaWYocHJvdmlkZXIgIT09ICdjdXJzb3InICYmIHByb3ZpZGVyICE9PSAnY29waWxvdCcgJiZcbiAgICAgICAgICFwcm9jZXNzLmVudltgJHtwcm92aWRlci50b1VwcGVyQ2FzZSgpfV9BUElfS0VZYF0pIHtcbiAgICAgICAgYWlDb25maWcuYXBpS2V5ID0gYXdhaXQgcHJvbXB0Rm9yQVBJS2V5KHByb3ZpZGVyLCBxdWlldCk7XG4gICAgICB9XG5cbiAgICAgIExleENvbmZpZy5jb25maWcuYWkgPSBhaUNvbmZpZztcblxuICAgICAgY29uc3QgY29uZmlnUGF0aCA9IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksICdsZXguY29uZmlnLmpzJyk7XG4gICAgICBpZihleGlzdHNTeW5jKGNvbmZpZ1BhdGgpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgY29uZmlnQ29udGVudCA9IHJlYWRGaWxlU3luYyhjb25maWdQYXRoLCAndXRmOCcpO1xuICAgICAgICAgIGNvbnN0IHVwZGF0ZWRDb25maWcgPSBjb25maWdDb250ZW50LnJlcGxhY2UoXG4gICAgICAgICAgICAvYWk6Lio/Wyx9XS9zLFxuICAgICAgICAgICAgYGFpOiB7IHByb3ZpZGVyOiAnJHthaUNvbmZpZy5wcm92aWRlcn0nIH0sYFxuICAgICAgICAgICk7XG4gICAgICAgICAgd3JpdGVGaWxlU3luYyhjb25maWdQYXRoLCB1cGRhdGVkQ29uZmlnKTtcbiAgICAgICAgfSBjYXRjaChfZXJyb3IpIHtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGxldCByZXN1bHQgPSAnJztcblxuICAgIHN3aXRjaChhaUNvbmZpZy5wcm92aWRlcikge1xuICAgICAgY2FzZSAnY3Vyc29yJzpcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgY2FsbEN1cnNvckFJKHByb21wdCwgYWlDb25maWcpO1xuICAgICAgICBsb2coJ0N1cnNvciBJREUgQUkgaW50ZWdyYXRpb24gYWN0aXZlJywgJ2luZm8nLCBxdWlldCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3BlbmFpJzpcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgY2FsbE9wZW5BSUFJKHByb21wdCwgYWlDb25maWcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FudGhyb3BpYyc6XG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IGNhbGxBbnRocm9waWNBSShwcm9tcHQsIGFpQ29uZmlnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjb3BpbG90JzpcbiAgICAgICAgcmVzdWx0ID0gYXdhaXQgY2FsbENvcGlsb3RBSShwcm9tcHQsIGFpQ29uZmlnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBzcGlubmVyLmZhaWwoJ05vIEFJIHByb3ZpZGVyIGNvbmZpZ3VyZWQnKTtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHNwaW5uZXIuc3VjY2VlZCgnQUkgY29kZSBmaXhlcyBnZW5lcmF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHNwaW5uZXIuZmFpbChgQUkgc2VydmljZSBlcnJvcjogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgIGlmKCFxdWlldCkge1xuICAgICAgbG9nKGVycm9yLCAnZXJyb3InKTtcbiAgICB9XG4g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
package/dist/utils/app.js CHANGED
@@ -77,7 +77,7 @@ const copyFiles = async (files, typeName, spinner, config) => {
77
77
  } catch (error) {
78
78
  spinner.fail(`Copying of ${typeName} files failed.`);
79
79
  log(`Error: ${error.message}`, "error");
80
- console.log(error);
80
+ log(error, "error");
81
81
  }
82
82
  };
83
83
  const copyFileSync = (source, target) => {
@@ -119,7 +119,7 @@ const getFilesByExt = (ext, config) => {
119
119
  const removeConflictModules = (moduleList) => {
120
120
  const updatedList = { ...moduleList };
121
121
  Object.keys(updatedList).forEach((moduleName) => {
122
- const regex = new RegExp("^(?!@types/).*(jest|webpack).*$", "gi");
122
+ const regex = new RegExp("^(?!@types/).*?(jest|webpack).*$", "gi");
123
123
  if (regex.test(moduleName)) {
124
124
  delete updatedList[moduleName];
125
125
  }
@@ -214,4 +214,4 @@ export {
214
214
  setPackageJson,
215
215
  updateTemplateName
216
216
  };
217
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2FwcC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCBib3hlbiBmcm9tICdib3hlbic7XG5pbXBvcnQge2NvcHlGaWxlLCBleGlzdHNTeW5jLCBsc3RhdFN5bmMsIG1rZGlyU3luYywgcmVhZGRpclN5bmMsIHJlYWRGaWxlU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtnbG9iU3luY30gZnJvbSAnZ2xvYic7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eS5qcyc7XG5pbXBvcnQgb3JhIGZyb20gJ29yYSc7XG5pbXBvcnQge2Jhc2VuYW1lIGFzIHBhdGhCYXNlbmFtZSwgam9pbiBhcyBwYXRoSm9pbiwgcmVsYXRpdmUgYXMgcGF0aFJlbGF0aXZlLCByZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcbmltcG9ydCB7cmltcmFmU3luY30gZnJvbSAncmltcmFmJztcblxuaW1wb3J0IHtsb2d9IGZyb20gJy4vbG9nLmpzJztcblxuaW1wb3J0IHR5cGUge0xleENvbmZpZ1R5cGV9IGZyb20gJy4uL0xleENvbmZpZy5qcyc7XG5cbmV4cG9ydCBjb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RmlsZW5hbWVzUHJvcHMge1xuICByZWFkb25seSBjYWxsYmFjaz86IChzdGF0dXM6IG51bWJlcikgPT4gdm9pZDtcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuICByZWFkb25seSB0eXBlPzogc3RyaW5nO1xuICByZWFkb25seSB1c2VUeXBlc2NyaXB0PzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEZpbGVuYW1lc1Jlc3VsdCB7XG4gIG5hbWVDYXBzOiBzdHJpbmc7XG4gIHRlbXBsYXRlRXh0OiBzdHJpbmc7XG4gIHRlbXBsYXRlUGF0aDogc3RyaW5nO1xuICB0ZW1wbGF0ZVJlYWN0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRGaWxlbmFtZXMgPSAocHJvcHM6IEdldEZpbGVuYW1lc1Byb3BzKTogRmlsZW5hbWVzUmVzdWx0IHwgdm9pZCA9PiB7XG4gIGNvbnN0IHtjYWxsYmFjaywgY2xpTmFtZSwgbmFtZSwgcXVpZXQsIHR5cGUsIHVzZVR5cGVzY3JpcHR9ID0gcHJvcHM7XG5cbiAgLy8gU2V0IGZpbGVuYW1lXG4gIGxldCBuYW1lQ2Fwczogc3RyaW5nO1xuICBjb25zdCBpdGVtVHlwZXM6IHN0cmluZ1tdID0gWydzdG9yZXMnLCAndmlld3MnXTtcblxuICBpZighbmFtZSkge1xuICAgIGlmKGl0ZW1UeXBlcy5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke3R5cGV9IG5hbWUgaXMgcmVxdWlyZWQuIFBsZWFzZSB1c2UgJ2xleCAtaCcgZm9yIG9wdGlvbnMuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgcmV0dXJuIGNhbGxiYWNrPy4oMSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG5hbWVDYXBzID0gYCR7bmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke25hbWUuc3Vic3RyKDEpfWA7XG4gIH1cblxuICAvLyBEaXNwbGF5IG1lc3NhZ2VcbiAgbG9nKGAke2NsaU5hbWV9IGFkZGluZyAke25hbWV9ICR7dHlwZX0uLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICAvLyBUZW1wbGF0ZSBkaXJlY3RvcnlcbiAgbGV0IHRlbXBsYXRlUGF0aDogc3RyaW5nO1xuICBsZXQgdGVtcGxhdGVFeHQ6IHN0cmluZztcbiAgbGV0IHRlbXBsYXRlUmVhY3Q6IHN0cmluZztcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgdGVtcGxhdGVQYXRoID0gJy4uLy4uL3RlbXBsYXRlcy90eXBlc2NyaXB0JztcbiAgICB0ZW1wbGF0ZUV4dCA9ICcudHMnO1xuICAgIHRlbXBsYXRlUmVhY3QgPSAnLnRzeCc7XG4gIH0gZWxzZSB7XG4gICAgdGVtcGxhdGVQYXRoID0gJy4uLy4uL3RlbXBsYXRlcy9mbG93JztcbiAgICB0ZW1wbGF0ZUV4dCA9ICcuanMnO1xuICAgIHRlbXBsYXRlUmVhY3QgPSAnLmpzJztcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbmFtZUNhcHMsXG4gICAgdGVtcGxhdGVFeHQsXG4gICAgdGVtcGxhdGVQYXRoLFxuICAgIHRlbXBsYXRlUmVhY3RcbiAgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Bpbm5lciB7XG4gIGZhaWw6ICh0ZXh0Pzogc3RyaW5nKSA9PiB2b2lkO1xuICBzdGFydDogKHRleHQ/OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHN1Y2NlZWQ6ICh0ZXh0Pzogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlU3Bpbm5lciA9IChxdWlldCA9IGZhbHNlKTogU3Bpbm5lciA9PiB7XG4gIGlmKHF1aWV0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZhaWw6ICgpID0+IHt9LFxuICAgICAgc3RhcnQ6ICgpID0+IHt9LFxuICAgICAgc3VjY2VlZDogKCkgPT4ge31cbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG9yYSh7Y29sb3I6ICd5ZWxsb3cnfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29weUZpbGVzID0gYXN5bmMgKGZpbGVzOiBzdHJpbmdbXSwgdHlwZU5hbWU6IHN0cmluZywgc3Bpbm5lciwgY29uZmlnOiBMZXhDb25maWdUeXBlKSA9PiB7XG4gIGNvbnN0IHtvdXRwdXRGdWxsUGF0aCwgc291cmNlRnVsbFBhdGh9ID0gY29uZmlnO1xuICBjb25zdCBpdGVtcyA9IGZpbGVzLm1hcCgoZmlsZU5hbWU6IHN0cmluZykgPT4gKHtcbiAgICBmcm9tOiBmaWxlTmFtZSxcbiAgICB0bzogcGF0aFJlc29sdmUob3V0cHV0RnVsbFBhdGgsIHBhdGhSZWxhdGl2ZShzb3VyY2VGdWxsUGF0aCwgZmlsZU5hbWUpKVxuICB9KSk7XG5cbiAgdHJ5IHtcbiAgICBzcGlubmVyLnN0YXJ0KGBDb3B5aW5nICR7dHlwZU5hbWV9IGZpbGVzLi4uYCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoaXRlbXMubWFwKCh7ZnJvbSwgdG99KSA9PiBuZXcgUHJvbWlzZShcbiAgICAgIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbWtkaXJTeW5jKHBhdGhSZXNvbHZlKHRvLCAnLi4nKSwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuICAgICAgICByZXR1cm4gY29weUZpbGUoZnJvbSwgdG8sIChjb3B5RXJyb3IpID0+IHtcbiAgICAgICAgICBpZihjb3B5RXJyb3IpIHtcbiAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgKSkpO1xuICAgIHNwaW5uZXIuc3VjY2VlZChgU3VjY2Vzc2Z1bGx5IGNvcGllZCAke2ZpbGVzLmxlbmd0aH0gJHt0eXBlTmFtZX0gZmlsZXMhYCk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICBzcGlubmVyLmZhaWwoYENvcHlpbmcgb2YgJHt0eXBlTmFtZX0gZmlsZXMgZmFpbGVkLmApO1xuICAgIGxvZyhgRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InKTtcbiAgICBjb25zb2xlLmxvZyhlcnJvcik7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjb3B5RmlsZVN5bmMgPSAoc291cmNlOiBzdHJpbmcsIHRhcmdldDogc3RyaW5nKSA9PiB7XG4gIGxldCB0YXJnZXRGaWxlOiBzdHJpbmcgPSB0YXJnZXQ7XG5cbiAgLy8gSWYgdGFyZ2V0IGlzIGEgZGlyZWN0b3J5IGEgbmV3IGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lIHdpbGwgYmUgY3JlYXRlZFxuICBpZihleGlzdHNTeW5jKHRhcmdldCkpIHtcbiAgICBpZihsc3RhdFN5bmModGFyZ2V0KS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICB0YXJnZXRGaWxlID0gcGF0aEpvaW4odGFyZ2V0LCBwYXRoQmFzZW5hbWUoc291cmNlKSk7XG4gICAgfVxuICB9XG5cbiAgd3JpdGVGaWxlU3luYyh0YXJnZXRGaWxlLCByZWFkRmlsZVN5bmMoc291cmNlKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMgPSAoc291cmNlOiBzdHJpbmcsIHRhcmdldDogc3RyaW5nKTogdm9pZCA9PiB7XG4gIGxldCBmaWxlczogc3RyaW5nW10gPSBbXTtcblxuICAvLyBDaGVjayBpZiBmb2xkZXIgbmVlZHMgdG8gYmUgY3JlYXRlZCBvciBpbnRlZ3JhdGVkXG4gIGNvbnN0IHRhcmdldEZvbGRlcjogc3RyaW5nID0gcGF0aEpvaW4odGFyZ2V0LCBwYXRoQmFzZW5hbWUoc291cmNlKSk7XG5cbiAgaWYoIWV4aXN0c1N5bmModGFyZ2V0Rm9sZGVyKSkge1xuICAgIG1rZGlyU3luYyh0YXJnZXRGb2xkZXIpO1xuICB9XG5cbiAgLy8gQ29weVxuICBpZihsc3RhdFN5bmMoc291cmNlKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgZmlsZXMgPSByZWFkZGlyU3luYyhzb3VyY2UpO1xuICAgIGZpbGVzLmZvckVhY2goKGZpbGU6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgY3VyU291cmNlOiBzdHJpbmcgPSBwYXRoSm9pbihzb3VyY2UsIGZpbGUpO1xuXG4gICAgICBpZihsc3RhdFN5bmMoY3VyU291cmNlKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgIGNvcHlGb2xkZXJSZWN1cnNpdmVTeW5jKGN1clNvdXJjZSwgdGFyZ2V0Rm9sZGVyKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvcHlGaWxlU3luYyhjdXJTb3VyY2UsIHRhcmdldEZvbGRlcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRQYWNrYWdlSnNvbiA9IChwYWNrYWdlUGF0aD86IHN0cmluZykgPT4ge1xuICBjb25zdCBmb3JtYXRQYXRoOiBzdHJpbmcgPSBwYWNrYWdlUGF0aCB8fCBgJHtwcm9jZXNzLmN3ZCgpfS9wYWNrYWdlLmpzb25gO1xuXG4gIC8vIENvbmZpZ3VyZSBwYWNrYWdlLmpzb25cbiAgY29uc3QgcGFja2FnZURhdGE6IHN0cmluZyA9IHJlYWRGaWxlU3luYyhmb3JtYXRQYXRoKS50b1N0cmluZygpO1xuICByZXR1cm4gSlNPTi5wYXJzZShwYWNrYWdlRGF0YSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmlsZXNCeUV4dCA9IChleHQ6IHN0cmluZywgY29uZmlnOiBMZXhDb25maWdUeXBlKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCB7c291cmNlRnVsbFBhdGh9ID0gY29uZmlnO1xuICByZXR1cm4gZ2xvYlN5bmMoYCR7c291cmNlRnVsbFBhdGh9LyoqLyoqJHtleHR9YCk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlQ29uZmxpY3RNb2R1bGVzID0gKG1vZHVsZUxpc3Q6IG9iamVjdCkgPT4ge1xuICBjb25zdCB1cGRhdGVkTGlzdDogb2JqZWN0ID0gey4uLm1vZHVsZUxpc3R9O1xuXG4gIE9iamVjdC5rZXlzKHVwZGF0ZWRMaXN0KS5mb3JFYWNoKChtb2R1bGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZWdleDogUmVnRXhwID0gbmV3IFJlZ0V4cCgnXig/IUB0eXBlc1xcLykuKihqZXN0fHdlYnBhY2spLiokJywgJ2dpJyk7XG4gICAgaWYocmVnZXgudGVzdChtb2R1bGVOYW1lKSkge1xuICAgICAgZGVsZXRlIHVwZGF0ZWRMaXN0W21vZHVsZU5hbWVdO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHVwZGF0ZWRMaXN0O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUZpbGVzID0gKGZpbGVOYW1lOiBzdHJpbmcsIGlzUmVsYXRpdmU6IGJvb2xlYW4gPSBmYWxzZSkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICBjb25zdCBmaWxlUGF0aDogc3RyaW5nID0gaXNSZWxhdGl2ZSA/IHBhdGhSZXNvbHZlKGN3ZCwgZmlsZU5hbWUpIDogZmlsZU5hbWU7XG4gIHRyeSB7XG4gICAgcmltcmFmU3luYyhmaWxlUGF0aCk7XG4gICAgcmV0dXJuIHJlc29sdmUobnVsbCk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgfVxufSk7XG5cbmV4cG9ydCBjb25zdCByZW1vdmVNb2R1bGVzID0gKCkgPT4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICB0cnkge1xuICAgIC8vIFJlbW92ZSBub2RlX21vZHVsZXNcbiAgICBhd2FpdCByZW1vdmVGaWxlcygnLi9ub2RlX21vZHVsZXMnLCB0cnVlKTtcblxuICAgIC8vIFJlbW92ZSB5YXJuIGxvY2tcbiAgICBhd2FpdCByZW1vdmVGaWxlcygnLi95YXJuLmxvY2snLCB0cnVlKTtcblxuICAgIC8vIFJlbW92ZSBucG0gbG9ja1xuICAgIGF3YWl0IHJlbW92ZUZpbGVzKCcuL3BhY2thZ2UtbG9jay5qc29uJywgdHJ1ZSk7XG5cbiAgICByZXNvbHZlKG51bGwpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmVqZWN0KGVycm9yKTtcbiAgfVxufSk7XG5cbmV4cG9ydCBjb25zdCBzZXRQYWNrYWdlSnNvbiA9IChqc29uLCBwYWNrYWdlUGF0aD86IHN0cmluZykgPT4ge1xuICBpZighanNvbikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGZvcm1hdFBhdGg6IHN0cmluZyA9IHBhY2thZ2VQYXRoIHx8IGAke3Byb2Nlc3MuY3dkKCl9L3BhY2thZ2UuanNvbmA7XG5cbiAgLy8gVXBkYXRlIHBhY2thZ2UuanNvblxuICB3cml0ZUZpbGVTeW5jKGZvcm1hdFBhdGgsIEpTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIDIpKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlua2VkTW9kdWxlVHlwZSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgbGlua2VkTW9kdWxlcyA9IChzdGFydFBhdGg/OiBzdHJpbmcpOiBMaW5rZWRNb2R1bGVUeXBlW10gPT4ge1xuICBjb25zdCB3b3JraW5nUGF0aDogc3RyaW5nID0gc3RhcnRQYXRoIHx8IHByb2Nlc3MuY3dkKCk7XG4gIGxldCBtb2R1bGVQYXRoOiBzdHJpbmc7XG4gIGxldCBwcmVmaXg6IHN0cmluZztcblxuICAvLyBpZiB3ZSBoYXZlIGEgc2NvcGUgd2Ugc2hvdWxkIGNoZWNrIGlmIHRoZSBtb2R1bGVzIGluc2lkZSB0aGUgZm9sZGVyIGlzIGxpbmtlZFxuICBpZih3b3JraW5nUGF0aC5pbmNsdWRlcygnQCcpKSB7XG4gICAgcHJlZml4ID0gYEAke3dvcmtpbmdQYXRoLnNwbGl0KCdAJykucG9wKCl9YDtcbiAgICBtb2R1bGVQYXRoID0gd29ya2luZ1BhdGg7XG4gIH0gZWxzZSB7XG4gICAgbW9kdWxlUGF0aCA9IHBhdGhKb2luKHdvcmtpbmdQYXRoLCAnbm9kZV9tb2R1bGVzJyk7XG4gIH1cblxuICBjb25zdCBmb3VuZFBhdGhzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKGAke21vZHVsZVBhdGh9LypgKTtcbiAgcmV0dXJuIGZvdW5kUGF0aHMucmVkdWNlKChsaXN0OiBMaW5rZWRNb2R1bGVUeXBlW10sIGZvdW5kUGF0aDogc3RyaW5nKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXRzID0gbHN0YXRTeW5jKGZvdW5kUGF0aCk7XG5cbiAgICAgIGlmKHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgY29uc3QgZGVlcExpc3Q6IExpbmtlZE1vZHVsZVR5cGVbXSA9IGxpbmtlZE1vZHVsZXMoZm91bmRQYXRoKTtcbiAgICAgICAgbGlzdC5wdXNoKC4uLmRlZXBMaXN0KTtcbiAgICAgIH0gZWxzZSBpZihzdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgICAgIGNvbnN0IG1vZHVsZU5hbWVzOiBzdHJpbmdbXSA9IChbcHJlZml4LCBwYXRoQmFzZW5hbWUoZm91bmRQYXRoKV0pLmZpbHRlcigoaXRlbTogc3RyaW5nKSA9PiAhaXNFbXB0eShpdGVtKSk7XG4gICAgICAgIGxpc3QucHVzaCh7bmFtZTogYCR7bW9kdWxlTmFtZXMuam9pbignLycpfWAsIHBhdGg6IGZvdW5kUGF0aH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbGlzdDtcbiAgICB9IGNhdGNoKGZzRXJyb3IpIHtcbiAgICAgIHRocm93IGZzRXJyb3I7XG4gICAgfVxuICB9LCBbXSk7XG59O1xuXG4vLyBDaGVjayBmb3IgbGlua2VkIG1vZHVsZXNcbmV4cG9ydCBjb25zdCBjaGVja0xpbmtlZE1vZHVsZXMgPSAoKSA9PiB7XG4gIGNvbnN0IGxpbmtlZCA9IGxpbmtlZE1vZHVsZXMoKTtcblxuICBpZihsaW5rZWQubGVuZ3RoKSB7XG4gICAgY29uc3QgbXNnTW9kdWxlOiBzdHJpbmcgPSBsaW5rZWQubGVuZ3RoID4gMSA/ICdNb2R1bGVzJyA6ICdNb2R1bGUnO1xuICAgIGNvbnN0IGxpbmtlZE1zZzogc3RyaW5nID0gbGlua2VkLnJlZHVjZShcbiAgICAgIChtc2c6IHN0cmluZywgbGlua2VkTW9kdWxlOiBMaW5rZWRNb2R1bGVUeXBlKSA9PlxuICAgICAgICBgJHttc2d9XFxuICogJHtsaW5rZWRNb2R1bGUubmFtZX1gLFxuICAgICAgYExpbmtlZCAke21zZ01vZHVsZX06YFxuICAgICk7XG4gICAgbG9nKGJveGVuKGxpbmtlZE1zZywge2RpbUJvcmRlcjogdHJ1ZSwgcGFkZGluZzogMX0pLCAnd2FybicpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlVGVtcGxhdGVOYW1lID0gKGZpbGVQYXRoOiBzdHJpbmcsIHJlcGxhY2U6IHN0cmluZywgcmVwbGFjZUNhcHM6IHN0cmluZykgPT4ge1xuICBsZXQgZGF0YTogc3RyaW5nID0gcmVhZEZpbGVTeW5jKGZpbGVQYXRoLCAndXRmOCcpO1xuICBkYXRhID0gZGF0YS5yZXBsYWNlKC9zYW1wbGUvZywgcmVwbGFjZSk7XG4gIGRhdGEgPSBkYXRhLnJlcGxhY2UoL1NhbXBsZS9nLCByZXBsYWNlQ2Fwcyk7XG4gIHdyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGRhdGEsICd1dGY4Jyk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsT0FBTyxXQUFXO0FBQ2xCLFNBQVEsVUFBVSxZQUFZLFdBQVcsV0FBVyxhQUFhLGNBQWMscUJBQW9CO0FBQ25HLFNBQVEsZ0JBQWU7QUFDdkIsT0FBTyxhQUFhO0FBQ3BCLE9BQU8sU0FBUztBQUNoQixTQUFRLFlBQVksY0FBYyxRQUFRLFVBQVUsWUFBWSxjQUFjLFdBQVcsbUJBQWtCO0FBQzNHLFNBQVEsa0JBQWlCO0FBRXpCLFNBQVEsV0FBVTtBQUlYLE1BQU0sTUFBYyxRQUFRLElBQUk7QUFrQmhDLE1BQU0sZUFBZSxDQUFDLFVBQXFEO0FBQ2hGLFFBQU0sRUFBQyxVQUFVLFNBQVMsTUFBTSxPQUFPLE1BQU0sY0FBYSxJQUFJO0FBRzlELE1BQUk7QUFDSixRQUFNLFlBQXNCLENBQUMsVUFBVSxPQUFPO0FBRTlDLE1BQUcsQ0FBQyxNQUFNO0FBQ1IsUUFBRyxVQUFVLFNBQVMsSUFBSSxHQUFHO0FBQzNCLFVBQUk7QUFBQSxFQUFLLE9BQU8sV0FBVyxJQUFJLHVEQUF1RCxTQUFTLEtBQUs7QUFDcEcsYUFBTyxXQUFXLENBQUM7QUFBQSxJQUNyQjtBQUFBLEVBQ0YsT0FBTztBQUNMLGVBQVcsR0FBRyxLQUFLLE9BQU8sQ0FBQyxFQUFFLFlBQVksQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLENBQUM7QUFBQSxFQUM3RDtBQUdBLE1BQUksR0FBRyxPQUFPLFdBQVcsSUFBSSxJQUFJLElBQUksT0FBTyxRQUFRLEtBQUs7QUFHekQsTUFBSTtBQUNKLE1BQUk7QUFDSixNQUFJO0FBRUosTUFBRyxlQUFlO0FBQ2hCLG1CQUFlO0FBQ2Ysa0JBQWM7QUFDZCxvQkFBZ0I7QUFBQSxFQUNsQixPQUFPO0FBQ0wsbUJBQWU7QUFDZixrQkFBYztBQUNkLG9CQUFnQjtBQUFBLEVBQ2xCO0FBRUEsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGO0FBQ0Y7QUFRTyxNQUFNLGdCQUFnQixDQUFDLFFBQVEsVUFBbUI7QUFDdkQsTUFBRyxPQUFPO0FBQ1IsV0FBTztBQUFBLE1BQ0wsTUFBTSxNQUFNO0FBQUEsTUFBQztBQUFBLE1BQ2IsT0FBTyxNQUFNO0FBQUEsTUFBQztBQUFBLE1BQ2QsU0FBUyxNQUFNO0FBQUEsTUFBQztBQUFBLElBQ2xCO0FBQUEsRUFDRjtBQUVBLFNBQU8sSUFBSSxFQUFDLE9BQU8sU0FBUSxDQUFDO0FBQzlCO0FBRU8sTUFBTSxZQUFZLE9BQU8sT0FBaUIsVUFBa0IsU0FBUyxXQUEwQjtBQUNwRyxRQUFNLEVBQUMsZ0JBQWdCLGVBQWMsSUFBSTtBQUN6QyxRQUFNLFFBQVEsTUFBTSxJQUFJLENBQUMsY0FBc0I7QUFBQSxJQUM3QyxNQUFNO0FBQUEsSUFDTixJQUFJLFlBQVksZ0JBQWdCLGFBQWEsZ0JBQWdCLFFBQVEsQ0FBQztBQUFBLEVBQ3hFLEVBQUU7QUFFRixNQUFJO0FBQ0YsWUFBUSxNQUFNLFdBQVcsUUFBUSxXQUFXO0FBQzVDLFVBQU0sUUFBUSxJQUFJLE1BQU0sSUFBSSxDQUFDLEVBQUMsTUFBTSxHQUFFLE1BQU0sSUFBSTtBQUFBLE1BQzlDLENBQUMsU0FBUyxXQUFXO0FBQ25CLGtCQUFVLFlBQVksSUFBSSxJQUFJLEdBQUcsRUFBQyxXQUFXLEtBQUksQ0FBQztBQUNsRCxlQUFPLFNBQVMsTUFBTSxJQUFJLENBQUMsY0FBYztBQUN2QyxjQUFHLFdBQVc7QUFDWixtQkFBTztBQUFBLFVBQ1QsT0FBTztBQUNMLG9CQUFRLElBQUk7QUFBQSxVQUNkO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSDtBQUFBLElBQ0YsQ0FBQyxDQUFDO0FBQ0YsWUFBUSxRQUFRLHVCQUF1QixNQUFNLE1BQU0sSUFBSSxRQUFRLFNBQVM7QUFBQSxFQUMxRSxTQUFRLE9BQU87QUFFYixZQUFRLEtBQUssY0FBYyxRQUFRLGdCQUFnQjtBQUNuRCxRQUFJLFVBQVUsTUFBTSxPQUFPLElBQUksT0FBTztBQUN0QyxZQUFRLElBQUksS0FBSztBQUFBLEVBQ25CO0FBQ0Y7QUFFTyxNQUFNLGVBQWUsQ0FBQyxRQUFnQixXQUFtQjtBQUM5RCxNQUFJLGFBQXFCO0FBR3pCLE1BQUcsV0FBVyxNQUFNLEdBQUc7QUFDckIsUUFBRyxVQUFVLE1BQU0sRUFBRSxZQUFZLEdBQUc7QUFDbEMsbUJBQWEsU0FBUyxRQUFRLGFBQWEsTUFBTSxDQUFDO0FBQUEsSUFDcEQ7QUFBQSxFQUNGO0FBRUEsZ0JBQWMsWUFBWSxhQUFhLE1BQU0sQ0FBQztBQUNoRDtBQUVPLE1BQU0sMEJBQTBCLENBQUMsUUFBZ0IsV0FBeUI7QUFDL0UsTUFBSSxRQUFrQixDQUFDO0FBR3ZCLFFBQU0sZUFBdUIsU0FBUyxRQUFRLGFBQWEsTUFBTSxDQUFDO0FBRWxFLE1BQUcsQ0FBQyxXQUFXLFlBQVksR0FBRztBQUM1QixjQUFVLFlBQVk7QUFBQSxFQUN4QjtBQUdBLE1BQUcsVUFBVSxNQUFNLEVBQUUsWUFBWSxHQUFHO0FBQ2xDLFlBQVEsWUFBWSxNQUFNO0FBQzFCLFVBQU0sUUFBUSxDQUFDLFNBQWlCO0FBQzlCLFlBQU0sWUFBb0IsU0FBUyxRQUFRLElBQUk7QUFFL0MsVUFBRyxVQUFVLFNBQVMsRUFBRSxZQUFZLEdBQUc7QUFDckMsZ0NBQXdCLFdBQVcsWUFBWTtBQUFBLE1BQ2pELE9BQU87QUFDTCxxQkFBYSxXQUFXLFlBQVk7QUFBQSxNQUN0QztBQUFBLElBQ0YsQ0FBQztBQUFBLEVBQ0g7QUFDRjtBQUVPLE1BQU0saUJBQWlCLENBQUMsZ0JBQXlCO0FBQ3RELFFBQU0sYUFBcUIsZUFBZSxHQUFHLFFBQVEsSUFBSSxDQUFDO0FBRzFELFFBQU0sY0FBc0IsYUFBYSxVQUFVLEVBQUUsU0FBUztBQUM5RCxTQUFPLEtBQUssTUFBTSxXQUFXO0FBQy9CO0FBRU8sTUFBTSxnQkFBZ0IsQ0FBQyxLQUFhLFdBQW9DO0FBQzdFLFFBQU0sRUFBQyxlQUFjLElBQUk7QUFDekIsU0FBTyxTQUFTLEdBQUcsY0FBYyxTQUFTLEdBQUcsRUFBRTtBQUNqRDtBQUVPLE1BQU0sd0JBQXdCLENBQUMsZUFBdUI7QUFDM0QsUUFBTSxjQUFzQixFQUFDLEdBQUcsV0FBVTtBQUUxQyxTQUFPLEtBQUssV0FBVyxFQUFFLFFBQVEsQ0FBQyxlQUF1QjtBQUN2RCxVQUFNLFFBQWdCLElBQUksT0FBTyxtQ0FBb0MsSUFBSTtBQUN6RSxRQUFHLE1BQU0sS0FBSyxVQUFVLEdBQUc7QUFDekIsYUFBTyxZQUFZLFVBQVU7QUFBQSxJQUMvQjtBQUFBLEVBQ0YsQ0FBQztBQUVELFNBQU87QUFDVDtBQUVPLE1BQU0sY0FBYyxDQUFDLFVBQWtCLGFBQXNCLFVBQVUsSUFBSSxRQUFRLENBQUMsU0FBUyxXQUFXO0FBQzdHLFFBQU0sV0FBbUIsYUFBYSxZQUFZLEtBQUssUUFBUSxJQUFJO0FBQ25FLE1BQUk7QUFDRixlQUFXLFFBQVE7QUFDbkIsV0FBTyxRQUFRLElBQUk7QUFBQSxFQUNyQixTQUFRLE9BQU87QUFDYixXQUFPLE9BQU8sS0FBSztBQUFBLEVBQ3JCO0FBQ0YsQ0FBQztBQUVNLE1BQU0sZ0JBQWdCLE1BQU0sSUFBSSxRQUFRLE9BQU8sU0FBUyxXQUFXO0FBQ3hFLE1BQUk7QUFFRixVQUFNLFlBQVksa0JBQWtCLElBQUk7QUFHeEMsVUFBTSxZQUFZLGVBQWUsSUFBSTtBQUdyQyxVQUFNLFlBQVksdUJBQXVCLElBQUk7QUFFN0MsWUFBUSxJQUFJO0FBQUEsRUFDZCxTQUFRLE9BQU87QUFDYixXQUFPLEtBQUs7QUFBQSxFQUNkO0FBQ0YsQ0FBQztBQUVNLE1BQU0saUJBQWlCLENBQUMsTUFBTSxnQkFBeUI7QUFDNUQsTUFBRyxDQUFDLE1BQU07QUFDUjtBQUFBLEVBQ0Y7QUFFQSxRQUFNLGFBQXFCLGVBQWUsR0FBRyxRQUFRLElBQUksQ0FBQztBQUcxRCxnQkFBYyxZQUFZLEtBQUssVUFBVSxNQUFNLE1BQU0sQ0FBQyxDQUFDO0FBQ3pEO0FBT08sTUFBTSxnQkFBZ0IsQ0FBQyxjQUEyQztBQUN2RSxRQUFNLGNBQXNCLGFBQWEsUUFBUSxJQUFJO0FBQ3JELE1BQUk7QUFDSixNQUFJO0FBR0osTUFBRyxZQUFZLFNBQVMsR0FBRyxHQUFHO0FBQzVCLGFBQVMsSUFBSSxZQUFZLE1BQU0sR0FBRyxFQUFFLElBQUksQ0FBQztBQUN6QyxpQkFBYTtBQUFBLEVBQ2YsT0FBTztBQUNMLGlCQUFhLFNBQVMsYUFBYSxjQUFjO0FBQUEsRUFDbkQ7QUFFQSxRQUFNLGFBQXVCLFNBQVMsR0FBRyxVQUFVLElBQUk7QUFDdkQsU0FBTyxXQUFXLE9BQU8sQ0FBQyxNQUEwQixjQUFzQjtBQUN4RSxRQUFJO0FBQ0YsWUFBTSxRQUFRLFVBQVUsU0FBUztBQUVqQyxVQUFHLE1BQU0sWUFBWSxHQUFHO0FBQ3RCLGNBQU0sV0FBK0IsY0FBYyxTQUFTO0FBQzVELGFBQUssS0FBSyxHQUFHLFFBQVE7QUFBQSxNQUN2QixXQUFVLE1BQU0sZUFBZSxHQUFHO0FBQ2hDLGNBQU0sY0FBeUIsQ0FBQyxRQUFRLGFBQWEsU0FBUyxDQUFDLEVBQUcsT0FBTyxDQUFDLFNBQWlCLENBQUMsUUFBUSxJQUFJLENBQUM7QUFDekcsYUFBSyxLQUFLLEVBQUMsTUFBTSxHQUFHLFlBQVksS0FBSyxHQUFHLENBQUMsSUFBSSxNQUFNLFVBQVMsQ0FBQztBQUFBLE1BQy9EO0FBRUEsYUFBTztBQUFBLElBQ1QsU0FBUSxTQUFTO0FBQ2YsWUFBTTtBQUFBLElBQ1I7QUFBQSxFQUNGLEdBQUcsQ0FBQyxDQUFDO0FBQ1A7QUFHTyxNQUFNLHFCQUFxQixNQUFNO0FBQ3RDLFFBQU0sU0FBUyxjQUFjO0FBRTdCLE1BQUcsT0FBTyxRQUFRO0FBQ2hCLFVBQU0sWUFBb0IsT0FBTyxTQUFTLElBQUksWUFBWTtBQUMxRCxVQUFNLFlBQW9CLE9BQU87QUFBQSxNQUMvQixDQUFDLEtBQWEsaUJBQ1osR0FBRyxHQUFHO0FBQUEsS0FBUSxhQUFhLElBQUk7QUFBQSxNQUNqQyxVQUFVLFNBQVM7QUFBQSxJQUNyQjtBQUNBLFFBQUksTUFBTSxXQUFXLEVBQUMsV0FBVyxNQUFNLFNBQVMsRUFBQyxDQUFDLEdBQUcsTUFBTTtBQUFBLEVBQzdEO0FBQ0Y7QUFFTyxNQUFNLHFCQUFxQixDQUFDLFVBQWtCLFNBQWlCLGdCQUF3QjtBQUM1RixNQUFJLE9BQWUsYUFBYSxVQUFVLE1BQU07QUFDaEQsU0FBTyxLQUFLLFFBQVEsV0FBVyxPQUFPO0FBQ3RDLFNBQU8sS0FBSyxRQUFRLFdBQVcsV0FBVztBQUMxQyxnQkFBYyxVQUFVLE1BQU0sTUFBTTtBQUN0QzsiLAogICJuYW1lcyI6IFtdCn0K
217
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2FwcC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCBib3hlbiBmcm9tICdib3hlbic7XG5pbXBvcnQge2NvcHlGaWxlLCBleGlzdHNTeW5jLCBsc3RhdFN5bmMsIG1rZGlyU3luYywgcmVhZGRpclN5bmMsIHJlYWRGaWxlU3luYywgd3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtnbG9iU3luY30gZnJvbSAnZ2xvYic7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eS5qcyc7XG5pbXBvcnQgb3JhIGZyb20gJ29yYSc7XG5pbXBvcnQge2Jhc2VuYW1lIGFzIHBhdGhCYXNlbmFtZSwgam9pbiBhcyBwYXRoSm9pbiwgcmVsYXRpdmUgYXMgcGF0aFJlbGF0aXZlLCByZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcbmltcG9ydCB7cmltcmFmU3luY30gZnJvbSAncmltcmFmJztcblxuaW1wb3J0IHtsb2d9IGZyb20gJy4vbG9nLmpzJztcblxuaW1wb3J0IHR5cGUge0xleENvbmZpZ1R5cGV9IGZyb20gJy4uL0xleENvbmZpZy5qcyc7XG5cbmV4cG9ydCBjb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0RmlsZW5hbWVzUHJvcHMge1xuICByZWFkb25seSBjYWxsYmFjaz86IChzdGF0dXM6IG51bWJlcikgPT4gdm9pZDtcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuICByZWFkb25seSB0eXBlPzogc3RyaW5nO1xuICByZWFkb25seSB1c2VUeXBlc2NyaXB0PzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEZpbGVuYW1lc1Jlc3VsdCB7XG4gIG5hbWVDYXBzOiBzdHJpbmc7XG4gIHRlbXBsYXRlRXh0OiBzdHJpbmc7XG4gIHRlbXBsYXRlUGF0aDogc3RyaW5nO1xuICB0ZW1wbGF0ZVJlYWN0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRGaWxlbmFtZXMgPSAocHJvcHM6IEdldEZpbGVuYW1lc1Byb3BzKTogRmlsZW5hbWVzUmVzdWx0IHwgdm9pZCA9PiB7XG4gIGNvbnN0IHtjYWxsYmFjaywgY2xpTmFtZSwgbmFtZSwgcXVpZXQsIHR5cGUsIHVzZVR5cGVzY3JpcHR9ID0gcHJvcHM7XG5cbiAgLy8gU2V0IGZpbGVuYW1lXG4gIGxldCBuYW1lQ2Fwczogc3RyaW5nO1xuICBjb25zdCBpdGVtVHlwZXM6IHN0cmluZ1tdID0gWydzdG9yZXMnLCAndmlld3MnXTtcblxuICBpZighbmFtZSkge1xuICAgIGlmKGl0ZW1UeXBlcy5pbmNsdWRlcyh0eXBlKSkge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke3R5cGV9IG5hbWUgaXMgcmVxdWlyZWQuIFBsZWFzZSB1c2UgJ2xleCAtaCcgZm9yIG9wdGlvbnMuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgcmV0dXJuIGNhbGxiYWNrPy4oMSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG5hbWVDYXBzID0gYCR7bmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke25hbWUuc3Vic3RyKDEpfWA7XG4gIH1cblxuICAvLyBEaXNwbGF5IG1lc3NhZ2VcbiAgbG9nKGAke2NsaU5hbWV9IGFkZGluZyAke25hbWV9ICR7dHlwZX0uLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICAvLyBUZW1wbGF0ZSBkaXJlY3RvcnlcbiAgbGV0IHRlbXBsYXRlUGF0aDogc3RyaW5nO1xuICBsZXQgdGVtcGxhdGVFeHQ6IHN0cmluZztcbiAgbGV0IHRlbXBsYXRlUmVhY3Q6IHN0cmluZztcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgdGVtcGxhdGVQYXRoID0gJy4uLy4uL3RlbXBsYXRlcy90eXBlc2NyaXB0JztcbiAgICB0ZW1wbGF0ZUV4dCA9ICcudHMnO1xuICAgIHRlbXBsYXRlUmVhY3QgPSAnLnRzeCc7XG4gIH0gZWxzZSB7XG4gICAgdGVtcGxhdGVQYXRoID0gJy4uLy4uL3RlbXBsYXRlcy9mbG93JztcbiAgICB0ZW1wbGF0ZUV4dCA9ICcuanMnO1xuICAgIHRlbXBsYXRlUmVhY3QgPSAnLmpzJztcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbmFtZUNhcHMsXG4gICAgdGVtcGxhdGVFeHQsXG4gICAgdGVtcGxhdGVQYXRoLFxuICAgIHRlbXBsYXRlUmVhY3RcbiAgfTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3Bpbm5lciB7XG4gIGZhaWw6ICh0ZXh0Pzogc3RyaW5nKSA9PiB2b2lkO1xuICBzdGFydDogKHRleHQ/OiBzdHJpbmcpID0+IHZvaWQ7XG4gIHN1Y2NlZWQ6ICh0ZXh0Pzogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlU3Bpbm5lciA9IChxdWlldCA9IGZhbHNlKTogU3Bpbm5lciA9PiB7XG4gIGlmKHF1aWV0KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZhaWw6ICgpID0+IHt9LFxuICAgICAgc3RhcnQ6ICgpID0+IHt9LFxuICAgICAgc3VjY2VlZDogKCkgPT4ge31cbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG9yYSh7Y29sb3I6ICd5ZWxsb3cnfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29weUZpbGVzID0gYXN5bmMgKGZpbGVzOiBzdHJpbmdbXSwgdHlwZU5hbWU6IHN0cmluZywgc3Bpbm5lciwgY29uZmlnOiBMZXhDb25maWdUeXBlKSA9PiB7XG4gIGNvbnN0IHtvdXRwdXRGdWxsUGF0aCwgc291cmNlRnVsbFBhdGh9ID0gY29uZmlnO1xuICBjb25zdCBpdGVtcyA9IGZpbGVzLm1hcCgoZmlsZU5hbWU6IHN0cmluZykgPT4gKHtcbiAgICBmcm9tOiBmaWxlTmFtZSxcbiAgICB0bzogcGF0aFJlc29sdmUob3V0cHV0RnVsbFBhdGgsIHBhdGhSZWxhdGl2ZShzb3VyY2VGdWxsUGF0aCwgZmlsZU5hbWUpKVxuICB9KSk7XG5cbiAgdHJ5IHtcbiAgICBzcGlubmVyLnN0YXJ0KGBDb3B5aW5nICR7dHlwZU5hbWV9IGZpbGVzLi4uYCk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoaXRlbXMubWFwKCh7ZnJvbSwgdG99KSA9PiBuZXcgUHJvbWlzZShcbiAgICAgIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbWtkaXJTeW5jKHBhdGhSZXNvbHZlKHRvLCAnLi4nKSwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuICAgICAgICByZXR1cm4gY29weUZpbGUoZnJvbSwgdG8sIChjb3B5RXJyb3IpID0+IHtcbiAgICAgICAgICBpZihjb3B5RXJyb3IpIHtcbiAgICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgKSkpO1xuICAgIHNwaW5uZXIuc3VjY2VlZChgU3VjY2Vzc2Z1bGx5IGNvcGllZCAke2ZpbGVzLmxlbmd0aH0gJHt0eXBlTmFtZX0gZmlsZXMhYCk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICBzcGlubmVyLmZhaWwoYENvcHlpbmcgb2YgJHt0eXBlTmFtZX0gZmlsZXMgZmFpbGVkLmApO1xuICAgIGxvZyhgRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InKTtcbiAgICBsb2coZXJyb3IsICdlcnJvcicpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgY29weUZpbGVTeW5jID0gKHNvdXJjZTogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZykgPT4ge1xuICBsZXQgdGFyZ2V0RmlsZTogc3RyaW5nID0gdGFyZ2V0O1xuXG4gIC8vIElmIHRhcmdldCBpcyBhIGRpcmVjdG9yeSBhIG5ldyBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZSB3aWxsIGJlIGNyZWF0ZWRcbiAgaWYoZXhpc3RzU3luYyh0YXJnZXQpKSB7XG4gICAgaWYobHN0YXRTeW5jKHRhcmdldCkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgdGFyZ2V0RmlsZSA9IHBhdGhKb2luKHRhcmdldCwgcGF0aEJhc2VuYW1lKHNvdXJjZSkpO1xuICAgIH1cbiAgfVxuXG4gIHdyaXRlRmlsZVN5bmModGFyZ2V0RmlsZSwgcmVhZEZpbGVTeW5jKHNvdXJjZSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvcHlGb2xkZXJSZWN1cnNpdmVTeW5jID0gKHNvdXJjZTogc3RyaW5nLCB0YXJnZXQ6IHN0cmluZyk6IHZvaWQgPT4ge1xuICBsZXQgZmlsZXM6IHN0cmluZ1tdID0gW107XG5cbiAgLy8gQ2hlY2sgaWYgZm9sZGVyIG5lZWRzIHRvIGJlIGNyZWF0ZWQgb3IgaW50ZWdyYXRlZFxuICBjb25zdCB0YXJnZXRGb2xkZXI6IHN0cmluZyA9IHBhdGhKb2luKHRhcmdldCwgcGF0aEJhc2VuYW1lKHNvdXJjZSkpO1xuXG4gIGlmKCFleGlzdHNTeW5jKHRhcmdldEZvbGRlcikpIHtcbiAgICBta2RpclN5bmModGFyZ2V0Rm9sZGVyKTtcbiAgfVxuXG4gIC8vIENvcHlcbiAgaWYobHN0YXRTeW5jKHNvdXJjZSkuaXNEaXJlY3RvcnkoKSkge1xuICAgIGZpbGVzID0gcmVhZGRpclN5bmMoc291cmNlKTtcbiAgICBmaWxlcy5mb3JFYWNoKChmaWxlOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGN1clNvdXJjZTogc3RyaW5nID0gcGF0aEpvaW4oc291cmNlLCBmaWxlKTtcblxuICAgICAgaWYobHN0YXRTeW5jKGN1clNvdXJjZSkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhjdXJTb3VyY2UsIHRhcmdldEZvbGRlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb3B5RmlsZVN5bmMoY3VyU291cmNlLCB0YXJnZXRGb2xkZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UGFja2FnZUpzb24gPSAocGFja2FnZVBhdGg/OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgZm9ybWF0UGF0aDogc3RyaW5nID0gcGFja2FnZVBhdGggfHwgYCR7cHJvY2Vzcy5jd2QoKX0vcGFja2FnZS5qc29uYDtcblxuICAvLyBDb25maWd1cmUgcGFja2FnZS5qc29uXG4gIGNvbnN0IHBhY2thZ2VEYXRhOiBzdHJpbmcgPSByZWFkRmlsZVN5bmMoZm9ybWF0UGF0aCkudG9TdHJpbmcoKTtcbiAgcmV0dXJuIEpTT04ucGFyc2UocGFja2FnZURhdGEpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZpbGVzQnlFeHQgPSAoZXh0OiBzdHJpbmcsIGNvbmZpZzogTGV4Q29uZmlnVHlwZSk6IHN0cmluZ1tdID0+IHtcbiAgY29uc3Qge3NvdXJjZUZ1bGxQYXRofSA9IGNvbmZpZztcbiAgcmV0dXJuIGdsb2JTeW5jKGAke3NvdXJjZUZ1bGxQYXRofS8qKi8qKiR7ZXh0fWApO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUNvbmZsaWN0TW9kdWxlcyA9IChtb2R1bGVMaXN0OiBvYmplY3QpID0+IHtcbiAgY29uc3QgdXBkYXRlZExpc3Q6IG9iamVjdCA9IHsuLi5tb2R1bGVMaXN0fTtcblxuICBPYmplY3Qua2V5cyh1cGRhdGVkTGlzdCkuZm9yRWFjaCgobW9kdWxlTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgcmVnZXg6IFJlZ0V4cCA9IG5ldyBSZWdFeHAoJ14oPyFAdHlwZXMvKS4qPyhqZXN0fHdlYnBhY2spLiokJywgJ2dpJyk7XG4gICAgaWYocmVnZXgudGVzdChtb2R1bGVOYW1lKSkge1xuICAgICAgZGVsZXRlIHVwZGF0ZWRMaXN0W21vZHVsZU5hbWVdO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHVwZGF0ZWRMaXN0O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUZpbGVzID0gKGZpbGVOYW1lOiBzdHJpbmcsIGlzUmVsYXRpdmU6IGJvb2xlYW4gPSBmYWxzZSkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICBjb25zdCBmaWxlUGF0aDogc3RyaW5nID0gaXNSZWxhdGl2ZSA/IHBhdGhSZXNvbHZlKGN3ZCwgZmlsZU5hbWUpIDogZmlsZU5hbWU7XG4gIHRyeSB7XG4gICAgcmltcmFmU3luYyhmaWxlUGF0aCk7XG4gICAgcmV0dXJuIHJlc29sdmUobnVsbCk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgfVxufSk7XG5cbmV4cG9ydCBjb25zdCByZW1vdmVNb2R1bGVzID0gKCkgPT4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICB0cnkge1xuICAgIC8vIFJlbW92ZSBub2RlX21vZHVsZXNcbiAgICBhd2FpdCByZW1vdmVGaWxlcygnLi9ub2RlX21vZHVsZXMnLCB0cnVlKTtcblxuICAgIC8vIFJlbW92ZSB5YXJuIGxvY2tcbiAgICBhd2FpdCByZW1vdmVGaWxlcygnLi95YXJuLmxvY2snLCB0cnVlKTtcblxuICAgIC8vIFJlbW92ZSBucG0gbG9ja1xuICAgIGF3YWl0IHJlbW92ZUZpbGVzKCcuL3BhY2thZ2UtbG9jay5qc29uJywgdHJ1ZSk7XG5cbiAgICByZXNvbHZlKG51bGwpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmVqZWN0KGVycm9yKTtcbiAgfVxufSk7XG5cbmV4cG9ydCBjb25zdCBzZXRQYWNrYWdlSnNvbiA9IChqc29uLCBwYWNrYWdlUGF0aD86IHN0cmluZykgPT4ge1xuICBpZighanNvbikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGZvcm1hdFBhdGg6IHN0cmluZyA9IHBhY2thZ2VQYXRoIHx8IGAke3Byb2Nlc3MuY3dkKCl9L3BhY2thZ2UuanNvbmA7XG5cbiAgLy8gVXBkYXRlIHBhY2thZ2UuanNvblxuICB3cml0ZUZpbGVTeW5jKGZvcm1hdFBhdGgsIEpTT04uc3RyaW5naWZ5KGpzb24sIG51bGwsIDIpKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlua2VkTW9kdWxlVHlwZSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgbGlua2VkTW9kdWxlcyA9IChzdGFydFBhdGg/OiBzdHJpbmcpOiBMaW5rZWRNb2R1bGVUeXBlW10gPT4ge1xuICBjb25zdCB3b3JraW5nUGF0aDogc3RyaW5nID0gc3RhcnRQYXRoIHx8IHByb2Nlc3MuY3dkKCk7XG4gIGxldCBtb2R1bGVQYXRoOiBzdHJpbmc7XG4gIGxldCBwcmVmaXg6IHN0cmluZztcblxuICAvLyBpZiB3ZSBoYXZlIGEgc2NvcGUgd2Ugc2hvdWxkIGNoZWNrIGlmIHRoZSBtb2R1bGVzIGluc2lkZSB0aGUgZm9sZGVyIGlzIGxpbmtlZFxuICBpZih3b3JraW5nUGF0aC5pbmNsdWRlcygnQCcpKSB7XG4gICAgcHJlZml4ID0gYEAke3dvcmtpbmdQYXRoLnNwbGl0KCdAJykucG9wKCl9YDtcbiAgICBtb2R1bGVQYXRoID0gd29ya2luZ1BhdGg7XG4gIH0gZWxzZSB7XG4gICAgbW9kdWxlUGF0aCA9IHBhdGhKb2luKHdvcmtpbmdQYXRoLCAnbm9kZV9tb2R1bGVzJyk7XG4gIH1cblxuICBjb25zdCBmb3VuZFBhdGhzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKGAke21vZHVsZVBhdGh9LypgKTtcbiAgcmV0dXJuIGZvdW5kUGF0aHMucmVkdWNlKChsaXN0OiBMaW5rZWRNb2R1bGVUeXBlW10sIGZvdW5kUGF0aDogc3RyaW5nKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YXRzID0gbHN0YXRTeW5jKGZvdW5kUGF0aCk7XG5cbiAgICAgIGlmKHN0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgY29uc3QgZGVlcExpc3Q6IExpbmtlZE1vZHVsZVR5cGVbXSA9IGxpbmtlZE1vZHVsZXMoZm91bmRQYXRoKTtcbiAgICAgICAgbGlzdC5wdXNoKC4uLmRlZXBMaXN0KTtcbiAgICAgIH0gZWxzZSBpZihzdGF0cy5pc1N5bWJvbGljTGluaygpKSB7XG4gICAgICAgIGNvbnN0IG1vZHVsZU5hbWVzOiBzdHJpbmdbXSA9IChbcHJlZml4LCBwYXRoQmFzZW5hbWUoZm91bmRQYXRoKV0pLmZpbHRlcigoaXRlbTogc3RyaW5nKSA9PiAhaXNFbXB0eShpdGVtKSk7XG4gICAgICAgIGxpc3QucHVzaCh7bmFtZTogYCR7bW9kdWxlTmFtZXMuam9pbignLycpfWAsIHBhdGg6IGZvdW5kUGF0aH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbGlzdDtcbiAgICB9IGNhdGNoKGZzRXJyb3IpIHtcbiAgICAgIHRocm93IGZzRXJyb3I7XG4gICAgfVxuICB9LCBbXSk7XG59O1xuXG4vLyBDaGVjayBmb3IgbGlua2VkIG1vZHVsZXNcbmV4cG9ydCBjb25zdCBjaGVja0xpbmtlZE1vZHVsZXMgPSAoKSA9PiB7XG4gIGNvbnN0IGxpbmtlZCA9IGxpbmtlZE1vZHVsZXMoKTtcblxuICBpZihsaW5rZWQubGVuZ3RoKSB7XG4gICAgY29uc3QgbXNnTW9kdWxlOiBzdHJpbmcgPSBsaW5rZWQubGVuZ3RoID4gMSA/ICdNb2R1bGVzJyA6ICdNb2R1bGUnO1xuICAgIGNvbnN0IGxpbmtlZE1zZzogc3RyaW5nID0gbGlua2VkLnJlZHVjZShcbiAgICAgIChtc2c6IHN0cmluZywgbGlua2VkTW9kdWxlOiBMaW5rZWRNb2R1bGVUeXBlKSA9PlxuICAgICAgICBgJHttc2d9XFxuICogJHtsaW5rZWRNb2R1bGUubmFtZX1gLFxuICAgICAgYExpbmtlZCAke21zZ01vZHVsZX06YFxuICAgICk7XG4gICAgbG9nKGJveGVuKGxpbmtlZE1zZywge2RpbUJvcmRlcjogdHJ1ZSwgcGFkZGluZzogMX0pLCAnd2FybicpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlVGVtcGxhdGVOYW1lID0gKGZpbGVQYXRoOiBzdHJpbmcsIHJlcGxhY2U6IHN0cmluZywgcmVwbGFjZUNhcHM6IHN0cmluZykgPT4ge1xuICBsZXQgZGF0YTogc3RyaW5nID0gcmVhZEZpbGVTeW5jKGZpbGVQYXRoLCAndXRmOCcpO1xuICBkYXRhID0gZGF0YS5yZXBsYWNlKC9zYW1wbGUvZywgcmVwbGFjZSk7XG4gIGRhdGEgPSBkYXRhLnJlcGxhY2UoL1NhbXBsZS9nLCByZXBsYWNlQ2Fwcyk7XG4gIHdyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGRhdGEsICd1dGY4Jyk7XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQU8sV0FBVztBQUNsQixTQUFRLFVBQVUsWUFBWSxXQUFXLFdBQVcsYUFBYSxjQUFjLHFCQUFvQjtBQUNuRyxTQUFRLGdCQUFlO0FBQ3ZCLE9BQU8sYUFBYTtBQUNwQixPQUFPLFNBQVM7QUFDaEIsU0FBUSxZQUFZLGNBQWMsUUFBUSxVQUFVLFlBQVksY0FBYyxXQUFXLG1CQUFrQjtBQUMzRyxTQUFRLGtCQUFpQjtBQUV6QixTQUFRLFdBQVU7QUFJWCxNQUFNLE1BQWMsUUFBUSxJQUFJO0FBa0JoQyxNQUFNLGVBQWUsQ0FBQyxVQUFxRDtBQUNoRixRQUFNLEVBQUMsVUFBVSxTQUFTLE1BQU0sT0FBTyxNQUFNLGNBQWEsSUFBSTtBQUc5RCxNQUFJO0FBQ0osUUFBTSxZQUFzQixDQUFDLFVBQVUsT0FBTztBQUU5QyxNQUFHLENBQUMsTUFBTTtBQUNSLFFBQUcsVUFBVSxTQUFTLElBQUksR0FBRztBQUMzQixVQUFJO0FBQUEsRUFBSyxPQUFPLFdBQVcsSUFBSSx1REFBdUQsU0FBUyxLQUFLO0FBQ3BHLGFBQU8sV0FBVyxDQUFDO0FBQUEsSUFDckI7QUFBQSxFQUNGLE9BQU87QUFDTCxlQUFXLEdBQUcsS0FBSyxPQUFPLENBQUMsRUFBRSxZQUFZLENBQUMsR0FBRyxLQUFLLE9BQU8s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
@@ -35,4 +35,4 @@ export {
35
35
  relativeFilePath,
36
36
  relativeNodePath
37
37
  };
38
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2ZpbGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDIyLVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgZmluZEZpbGVVcCBmcm9tICdmaW5kLWZpbGUtdXAnO1xuaW1wb3J0IHtleGlzdHNTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3Jlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtVUkx9IGZyb20gJ3VybCc7XG5cbi8vIEdldCBmaWxlIHBhdGhzIHJlbGF0aXZlIHRvIExleFxuZXhwb3J0IGNvbnN0IHJlbGF0aXZlRmlsZVBhdGggPSAoZmlsZW5hbWU6IHN0cmluZywgZGlyUGF0aDogc3RyaW5nID0gJy4vJywgYmFja1VwOiBudW1iZXIgPSAwKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbmVzdERlcHRoOiBudW1iZXIgPSAxMDtcblxuICBpZihiYWNrVXApIHtcbiAgICBjb25zdCBmaWxlUGF0aDogc3RyaW5nID0gZmluZEZpbGVVcC5zeW5jKGZpbGVuYW1lLCBkaXJQYXRoLCBuZXN0RGVwdGgpO1xuICAgIGNvbnN0IHByZXZpb3VzUGF0aDogc3RyaW5nID0gQXJyYXkoYmFja1VwKS5maWxsKG51bGwpLm1hcCgoKSA9PiAnLi4vJykuam9pbignJyk7XG4gICAgcmV0dXJuIHBhdGhSZXNvbHZlKGZpbGVQYXRoLCBwcmV2aW91c1BhdGgpO1xuICB9XG5cbiAgcmV0dXJuIGZpbmRGaWxlVXAuc3luYyhmaWxlbmFtZSwgZGlyUGF0aCwgbmVzdERlcHRoKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWxhdGl2ZU5vZGVQYXRoID0gKGZpbGVuYW1lOiBzdHJpbmcsIGRpclBhdGg6IHN0cmluZyA9ICcuLycsIGJhY2tVcDogbnVtYmVyID0gMCk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG5lc3REZXB0aDogbnVtYmVyID0gMTA7XG5cbiAgaWYoYmFja1VwKSB7XG4gICAgY29uc3QgZmlsZVBhdGg6IHN0cmluZyA9IGZpbmRGaWxlVXAuc3luYyhgbm9kZV9tb2R1bGVzLyR7ZmlsZW5hbWV9YCwgZGlyUGF0aCwgbmVzdERlcHRoKTtcbiAgICBjb25zdCBwcmV2aW91c1BhdGg6IHN0cmluZyA9IEFycmF5KG5lc3REZXB0aCkuZmlsbChudWxsKS5tYXAoKCkgPT4gJy4uLycpLmpvaW4oJycpO1xuICAgIHJldHVybiBwYXRoUmVzb2x2ZShmaWxlUGF0aCwgcHJldmlvdXNQYXRoKTtcbiAgfVxuXG4gIHJldHVybiBmaW5kRmlsZVVwLnN5bmMoYG5vZGVfbW9kdWxlcy8ke2ZpbGVuYW1lfWAsIGRpclBhdGgsIG5lc3REZXB0aCk7XG59O1xuXG4vLyBHZXQgZmlsZSBwYXRocyByZWxhdGl2ZSB0byBMZXhcbmV4cG9ydCBjb25zdCBnZXROb2RlUGF0aCA9IChtb2R1bGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBkaXJOYW1lID0gbmV3IFVSTCgnLicsIGltcG9ydC5tZXRhLnVybCkucGF0aG5hbWU7XG4gIGNvbnN0IG1vZHVsZVBhdGg6IHN0cmluZyA9IGBub2RlX21vZHVsZXMvJHttb2R1bGVOYW1lfWA7XG4gIGNvbnN0IHJlcG9QYXRoOiBzdHJpbmcgPSBmaW5kRmlsZVVwLnN5bmMobW9kdWxlUGF0aCwgZGlyTmFtZSk7XG5cbiAgaWYocmVwb1BhdGggJiYgZXhpc3RzU3luYyhyZXBvUGF0aCkpIHtcbiAgICByZXR1cm4gcmVwb1BhdGg7XG4gIH1cblxuICBjb25zdCBsb2NhbFBhdGg6IHN0cmluZyA9IGZpbmRGaWxlVXAuc3luYyhtb2R1bGVQYXRoLCAnLi8nLCAxMCkgfHwgYC4vJHttb2R1bGVQYXRofWA7XG4gIHJldHVybiBsb2NhbFBhdGg7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsT0FBTyxnQkFBZ0I7QUFDdkIsU0FBUSxrQkFBaUI7QUFDekIsU0FBUSxXQUFXLG1CQUFrQjtBQUNyQyxTQUFRLFdBQVU7QUFHWCxNQUFNLG1CQUFtQixDQUFDLFVBQWtCLFVBQWtCLE1BQU0sU0FBaUIsTUFBYztBQUN4RyxRQUFNLFlBQW9CO0FBRTFCLE1BQUcsUUFBUTtBQUNULFVBQU0sV0FBbUIsV0FBVyxLQUFLLFVBQVUsU0FBUyxTQUFTO0FBQ3JFLFVBQU0sZUFBdUIsTUFBTSxNQUFNLEVBQUUsS0FBSyxJQUFJLEVBQUUsSUFBSSxNQUFNLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDOUUsV0FBTyxZQUFZLFVBQVUsWUFBWTtBQUFBLEVBQzNDO0FBRUEsU0FBTyxXQUFXLEtBQUssVUFBVSxTQUFTLFNBQVM7QUFDckQ7QUFFTyxNQUFNLG1CQUFtQixDQUFDLFVBQWtCLFVBQWtCLE1BQU0sU0FBaUIsTUFBYztBQUN4RyxRQUFNLFlBQW9CO0FBRTFCLE1BQUcsUUFBUTtBQUNULFVBQU0sV0FBbUIsV0FBVyxLQUFLLGdCQUFnQixRQUFRLElBQUksU0FBUyxTQUFTO0FBQ3ZGLFVBQU0sZUFBdUIsTUFBTSxTQUFTLEVBQUUsS0FBSyxJQUFJLEVBQUUsSUFBSSxNQUFNLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDakYsV0FBTyxZQUFZLFVBQVUsWUFBWTtBQUFBLEVBQzNDO0FBRUEsU0FBTyxXQUFXLEtBQUssZ0JBQWdCLFFBQVEsSUFBSSxTQUFTLFNBQVM7QUFDdkU7QUFHTyxNQUFNLGNBQWMsQ0FBQyxlQUErQjtBQUN6RCxRQUFNLFVBQVUsSUFBSSxJQUFJLEtBQUssWUFBWSxHQUFHLEVBQUU7QUFDOUMsUUFBTSxhQUFxQixnQkFBZ0IsVUFBVTtBQUNyRCxRQUFNLFdBQW1CLFdBQVcsS0FBSyxZQUFZLE9BQU87QUFFNUQsTUFBRyxZQUFZLFdBQVcsUUFBUSxHQUFHO0FBQ25DLFdBQU87QUFBQSxFQUNUO0FBRUEsUUFBTSxZQUFvQixXQUFXLEtBQUssWUFBWSxNQUFNLEVBQUUsS0FBSyxLQUFLLFVBQVU7QUFDbEYsU0FBTztBQUNUOyIsCiAgIm5hbWVzIjogW10KfQo=
38
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2ZpbGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDIyLVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgZmluZEZpbGVVcCBmcm9tICdmaW5kLWZpbGUtdXAnO1xuaW1wb3J0IHtleGlzdHNTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3Jlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtVUkx9IGZyb20gJ3VybCc7XG5cbi8vIEdldCBmaWxlIHBhdGhzIHJlbGF0aXZlIHRvIExleFxuZXhwb3J0IGNvbnN0IHJlbGF0aXZlRmlsZVBhdGggPSAoZmlsZW5hbWU6IHN0cmluZywgZGlyUGF0aDogc3RyaW5nID0gJy4vJywgYmFja1VwOiBudW1iZXIgPSAwKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbmVzdERlcHRoOiBudW1iZXIgPSAxMDtcblxuICBpZihiYWNrVXApIHtcbiAgICBjb25zdCBmaWxlUGF0aDogc3RyaW5nID0gZmluZEZpbGVVcC5zeW5jKGZpbGVuYW1lLCBkaXJQYXRoLCBuZXN0RGVwdGgpO1xuICAgIGNvbnN0IHByZXZpb3VzUGF0aDogc3RyaW5nID0gQXJyYXkoYmFja1VwKS5maWxsKG51bGwpLm1hcCgoKSA9PiAnLi4vJykuam9pbignJyk7XG4gICAgcmV0dXJuIHBhdGhSZXNvbHZlKGZpbGVQYXRoLCBwcmV2aW91c1BhdGgpO1xuICB9XG5cbiAgcmV0dXJuIGZpbmRGaWxlVXAuc3luYyhmaWxlbmFtZSwgZGlyUGF0aCwgbmVzdERlcHRoKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWxhdGl2ZU5vZGVQYXRoID0gKGZpbGVuYW1lOiBzdHJpbmcsIGRpclBhdGg6IHN0cmluZyA9ICcuLycsIGJhY2tVcDogbnVtYmVyID0gMCk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG5lc3REZXB0aDogbnVtYmVyID0gMTA7XG5cbiAgaWYoYmFja1VwKSB7XG4gICAgY29uc3QgZmlsZVBhdGg6IHN0cmluZyA9IGZpbmRGaWxlVXAuc3luYyhgbm9kZV9tb2R1bGVzLyR7ZmlsZW5hbWV9YCwgZGlyUGF0aCwgbmVzdERlcHRoKTtcbiAgICBjb25zdCBwcmV2aW91c1BhdGg6IHN0cmluZyA9IEFycmF5KG5lc3REZXB0aCkuZmlsbChudWxsKS5tYXAoKCkgPT4gJy4uLycpLmpvaW4oJycpO1xuICAgIHJldHVybiBwYXRoUmVzb2x2ZShmaWxlUGF0aCwgcHJldmlvdXNQYXRoKTtcbiAgfVxuXG4gIHJldHVybiBmaW5kRmlsZVVwLnN5bmMoYG5vZGVfbW9kdWxlcy8ke2ZpbGVuYW1lfWAsIGRpclBhdGgsIG5lc3REZXB0aCk7XG59O1xuXG4vLyBHZXQgZmlsZSBwYXRocyByZWxhdGl2ZSB0byBMZXhcbmV4cG9ydCBjb25zdCBnZXROb2RlUGF0aCA9IChtb2R1bGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBkaXJOYW1lID0gbmV3IFVSTCgnLicsIGltcG9ydC5tZXRhLnVybCkucGF0aG5hbWU7XG4gIGNvbnN0IG1vZHVsZVBhdGg6IHN0cmluZyA9IGBub2RlX21vZHVsZXMvJHttb2R1bGVOYW1lfWA7XG4gIGNvbnN0IHJlcG9QYXRoOiBzdHJpbmcgPSBmaW5kRmlsZVVwLnN5bmMobW9kdWxlUGF0aCwgZGlyTmFtZSk7XG5cbiAgaWYocmVwb1BhdGggJiYgZXhpc3RzU3luYyhyZXBvUGF0aCkpIHtcbiAgICByZXR1cm4gcmVwb1BhdGg7XG4gIH1cblxuICBjb25zdCBsb2NhbFBhdGg6IHN0cmluZyA9IGZpbmRGaWxlVXAuc3luYyhtb2R1bGVQYXRoLCAnLi8nLCAxMCkgfHwgYC4vJHttb2R1bGVQYXRofWA7XG4gIHJldHVybiBsb2NhbFBhdGg7XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQU8sZ0JBQWdCO0FBQ3ZCLFNBQVEsa0JBQWlCO0FBQ3pCLFNBQVEsV0FBVyxtQkFBa0I7QUFDckMsU0FBUSxXQUFVO0FBR1gsTUFBTSxtQkFBbUIsQ0FBQyxVQUFrQixVQUFrQixNQUFNLFNBQWlCLE1BQWM7QUFDeEcsUUFBTSxZQUFvQjtBQUUxQixNQUFHLFFBQVE7QUFDVCxVQUFNLFdBQW1CLFdBQVcsS0FBSyxVQUFVLFNBQVMsU0FBUztBQUNyRSxVQUFNLGVBQXVCLE1BQU0sTUFBTSxFQUFFLEtBQUssSUFBSSxFQUFFLElBQUksTUFBTSxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQzlFLFdBQU8sWUFBWSxVQUFVLFlBQVk7QUFBQSxFQUMzQztBQUVBLFNBQU8sV0FBVyxLQUFLLFVBQVUsU0FBUyxTQUFTO0FBQ3JEO0FBRU8sTUFBTSxtQkFBbUIsQ0FBQyxVQUFrQixVQUFrQixNQUFNLFNBQWlCLE1BQWM7QUFDeEcsUUFBTSxZQUFvQjtBQUUxQixNQUFHLFFBQVE7QUFDVCxVQUFNLFdBQW1CLFdBQVcsS0FBSyxnQkFBZ0IsUUFBUSxJQUFJLFNBQVMsU0FBUztBQUN2RixVQUFNLGVBQXVCLE1BQU0sU0FBUyxFQUFFLEtBQUssSUFBSSxFQUFFLElBQUksTUFBTSxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQ2pGLFdBQU8sWUFBWSxVQUFVLFlBQVk7QUFBQSxFQUMzQztBQUVBLFNBQU8sV0FBVyxLQUFLLGdCQUFnQixRQUFRLElBQUksU0FBUyxTQUFTO0FBQ3ZFO0FBR08sTUFBTSxjQUFjLENBQUMsZUFBK0I7QUFDekQsUUFBTSxVQUFVLElBQUksSUFBSSxLQUFLLFlBQVksR0FBRyxFQUFFO0FBQzlDLFFBQU0sYUFBcUIsZ0JBQWdCLFVBQVU7QUFDckQsUUFBTSxXQUFtQixXQUFXLEtBQUssWUFBWSxPQUFPO0FBRTVELE1BQUcsWUFBWSxXQUFXLFFBQVEsR0FBRztBQUNuQyxXQUFPO0FBQUEsRUFDVDtBQUVBLFFBQU0sWUFBb0IsV0FBVyxLQUFLLFlBQVksTUFBTSxFQUFFLEtBQUssS0FBSyxVQUFVO0FBQ2xGLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
package/dist/utils/log.js CHANGED
@@ -13,6 +13,7 @@ const log = (message, type = "info", quiet = false) => {
13
13
  color = chalk.greenBright;
14
14
  break;
15
15
  case "warn":
16
+ case "warning":
16
17
  color = chalk.yellow;
17
18
  break;
18
19
  default:
@@ -25,4 +26,4 @@ const log = (message, type = "info", quiet = false) => {
25
26
  export {
26
27
  log
27
28
  };
28
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2xvZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjItUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmV4cG9ydCBjb25zdCBsb2cgPSAobWVzc2FnZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcgPSAnaW5mbycsIHF1aWV0ID0gZmFsc2UpID0+IHtcbiAgaWYoIXF1aWV0KSB7XG4gICAgbGV0IGNvbG9yO1xuXG4gICAgc3dpdGNoKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgY29sb3IgPSBjaGFsay5yZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbm90ZSc6XG4gICAgICAgIGNvbG9yID0gY2hhbGsuZ3JleTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdWNjZXNzJzpcbiAgICAgICAgY29sb3IgPSBjaGFsay5ncmVlbkJyaWdodDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd3YXJuJzpcbiAgICAgICAgY29sb3IgPSBjaGFsay55ZWxsb3c7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29sb3IgPSBjaGFsay5jeWFuO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZyhjb2xvcihtZXNzYWdlKSk7XG4gIH1cbn07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUFPLFdBQVc7QUFFWCxNQUFNLE1BQU0sQ0FBQyxTQUFpQixPQUFlLFFBQVEsUUFBUSxVQUFVO0FBQzVFLE1BQUcsQ0FBQyxPQUFPO0FBQ1QsUUFBSTtBQUVKLFlBQU8sTUFBTTtBQUFBLE1BQ1gsS0FBSztBQUNILGdCQUFRLE1BQU07QUFDZDtBQUFBLE1BQ0YsS0FBSztBQUNILGdCQUFRLE1BQU07QUFDZDtBQUFBLE1BQ0YsS0FBSztBQUNILGdCQUFRLE1BQU07QUFDZDtBQUFBLE1BQ0YsS0FBSztBQUNILGdCQUFRLE1BQU07QUFDZDtBQUFBLE1BQ0Y7QUFDRSxnQkFBUSxNQUFNO0FBQ2Q7QUFBQSxJQUNKO0FBRUEsWUFBUSxJQUFJLE1BQU0sT0FBTyxDQUFDO0FBQUEsRUFDNUI7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
29
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2xvZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjItUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmV4cG9ydCBjb25zdCBsb2cgPSAobWVzc2FnZTogc3RyaW5nLCB0eXBlOiBzdHJpbmcgPSAnaW5mbycsIHF1aWV0ID0gZmFsc2UpID0+IHtcbiAgaWYoIXF1aWV0KSB7XG4gICAgbGV0IGNvbG9yO1xuXG4gICAgc3dpdGNoKHR5cGUpIHtcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgY29sb3IgPSBjaGFsay5yZWQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbm90ZSc6XG4gICAgICAgIGNvbG9yID0gY2hhbGsuZ3JleTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzdWNjZXNzJzpcbiAgICAgICAgY29sb3IgPSBjaGFsay5ncmVlbkJyaWdodDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd3YXJuJzpcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICBjb2xvciA9IGNoYWxrLnllbGxvdztcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb2xvciA9IGNoYWxrLmN5YW47XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgY29uc29sZS5sb2coY29sb3IobWVzc2FnZSkpO1xuICB9XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQU8sV0FBVztBQUVYLE1BQU0sTUFBTSxDQUFDLFNBQWlCLE9BQWUsUUFBUSxRQUFRLFVBQVU7QUFDNUUsTUFBRyxDQUFDLE9BQU87QUFDVCxRQUFJO0FBRUosWUFBTyxNQUFNO0FBQUEsTUFDWCxLQUFLO0FBQ0gsZ0JBQVEsTUFBTTtBQUNkO0FBQUEsTUFDRixLQUFLO0FBQ0gsZ0JBQVEsTUFBTTtBQUNkO0FBQUEsTUFDRixLQUFLO0FBQ0gsZ0JBQVEsTUFBTTtBQUNkO0FBQUEsTUFDRixLQUFLO0FBQUEsTUFDTCxLQUFLO0FBQ0gsZ0JBQVEsTUFBTTtBQUNkO0FBQUEsTUFDRjtBQUNFLGdCQUFRLE1BQU07QUFDZDtBQUFBLElBQ0o7QUFHQSxZQUFRLElBQUksTUFBTSxPQUFPLENBQUM7QUFBQSxFQUM1QjtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
@@ -1,5 +1,5 @@
1
- import React from "react";
1
+ import * as react from "react";
2
2
  export {
3
- React
3
+ react
4
4
  };
5
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL3JlYWN0U2hpbS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IHtSZWFjdH07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxPQUFPLFdBQVc7IiwKICAibmFtZXMiOiBbXQp9Cg==
5
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL3JlYWN0U2hpbS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0ICogYXMgcmVhY3QgZnJvbSAncmVhY3QnO1xuXG5leHBvcnQge3JlYWN0fTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxZQUFZLFdBQVc7IiwKICAibmFtZXMiOiBbXQp9Cg==
@@ -0,0 +1,2 @@
1
+ declare function _default(webpackEnv: any, webpackOptions: any): any;
2
+ export default _default;
@@ -0,0 +1,10 @@
1
+ import { typescriptConfig } from 'eslint-config-styleguidejs';
2
+
3
+ export default [
4
+ ...typescriptConfig,
5
+ {
6
+ rules: {
7
+ 'no-plusplus': 'off'
8
+ }
9
+ }
10
+ ];
package/index.cjs ADDED
@@ -0,0 +1,20 @@
1
+ /**
2
+ * CommonJS entry point for @nlabs/lex
3
+ */
4
+
5
+ // This file provides CommonJS compatibility for projects using require()
6
+ module.exports = {
7
+ // Export Config as both a type and a namespace with create method for backward compatibility
8
+ Config: {
9
+ create: (config) => config
10
+ },
11
+ // Export LexConfig class
12
+ LexConfig: require('./dist/LexConfig.js').LexConfig,
13
+ // Export utility functions
14
+ utils: {
15
+ aiService: require('./dist/utils/aiService.js'),
16
+ app: require('./dist/utils/app.js'),
17
+ file: require('./dist/utils/file.js'),
18
+ log: require('./dist/utils/log.js')
19
+ }
20
+ };
package/jest.config.cjs CHANGED
@@ -2,38 +2,42 @@
2
2
  * Copyright (c) 2018-Present, Nitrogen Labs, Inc.
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */
5
- const { createDefaultPreset } = require("ts-jest");
6
- const base = require("../../jest.config.base");
7
- const pack = require("./package.json");
5
+ const pack = require('./package.json');
8
6
 
9
7
  module.exports = {
10
- ...base,
11
- collectCoverage: true,
12
- coveragePathIgnorePatterns: [
13
- "/node_modules/",
14
- "(tests/.*.mock).(jsx?|tsx?)$",
15
- ],
16
- coverageReporters: ["html", "text"],
17
- coverageThreshold: {
18
- global: {
19
- branches: 80,
20
- functions: 90,
21
- lines: 80,
22
- statements: 80,
23
- },
24
- },
25
8
  displayName: pack.name,
26
- extensionsToTreatAsEsm: [".ts"],
27
- moduleFileExtensions: ["js", "ts", "tsx", "json"],
9
+ testEnvironment: 'node',
10
+ extensionsToTreatAsEsm: ['.ts'],
11
+ moduleFileExtensions: ['js', 'ts', 'tsx', 'json'],
28
12
  moduleNameMapper: {
29
- "^(\\.{1,2}/.*)\\.js$": "$1",
13
+ '^(\\.{1,2}/.*)\\.js$': '$1',
14
+ // Mock problematic ES modules
15
+ '^execa$': '<rootDir>/__mocks__/execa.js',
16
+ '^boxen$': '<rootDir>/__mocks__/boxen.js',
17
+ '^chalk$': '<rootDir>/__mocks__/chalk.js',
18
+ '^ora$': '<rootDir>/__mocks__/ora.js',
19
+ // Mock modules that use import.meta.url - use more specific patterns
20
+ '.*LexConfig.*': '<rootDir>/__mocks__/LexConfig.js',
21
+ '.*build\\.js$': '<rootDir>/__mocks__/build.js',
22
+ '.*versions\\.js$': '<rootDir>/__mocks__/versions.js',
23
+ '.*compile\\.js$': '<rootDir>/__mocks__/compile.js'
30
24
  },
31
- rootDir: "./",
32
- setupFiles: ["<rootDir>/jest.setup.ts"],
33
- testMatch: ["<rootDir>/**/*.test.ts*"],
25
+ rootDir: './',
26
+ testMatch: ['<rootDir>/**/*.test.ts*'],
34
27
  transform: {
35
- ...createDefaultPreset().transform,
36
- "\\.(gql|graphql)$": "jest-transform-graphql",
28
+ '^.+\\.ts$|^.+\\.tsx$': ['ts-jest', {
29
+ useESM: true,
30
+ tsconfig: {
31
+ module: 'ESNext',
32
+ target: 'ESNext',
33
+ allowJs: true
34
+ }
35
+ }],
36
+ '\\.(gql|graphql)$': 'jest-transform-graphql'
37
37
  },
38
- transformIgnorePatterns: ["!/node_modules/(?!execa)"],
38
+ // Disable coverage temporarily to avoid import.meta issues
39
+ collectCoverage: false,
40
+ // Transform all node_modules to handle ES modules
41
+ transformIgnorePatterns: [],
42
+ setupFilesAfterEnv: ['../../jest.setup.js']
39
43
  };