@nlabs/lex 1.47.2 → 1.47.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +1 -0
- package/.storybook/main.ts +86 -0
- package/.storybook/preview.ts +15 -0
- package/.vscode/settings.json +83 -0
- package/CHANGELOG.md +1 -0
- package/TYPESCRIPT_CONFIGS.md +103 -0
- package/__mocks__/LexConfig.js +17 -2
- package/__mocks__/execa.js +9 -7
- package/__mocks__/file.js +50 -0
- package/__mocks__/ora.js +10 -1
- package/config.json +33 -0
- package/dist/LexConfig.js +93 -5
- package/dist/commands/ai/ai.js +1 -1
- package/dist/commands/build/build.js +15 -11
- package/dist/commands/clean/clean.js +10 -4
- package/dist/commands/compile/compile.js +29 -34
- package/dist/commands/create/create.js +5 -5
- package/dist/commands/dev/dev.js +11 -7
- package/dist/commands/init/init.js +5 -5
- package/dist/commands/lint/lint.js +55 -64
- package/dist/commands/migrate/migrate.js +2 -2
- package/dist/commands/storybook/storybook.js +174 -0
- package/dist/commands/test/test.js +51 -13
- package/dist/commands/update/update.js +3 -2
- package/dist/commands/upgrade/upgrade.js +3 -3
- package/dist/commands/versions/versions.js +3 -3
- package/dist/create/changelog.js +1 -1
- package/dist/dist/LexConfig.d.ts +119 -0
- package/dist/dist/utils/file.d.ts +7 -0
- package/dist/dist/utils/log.d.ts +1 -0
- package/dist/index.js +4 -3
- package/dist/lex.js +14 -1
- package/dist/utils/aiService.js +2 -2
- package/dist/utils/app.js +3 -3
- package/dist/utils/file.js +78 -4
- package/eslint.config.js +5 -3
- package/examples/lex.config.js +50 -0
- package/jest.config.cjs +14 -14
- package/jest.setup.js +30 -4
- package/package.json +40 -23
- package/tsconfig.build.json +38 -5
- package/tsconfig.json +28 -1
- package/tsconfig.lint.json +44 -0
- package/tsconfig.test.json +48 -0
- package/webpack.config.js +14 -13
- package/dist/LexConfig.d.ts +0 -79
- package/dist/commands/ai/ai.d.ts +0 -17
- package/dist/commands/ai/index.d.ts +0 -8
- package/dist/commands/build/build.cli.test.d.ts +0 -5
- package/dist/commands/build/build.d.ts +0 -18
- package/dist/commands/build/build.integration.test.d.ts +0 -1
- package/dist/commands/build/build.options.test.d.ts +0 -5
- package/dist/commands/clean/clean.cli.test.d.ts +0 -1
- package/dist/commands/clean/clean.d.ts +0 -7
- package/dist/commands/clean/clean.integration.test.d.ts +0 -1
- package/dist/commands/clean/clean.options.test.d.ts +0 -1
- package/dist/commands/compile/compile.cli.test.d.ts +0 -1
- package/dist/commands/compile/compile.d.ts +0 -2
- package/dist/commands/compile/compile.integration.test.d.ts +0 -1
- package/dist/commands/compile/compile.options.test.d.ts +0 -1
- package/dist/commands/config/config.cli.test.d.ts +0 -1
- package/dist/commands/config/config.d.ts +0 -7
- package/dist/commands/config/config.integration.test.d.ts +0 -1
- package/dist/commands/config/config.options.test.d.ts +0 -1
- package/dist/commands/copy/copy.cli.test.d.ts +0 -1
- package/dist/commands/copy/copy.d.ts +0 -6
- package/dist/commands/copy/copy.integration.test.d.ts +0 -1
- package/dist/commands/copy/copy.options.test.d.ts +0 -1
- package/dist/commands/create/create.cli.test.d.ts +0 -1
- package/dist/commands/create/create.d.ts +0 -8
- package/dist/commands/create/create.integration.test.d.ts +0 -1
- package/dist/commands/create/create.options.test.d.ts +0 -1
- package/dist/commands/dev/dev.cli.test.d.ts +0 -1
- package/dist/commands/dev/dev.d.ts +0 -11
- package/dist/commands/dev/dev.integration.test.d.ts +0 -1
- package/dist/commands/dev/dev.options.test.d.ts +0 -1
- package/dist/commands/init/init.cli.test.d.ts +0 -1
- package/dist/commands/init/init.d.ts +0 -9
- package/dist/commands/init/init.integration.test.d.ts +0 -1
- package/dist/commands/init/init.options.test.d.ts +0 -1
- package/dist/commands/link/link.cli.test.d.ts +0 -1
- package/dist/commands/link/link.d.ts +0 -6
- package/dist/commands/link/link.integration.test.d.ts +0 -1
- package/dist/commands/link/link.options.test.d.ts +0 -1
- package/dist/commands/lint/autofix.d.ts +0 -2
- package/dist/commands/lint/lint.cli.test.d.ts +0 -1
- package/dist/commands/lint/lint.d.ts +0 -39
- package/dist/commands/lint/lint.integration.test.d.ts +0 -1
- package/dist/commands/lint/lint.options.test.d.ts +0 -1
- package/dist/commands/migrate/migrate.cli.test.d.ts +0 -1
- package/dist/commands/migrate/migrate.d.ts +0 -7
- package/dist/commands/migrate/migrate.integration.test.d.ts +0 -1
- package/dist/commands/migrate/migrate.options.test.d.ts +0 -1
- package/dist/commands/publish/publish.cli.test.d.ts +0 -1
- package/dist/commands/publish/publish.d.ts +0 -12
- package/dist/commands/publish/publish.integration.test.d.ts +0 -1
- package/dist/commands/publish/publish.options.test.d.ts +0 -1
- package/dist/commands/test/test.cli.test.d.ts +0 -1
- package/dist/commands/test/test.d.ts +0 -50
- package/dist/commands/test/test.integration.test.d.ts +0 -1
- package/dist/commands/test/test.options.test.d.ts +0 -1
- package/dist/commands/test/test.test.d.ts +0 -1
- package/dist/commands/update/update.cli.test.d.ts +0 -1
- package/dist/commands/update/update.d.ts +0 -9
- package/dist/commands/update/update.integration.test.d.ts +0 -1
- package/dist/commands/update/update.options.test.d.ts +0 -1
- package/dist/commands/upgrade/upgrade.cli.test.d.ts +0 -1
- package/dist/commands/upgrade/upgrade.d.ts +0 -7
- package/dist/commands/upgrade/upgrade.integration.test.d.ts +0 -1
- package/dist/commands/upgrade/upgrade.options.test.d.ts +0 -1
- package/dist/commands/versions/versions.cli.test.d.ts +0 -1
- package/dist/commands/versions/versions.d.ts +0 -13
- package/dist/commands/versions/versions.integration.test.d.ts +0 -1
- package/dist/commands/versions/versions.options.test.d.ts +0 -1
- package/dist/create/changelog.d.ts +0 -6
- package/dist/index.d.ts +0 -31
- package/dist/lex.d.ts +0 -2
- package/dist/types.d.ts +0 -5
- package/dist/utils/aiService.d.ts +0 -9
- package/dist/utils/app.d.ts +0 -41
- package/dist/utils/file.d.ts +0 -3
- package/dist/utils/log.d.ts +0 -1
- package/dist/utils/reactShim.d.ts +0 -2
- /package/{jest.config.lex.d.ts → dist/jest.config.lex.d.ts} +0 -0
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { execa } from "execa";
|
|
2
|
+
import { existsSync } from "fs";
|
|
3
|
+
import { sync as globSync } from "glob";
|
|
4
|
+
import { resolve as pathResolve } from "path";
|
|
5
|
+
import { LexConfig } from "../../LexConfig.js";
|
|
6
|
+
import { createSpinner } from "../../utils/app.js";
|
|
7
|
+
import { resolveBinaryPath } from "../../utils/file.js";
|
|
8
|
+
import { log } from "../../utils/log.js";
|
|
9
|
+
const findStoryFiles = () => {
|
|
10
|
+
const storyPatterns = [
|
|
11
|
+
"**/*.stories.{ts,tsx,js,jsx}",
|
|
12
|
+
"**/*.story.{ts,tsx,js,jsx}",
|
|
13
|
+
"**/stories/**/*.{ts,tsx,js,jsx}"
|
|
14
|
+
];
|
|
15
|
+
const storyFiles = [];
|
|
16
|
+
storyPatterns.forEach((pattern) => {
|
|
17
|
+
const files = globSync(pattern, {
|
|
18
|
+
cwd: process.cwd(),
|
|
19
|
+
ignore: ["**/node_modules/**", "**/dist/**", "**/build/**"]
|
|
20
|
+
});
|
|
21
|
+
storyFiles.push(...files);
|
|
22
|
+
});
|
|
23
|
+
return storyFiles;
|
|
24
|
+
};
|
|
25
|
+
const checkStorybookInitialization = () => {
|
|
26
|
+
const projectConfigDir = pathResolve(process.cwd(), ".storybook");
|
|
27
|
+
const lexConfigDir = pathResolve(LexConfig.getLexDir(), ".storybook");
|
|
28
|
+
return existsSync(projectConfigDir) || existsSync(lexConfigDir);
|
|
29
|
+
};
|
|
30
|
+
const storybook = async (cmd, callback = () => ({})) => {
|
|
31
|
+
const { cliName = "Lex", config, open = false, port, quiet, static: staticBuild = false, variables } = cmd;
|
|
32
|
+
const spinner = createSpinner(quiet);
|
|
33
|
+
log(`${cliName} starting Storybook...`, "info", quiet);
|
|
34
|
+
await LexConfig.parseConfig(cmd);
|
|
35
|
+
let variablesObj = { NODE_ENV: "development" };
|
|
36
|
+
if (variables) {
|
|
37
|
+
try {
|
|
38
|
+
variablesObj = JSON.parse(variables);
|
|
39
|
+
} catch (_error) {
|
|
40
|
+
log(`
|
|
41
|
+
${cliName} Error: Environment variables option is not a valid JSON object.`, "error", quiet);
|
|
42
|
+
callback(1);
|
|
43
|
+
return 1;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
process.env = { ...process.env, ...variablesObj };
|
|
47
|
+
spinner.start("Finding story files...");
|
|
48
|
+
const storyFiles = findStoryFiles();
|
|
49
|
+
if (storyFiles.length === 0) {
|
|
50
|
+
spinner.fail("No story files found in the project.");
|
|
51
|
+
log("Please create story files with .stories.ts/.stories.js extensions or in a stories/ directory.", "info", quiet);
|
|
52
|
+
callback(1);
|
|
53
|
+
return 1;
|
|
54
|
+
}
|
|
55
|
+
spinner.succeed(`Found ${storyFiles.length} story file(s)`);
|
|
56
|
+
if (!checkStorybookInitialization()) {
|
|
57
|
+
spinner.fail("Storybook is not initialized in this project or in Lex.");
|
|
58
|
+
log('Please run "npx storybook@latest init" to set up Storybook in your project, or ensure Lex has a valid .storybook configuration.', "info", quiet);
|
|
59
|
+
callback(1);
|
|
60
|
+
return 1;
|
|
61
|
+
}
|
|
62
|
+
const projectConfigDir = pathResolve(process.cwd(), ".storybook");
|
|
63
|
+
const lexConfigDir = pathResolve(LexConfig.getLexDir(), ".storybook");
|
|
64
|
+
let configDir = config || (existsSync(projectConfigDir) ? projectConfigDir : lexConfigDir);
|
|
65
|
+
if (!quiet) {
|
|
66
|
+
log(`Project config dir: ${projectConfigDir} (exists: ${existsSync(projectConfigDir)})`, "info", quiet);
|
|
67
|
+
log(`Lex config dir: ${lexConfigDir} (exists: ${existsSync(lexConfigDir)})`, "info", quiet);
|
|
68
|
+
log(`Initial config dir: ${configDir}`, "info", quiet);
|
|
69
|
+
}
|
|
70
|
+
if (configDir === lexConfigDir) {
|
|
71
|
+
if (!quiet) {
|
|
72
|
+
log("Using Lex config, will create temporary config in project .storybook directory", "info", quiet);
|
|
73
|
+
}
|
|
74
|
+
const projectStorybookDir = pathResolve(process.cwd(), ".storybook");
|
|
75
|
+
const fs = await import("fs/promises");
|
|
76
|
+
await fs.mkdir(projectStorybookDir, { recursive: true });
|
|
77
|
+
const lexMainPath = pathResolve(lexConfigDir, "main.ts");
|
|
78
|
+
const projectMainPath = pathResolve(projectStorybookDir, "main.ts");
|
|
79
|
+
let mainContent = await fs.readFile(lexMainPath, "utf8");
|
|
80
|
+
mainContent = mainContent.replace(
|
|
81
|
+
/stories:\s*\[.*?\]/,
|
|
82
|
+
`stories: ['${pathResolve(process.cwd(), "src/**/*.stories.@(ts|tsx)")}', '${pathResolve(process.cwd(), "src/**/*.mdx")}']`
|
|
83
|
+
);
|
|
84
|
+
const lexNodeModules = pathResolve(LexConfig.getLexDir(), "node_modules");
|
|
85
|
+
mainContent = mainContent.replace(
|
|
86
|
+
/const lexModule = \(modulePath: string\) => resolve\(getLexNodeModulesPath\(\), modulePath\);/,
|
|
87
|
+
`const lexModule = (modulePath: string) => resolve('${lexNodeModules}', modulePath);`
|
|
88
|
+
);
|
|
89
|
+
await fs.writeFile(projectMainPath, mainContent);
|
|
90
|
+
const lexPreviewPath = pathResolve(lexConfigDir, "preview.ts");
|
|
91
|
+
if (existsSync(lexPreviewPath)) {
|
|
92
|
+
const previewContent = await fs.readFile(lexPreviewPath, "utf8");
|
|
93
|
+
await fs.writeFile(pathResolve(projectStorybookDir, "preview.ts"), previewContent);
|
|
94
|
+
}
|
|
95
|
+
configDir = projectStorybookDir;
|
|
96
|
+
}
|
|
97
|
+
if (!existsSync(configDir)) {
|
|
98
|
+
spinner.fail("Storybook configuration not found.");
|
|
99
|
+
log(`Project config: ${projectConfigDir}`, "info", quiet);
|
|
100
|
+
log(`Lex config: ${lexConfigDir}`, "info", quiet);
|
|
101
|
+
log('Please run "npx storybook@latest init" to set up Storybook in your project, or ensure Lex has a valid .storybook configuration.', "info", quiet);
|
|
102
|
+
callback(1);
|
|
103
|
+
return 1;
|
|
104
|
+
}
|
|
105
|
+
const storybookPath = resolveBinaryPath("storybook");
|
|
106
|
+
if (!storybookPath) {
|
|
107
|
+
log(`
|
|
108
|
+
${cliName} Error: storybook binary not found in Lex's node_modules or monorepo root`, "error", quiet);
|
|
109
|
+
log("Please reinstall Lex or check your Storybook installation.", "info", quiet);
|
|
110
|
+
callback(1);
|
|
111
|
+
return 1;
|
|
112
|
+
}
|
|
113
|
+
const storybookArgs = [staticBuild ? "build" : "dev"];
|
|
114
|
+
storybookArgs.push("--config-dir", configDir);
|
|
115
|
+
if (port) {
|
|
116
|
+
storybookArgs.push("--port", port.toString());
|
|
117
|
+
}
|
|
118
|
+
if (open) {
|
|
119
|
+
storybookArgs.push("--open");
|
|
120
|
+
}
|
|
121
|
+
if (staticBuild) {
|
|
122
|
+
const outputDir = pathResolve(process.cwd(), "storybook-static");
|
|
123
|
+
storybookArgs.push("--output-dir", outputDir);
|
|
124
|
+
}
|
|
125
|
+
if (!quiet) {
|
|
126
|
+
log(`Config directory: ${configDir}`, "info", quiet);
|
|
127
|
+
}
|
|
128
|
+
try {
|
|
129
|
+
spinner.start(staticBuild ? "Building static Storybook..." : "Starting Storybook development server...");
|
|
130
|
+
const storybookProcess = execa(storybookPath, storybookArgs, {
|
|
131
|
+
encoding: "utf8",
|
|
132
|
+
env: {
|
|
133
|
+
...process.env,
|
|
134
|
+
LEX_QUIET: quiet,
|
|
135
|
+
STORYBOOK_OPEN: open
|
|
136
|
+
},
|
|
137
|
+
stdio: "pipe"
|
|
138
|
+
});
|
|
139
|
+
let outputBuffer = "";
|
|
140
|
+
let urlFound = false;
|
|
141
|
+
storybookProcess.stdout?.on("data", (data) => {
|
|
142
|
+
const output = data.toString();
|
|
143
|
+
outputBuffer += output;
|
|
144
|
+
if (!urlFound && (output.includes("Local:") || output.includes("http://localhost") || output.includes("Storybook"))) {
|
|
145
|
+
spinner.succeed("Storybook development server is ready!");
|
|
146
|
+
urlFound = true;
|
|
147
|
+
}
|
|
148
|
+
process.stdout.write(output);
|
|
149
|
+
});
|
|
150
|
+
storybookProcess.stderr?.on("data", (data) => {
|
|
151
|
+
const output = data.toString();
|
|
152
|
+
process.stderr.write(output);
|
|
153
|
+
});
|
|
154
|
+
setTimeout(() => {
|
|
155
|
+
if (!urlFound) {
|
|
156
|
+
spinner.succeed("Storybook development server starting...");
|
|
157
|
+
console.log("\nWaiting for Storybook to start...");
|
|
158
|
+
}
|
|
159
|
+
}, 5e3);
|
|
160
|
+
await storybookProcess;
|
|
161
|
+
callback(0);
|
|
162
|
+
return 0;
|
|
163
|
+
} catch (error) {
|
|
164
|
+
log(`
|
|
165
|
+
${cliName} Error: ${error.message}`, "error", quiet);
|
|
166
|
+
spinner.fail("There was an error while running storybook.");
|
|
167
|
+
callback(1);
|
|
168
|
+
return 1;
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
export {
|
|
172
|
+
storybook
|
|
173
|
+
};
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3N0b3J5Ym9vay9zdG9yeWJvb2sudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHtzeW5jIGFzIGdsb2JTeW5jfSBmcm9tICdnbG9iJztcbmltcG9ydCB7cmVzb2x2ZSBhcyBwYXRoUmVzb2x2ZX0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtyZXNvbHZlQmluYXJ5UGF0aH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBTdG9yeWJvb2tPcHRpb25zIHtcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgY29uZmlnPzogc3RyaW5nO1xuICByZWFkb25seSBvcGVuPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcG9ydD86IG51bWJlcjtcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuICByZWFkb25seSBzdGF0aWM/OiBib29sZWFuO1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFN0b3J5Ym9va0NhbGxiYWNrID0gKHN0YXR1czogbnVtYmVyKSA9PiB2b2lkO1xuXG5jb25zdCBmaW5kU3RvcnlGaWxlcyA9ICgpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IHN0b3J5UGF0dGVybnMgPSBbXG4gICAgJyoqLyouc3Rvcmllcy57dHMsdHN4LGpzLGpzeH0nLFxuICAgICcqKi8qLnN0b3J5Lnt0cyx0c3gsanMsanN4fScsXG4gICAgJyoqL3N0b3JpZXMvKiovKi57dHMsdHN4LGpzLGpzeH0nXG4gIF07XG5cbiAgY29uc3Qgc3RvcnlGaWxlczogc3RyaW5nW10gPSBbXTtcblxuICBzdG9yeVBhdHRlcm5zLmZvckVhY2goKHBhdHRlcm4pID0+IHtcbiAgICBjb25zdCBmaWxlcyA9IGdsb2JTeW5jKHBhdHRlcm4sIHtcbiAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICAgIGlnbm9yZTogWycqKi9ub2RlX21vZHVsZXMvKionLCAnKiovZGlzdC8qKicsICcqKi9idWlsZC8qKiddXG4gICAgfSk7XG4gICAgc3RvcnlGaWxlcy5wdXNoKC4uLmZpbGVzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHN0b3J5RmlsZXM7XG59O1xuXG5jb25zdCBjaGVja1N0b3J5Ym9va0luaXRpYWxpemF0aW9uID0gKCk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBwcm9qZWN0Q29uZmlnRGlyID0gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJy5zdG9yeWJvb2snKTtcbiAgY29uc3QgbGV4Q29uZmlnRGlyID0gcGF0aFJlc29sdmUoTGV4Q29uZmlnLmdldExleERpcigpLCAnLnN0b3J5Ym9vaycpO1xuICByZXR1cm4gZXhpc3RzU3luYyhwcm9qZWN0Q29uZmlnRGlyKSB8fCBleGlzdHNTeW5jKGxleENvbmZpZ0Rpcik7XG59O1xuXG5leHBvcnQgY29uc3Qgc3Rvcnlib29rID0gYXN5bmMgKGNtZDogU3Rvcnlib29rT3B0aW9ucywgY2FsbGJhY2s6IFN0b3J5Ym9va0NhbGxiYWNrID0gKCkgPT4gKHt9KSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIGNvbmZpZywgb3BlbiA9IGZhbHNlLCBwb3J0LCBxdWlldCwgc3RhdGljOiBzdGF0aWNCdWlsZCA9IGZhbHNlLCB2YXJpYWJsZXN9ID0gY21kO1xuXG4gIGNvbnN0IHNwaW5uZXIgPSBjcmVhdGVTcGlubmVyKHF1aWV0KTtcblxuICBsb2coYCR7Y2xpTmFtZX0gc3RhcnRpbmcgU3Rvcnlib29rLi4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgYXdhaXQgTGV4Q29uZmlnLnBhcnNlQ29uZmlnKGNtZCk7XG5cbiAgbGV0IHZhcmlhYmxlc09iajogb2JqZWN0ID0ge05PREVfRU5WOiAnZGV2ZWxvcG1lbnQnfTtcblxuICBpZih2YXJpYWJsZXMpIHtcbiAgICB0cnkge1xuICAgICAgdmFyaWFibGVzT2JqID0gSlNPTi5wYXJzZSh2YXJpYWJsZXMpO1xuICAgIH0gY2F0Y2goX2Vycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEVudmlyb25tZW50IHZhcmlhYmxlcyBvcHRpb24gaXMgbm90IGEgdmFsaWQgSlNPTiBvYmplY3QuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICBwcm9jZXNzLmVudiA9IHsuLi5wcm9jZXNzLmVudiwgLi4udmFyaWFibGVzT2JqfTtcblxuICBzcGlubmVyLnN0YXJ0KCdGaW5kaW5nIHN0b3J5IGZpbGVzLi4uJyk7XG4gIGNvbnN0IHN0b3J5RmlsZXMgPSBmaW5kU3RvcnlGaWxlcygpO1xuXG4gIGlmKHN0b3J5RmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgc3Bpbm5lci5mYWlsKCdObyBzdG9yeSBmaWxlcyBmb3VuZCBpbiB0aGUgcHJvamVjdC4nKTtcbiAgICBsb2coJ1BsZWFzZSBjcmVhdGUgc3RvcnkgZmlsZXMgd2l0aCAuc3Rvcmllcy50cy8uc3Rvcmllcy5qcyBleHRlbnNpb25zIG9yIGluIGEgc3Rvcmllcy8gZGlyZWN0b3J5LicsICdpbmZvJywgcXVpZXQpO1xuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgc3Bpbm5lci5zdWNjZWVkKGBGb3VuZCAke3N0b3J5RmlsZXMubGVuZ3RofSBzdG9yeSBmaWxlKHMpYCk7XG5cbiAgaWYoIWNoZWNrU3Rvcnlib29rSW5pdGlhbGl6YXRpb24oKSkge1xuICAgIHNwaW5uZXIuZmFpbCgnU3Rvcnlib29rIGlzIG5vdCBpbml0aWFsaXplZCBpbiB0aGlzIHByb2plY3Qgb3IgaW4gTGV4LicpO1xuICAgIGxvZygnUGxlYXNlIHJ1biBcIm5weCBzdG9yeWJvb2tAbGF0ZXN0IGluaXRcIiB0byBzZXQgdXAgU3Rvcnlib29rIGluIHlvdXIgcHJvamVjdCwgb3IgZW5zdXJlIExleCBoYXMgYSB2YWxpZCAuc3Rvcnlib29rIGNvbmZpZ3VyYXRpb24uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBjb25zdCBwcm9qZWN0Q29uZmlnRGlyID0gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJy5zdG9yeWJvb2snKTtcbiAgY29uc3QgbGV4Q29uZmlnRGlyID0gcGF0aFJlc29sdmUoTGV4Q29uZmlnLmdldExleERpcigpLCAnLnN0b3J5Ym9vaycpO1xuXG4gIGxldCBjb25maWdEaXIgPSBjb25maWcgfHwgKGV4aXN0c1N5bmMocHJvamVjdENvbmZpZ0RpcikgPyBwcm9qZWN0Q29uZmlnRGlyIDogbGV4Q29uZmlnRGlyKTtcblxuICBpZighcXVpZXQpIHtcbiAgICBsb2coYFByb2plY3QgY29uZmlnIGRpcjogJHtwcm9qZWN0Q29uZmlnRGlyfSAoZXhpc3RzOiAke2V4aXN0c1N5bmMocHJvamVjdENvbmZpZ0Rpcil9KWAsICdpbmZvJywgcXVpZXQpO1xuICAgIGxvZyhgTGV4IGNvbmZpZyBkaXI6ICR7bGV4Q29uZmlnRGlyfSAoZXhpc3RzOiAke2V4aXN0c1N5bmMobGV4Q29uZmlnRGlyKX0pYCwgJ2luZm8nLCBxdWlldCk7XG4gICAgbG9nKGBJbml0aWFsIGNvbmZpZyBkaXI6ICR7Y29uZmlnRGlyfWAsICdpbmZvJywgcXVpZXQpO1xuICB9XG5cbiAgaWYoY29uZmlnRGlyID09PSBsZXhDb25maWdEaXIpIHtcbiAgICBpZighcXVpZXQpIHtcbiAgICAgIGxvZygnVXNpbmcgTGV4IGNvbmZpZywgd2lsbCBjcmVhdGUgdGVtcG9yYXJ5IGNvbmZpZyBpbiBwcm9qZWN0IC5zdG9yeWJvb2sgZGlyZWN0b3J5JywgJ2luZm8nLCBxdWlldCk7XG4gICAgfVxuICAgIGNvbnN0IHByb2plY3RTdG9yeWJvb2tEaXIgPSBwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnLnN0b3J5Ym9vaycpO1xuXG4gICAgY29uc3QgZnMgPSBhd2FpdCBpbXBvcnQoJ2ZzL3Byb21pc2VzJyk7XG4gICAgYXdhaXQgZnMubWtkaXIocHJvamVjdFN0b3J5Ym9va0Rpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuXG4gICAgY29uc3QgbGV4TWFpblBhdGggPSBwYXRoUmVzb2x2ZShsZXhDb25maWdEaXIsICdtYWluLnRzJyk7XG4gICAgY29uc3QgcHJvamVjdE1haW5QYXRoID0gcGF0aFJlc29sdmUocHJvamVjdFN0b3J5Ym9va0RpciwgJ21haW4udHMnKTtcbiAgICBsZXQgbWFpbkNvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShsZXhNYWluUGF0aCwgJ3V0ZjgnKTtcblxuICAgIG1haW5Db250ZW50ID0gbWFpbkNvbnRlbnQucmVwbGFjZShcbiAgICAgIC9zdG9yaWVzOlxccypcXFsuKj9cXF0vLFxuICAgICAgYHN0b3JpZXM6IFsnJHtwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnc3JjLyoqLyouc3Rvcmllcy5AKHRzfHRzeCknKX0nLCAnJHtwYXRoUmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCAnc3JjLyoqLyoubWR4Jyl9J11gXG4gICAgKTtcblxuICAgIGNvbnN0IGxleE5vZGVNb2R1bGVzID0gcGF0aFJlc29sdmUoTGV4Q29uZmlnLmdldExleERpcigpLCAnbm9kZV9tb2R1bGVzJyk7XG4gICAgbWFpbkNvbnRlbnQgPSBtYWluQ29udGVudC5yZXBsYWNlKFxuICAgICAgL2NvbnN0IGxleE1vZHVsZSA9IFxcKG1vZHVsZVBhdGg6IHN0cmluZ1xcKSA9PiByZXNvbHZlXFwoZ2V0TGV4Tm9kZU1vZHVsZXNQYXRoXFwoXFwpLCBtb2R1bGVQYXRoXFwpOy8sXG4gICAgICBgY29uc3QgbGV4TW9kdWxlID0gKG1vZHVsZVBhdGg6IHN0cmluZykgPT4gcmVzb2x2ZSgnJHtsZXhOb2RlTW9kdWxlc30nLCBtb2R1bGVQYXRoKTtgXG4gICAgKTtcblxuICAgIGF3YWl0IGZzLndyaXRlRmlsZShwcm9qZWN0TWFpblBhdGgsIG1haW5Db250ZW50KTtcblxuICAgIGNvbnN0IGxleFByZXZpZXdQYXRoID0gcGF0aFJlc29sdmUobGV4Q29uZmlnRGlyLCAncHJldmlldy50cycpO1xuICAgIGlmKGV4aXN0c1N5bmMobGV4UHJldmlld1BhdGgpKSB7XG4gICAgICBjb25zdCBwcmV2aWV3Q29udGVudCA9IGF3YWl0IGZzLnJlYWRGaWxlKGxleFByZXZpZXdQYXRoLCAndXRmOCcpO1xuICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKHBhdGhSZXNvbHZlKHByb2plY3RTdG9yeWJvb2tEaXIsICdwcmV2aWV3LnRzJyksIHByZXZpZXdDb250ZW50KTtcbiAgICB9XG5cbiAgICBjb25maWdEaXIgPSBwcm9qZWN0U3Rvcnlib29rRGlyO1xuICB9XG4gIGlmKCFleGlzdHNTeW5jKGNvbmZpZ0RpcikpIHtcbiAgICBzcGlubmVyLmZhaWwoJ1N0b3J5Ym9vayBjb25maWd1cmF0aW9uIG5vdCBmb3VuZC4nKTtcbiAgICBsb2coYFByb2plY3QgY29uZmlnOiAke3Byb2plY3RDb25maWdEaXJ9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgbG9nKGBMZXggY29uZmlnOiAke2xleENvbmZpZ0Rpcn1gLCAnaW5mbycsIHF1aWV0KTtcbiAgICBsb2coJ1BsZWFzZSBydW4gXCJucHggc3Rvcnlib29rQGxhdGVzdCBpbml0XCIgdG8gc2V0IHVwIFN0b3J5Ym9vayBpbiB5b3VyIHByb2plY3QsIG9yIGVuc3VyZSBMZXggaGFzIGEgdmFsaWQgLnN0b3J5Ym9vayBjb25maWd1cmF0aW9uLicsICdpbmZvJywgcXVpZXQpO1xuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgY29uc3Qgc3Rvcnlib29rUGF0aCA9IHJlc29sdmVCaW5hcnlQYXRoKCdzdG9yeWJvb2snKTtcblxuICBpZighc3Rvcnlib29rUGF0aCkge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogc3Rvcnlib29rIGJpbmFyeSBub3QgZm91bmQgaW4gTGV4J3Mgbm9kZV9tb2R1bGVzIG9yIG1vbm9yZXBvIHJvb3RgLCAnZXJyb3InLCBxdWlldCk7XG4gICAgbG9nKCdQbGVhc2UgcmVpbnN0YWxsIExleCBvciBjaGVjayB5b3VyIFN0b3J5Ym9vayBpbnN0YWxsYXRpb24uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICBjb25zdCBzdG9yeWJvb2tBcmdzID0gW3N0YXRpY0J1aWxkID8gJ2J1aWxkJyA6ICdkZXYnXTtcbiAgc3Rvcnlib29rQXJncy5wdXNoKCctLWNvbmZpZy1kaXInLCBjb25maWdEaXIpO1xuXG4gIGlmKHBvcnQpIHtcbiAgICBzdG9yeWJvb2tBcmdzLnB1c2goJy0tcG9ydCcsIHBvcnQudG9TdHJpbmcoKSk7XG4gIH1cblxuICBpZihvcGVuKSB7XG4gICAgc3Rvcnlib29rQXJncy5wdXNoKCctLW9wZW4nKTtcbiAgfVxuXG4gIGlmKHN0YXRpY0J1aWxkKSB7XG4gICAgY29uc3Qgb3V0cHV0RGlyID0gcGF0aFJlc29sdmUocHJvY2Vzcy5jd2QoKSwgJ3N0b3J5Ym9vay1zdGF0aWMnKTtcbiAgICBzdG9yeWJvb2tBcmdzLnB1c2goJy0tb3V0cHV0LWRpcicsIG91dHB1dERpcik7XG4gIH1cblxuICBpZighcXVpZXQpIHtcbiAgICBsb2coYENvbmZpZyBkaXJlY3Rvcnk6ICR7Y29uZmlnRGlyfWAsICdpbmZvJywgcXVpZXQpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBzcGlubmVyLnN0YXJ0KHN0YXRpY0J1aWxkID8gJ0J1aWxkaW5nIHN0YXRpYyBTdG9yeWJvb2suLi4nIDogJ1N0YXJ0aW5nIFN0b3J5Ym9vayBkZXZlbG9wbWVudCBzZXJ2ZXIuLi4nKTtcblxuICAgIGNvbnN0IHN0b3J5Ym9va1Byb2Nlc3MgPSBleGVjYShzdG9yeWJvb2tQYXRoIGFzIGFueSwgc3Rvcnlib29rQXJncywge1xuICAgICAgZW5jb2Rpbmc6ICd1dGY4JyxcbiAgICAgIGVudjoge1xuICAgICAgICAuLi5wcm9jZXNzLmVudixcbiAgICAgICAgTEVYX1FVSUVUOiBxdWlldCxcbiAgICAgICAgU1RPUllCT09LX09QRU46IG9wZW5cbiAgICAgIH0gYXMgYW55LFxuICAgICAgc3RkaW86ICdwaXBlJ1xuICAgIH0pO1xuXG4gICAgbGV0IG91dHB1dEJ1ZmZlciA9ICcnO1xuICAgIGxldCB1cmxGb3VuZCA9IGZhbHNlO1xuXG4gICAgc3Rvcnlib29rUHJvY2Vzcy5zdGRvdXQ/Lm9uKCdkYXRhJywgKGRhdGEpID0+IHtcbiAgICAgIGNvbnN0IG91dHB1dCA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgIG91dHB1dEJ1ZmZlciArPSBvdXRwdXQ7XG5cbiAgICAgIGlmKCF1cmxGb3VuZCAmJiAob3V0cHV0LmluY2x1ZGVzKCdMb2NhbDonKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ2h0dHA6Ly9sb2NhbGhvc3QnKSB8fCBvdXRwdXQuaW5jbHVkZXMoJ1N0b3J5Ym9vaycpKSkge1xuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ1N0b3J5Ym9vayBkZXZlbG9wbWVudCBzZXJ2ZXIgaXMgcmVhZHkhJyk7XG4gICAgICAgIHVybEZvdW5kID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcHJvY2Vzcy5zdGRvdXQud3JpdGUob3V0cHV0KTtcbiAgICB9KTtcblxuICAgIHN0b3J5Ym9va1Byb2Nlc3Muc3RkZXJyPy5vbignZGF0YScsIChkYXRhKSA9PiB7XG4gICAgICBjb25zdCBvdXRwdXQgPSBkYXRhLnRvU3RyaW5nKCk7XG4gICAgICBwcm9jZXNzLnN0ZGVyci53cml0ZShvdXRwdXQpO1xuICAgIH0pO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZighdXJsRm91bmQpIHtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdTdG9yeWJvb2sgZGV2ZWxvcG1lbnQgc2VydmVyIHN0YXJ0aW5nLi4uJyk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdcXG5XYWl0aW5nIGZvciBTdG9yeWJvb2sgdG8gc3RhcnQuLi4nKTtcbiAgICAgIH1cbiAgICB9LCA1MDAwKTtcblxuICAgIGF3YWl0IHN0b3J5Ym9va1Byb2Nlc3M7XG5cbiAgICBjYWxsYmFjaygwKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBzcGlubmVyLmZhaWwoJ1RoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBydW5uaW5nIHN0b3J5Ym9vay4nKTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFRLGFBQVk7QUFDcEIsU0FBUSxrQkFBaUI7QUFDekIsU0FBUSxRQUFRLGdCQUFlO0FBQy9CLFNBQVEsV0FBVyxtQkFBa0I7QUFFckMsU0FBUSxpQkFBZ0I7QUFDeEIsU0FBUSxxQkFBb0I7QUFDNUIsU0FBUSx5QkFBd0I7QUFDaEMsU0FBUSxXQUFVO0FBY2xCLE1BQU0saUJBQWlCLE1BQWdCO0FBQ3JDLFFBQU0sZ0JBQWdCO0FBQUEsSUFDcEI7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFFQSxRQUFNLGFBQXVCLENBQUM7QUFFOUIsZ0JBQWMsUUFBUSxDQUFDLFlBQVk7QUFDakMsVUFBTSxRQUFRLFNBQVMsU0FBUztBQUFBLE1BQzlCLEtBQUssUUFBUSxJQUFJO0FBQUEsTUFDakIsUUFBUSxDQUFDLHNCQUFzQixjQUFjLGFBQWE7QUFBQSxJQUM1RCxDQUFDO0FBQ0QsZUFBVyxLQUFLLEdBQUcsS0FBSztBQUFBLEVBQzFCLENBQUM7QUFFRCxTQUFPO0FBQ1Q7QUFFQSxNQUFNLCtC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
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
import { execa } from "execa";
|
|
2
|
-
import { readFileSync } from "fs";
|
|
2
|
+
import { existsSync, readFileSync } from "fs";
|
|
3
3
|
import { sync as globSync } from "glob";
|
|
4
4
|
import { resolve as pathResolve } from "path";
|
|
5
|
-
import {
|
|
6
|
-
import { LexConfig } from "../../LexConfig.js";
|
|
5
|
+
import { LexConfig, getTypeScriptConfigPath } from "../../LexConfig.js";
|
|
7
6
|
import { createSpinner } from "../../utils/app.js";
|
|
8
|
-
import {
|
|
7
|
+
import { getDirName, resolveBinaryPath } from "../../utils/file.js";
|
|
9
8
|
import { log } from "../../utils/log.js";
|
|
10
9
|
import { aiFunction } from "../ai/ai.js";
|
|
10
|
+
const detectESM = (cwd) => {
|
|
11
|
+
const packageJsonPath = pathResolve(cwd, "package.json");
|
|
12
|
+
if (existsSync(packageJsonPath)) {
|
|
13
|
+
try {
|
|
14
|
+
const packageJsonContent = readFileSync(packageJsonPath, "utf8");
|
|
15
|
+
const packageJson = JSON.parse(packageJsonContent);
|
|
16
|
+
return packageJson.type === "module";
|
|
17
|
+
} catch (_error) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
};
|
|
11
23
|
const getTestFilePatterns = (testPathPattern) => {
|
|
12
24
|
const defaultPatterns = ["**/*.test.*", "**/*.spec.*", "**/*.integration.*"];
|
|
13
25
|
if (!testPathPattern) {
|
|
@@ -95,7 +107,12 @@ const test = async (options, args, callback = process.exit) => {
|
|
|
95
107
|
await LexConfig.parseConfig(options);
|
|
96
108
|
const { useTypescript } = LexConfig.config;
|
|
97
109
|
if (useTypescript) {
|
|
98
|
-
|
|
110
|
+
const testConfigPath = getTypeScriptConfigPath("tsconfig.test.json");
|
|
111
|
+
if (existsSync(testConfigPath)) {
|
|
112
|
+
log("Using tsconfig.test.json for testing...", "info", quiet);
|
|
113
|
+
} else {
|
|
114
|
+
LexConfig.checkTestTypescriptConfig();
|
|
115
|
+
}
|
|
99
116
|
}
|
|
100
117
|
if (useGenerate) {
|
|
101
118
|
spinner.start("AI is analyzing code to generate test cases...");
|
|
@@ -125,12 +142,26 @@ Please create comprehensive tests that cover the main functionality. Include tes
|
|
|
125
142
|
}
|
|
126
143
|
}
|
|
127
144
|
}
|
|
128
|
-
const dirName =
|
|
145
|
+
const dirName = getDirName();
|
|
129
146
|
const dirPath = pathResolve(dirName, "../../..");
|
|
130
|
-
const jestPath =
|
|
147
|
+
const jestPath = resolveBinaryPath("jest");
|
|
148
|
+
if (!jestPath) {
|
|
149
|
+
log(`
|
|
150
|
+
${cliName} Error: Jest binary not found in Lex's node_modules or monorepo root`, "error", quiet);
|
|
151
|
+
log("Please reinstall Lex or check your installation.", "info", quiet);
|
|
152
|
+
return 1;
|
|
153
|
+
}
|
|
131
154
|
const jestConfigFile = config || pathResolve(dirName, "../../../jest.config.lex.js");
|
|
132
|
-
const jestSetupFile = setup || "";
|
|
155
|
+
const jestSetupFile = setup || pathResolve(dirName, "../../../jest.setup.js");
|
|
133
156
|
const jestOptions = ["--no-cache"];
|
|
157
|
+
const isESM = detectESM(process.cwd());
|
|
158
|
+
let nodeOptions = process.env.NODE_OPTIONS || "";
|
|
159
|
+
if (isESM) {
|
|
160
|
+
if (!nodeOptions.includes("--experimental-vm-modules")) {
|
|
161
|
+
nodeOptions = `${nodeOptions} --experimental-vm-modules`.trim();
|
|
162
|
+
}
|
|
163
|
+
log("ESM project detected, using --experimental-vm-modules in NODE_OPTIONS", "info", quiet);
|
|
164
|
+
}
|
|
134
165
|
jestOptions.push("--config", jestConfigFile);
|
|
135
166
|
if (bail) {
|
|
136
167
|
jestOptions.push("--bail");
|
|
@@ -232,9 +263,8 @@ Please create comprehensive tests that cover the main functionality. Include tes
|
|
|
232
263
|
if (removeCache) {
|
|
233
264
|
jestOptions.push("--no-cache");
|
|
234
265
|
}
|
|
235
|
-
if (jestSetupFile
|
|
236
|
-
|
|
237
|
-
jestOptions.push(`--setupFilesAfterEnv=${pathResolve(cwd, jestSetupFile)}`);
|
|
266
|
+
if (jestSetupFile && existsSync(jestSetupFile)) {
|
|
267
|
+
jestOptions.push(`--setupFilesAfterEnv=${jestSetupFile}`);
|
|
238
268
|
}
|
|
239
269
|
if (update) {
|
|
240
270
|
jestOptions.push("--updateSnapshot");
|
|
@@ -245,10 +275,18 @@ Please create comprehensive tests that cover the main functionality. Include tes
|
|
|
245
275
|
if (args) {
|
|
246
276
|
jestOptions.push(...args);
|
|
247
277
|
}
|
|
278
|
+
if (debug) {
|
|
279
|
+
log(`Jest options: ${jestOptions.join(" ")}`, "info", quiet);
|
|
280
|
+
log(`NODE_OPTIONS: ${nodeOptions}`, "info", quiet);
|
|
281
|
+
}
|
|
248
282
|
try {
|
|
249
283
|
await execa(jestPath, jestOptions, {
|
|
250
284
|
encoding: "utf8",
|
|
251
|
-
stdio: "inherit"
|
|
285
|
+
stdio: "inherit",
|
|
286
|
+
env: {
|
|
287
|
+
...process.env,
|
|
288
|
+
NODE_OPTIONS: nodeOptions
|
|
289
|
+
}
|
|
252
290
|
});
|
|
253
291
|
spinner.succeed("Testing completed!");
|
|
254
292
|
if (useAnalyze) {
|
|
@@ -324,4 +362,4 @@ export {
|
|
|
324
362
|
getTestFilePatterns,
|
|
325
363
|
test
|
|
326
364
|
};
|
|
327
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3Rlc3QvdGVzdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7cmVhZEZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3N5bmMgYXMgZ2xvYlN5bmN9IGZyb20gJ2dsb2InO1xuaW1wb3J0IHtyZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcbmltcG9ydCB7VVJMfSBmcm9tICd1cmwnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlU3Bpbm5lcn0gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7cmVsYXRpdmVOb2RlUGF0aH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7YWlGdW5jdGlvbn0gZnJvbSAnLi4vYWkvYWkuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RPcHRpb25zIHtcbiAgcmVhZG9ubHkgYW5hbHl6ZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFpRGVidWc/OiBib29sZWFuO1xuICByZWFkb25seSBhaUdlbmVyYXRlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYWlBbmFseXplPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYmFpbD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNoYW5nZWRGaWxlc1dpdGhBbmNlc3Rvcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGNoYW5nZWRTaW5jZT86IHN0cmluZztcbiAgcmVhZG9ubHkgY2k/OiBib29sZWFuO1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBjb2xsZWN0Q292ZXJhZ2VGcm9tPzogc3RyaW5nO1xuICByZWFkb25seSBjb2xvcnM/OiBib29sZWFuO1xuICByZWFkb25seSBjb25maWc/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlYnVnPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZGVidWdUZXN0cz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGRldGVjdE9wZW5IYW5kbGVzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZW52Pzogc3RyaW5nO1xuICByZWFkb25seSBlcnJvck9uRGVwcmVjYXRlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGV4cGFuZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGZvcmNlRXhpdD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGdlbmVyYXRlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkganNvbj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGxhc3RDb21taXQ/OiBib29sZWFuO1xuICByZWFkb25seSBsaXN0VGVzdHM/OiBib29sZWFuO1xuICByZWFkb25seSBsb2dIZWFwVXNhZ2U/OiBib29sZWFuO1xuICByZWFkb25seSBtYXhXb3JrZXJzPzogc3RyaW5nO1xuICByZWFkb25seSBub1N0YWNrVHJhY2U/OiBib29sZWFuO1xuICByZWFkb25seSBub3RpZnk/OiBib29sZWFuO1xuICByZWFkb25seSBvbmx5Q2hhbmdlZD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IG91dHB1dEZpbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHBhc3NXaXRoTm9UZXN0cz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcmVtb3ZlQ2FjaGU/OiBib29sZWFuO1xuICByZWFkb25seSBydW5JbkJhbmQ/OiBib29sZWFuO1xuICByZWFkb25seSBzZXR1cD86IHN0cmluZztcbiAgcmVhZG9ubHkgc2hvd0NvbmZpZz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHNpbGVudD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRlc3RMb2NhdGlvbkluUmVzdWx0cz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRlc3ROYW1lUGF0dGVybj86IHN0cmluZztcbiAgcmVhZG9ubHkgdGVzdFBhdGhQYXR0ZXJuPzogc3RyaW5nO1xuICByZWFkb25seSB1cGRhdGU/OiBib29sZWFuO1xuICByZWFkb25seSB1c2VTdGRlcnI/OiBib29sZWFuO1xuICByZWFkb25seSB2ZXJib3NlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgd2F0Y2g/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHdhdGNoQWxsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgVGVzdENhbGxiYWNrID0gdHlwZW9mIHByb2Nlc3MuZXhpdDtcblxuZXhwb3J0IGNvbnN0IGdldFRlc3RGaWxlUGF0dGVybnMgPSAodGVzdFBhdGhQYXR0ZXJuPzogc3RyaW5nKTogc3RyaW5nW10gPT4ge1xuICBjb25zdCBkZWZhdWx0UGF0dGVybnMgPSBbJyoqLyoudGVzdC4qJywgJyoqLyouc3BlYy4qJywgJyoqLyouaW50ZWdyYXRpb24uKiddO1xuXG4gIGlmKCF0ZXN0UGF0aFBhdHRlcm4pIHtcbiAgICByZXR1cm4gZGVmYXVsdFBhdHRlcm5zO1xuICB9XG5cbiAgcmV0dXJuIFt0ZXN0UGF0aFBhdHRlcm5dO1xufTtcblxuY29uc3QgZmluZFVuY292ZXJlZFNvdXJjZUZpbGVzID0gKCk6IHN0cmluZ1tdID0+IHtcbiAgY29uc3Qgc291cmNlRmlsZXMgPSBnbG9iU3luYygnc3JjLyoqLyoue3RzLHRzeCxqcyxqc3h9Jywge1xuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqL2Rpc3QvKionLCAnKiovKi50ZXN0LionLCAnKiovKi5zcGVjLionXVxuICB9KTtcblxuICBjb25zdCB0ZXN0RmlsZXMgPSBnbG9iU3luYygnKiovKi57dGVzdCxzcGVjfS57dHMsdHN4LGpzLGpzeH0nLCB7XG4gICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIGlnbm9yZTogWycqKi9ub2RlX21vZHVsZXMvKionLCAnKiovZGlzdC8qKiddXG4gIH0pO1xuXG4gIC8vIFNpbXBsZSBoZXVyaXN0aWMgdG8gZmluZCBzb3VyY2UgZmlsZXMgd2l0aG91dCBjb3JyZXNwb25kaW5nIHRlc3QgZmlsZXNcbiAgcmV0dXJuIHNvdXJjZUZpbGVzLmZpbHRlcigoc291cmNlRmlsZSkgPT4ge1xuICAgIGNvbnN0IGJhc2VOYW1lID0gc291cmNlRmlsZS5yZXBsYWNlKC9cXC5bXi8uXSskLywgJycpO1xuICAgIHJldHVybiAhdGVzdEZpbGVzLnNvbWUoKHRlc3RGaWxlKSA9PiB0ZXN0RmlsZS5pbmNsdWRlcyhiYXNlTmFtZSkpO1xuICB9KTtcbn07XG5cbmNvbnN0IHByb2Nlc3NUZXN0UmVzdWx0cyA9IChvdXRwdXRGaWxlPzogc3RyaW5nKTogYW55ID0+IHtcbiAgaWYoIW91dHB1dEZpbGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgY29udGVudCA9IHJlYWRGaWxlU3luYyhvdXRwdXRGaWxlLCAndXRmLTgnKTtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShjb250ZW50KTtcbiAgfSBjYXRjaChfZXJyb3IpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRlc3QgPSBhc3luYyAob3B0aW9uczogVGVzdE9wdGlvbnMsIGFyZ3M6IHN0cmluZ1tdLCBjYWxsYmFjazogVGVzdENhbGxiYWNrID0gcHJvY2Vzcy5leGl0KTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge1xuICAgIGFuYWx5emUgPSBmYWxzZSxcbiAgICBhaUFuYWx5emUgPSBmYWxzZSxcbiAgICBhaURlYnVnID0gZmFsc2UsXG4gICAgYWlHZW5lcmF0ZSA9IGZhbHNlLFxuICAgIGJhaWwsXG4gICAgY2hhbmdlZEZpbGVzV2l0aEFuY2VzdG9yLFxuICAgIGNoYW5nZWRTaW5jZSxcbiAgICBjaSxcbiAgICBjbGlOYW1lID0gJ0xleCcsXG4gICAgY29sbGVjdENvdmVyYWdlRnJvbSxcbiAgICBjb2xvcnMsXG4gICAgY29uZmlnLFxuICAgIGRlYnVnID0gZmFsc2UsXG4gICAgZGVidWdUZXN0cyA9IGZhbHNlLFxuICAgIGRldGVjdE9wZW5IYW5kbGVzLFxuICAgIGVudixcbiAgICBlcnJvck9uRGVwcmVjYXRlZCxcbiAgICBleHBhbmQsXG4gICAgZm9yY2VFeGl0LFxuICAgIGdlbmVyYXRlID0gZmFsc2UsXG4gICAganNvbixcbiAgICBsYXN0Q29tbWl0LFxuICAgIGxpc3RUZXN0cyxcbiAgICBsb2dIZWFwVXNhZ2UsXG4gICAgbWF4V29ya2VycyxcbiAgICBub1N0YWNrVHJhY2UsXG4gICAgbm90aWZ5LFxuICAgIG9ubHlDaGFuZ2VkLFxuICAgIG91dHB1dEZpbGUsXG4gICAgcGFzc1dpdGhOb1Rlc3RzLFxuICAgIHF1aWV0LFxuICAgIHJlbW92ZUNhY2hlLFxuICAgIHJ1bkluQmFuZCxcbiAgICBzZXR1cCxcbiAgICBzaG93Q29uZmlnLFxuICAgIHNpbGVudCxcbiAgICB0ZXN0TG9jYXRpb25JblJlc3VsdHMsXG4gICAgdGVzdE5hbWVQYXR0ZXJuLFxuICAgIHRlc3RQYXRoUGF0dGVybixcbiAgICB1cGRhdGUsXG4gICAgdXNlU3RkZXJyLFxuICAgIHZlcmJvc2UsXG4gICAgd2F0Y2gsXG4gICAgd2F0Y2hBbGxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgdXNlR2VuZXJhdGUgPSBnZW5lcmF0ZSB8fCBhaUdlbmVyYXRlO1xuICBjb25zdCB1c2VBbmFseXplID0gYW5hbHl6ZSB8fCBhaUFuYWx5emU7XG4gIGNvbnN0IHVzZURlYnVnID0gZGVidWdUZXN0cyB8fCBhaURlYnVnO1xuXG4gIGxvZyhgJHtjbGlOYW1lfSB0ZXN0aW5nLi4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhvcHRpb25zKTtcblxuICBjb25zdCB7dXNlVHlwZXNjcmlwdH0gPSBMZXhDb25maWcuY29uZmlnO1xuXG4gIGlmKHVzZVR5cGVzY3JpcHQpIHtcbiAgICBMZXhDb25maWcuY2hlY2tUeXBlc2NyaXB0Q29uZmlnKCk7XG4gIH1cblxuICBpZih1c2VHZW5lcmF0ZSkge1xuICAgIHNwaW5uZXIuc3RhcnQoJ0FJIGlzIGFuYWx5emluZyBjb2RlIHRvIGdlbmVyYXRlIHRlc3QgY2FzZXMuLi4nKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB1bmNvdmVyZWRGaWxlcyA9IGZpbmRVbmNvdmVyZWRTb3VyY2VGaWxlcygpO1xuXG4gICAgICBpZih1bmNvdmVyZWRGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldEZpbGUgPSB1bmNvdmVyZWRGaWxlc1swXTtcblxuICAgICAgICBhd2FpdCBhaUZ1bmN0aW9uKHtcbiAgICAgICAgICBwcm9tcHQ6IGBHZW5lcmF0ZSBKZXN0IHVuaXQgdGVzdHMgZm9yIHRoaXMgZmlsZTogJHt0YXJnZXRGaWxlfVxcblxcbiR7cmVhZEZpbGVTeW5jKHRhcmdldEZpbGUsICd1dGYtOCcpfVxcblxcblBsZWFzZSBjcmVhdGUgY29tcHJlaGVuc2l2ZSB0ZXN0cyB0aGF0IGNvdmVyIHRoZSBtYWluIGZ1bmN0aW9uYWxpdHkuIEluY2x1ZGUgdGVzdCBmaXh0dXJlcyBhbmQgbW9ja3Mgd2hlcmUgbmVjZXNzYXJ5LmAsXG4gICAgICAgICAgdGFzazogJ3Rlc3QnLFxuICAgICAgICAgIGZpbGU6IHRhcmdldEZpbGUsXG4gICAgICAgICAgY29udGV4dDogdHJ1ZSxcbiAgICAgICAgICBxdWlldFxuICAgICAgICB9KTtcblxuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoYEFJIHRlc3QgZ2VuZXJhdGlvbiBzdWdnZXN0aW9ucyBwcm92aWRlZCBmb3IgJHt0YXJnZXRGaWxlfWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKCdBbGwgc291cmNlIGZpbGVzIGFwcGVhciB0byBoYXZlIGNvcnJlc3BvbmRpbmcgdGVzdCBmaWxlcycpO1xuICAgICAgfVxuICAgIH0gY2F0Y2goYWlFcnJvcikge1xuICAgICAgc3Bpbm5lci5mYWlsKCdDb3VsZCBub3QgZ2VuZXJhdGUgQUkgdGVzdCBzdWdnZXN0aW9ucycpO1xuICAgICAgaWYoIXF1aWV0KSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIHRlc3QgZ2VuZXJhdGlvbiBlcnJvcjonLCBhaUVycm9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkaXJOYW1lID0gbmV3IFVSTCgnLicsIGltcG9ydC5tZXRhLnVybCkucGF0aG5hbWU7XG4gIGNvbnN0IGRpclBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLi8uLicpO1xuICBjb25zdCBqZXN0UGF0aDogc3RyaW5nID0gcmVsYXRpdmVOb2RlUGF0aCgnamVzdC1jbGkvYmluL2plc3QuanMnLCBkaXJQYXRoKTtcbiAgY29uc3QgamVzdENvbmZpZ0ZpbGU6IHN0cmluZyA9IGNvbmZpZyB8fCBwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vLi4vamVzdC5jb25maWcubGV4LmpzJyk7XG4gIGNvbnN0IGplc3RTZXR1cEZpbGU6IHN0cmluZyA9IHNldHVwIHx8ICcnO1xuICBjb25zdCBqZXN0T3B0aW9uczogc3RyaW5nW10gPSBbJy0tbm8tY2FjaGUnXTtcblxuICBqZXN0T3B0aW9ucy5wdXNoKCctLWNvbmZpZycsIGplc3RDb25maWdGaWxlKTtcblxuICBpZihiYWlsKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1iYWlsJyk7XG4gIH1cblxuICBpZihjaGFuZ2VkRmlsZXNXaXRoQW5jZXN0b3IpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWNoYW5nZWRGaWxlc1dpdGhBbmNlc3RvcicpO1xuICB9XG5cbiAgaWYoY2hhbmdlZFNpbmNlKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1jaGFuZ2VkU2luY2UnKTtcbiAgfVxuXG4gIGlmKGNpKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1jaScpO1xuICB9XG5cbiAgaWYoY29sbGVjdENvdmVyYWdlRnJvbSkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tY29sbGVjdENvdmVyYWdlRnJvbScsIGNvbGxlY3RDb3ZlcmFnZUZyb20pO1xuICB9XG5cbiAgaWYoY29sb3JzKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1jb2xvcnMnKTtcbiAgfVxuXG4gIGlmKGRlYnVnKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1kZWJ1ZycpO1xuICB9XG5cbiAgaWYoZGV0ZWN0T3BlbkhhbmRsZXMpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWRldGVjdE9wZW5IYW5kbGVzJyk7XG4gIH1cblxuICBpZihlbnYpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWVudicpO1xuICB9XG5cbiAgaWYoZXJyb3JPbkRlcHJlY2F0ZWQpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWVycm9yT25EZXByZWNhdGVkJyk7XG4gIH1cblxuICBpZihleHBhbmQpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWV4cGFuZCcpO1xuICB9XG5cbiAgaWYoZm9yY2VFeGl0KSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1mb3JjZUV4aXQnKTtcbiAgfVxuXG4gIGlmKGpzb24pIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWpzb24nKTtcbiAgfVxuXG4gIGlmKGxhc3RDb21taXQpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWxhc3RDb21taXQnKTtcbiAgfVxuXG4gIGlmKGxpc3RUZXN0cykge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tbGlzdFRlc3RzJyk7XG4gIH1cblxuICBpZihsb2dIZWFwVXNhZ2UpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWxvZ0hlYXBVc2FnZScpO1xuICB9XG5cbiAgaWYobWF4V29ya2Vycykge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tbWF4V29ya2VycycsIG1heFdvcmtlcnMpO1xuICB9XG5cbiAgaWYobm9TdGFja1RyYWNlKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1ub1N0YWNrVHJhY2UnKTtcbiAgfVxuXG4gIGlmKG5vdGlmeSkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tbm90aWZ5Jyk7XG4gIH1cblxuICBpZihvbmx5Q2hhbmdlZCkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tb25seUNoYW5nZWQnKTtcbiAgfVxuXG4gIGxldCB0ZW1wT3V0cHV0RmlsZSA9IG91dHB1dEZpbGU7XG5cbiAgaWYoKHVzZUFuYWx5emUgfHwgdXNlRGVidWcpICYmICFvdXRwdXRGaWxlKSB7XG4gICAgdGVtcE91dHB1dEZpbGUgPSAnLmxleC10ZXN0LXJlc3VsdHMuanNvbic7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1qc29uJywgJy0tb3V0cHV0RmlsZScsIHRlbXBPdXRwdXRGaWxlKTtcbiAgfSBlbHNlIGlmKG91dHB1dEZpbGUpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLW91dHB1dEZpbGUnLCBvdXRwdXRGaWxlKTtcbiAgfVxuXG4gIGlmKHBhc3NXaXRoTm9UZXN0cykge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tcGFzc1dpdGhOb1Rlc3RzJyk7XG4gIH1cblxuICBpZihydW5JbkJhbmQpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXJ1bkluQmFuZCcpO1xuICB9XG5cbiAgaWYoc2hvd0NvbmZpZykge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tc2hvd0NvbmZpZycpO1xuICB9XG5cbiAgaWYoc2lsZW50KSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1zaWxlbnQnKTtcbiAgfVxuXG4gIGlmKHRlc3RMb2NhdGlvbkluUmVzdWx0cykge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tdGVzdExvY2F0aW9uSW5SZXN1bHRzJyk7XG4gIH1cblxuICBpZih0ZXN0TmFtZVBhdHRlcm4pIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXRlc3ROYW1lUGF0dGVybicsIHRlc3ROYW1lUGF0dGVybik7XG4gIH1cblxuICBpZih0ZXN0UGF0aFBhdHRlcm4pIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXRlc3RQYXRoUGF0dGVybnMnLCB0ZXN0UGF0aFBhdHRlcm4pO1xuICB9XG5cbiAgaWYodXNlU3RkZXJyKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS11c2VTdGRlcnInKTtcbiAgfVxuXG4gIGlmKHZlcmJvc2UpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXZlcmJvc2UnKTtcbiAgfVxuXG4gIGlmKHdhdGNoQWxsKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS13YXRjaEFsbCcpO1xuICB9XG5cbiAgaWYocmVtb3ZlQ2FjaGUpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLW5vLWNhY2hlJyk7XG4gIH1cblxuICBpZihqZXN0U2V0dXBGaWxlICE9PSAnJykge1xuICAgIGNvbnN0IGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKTtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKGAtLXNldHVwRmlsZXNBZnRlckVudj0ke3BhdGhSZXNvbHZlKGN3ZCwgamVzdFNldHVwRmlsZSl9YCk7XG4gIH1cblxuICBpZih1cGRhdGUpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXVwZGF0ZVNuYXBzaG90Jyk7XG4gIH1cblxuICBpZih3YXRjaCkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0td2F0Y2gnLCB3YXRjaCk7XG4gIH1cblxuICBpZihhcmdzKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCguLi5hcmdzKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY2EoamVzdFBhdGgsIGplc3RPcHRpb25zLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgc3RkaW86ICdpbmhlcml0J1xuICAgIH0pO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdUZXN0aW5nIGNvbXBsZXRlZCEnKTtcblxuICAgIGlmKHVzZUFuYWx5emUpIHtcbiAgICAgIHNwaW5uZXIuc3RhcnQoJ0FJIGlzIGFuYWx5emluZyB0ZXN0IGNvdmVyYWdlIGFuZCBzdWdnZXN0aW5nIGltcHJvdmVtZW50cy4uLicpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0ZXN0UmVzdWx0cyA9IHByb2Nlc3NUZXN0UmVzdWx0cyh0ZW1wT3V0cHV0RmlsZSk7XG4gICAgICAgIGNvbnN0IGZpbGVQYXR0ZXJucyA9IGdldFRlc3RGaWxlUGF0dGVybnModGVzdFBhdGhQYXR0ZXJuKTtcblxuICAgICAgICBhd2FpdCBhaUZ1bmN0aW9uKHtcbiAgICAgICAgICBwcm9tcHQ6IGBBbmFseXplIHRoZXNlIEplc3QgdGVzdCByZXN1bHRzIGFuZCBzdWdnZXN0IHRlc3QgY292ZXJhZ2UgaW1wcm92ZW1lbnRzOlxuXG4ke0pTT04uc3RyaW5naWZ5KHRlc3RSZXN1bHRzLCBudWxsLCAyKX1cblxuVGVzdCBwYXR0ZXJuczogJHtmaWxlUGF0dGVybnMuam9pbignLCAnKX1cblxuUGxlYXNlIHByb3ZpZGU6XG4xLiBBbmFseXNpcyBvZiBjdXJyZW50IGNvdmVyYWdlIGdhcHNcbjIuIFN1Z2dlc3Rpb25zIGZvciBpbXByb3ZpbmcgdGVzdCBjYXNlc1xuMy4gUmVjb21tZW5kYXRpb25zIGZvciBhZGRpdGlvbmFsIGludGVncmF0aW9uIHRlc3Qgc2NlbmFyaW9zXG40LiBCZXN0IHByYWN0aWNlcyBmb3IgaW5jcmVhc2luZyB0ZXN0IGVmZmVjdGl2ZW5lc3NgLFxuICAgICAgICAgIHRhc2s6ICdvcHRpbWl6ZScsXG4gICAgICAgICAgY29udGV4dDogdHJ1ZSxcbiAgICAgICAgICBxdWlldFxuICAgICAgICB9KTtcblxuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0FJIHRlc3QgYW5hbHlzaXMgY29tcGxldGUnKTtcbiAgICAgIH0gY2F0Y2goYWlFcnJvcikge1xuICAgICAgICBzcGlubmVyLmZhaWwoJ0NvdWxkIG5vdCBnZW5lcmF0ZSBBSSB0ZXN0IGFuYWx5c2lzJyk7XG4gICAgICAgIGlmKCFxdWlldCkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FJIGFuYWx5c2lzIGVycm9yOicsIGFpRXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2FsbGJhY2soMCk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENoZWNrIGZvciB1bml0IHRlc3QgZXJyb3JzIGFuZC9vciBjb3ZlcmFnZS5gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICBzcGlubmVyLmZhaWwoJ1Rlc3RpbmcgZmFpbGVkIScpO1xuXG4gICAgaWYodXNlRGVidWcpIHtcbiAgICAgIHNwaW5uZXIuc3RhcnQoJ0FJIGlzIGFuYWx5emluZyB0ZXN0IGZhaWx1cmVzLi4uJyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRlc3RSZXN1bHRzID0gcHJvY2Vzc1Rlc3RSZXN1bHRzKHRlbXBPdXRwdXRGaWxlKTtcblxuICAgICAgICBhd2FpdCBhaUZ1bmN0aW9uKHtcbiAgICAgICAgICBwcm9tcHQ6IGBEZWJ1ZyB0aGVzZSBmYWlsZWQgSmVzdCB0ZXN0cyBhbmQgc3VnZ2VzdCBmaXhlczpcblxuJHtKU09OLnN0cmluZ2lmeShlcnJvci5tZXNzYWdlLCBudWxsLCAyKX1cblxuVGVzdCByZXN1bHRzOiAke0pTT04uc3RyaW5naWZ5KHRlc3RSZXN1bHRzLCBudWxsLCAyKX1cblxuUGxlYXNlIHByb3ZpZGU6XG4xLiBBbmFseXNpcyBvZiB3aHkgdGhlIHRlc3RzIGFyZSBmYWlsaW5nXG4yLiBTcGVjaWZpYyBzdWdnZXN0aW9ucyB0byBmaXggZWFjaCBmYWlsaW5nIHRlc3RcbjMuIEFueSBwb3RlbnRpYWwgaXNzdWVzIHdpdGggdGVzdCBmaXh0dXJlcyBvciBtb2Nrc1xuNC4gQ29kZSBleGFtcGxlcyBmb3Igc29sdXRpb25zYCxcbiAgICAgICAgICB0YXNrOiAnaGVscCcsXG4gICAgICAgICAgY29udGV4dDogdHJ1ZSxcbiAgICAgICAgICBxdWlldFxuICAgICAgICB9KTtcblxuICAgICAgICBzcGlubmVyLnN1Y2NlZWQoJ0FJIGRlYnVnZ2luZyBhc3Npc3RhbmNlIGNvbXBsZXRlJyk7XG4gICAgICB9IGNhdGNoKGFpRXJyb3IpIHtcbiAgICAgICAgc3Bpbm5lci5mYWlsKCdDb3VsZCBub3QgZ2VuZXJhdGUgQUkgZGVidWdnaW5nIGFzc2lzdGFuY2UnKTtcbiAgICAgICAgaWYoIXF1aWV0KSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignQUkgZGVidWdnaW5nIGVycm9yOicsIGFpRXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHRlc3Q7Il0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxhQUFZO0FBQ3BCLFNBQVEsb0JBQW1CO0FBQzNCLFNBQVEsUUFBUSxnQkFBZTtBQUMvQixTQUFRLFdBQVcsbUJBQWtCO0FBQ3JDLFNBQVEsV0FBVTtBQUVsQixTQUFRLGlCQUFnQjtBQUN4QixTQUFRLHFCQUFvQjtBQUM1QixTQUFRLHdCQUF1QjtBQUMvQixTQUFRLFdBQVU7QUFDbEIsU0FBUSxrQkFBaUI7QUFtRGxCLE1BQU0sc0JBQXNCLENBQUMsb0JBQXVDO0FBQ3pFLFFBQU0sa0JBQWtCLENBQUMsZUFBZSxlQUFlLG9CQUFvQjtBQUUzRSxNQUFHLENBQUMsaUJBQWlCO0FBQ25CLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxDQUFDLGVBQWU7QUFDekI7QUFFQSxNQUFNLDJCQUEyQixNQUFnQjtBQUMvQyxRQUFNLGNBQWMsU0FBUyw0QkFBNEI7QUFBQSxJQUN2RCxLQUFLLFFBQVEsSUFBSTtBQUFB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
|
|
365
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3Rlc3QvdGVzdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhlY2F9IGZyb20gJ2V4ZWNhJztcbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge3N5bmMgYXMgZ2xvYlN5bmN9IGZyb20gJ2dsb2InO1xuaW1wb3J0IHtyZXNvbHZlIGFzIHBhdGhSZXNvbHZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWcsIGdldFR5cGVTY3JpcHRDb25maWdQYXRofSBmcm9tICcuLi8uLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi8uLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtnZXREaXJOYW1lLCByZXNvbHZlQmluYXJ5UGF0aH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7YWlGdW5jdGlvbn0gZnJvbSAnLi4vYWkvYWkuanMnO1xuXG4vKipcbiAqIERldGVjdCBpZiB0aGUgcHJvamVjdCBpcyB1c2luZyBFU00gYnkgY2hlY2tpbmcgcGFja2FnZS5qc29uXG4gKi9cbmNvbnN0IGRldGVjdEVTTSA9IChjd2Q6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSBwYXRoUmVzb2x2ZShjd2QsICdwYWNrYWdlLmpzb24nKTtcblxuICBpZihleGlzdHNTeW5jKHBhY2thZ2VKc29uUGF0aCkpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFja2FnZUpzb25Db250ZW50ID0gcmVhZEZpbGVTeW5jKHBhY2thZ2VKc29uUGF0aCwgJ3V0ZjgnKTtcbiAgICAgIGNvbnN0IHBhY2thZ2VKc29uID0gSlNPTi5wYXJzZShwYWNrYWdlSnNvbkNvbnRlbnQpO1xuICAgICAgcmV0dXJuIHBhY2thZ2VKc29uLnR5cGUgPT09ICdtb2R1bGUnO1xuICAgIH0gY2F0Y2goX2Vycm9yKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBUZXN0T3B0aW9ucyB7XG4gIHJlYWRvbmx5IGFuYWx5emU/OiBib29sZWFuO1xuICByZWFkb25seSBhaURlYnVnPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYWlHZW5lcmF0ZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFpQW5hbHl6ZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGJhaWw/OiBib29sZWFuO1xuICByZWFkb25seSBjaGFuZ2VkRmlsZXNXaXRoQW5jZXN0b3I/OiBib29sZWFuO1xuICByZWFkb25seSBjaGFuZ2VkU2luY2U/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNpPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgY29sbGVjdENvdmVyYWdlRnJvbT86IHN0cmluZztcbiAgcmVhZG9ubHkgY29sb3JzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY29uZmlnPzogc3RyaW5nO1xuICByZWFkb25seSBkZWJ1Zz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGRlYnVnVGVzdHM/OiBib29sZWFuO1xuICByZWFkb25seSBkZXRlY3RPcGVuSGFuZGxlcz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGVudj86IHN0cmluZztcbiAgcmVhZG9ubHkgZXJyb3JPbkRlcHJlY2F0ZWQ/OiBib29sZWFuO1xuICByZWFkb25seSBleHBhbmQ/OiBib29sZWFuO1xuICByZWFkb25seSBmb3JjZUV4aXQ/OiBib29sZWFuO1xuICByZWFkb25seSBnZW5lcmF0ZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGpzb24/OiBib29sZWFuO1xuICByZWFkb25seSBsYXN0Q29tbWl0PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbGlzdFRlc3RzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbG9nSGVhcFVzYWdlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbWF4V29ya2Vycz86IHN0cmluZztcbiAgcmVhZG9ubHkgbm9TdGFja1RyYWNlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbm90aWZ5PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgb25seUNoYW5nZWQ/OiBib29sZWFuO1xuICByZWFkb25seSBvdXRwdXRGaWxlPzogc3RyaW5nO1xuICByZWFkb25seSBwYXNzV2l0aE5vVGVzdHM/OiBib29sZWFuO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHJlbW92ZUNhY2hlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcnVuSW5CYW5kPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgc2V0dXA/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHNob3dDb25maWc/OiBib29sZWFuO1xuICByZWFkb25seSBzaWxlbnQ/OiBib29sZWFuO1xuICByZWFkb25seSB0ZXN0TG9jYXRpb25JblJlc3VsdHM/OiBib29sZWFuO1xuICByZWFkb25seSB0ZXN0TmFtZVBhdHRlcm4/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHRlc3RQYXRoUGF0dGVybj86IHN0cmluZztcbiAgcmVhZG9ubHkgdXBkYXRlPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdXNlU3RkZXJyPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdmVyYm9zZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHdhdGNoPzogc3RyaW5nO1xuICByZWFkb25seSB3YXRjaEFsbD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIFRlc3RDYWxsYmFjayA9IHR5cGVvZiBwcm9jZXNzLmV4aXQ7XG5cbmV4cG9ydCBjb25zdCBnZXRUZXN0RmlsZVBhdHRlcm5zID0gKHRlc3RQYXRoUGF0dGVybj86IHN0cmluZyk6IHN0cmluZ1tdID0+IHtcbiAgY29uc3QgZGVmYXVsdFBhdHRlcm5zID0gWycqKi8qLnRlc3QuKicsICcqKi8qLnNwZWMuKicsICcqKi8qLmludGVncmF0aW9uLionXTtcblxuICBpZighdGVzdFBhdGhQYXR0ZXJuKSB7XG4gICAgcmV0dXJuIGRlZmF1bHRQYXR0ZXJucztcbiAgfVxuXG4gIHJldHVybiBbdGVzdFBhdGhQYXR0ZXJuXTtcbn07XG5cbmNvbnN0IGZpbmRVbmNvdmVyZWRTb3VyY2VGaWxlcyA9ICgpOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IHNvdXJjZUZpbGVzID0gZ2xvYlN5bmMoJ3NyYy8qKi8qLnt0cyx0c3gsanMsanN4fScsIHtcbiAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXG4gICAgaWdub3JlOiBbJyoqL25vZGVfbW9kdWxlcy8qKicsICcqKi9kaXN0LyoqJywgJyoqLyoudGVzdC4qJywgJyoqLyouc3BlYy4qJ11cbiAgfSk7XG5cbiAgY29uc3QgdGVzdEZpbGVzID0gZ2xvYlN5bmMoJyoqLyoue3Rlc3Qsc3BlY30ue3RzLHRzeCxqcyxqc3h9Jywge1xuICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICBpZ25vcmU6IFsnKiovbm9kZV9tb2R1bGVzLyoqJywgJyoqL2Rpc3QvKionXVxuICB9KTtcblxuICAvLyBTaW1wbGUgaGV1cmlzdGljIHRvIGZpbmQgc291cmNlIGZpbGVzIHdpdGhvdXQgY29ycmVzcG9uZGluZyB0ZXN0IGZpbGVzXG4gIHJldHVybiBzb3VyY2VGaWxlcy5maWx0ZXIoKHNvdXJjZUZpbGUpID0+IHtcbiAgICBjb25zdCBiYXNlTmFtZSA9IHNvdXJjZUZpbGUucmVwbGFjZSgvXFwuW14vLl0rJC8sICcnKTtcbiAgICByZXR1cm4gIXRlc3RGaWxlcy5zb21lKCh0ZXN0RmlsZSkgPT4gdGVzdEZpbGUuaW5jbHVkZXMoYmFzZU5hbWUpKTtcbiAgfSk7XG59O1xuXG5jb25zdCBwcm9jZXNzVGVzdFJlc3VsdHMgPSAob3V0cHV0RmlsZT86IHN0cmluZyk6IGFueSA9PiB7XG4gIGlmKCFvdXRwdXRGaWxlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZVN5bmMob3V0cHV0RmlsZSwgJ3V0Zi04Jyk7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoY29udGVudCk7XG4gIH0gY2F0Y2goX2Vycm9yKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0ZXN0ID0gYXN5bmMgKG9wdGlvbnM6IFRlc3RPcHRpb25zLCBhcmdzOiBzdHJpbmdbXSwgY2FsbGJhY2s6IFRlc3RDYWxsYmFjayA9IHByb2Nlc3MuZXhpdCk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtcbiAgICBhbmFseXplID0gZmFsc2UsXG4gICAgYWlBbmFseXplID0gZmFsc2UsXG4gICAgYWlEZWJ1ZyA9IGZhbHNlLFxuICAgIGFpR2VuZXJhdGUgPSBmYWxzZSxcbiAgICBiYWlsLFxuICAgIGNoYW5nZWRGaWxlc1dpdGhBbmNlc3RvcixcbiAgICBjaGFuZ2VkU2luY2UsXG4gICAgY2ksXG4gICAgY2xpTmFtZSA9ICdMZXgnLFxuICAgIGNvbGxlY3RDb3ZlcmFnZUZyb20sXG4gICAgY29sb3JzLFxuICAgIGNvbmZpZyxcbiAgICBkZWJ1ZyA9IGZhbHNlLFxuICAgIGRlYnVnVGVzdHMgPSBmYWxzZSxcbiAgICBkZXRlY3RPcGVuSGFuZGxlcyxcbiAgICBlbnYsXG4gICAgZXJyb3JPbkRlcHJlY2F0ZWQsXG4gICAgZXhwYW5kLFxuICAgIGZvcmNlRXhpdCxcbiAgICBnZW5lcmF0ZSA9IGZhbHNlLFxuICAgIGpzb24sXG4gICAgbGFzdENvbW1pdCxcbiAgICBsaXN0VGVzdHMsXG4gICAgbG9nSGVhcFVzYWdlLFxuICAgIG1heFdvcmtlcnMsXG4gICAgbm9TdGFja1RyYWNlLFxuICAgIG5vdGlmeSxcbiAgICBvbmx5Q2hhbmdlZCxcbiAgICBvdXRwdXRGaWxlLFxuICAgIHBhc3NXaXRoTm9UZXN0cyxcbiAgICBxdWlldCxcbiAgICByZW1vdmVDYWNoZSxcbiAgICBydW5JbkJhbmQsXG4gICAgc2V0dXAsXG4gICAgc2hvd0NvbmZpZyxcbiAgICBzaWxlbnQsXG4gICAgdGVzdExvY2F0aW9uSW5SZXN1bHRzLFxuICAgIHRlc3ROYW1lUGF0dGVybixcbiAgICB0ZXN0UGF0aFBhdHRlcm4sXG4gICAgdXBkYXRlLFxuICAgIHVzZVN0ZGVycixcbiAgICB2ZXJib3NlLFxuICAgIHdhdGNoLFxuICAgIHdhdGNoQWxsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHVzZUdlbmVyYXRlID0gZ2VuZXJhdGUgfHwgYWlHZW5lcmF0ZTtcbiAgY29uc3QgdXNlQW5hbHl6ZSA9IGFuYWx5emUgfHwgYWlBbmFseXplO1xuICBjb25zdCB1c2VEZWJ1ZyA9IGRlYnVnVGVzdHMgfHwgYWlEZWJ1ZztcblxuICBsb2coYCR7Y2xpTmFtZX0gdGVzdGluZy4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGNvbnN0IHNwaW5uZXIgPSBjcmVhdGVTcGlubmVyKHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcob3B0aW9ucyk7XG5cbiAgY29uc3Qge3VzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgLy8gVXNlIHRoZSB0ZXN0LXNwZWNpZmljIFR5cGVTY3JpcHQgY29uZmlnIGZvciB0ZXN0aW5nXG4gICAgY29uc3QgdGVzdENvbmZpZ1BhdGggPSBnZXRUeXBlU2NyaXB0Q29uZmlnUGF0aCgndHNjb25maWcudGVzdC5qc29uJyk7XG4gICAgaWYoZXhpc3RzU3luYyh0ZXN0Q29uZmlnUGF0aCkpIHtcbiAgICAgIGxvZygnVXNpbmcgdHNjb25maWcudGVzdC5qc29uIGZvciB0ZXN0aW5nLi4uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIExleENvbmZpZy5jaGVja1Rlc3RUeXBlc2NyaXB0Q29uZmlnKCk7XG4gICAgfVxuICB9XG5cbiAgaWYodXNlR2VuZXJhdGUpIHtcbiAgICBzcGlubmVyLnN0YXJ0KCdBSSBpcyBhbmFseXppbmcgY29kZSB0byBnZW5lcmF0ZSB0ZXN0IGNhc2VzLi4uJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdW5jb3ZlcmVkRmlsZXMgPSBmaW5kVW5jb3ZlcmVkU291cmNlRmlsZXMoKTtcblxuICAgICAgaWYodW5jb3ZlcmVkRmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCB0YXJnZXRGaWxlID0gdW5jb3ZlcmVkRmlsZXNbMF07XG5cbiAgICAgICAgYXdhaXQgYWlGdW5jdGlvbih7XG4gICAgICAgICAgcHJvbXB0OiBgR2VuZXJhdGUgSmVzdCB1bml0IHRlc3RzIGZvciB0aGlzIGZpbGU6ICR7dGFyZ2V0RmlsZX1cXG5cXG4ke3JlYWRGaWxlU3luYyh0YXJnZXRGaWxlLCAndXRmLTgnKX1cXG5cXG5QbGVhc2UgY3JlYXRlIGNvbXByZWhlbnNpdmUgdGVzdHMgdGhhdCBjb3ZlciB0aGUgbWFpbiBmdW5jdGlvbmFsaXR5LiBJbmNsdWRlIHRlc3QgZml4dHVyZXMgYW5kIG1vY2tzIHdoZXJlIG5lY2Vzc2FyeS5gLFxuICAgICAgICAgIHRhc2s6ICd0ZXN0JyxcbiAgICAgICAgICBmaWxlOiB0YXJnZXRGaWxlLFxuICAgICAgICAgIGNvbnRleHQ6IHRydWUsXG4gICAgICAgICAgcXVpZXRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgc3Bpbm5lci5zdWNjZWVkKGBBSSB0ZXN0IGdlbmVyYXRpb24gc3VnZ2VzdGlvbnMgcHJvdmlkZWQgZm9yICR7dGFyZ2V0RmlsZX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQWxsIHNvdXJjZSBmaWxlcyBhcHBlYXIgdG8gaGF2ZSBjb3JyZXNwb25kaW5nIHRlc3QgZmlsZXMnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoKGFpRXJyb3IpIHtcbiAgICAgIHNwaW5uZXIuZmFpbCgnQ291bGQgbm90IGdlbmVyYXRlIEFJIHRlc3Qgc3VnZ2VzdGlvbnMnKTtcbiAgICAgIGlmKCFxdWlldCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdBSSB0ZXN0IGdlbmVyYXRpb24gZXJyb3I6JywgYWlFcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZGlyTmFtZSA9IGdldERpck5hbWUoKTtcbiAgY29uc3QgZGlyUGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uLy4uJyk7XG5cbiAgLy8gVXNlIHJvYnVzdCBwYXRoIHJlc29sdXRpb24gZm9yIEplc3QgYmluYXJ5XG4gIGNvbnN0IGplc3RQYXRoOiBzdHJpbmcgPSByZXNvbHZlQmluYXJ5UGF0aCgnamVzdCcpO1xuXG4gIC8vIENoZWNrIGlmIEplc3QgYmluYXJ5IGV4aXN0c1xuICBpZighamVzdFBhdGgpIHtcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IEplc3QgYmluYXJ5IG5vdCBmb3VuZCBpbiBMZXgncyBub2RlX21vZHVsZXMgb3IgbW9ub3JlcG8gcm9vdGAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBsb2coJ1BsZWFzZSByZWluc3RhbGwgTGV4IG9yIGNoZWNrIHlvdXIgaW5zdGFsbGF0aW9uLicsICdpbmZvJywgcXVpZXQpO1xuICAgIHJldHVybiAxO1xuICB9XG4gIGNvbnN0IGplc3RDb25maWdGaWxlOiBzdHJpbmcgPSBjb25maWcgfHwgcGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uLy4uL2plc3QuY29uZmlnLmxleC5qcycpO1xuICBjb25zdCBqZXN0U2V0dXBGaWxlOiBzdHJpbmcgPSBzZXR1cCB8fCBwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vLi4vamVzdC5zZXR1cC5qcycpO1xuICBjb25zdCBqZXN0T3B0aW9uczogc3RyaW5nW10gPSBbJy0tbm8tY2FjaGUnXTtcblxuICAvLyBEZXRlY3QgaWYgcHJvamVjdCBpcyB1c2luZyBFU00gYW5kIHNldCBOT0RFX09QVElPTlMgaWYgc29cbiAgY29uc3QgaXNFU00gPSBkZXRlY3RFU00ocHJvY2Vzcy5jd2QoKSk7XG4gIGxldCBub2RlT3B0aW9ucyA9IHByb2Nlc3MuZW52Lk5PREVfT1BUSU9OUyB8fCAnJztcbiAgaWYoaXNFU00pIHtcbiAgICBpZighbm9kZU9wdGlvbnMuaW5jbHVkZXMoJy0tZXhwZXJpbWVudGFsLXZtLW1vZHVsZXMnKSkge1xuICAgICAgbm9kZU9wdGlvbnMgPSBgJHtub2RlT3B0aW9uc30gLS1leHBlcmltZW50YWwtdm0tbW9kdWxlc2AudHJpbSgpO1xuICAgIH1cbiAgICBsb2coJ0VTTSBwcm9qZWN0IGRldGVjdGVkLCB1c2luZyAtLWV4cGVyaW1lbnRhbC12bS1tb2R1bGVzIGluIE5PREVfT1BUSU9OUycsICdpbmZvJywgcXVpZXQpO1xuICB9XG5cbiAgamVzdE9wdGlvbnMucHVzaCgnLS1jb25maWcnLCBqZXN0Q29uZmlnRmlsZSk7XG5cbiAgaWYoYmFpbCkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tYmFpbCcpO1xuICB9XG5cbiAgaWYoY2hhbmdlZEZpbGVzV2l0aEFuY2VzdG9yKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1jaGFuZ2VkRmlsZXNXaXRoQW5jZXN0b3InKTtcbiAgfVxuXG4gIGlmKGNoYW5nZWRTaW5jZSkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tY2hhbmdlZFNpbmNlJyk7XG4gIH1cblxuICBpZihjaSkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tY2knKTtcbiAgfVxuXG4gIGlmKGNvbGxlY3RDb3ZlcmFnZUZyb20pIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWNvbGxlY3RDb3ZlcmFnZUZyb20nLCBjb2xsZWN0Q292ZXJhZ2VGcm9tKTtcbiAgfVxuXG4gIGlmKGNvbG9ycykge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tY29sb3JzJyk7XG4gIH1cblxuICBpZihkZWJ1Zykge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tZGVidWcnKTtcbiAgfVxuXG4gIGlmKGRldGVjdE9wZW5IYW5kbGVzKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1kZXRlY3RPcGVuSGFuZGxlcycpO1xuICB9XG5cbiAgaWYoZW52KSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1lbnYnKTtcbiAgfVxuXG4gIGlmKGVycm9yT25EZXByZWNhdGVkKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1lcnJvck9uRGVwcmVjYXRlZCcpO1xuICB9XG5cbiAgaWYoZXhwYW5kKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1leHBhbmQnKTtcbiAgfVxuXG4gIGlmKGZvcmNlRXhpdCkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tZm9yY2VFeGl0Jyk7XG4gIH1cblxuICBpZihqc29uKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1qc29uJyk7XG4gIH1cblxuICBpZihsYXN0Q29tbWl0KSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1sYXN0Q29tbWl0Jyk7XG4gIH1cblxuICBpZihsaXN0VGVzdHMpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLWxpc3RUZXN0cycpO1xuICB9XG5cbiAgaWYobG9nSGVhcFVzYWdlKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1sb2dIZWFwVXNhZ2UnKTtcbiAgfVxuXG4gIGlmKG1heFdvcmtlcnMpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLW1heFdvcmtlcnMnLCBtYXhXb3JrZXJzKTtcbiAgfVxuXG4gIGlmKG5vU3RhY2tUcmFjZSkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tbm9TdGFja1RyYWNlJyk7XG4gIH1cblxuICBpZihub3RpZnkpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLW5vdGlmeScpO1xuICB9XG5cbiAgaWYob25seUNoYW5nZWQpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLW9ubHlDaGFuZ2VkJyk7XG4gIH1cblxuICBsZXQgdGVtcE91dHB1dEZpbGUgPSBvdXRwdXRGaWxlO1xuXG4gIGlmKCh1c2VBbmFseXplIHx8IHVzZURlYnVnKSAmJiAhb3V0cHV0RmlsZSkge1xuICAgIHRlbXBPdXRwdXRGaWxlID0gJy5sZXgtdGVzdC1yZXN1bHRzLmpzb24nO1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tanNvbicsICctLW91dHB1dEZpbGUnLCB0ZW1wT3V0cHV0RmlsZSk7XG4gIH0gZWxzZSBpZihvdXRwdXRGaWxlKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1vdXRwdXRGaWxlJywgb3V0cHV0RmlsZSk7XG4gIH1cblxuICBpZihwYXNzV2l0aE5vVGVzdHMpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXBhc3NXaXRoTm9UZXN0cycpO1xuICB9XG5cbiAgaWYocnVuSW5CYW5kKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1ydW5JbkJhbmQnKTtcbiAgfVxuXG4gIGlmKHNob3dDb25maWcpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXNob3dDb25maWcnKTtcbiAgfVxuXG4gIGlmKHNpbGVudCkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tc2lsZW50Jyk7XG4gIH1cblxuICBpZih0ZXN0TG9jYXRpb25JblJlc3VsdHMpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXRlc3RMb2NhdGlvbkluUmVzdWx0cycpO1xuICB9XG5cbiAgaWYodGVzdE5hbWVQYXR0ZXJuKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS10ZXN0TmFtZVBhdHRlcm4nLCB0ZXN0TmFtZVBhdHRlcm4pO1xuICB9XG5cbiAgaWYodGVzdFBhdGhQYXR0ZXJuKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS10ZXN0UGF0aFBhdHRlcm5zJywgdGVzdFBhdGhQYXR0ZXJuKTtcbiAgfVxuXG4gIGlmKHVzZVN0ZGVycikge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0tdXNlU3RkZXJyJyk7XG4gIH1cblxuICBpZih2ZXJib3NlKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS12ZXJib3NlJyk7XG4gIH1cblxuICBpZih3YXRjaEFsbCkge1xuICAgIGplc3RPcHRpb25zLnB1c2goJy0td2F0Y2hBbGwnKTtcbiAgfVxuXG4gIGlmKHJlbW92ZUNhY2hlKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS1uby1jYWNoZScpO1xuICB9XG5cbiAgaWYoamVzdFNldHVwRmlsZSAmJiBleGlzdHNTeW5jKGplc3RTZXR1cEZpbGUpKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaChgLS1zZXR1cEZpbGVzQWZ0ZXJFbnY9JHtqZXN0U2V0dXBGaWxlfWApO1xuICB9XG5cbiAgaWYodXBkYXRlKSB7XG4gICAgamVzdE9wdGlvbnMucHVzaCgnLS11cGRhdGVTbmFwc2hvdCcpO1xuICB9XG5cbiAgaWYod2F0Y2gpIHtcbiAgICBqZXN0T3B0aW9ucy5wdXNoKCctLXdhdGNoJywgd2F0Y2gpO1xuICB9XG5cbiAgaWYoYXJncykge1xuICAgIGplc3RPcHRpb25zLnB1c2goLi4uYXJncyk7XG4gIH1cblxuICAvLyBEZWJ1ZzogTG9nIEplc3Qgb3B0aW9ucyBmb3IgdmVyaWZpY2F0aW9uXG4gIGlmKGRlYnVnKSB7XG4gICAgbG9nKGBKZXN0IG9wdGlvbnM6ICR7amVzdE9wdGlvbnMuam9pbignICcpfWAsICdpbmZvJywgcXVpZXQpO1xuICAgIGxvZyhgTk9ERV9PUFRJT05TOiAke25vZGVPcHRpb25zfWAsICdpbmZvJywgcXVpZXQpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjYShqZXN0UGF0aCwgamVzdE9wdGlvbnMsIHtcbiAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgICBzdGRpbzogJ2luaGVyaXQnLFxuICAgICAgZW52OiB7XG4gICAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgICBOT0RFX09QVElPTlM6IG5vZGVPcHRpb25zXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBzcGlubmVyLnN1Y2NlZWQoJ1Rlc3RpbmcgY29tcGxldGVkIScpO1xuXG4gICAgaWYodXNlQW5hbHl6ZSkge1xuICAgICAgc3Bpbm5lci5zdGFydCgnQUkgaXMgYW5hbHl6aW5nIHRlc3QgY292ZXJhZ2UgYW5kIHN1Z2dlc3RpbmcgaW1wcm92ZW1lbnRzLi4uJyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRlc3RSZXN1bHRzID0gcHJvY2Vzc1Rlc3RSZXN1bHRzKHRlbXBPdXRwdXRGaWxlKTtcbiAgICAgICAgY29uc3QgZmlsZVBhdHRlcm5zID0gZ2V0VGVzdEZpbGVQYXR0ZXJucyh0ZXN0UGF0aFBhdHRlcm4pO1xuXG4gICAgICAgIGF3YWl0IGFpRnVuY3Rpb24oe1xuICAgICAgICAgIHByb21wdDogYEFuYWx5emUgdGhlc2UgSmVzdCB0ZXN0IHJlc3VsdHMgYW5kIHN1Z2dlc3QgdGVzdCBjb3ZlcmFnZSBpbXByb3ZlbWVudHM6XG5cbiR7SlNPTi5zdHJpbmdpZnkodGVzdFJlc3VsdHMsIG51bGwsIDIpfVxuXG5UZXN0IHBhdHRlcm5zOiAke2ZpbGVQYXR0ZXJucy5qb2luKCcsICcpfVxuXG5QbGVhc2UgcHJvdmlkZTpcbjEuIEFuYWx5c2lzIG9mIGN1cnJlbnQgY292ZXJhZ2UgZ2Fwc1xuMi4gU3VnZ2VzdGlvbnMgZm9yIGltcHJvdmluZyB0ZXN0IGNhc2VzXG4zLiBSZWNvbW1lbmRhdGlvbnMgZm9yIGFkZGl0aW9uYWwgaW50ZWdyYXRpb24gdGVzdCBzY2VuYXJpb3NcbjQuIEJlc3QgcHJhY3RpY2VzIGZvciBpbmNyZWFzaW5nIHRlc3QgZWZmZWN0aXZlbmVzc2AsXG4gICAgICAgICAgdGFzazogJ29wdGltaXplJyxcbiAgICAgICAgICBjb250ZXh0OiB0cnVlLFxuICAgICAgICAgIHF1aWV0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQUkgdGVzdCBhbmFseXNpcyBjb21wbGV0ZScpO1xuICAgICAgfSBjYXRjaChhaUVycm9yKSB7XG4gICAgICAgIHNwaW5uZXIuZmFpbCgnQ291bGQgbm90IGdlbmVyYXRlIEFJIHRlc3QgYW5hbHlzaXMnKTtcbiAgICAgICAgaWYoIXF1aWV0KSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignQUkgYW5hbHlzaXMgZXJyb3I6JywgYWlFcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxsYmFjaygwKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2hlY2sgZm9yIHVuaXQgdGVzdCBlcnJvcnMgYW5kL29yIGNvdmVyYWdlLmAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIHNwaW5uZXIuZmFpbCgnVGVzdGluZyBmYWlsZWQhJyk7XG5cbiAgICBpZih1c2VEZWJ1Zykge1xuICAgICAgc3Bpbm5lci5zdGFydCgnQUkgaXMgYW5hbHl6aW5nIHRlc3QgZmFpbHVyZXMuLi4nKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdGVzdFJlc3VsdHMgPSBwcm9jZXNzVGVzdFJlc3VsdHModGVtcE91dHB1dEZpbGUpO1xuXG4gICAgICAgIGF3YWl0IGFpRnVuY3Rpb24oe1xuICAgICAgICAgIHByb21wdDogYERlYnVnIHRoZXNlIGZhaWxlZCBKZXN0IHRlc3RzIGFuZCBzdWdnZXN0IGZpeGVzOlxuXG4ke0pTT04uc3RyaW5naWZ5KGVycm9yLm1lc3NhZ2UsIG51bGwsIDIpfVxuXG5UZXN0IHJlc3VsdHM6ICR7SlNPTi5zdHJpbmdpZnkodGVzdFJlc3VsdHMsIG51bGwsIDIpfVxuXG5QbGVhc2UgcHJvdmlkZTpcbjEuIEFuYWx5c2lzIG9mIHdoeSB0aGUgdGVzdHMgYXJlIGZhaWxpbmdcbjIuIFNwZWNpZmljIHN1Z2dlc3Rpb25zIHRvIGZpeCBlYWNoIGZhaWxpbmcgdGVzdFxuMy4gQW55IHBvdGVudGlhbCBpc3N1ZXMgd2l0aCB0ZXN0IGZpeHR1cmVzIG9yIG1vY2tzXG40LiBDb2RlIGV4YW1wbGVzIGZvciBzb2x1dGlvbnNgLFxuICAgICAgICAgIHRhc2s6ICdoZWxwJyxcbiAgICAgICAgICBjb250ZXh0OiB0cnVlLFxuICAgICAgICAgIHF1aWV0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHNwaW5uZXIuc3VjY2VlZCgnQUkgZGVidWdnaW5nIGFzc2lzdGFuY2UgY29tcGxldGUnKTtcbiAgICAgIH0gY2F0Y2goYWlFcnJvcikge1xuICAgICAgICBzcGlubmVyLmZhaWwoJ0NvdWxkIG5vdCBnZW5lcmF0ZSBBSSBkZWJ1Z2dpbmcgYXNzaXN0YW5jZScpO1xuICAgICAgICBpZighcXVpZXQpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdBSSBkZWJ1Z2dpbmcgZXJyb3I6JywgYWlFcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgdGVzdDsiXSwKICAibWFwcGluZ3MiOiAiQUFJQSxTQUFRLGFBQVk7QUFDcEIsU0FBUSxZQUFZLG9CQUFtQjtBQUN2QyxTQUFRLFFBQVEsZ0JBQWU7QUFDL0IsU0FBUSxXQUFXLG1CQUFrQjtBQUVyQyxTQUFRLFdBQVcsK0JBQThCO0FBQ2pELFNBQVEscUJBQW9CO0FBQzVCLFNBQVEsWUFBWSx5QkFBd0I7QUFDNUMsU0FBUSxXQUFVO0FBQ2xCLFNBQVEsa0JBQWlCO0FBS3pCLE1BQU0sWUFBWSxDQUFDLFFBQXlCO0FBQzFDLFFBQU0sa0JBQWtCLFlBQVksS0FBSyxjQUFjO0FBRXZELE1BQUcsV0FBVyxlQUFlLEdBQUc7QUFDOUIsUUFBSTtBQUNGLFlBQU0scUJBQXFCLGFBQWEsaUJBQWlCLE1BQU07QUFDL0QsWUFBTSxjQUFjLEtBQUssTUFBTSxrQkFBa0I7QUFDakQsYUFBTyxZQUFZLFNBQVM7QUFBQSxJQUM5QixTQUFRLFFBQVE7QUFDZCxhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFFQSxTQUFPO0FBQ1Q7QUFtRE8sTUFBTSxzQkFBc0Is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
|
|
@@ -2,6 +2,7 @@ import { execa } from "execa";
|
|
|
2
2
|
import { resolve as pathResolve } from "path";
|
|
3
3
|
import { LexConfig } from "../../LexConfig.js";
|
|
4
4
|
import { createSpinner } from "../../utils/app.js";
|
|
5
|
+
import { getDirName } from "../../utils/file.js";
|
|
5
6
|
import { log } from "../../utils/log.js";
|
|
6
7
|
const update = async (cmd, callback = process.exit) => {
|
|
7
8
|
const { cliName = "Lex", packageManager: cmdPackageManager, quiet, registry } = cmd;
|
|
@@ -11,7 +12,7 @@ const update = async (cmd, callback = process.exit) => {
|
|
|
11
12
|
const { packageManager: configPackageManager } = LexConfig.config;
|
|
12
13
|
const packageManager = cmdPackageManager || configPackageManager || "npm";
|
|
13
14
|
const isNpm = packageManager === "npm";
|
|
14
|
-
const dirName =
|
|
15
|
+
const dirName = getDirName();
|
|
15
16
|
const dirPath = pathResolve(dirName, "../..");
|
|
16
17
|
try {
|
|
17
18
|
if (isNpm) {
|
|
@@ -128,4 +129,4 @@ ${cliName} Error: ${error.message}`, "error", quiet);
|
|
|
128
129
|
export {
|
|
129
130
|
update
|
|
130
131
|
};
|
|
131
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
132
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3VwZGF0ZS91cGRhdGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4ZWNhfSBmcm9tICdleGVjYSc7XG5pbXBvcnQge3Jlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y3JlYXRlU3Bpbm5lcn0gZnJvbSAnLi4vLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7Z2V0RGlyTmFtZX0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVPcHRpb25zIHtcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgaW50ZXJhY3RpdmU/OiBib29sZWFuO1xuICByZWFkb25seSBwYWNrYWdlTWFuYWdlcj86IHN0cmluZztcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuICByZWFkb25seSByZWdpc3RyeT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgVXBkYXRlQ2FsbGJhY2sgPSB0eXBlb2YgcHJvY2Vzcy5leGl0O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlID0gYXN5bmMgKGNtZDogVXBkYXRlT3B0aW9ucywgY2FsbGJhY2s6IFVwZGF0ZUNhbGxiYWNrID0gcHJvY2Vzcy5leGl0KTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge2NsaU5hbWUgPSAnTGV4JywgcGFja2FnZU1hbmFnZXI6IGNtZFBhY2thZ2VNYW5hZ2VyLCBxdWlldCwgcmVnaXN0cnl9ID0gY21kO1xuXG4gIGxvZyhgJHtjbGlOYW1lfSB1cGRhdGluZyBwYWNrYWdlcy4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGNvbnN0IHNwaW5uZXIgPSBjcmVhdGVTcGlubmVyKHF1aWV0KTtcblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBjb25zdCB7cGFja2FnZU1hbmFnZXI6IGNvbmZpZ1BhY2thZ2VNYW5hZ2VyfSA9IExleENvbmZpZy5jb25maWc7XG4gIGNvbnN0IHBhY2thZ2VNYW5hZ2VyOiBzdHJpbmcgPSBjbWRQYWNrYWdlTWFuYWdlciB8fCBjb25maWdQYWNrYWdlTWFuYWdlciB8fCAnbnBtJztcbiAgY29uc3QgaXNOcG06IGJvb2xlYW4gPSBwYWNrYWdlTWFuYWdlciA9PT0gJ25wbSc7XG4gIGNvbnN0IGRpck5hbWUgPSBnZXREaXJOYW1lKCk7XG4gIGNvbnN0IGRpclBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLicpO1xuXG4gIHRyeSB7XG4gICAgaWYoaXNOcG0pIHtcbiAgICAgIC8vIFRyeSB0byB1c2UgbnBtLWNoZWNrLXVwZGF0ZXMgd2l0aCBkaWZmZXJlbnQgYXBwcm9hY2hlc1xuICAgICAgbGV0IG5jdUNvbW1hbmQ6IHN0cmluZztcbiAgICAgIGxldCBuY3VBcmdzOiBzdHJpbmdbXTtcblxuICAgICAgLy8gRmlyc3QgdHJ5OiBVc2UgbnB4IHdpdGggbnBtLWNoZWNrLXVwZGF0ZXNcbiAgICAgIHRyeSB7XG4gICAgICAgIG5jdUNvbW1hbmQgPSAnbnB4JztcbiAgICAgICAgbmN1QXJncyA9IFtcbiAgICAgICAgICAnbnBtLWNoZWNrLXVwZGF0ZXMnLFxuICAgICAgICAgICctLWNvbmN1cnJlbmN5JywgJzEwJyxcbiAgICAgICAgICAnLS1wYWNrYWdlTWFuYWdlcicsIHBhY2thZ2VNYW5hZ2VyLFxuICAgICAgICAgICctLXByZScsICcwJyxcbiAgICAgICAgICAnLS10YXJnZXQnLCAnbGF0ZXN0JyxcbiAgICAgICAgICAuLi4oY21kLmludGVyYWN0aXZlID8gWyctLWludGVyYWN0aXZlJ10gOiBbXSksXG4gICAgICAgICAgJy0tdXBncmFkZSdcbiAgICAgICAgXTtcblxuICAgICAgICBpZihyZWdpc3RyeSkge1xuICAgICAgICAgIG5jdUFyZ3MucHVzaCgnLS1yZWdpc3RyeScsIHJlZ2lzdHJ5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IGV4ZWNhKG5jdUNvbW1hbmQsIG5jdUFyZ3MsIHtcbiAgICAgICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgICAgIHN0ZGlvOiAnaW5oZXJpdCdcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoKG5weEVycm9yKSB7XG4gICAgICAgIC8vIFNlY29uZCB0cnk6IFVzZSBucG0tY2hlY2stdXBkYXRlcyBkaXJlY3RseSAoaWYgaW5zdGFsbGVkIGdsb2JhbGx5KVxuICAgICAgICB0cnkge1xuICAgICAgICAgIG5jdUNvbW1hbmQgPSAnbnBtLWNoZWNrLXVwZGF0ZXMnO1xuICAgICAgICAgIG5jdUFyZ3MgPSBbXG4gICAgICAgICAgICAnLS1jb25jdXJyZW5jeScsICcxMCcsXG4gICAgICAgICAgICAnLS1wYWNrYWdlTWFuYWdlcicsIHBhY2thZ2VNYW5hZ2VyLFxuICAgICAgICAgICAgJy0tcHJlJywgJzAnLFxuICAgICAgICAgICAgJy0tdGFyZ2V0JywgJ2xhdGVzdCcsXG4gICAgICAgICAgICAuLi4oY21kLmludGVyYWN0aXZlID8gWyctLWludGVyYWN0aXZlJ10gOiBbXSksXG4gICAgICAgICAgICAnLS11cGdyYWRlJ1xuICAgICAgICAgIF07XG5cbiAgICAgICAgICBpZihyZWdpc3RyeSkge1xuICAgICAgICAgICAgbmN1QXJncy5wdXNoKCctLXJlZ2lzdHJ5JywgcmVnaXN0cnkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGF3YWl0IGV4ZWNhKG5jdUNvbW1hbmQsIG5jdUFyZ3MsIHtcbiAgICAgICAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgICAgICAgICBzdGRpbzogJ2luaGVyaXQnXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2gobmN1RXJyb3IpIHtcbiAgICAgICAgICAvLyBUaGlyZCB0cnk6IEluc3RhbGwgbnBtLWNoZWNrLXVwZGF0ZXMgZ2xvYmFsbHkgYW5kIHVzZSBpdFxuICAgICAgICAgIGxvZygnbnBtLWNoZWNrLXVwZGF0ZXMgbm90IGZvdW5kLiBJbnN0YWxsaW5nIGl0IGdsb2JhbGx5Li4uJywgJ2luZm8nLCBxdWlldCk7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgYXdhaXQgZXhlY2EoJ25wbScsIFsnaW5zdGFsbCcsICctZycsICducG0tY2hlY2stdXBkYXRlcyddLCB7XG4gICAgICAgICAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgICAgICAgICAgIHN0ZGlvOiAnaW5oZXJpdCdcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBuY3VDb21tYW5kID0gJ25wbS1jaGVjay11cGRhdGVzJztcbiAgICAgICAgICAgIG5jdUFyZ3MgPSBbXG4gICAgICAgICAgICAgICctLWNvbmN1cnJlbmN5JywgJzEwJyxcbiAgICAgICAgICAgICAgJy0tcGFja2FnZU1hbmFnZXInLCBwYWNrYWdlTWFuYWdlcixcbiAgICAgICAgICAgICAgJy0tcHJlJywgJzAnLFxuICAgICAgICAgICAgICAnLS10YXJnZXQnLCAnbGF0ZXN0JyxcbiAgICAgICAgICAgICAgLi4uKGNtZC5pbnRlcmFjdGl2ZSA/IFsnLS1pbnRlcmFjdGl2ZSddIDogW10pLFxuICAgICAgICAgICAgICAnLS11cGdyYWRlJ1xuICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgaWYocmVnaXN0cnkpIHtcbiAgICAgICAgICAgICAgbmN1QXJncy5wdXNoKCctLXJlZ2lzdHJ5JywgcmVnaXN0cnkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhd2FpdCBleGVjYShuY3VDb21tYW5kLCBuY3VBcmdzLCB7XG4gICAgICAgICAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgICAgICAgICAgIHN0ZGlvOiAnaW5oZXJpdCdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gY2F0Y2goaW5zdGFsbEVycm9yKSB7XG4gICAgICAgICAgICBsb2coYEZhaWxlZCB0byBpbnN0YWxsIG9yIHVzZSBucG0tY2hlY2stdXBkYXRlczogJHtpbnN0YWxsRXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgICAgICBsb2coJ1BsZWFzZSBpbnN0YWxsIG5wbS1jaGVjay11cGRhdGVzIG1hbnVhbGx5OiBucG0gaW5zdGFsbCAtZyBucG0tY2hlY2stdXBkYXRlcycsICdpbmZvJywgcXVpZXQpO1xuICAgICAgICAgICAgdGhyb3cgaW5zdGFsbEVycm9yO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBBZnRlciBzdWNjZXNzZnVsIHVwZGF0ZSwgcnVuIG5wbSBpbnN0YWxsIGFuZCBhdWRpdCBmaXhcbiAgICAgIGF3YWl0IGV4ZWNhKCducG0nLCBbJ2knLCAnLS1mb3JjZSddLCB7XG4gICAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgICAgIHN0ZGlvOiAnaW5oZXJpdCdcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCBleGVjYSgnbnBtJywgWydhdWRpdCcsICdmaXgnXSwge1xuICAgICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgICBzdGRpbzogJ2luaGVyaXQnXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVXNlIHlhcm5cbiAgICAgIGNvbnN0IHVwZGF0ZUFwcCA9ICd5YXJuJztcbiAgICAgIGNvbnN0IHVwZGF0ZU9wdGlvbnM6IHN0cmluZ1tdID0gW2NtZC5pbnRlcmFjdGl2ZSA/ICd1cGdyYWRlLWludGVyYWN0aXZlJyA6ICd1cGdyYWRlJywgJy0tbGF0ZXN0J107XG5cbiAgICAgIGlmKHJlZ2lzdHJ5KSB7XG4gICAgICAgIHVwZGF0ZU9wdGlvbnMucHVzaCgnLS1yZWdpc3RyeScsIHJlZ2lzdHJ5KTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgZXhlY2EodXBkYXRlQXBwLCB1cGRhdGVPcHRpb25zLCB7XG4gICAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgICAgIHN0ZGlvOiAnaW5oZXJpdCdcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHNwaW5uZXIuc3VjY2VlZCgnU3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgcGFja2FnZXMhJyk7XG5cbiAgICBjYWxsYmFjaygwKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIHVwZGF0ZSBwYWNrYWdlcy4nKTtcblxuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiAxO1xuICB9XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUlBLFNBQVEsYUFBWTtBQUNwQixTQUFRLFdBQVcsbUJBQWtCO0FBRXJDLFNBQVEsaUJBQWdCO0FBQ3hCLFNBQVEscUJBQW9CO0FBQzVCLFNBQVEsa0JBQWlCO0FBQ3pCLFNBQVEsV0FBVTtBQVlYLE1BQU0sU0FBUyxPQUFPLEtBQW9CLFdBQTJCLFFBQVEsU0FBMEI7QUFDNUcsUUFBTSxFQUFDLFVBQVUsT0FBTyxnQkFBZ0IsbUJBQW1CLE9BQU8sU0FBUSxJQUFJO0FBRTlFLE1BQUksR0FBRyxPQUFPLHlCQUF5QixRQUFRLEtBQUs7QUFFcEQsUUFBTSxVQUFVLGNBQWMsS0FBSztBQUVuQyxRQUFNLFVBQVUsWUFBWSxHQUFHO0FBRS9CLFFBQU0sRUFBQyxnQkFBZ0IscUJBQW9CLElBQUksVUFBVTtBQUN6RCxRQUFNLGlCQUF5QixxQkFBcUIsd0JBQXdCO0FBQzVFLFFBQU0sUUFBaUIsbUJBQW1CO0FB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
|
|
@@ -2,12 +2,12 @@ import { compareVersions } from "compare-versions";
|
|
|
2
2
|
import { execa } from "execa";
|
|
3
3
|
import { readFileSync } from "fs";
|
|
4
4
|
import latestVersion from "latest-version";
|
|
5
|
-
import { fileURLToPath } from "url";
|
|
6
5
|
import { LexConfig } from "../../LexConfig.js";
|
|
7
6
|
import { createSpinner } from "../../utils/app.js";
|
|
7
|
+
import { getLexPackageJsonPath } from "../../utils/file.js";
|
|
8
8
|
import { log } from "../../utils/log.js";
|
|
9
9
|
import { parseVersion } from "../versions/versions.js";
|
|
10
|
-
const packagePath =
|
|
10
|
+
const packagePath = getLexPackageJsonPath();
|
|
11
11
|
const packageJson = JSON.parse(readFileSync(packagePath, "utf8"));
|
|
12
12
|
const upgrade = async (cmd, callback = process.exit) => {
|
|
13
13
|
const { cliName = "Lex", cliPackage = "@nlabs/lex", quiet } = cmd;
|
|
@@ -44,4 +44,4 @@ ${cliName} Error: ${error.message}`, "error", quiet);
|
|
|
44
44
|
export {
|
|
45
45
|
upgrade
|
|
46
46
|
};
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3VwZ3JhZGUvdXBncmFkZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtjb21wYXJlVmVyc2lvbnN9IGZyb20gJ2NvbXBhcmUtdmVyc2lvbnMnO1xuaW1wb3J0IHtleGVjYX0gZnJvbSAnZXhlY2EnO1xuaW1wb3J0IHtyZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBsYXRlc3RWZXJzaW9uIGZyb20gJ2xhdGVzdC12ZXJzaW9uJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uLy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNwaW5uZXJ9IGZyb20gJy4uLy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2dldExleFBhY2thZ2VKc29uUGF0aH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vLi4vdXRpbHMvbG9nLmpzJztcbmltcG9ydCB7cGFyc2VWZXJzaW9ufSBmcm9tICcuLi92ZXJzaW9ucy92ZXJzaW9ucy5qcyc7XG5cbmNvbnN0IHBhY2thZ2VQYXRoID0gZ2V0TGV4UGFja2FnZUpzb25QYXRoKCk7XG5jb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhY2thZ2VQYXRoLCAndXRmOCcpKTtcblxuZXhwb3J0IGludGVyZmFjZSBVcGdyYWRlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNsaVBhY2thZ2U/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgVXBncmFkZUNhbGxiYWNrID0gdHlwZW9mIHByb2Nlc3MuZXhpdDtcblxuZXhwb3J0IGNvbnN0IHVwZ3JhZGUgPSBhc3luYyAoY21kOiBVcGdyYWRlT3B0aW9ucywgY2FsbGJhY2s6IFVwZ3JhZGVDYWxsYmFjayA9IHByb2Nlc3MuZXhpdCk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIGNsaVBhY2thZ2UgPSAnQG5sYWJzL2xleCcsIHF1aWV0fSA9IGNtZDtcblxuICAvLyBEaXNwbGF5IHN0YXR1c1xuICBsb2coYFVwZ3JhZGluZyAke2NsaU5hbWV9Li4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgLy8gU3Bpbm5lclxuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIHJldHVybiBsYXRlc3RWZXJzaW9uKCdAbmxhYnMvbGV4JylcbiAgICAudGhlbihhc3luYyAobGF0ZXN0OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnQ6IHN0cmluZyA9IHBhcnNlVmVyc2lvbihwYWNrYWdlSnNvbi52ZXJzaW9uKTtcbiAgICAgIGNvbnN0IHZlcnNpb25EaWZmOiBudW1iZXIgPSBjb21wYXJlVmVyc2lvbnMobGF0ZXN0LCBjdXJyZW50KTtcblxuICAgICAgaWYodmVyc2lvbkRpZmYgPT09IDApIHtcbiAgICAgICAgbG9nKGBcXG5DdXJyZW50bHkgdXAtdG8tZGF0ZS4gVmVyc2lvbiAke2xhdGVzdH0gaXMgdGhlIGxhdGVzdC5gLCAnbm90ZScsIHF1aWV0KTtcbiAgICAgICAgY2FsbGJhY2soMCk7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuXG4gICAgICBsb2coYFxcbkN1cnJlbnRseSBvdXQgb2YgZGF0ZS4gVXBncmFkaW5nIGZyb20gdmVyc2lvbiAke2N1cnJlbnR9IHRvICR7bGF0ZXN0fS4uLmAsICdub3RlJywgcXVpZXQpO1xuXG4gICAgICBjb25zdCB1cGdyYWRlT3B0aW9uczogc3RyaW5nW10gPSBbJ2luc3RhbGwnLCAnLWcnLCBgJHtjbGlQYWNrYWdlfUBsYXRlc3RgXTtcblxuICAgICAgYXdhaXQgZXhlY2EoJ25wbScsIHVwZ3JhZGVPcHRpb25zLCB7XG4gICAgICAgIGVuY29kaW5nOiAndXRmOCcsXG4gICAgICAgIHN0ZGlvOiAnaW5oZXJpdCdcbiAgICAgIH0pO1xuXG4gICAgICAvLyBTdG9wIGxvYWRlclxuICAgICAgc3Bpbm5lci5zdWNjZWVkKGBTdWNjZXNzZnVsbHkgdXBkYXRlZCAke2NsaU5hbWV9IWApO1xuXG4gICAgICAvLyBTdG9wIHByb2Nlc3NcbiAgICAgIGNhbGxiYWNrKDApO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgLy8gU3RvcCBzcGlubmVyXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byB1cGRhdGVkIHBhY2thZ2VzLicpO1xuXG4gICAgICAvLyBLaWxsIHByb2Nlc3NcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfSk7XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVEsdUJBQXNCO0FBQzlCLFNBQVEsYUFBWTtBQUNwQixTQUFRLG9CQUFtQjtBQUMzQixPQUFPLG1CQUFtQjtBQUUxQixTQUFRLGlCQUFnQjtBQUN4QixTQUFRLHFCQUFvQjtBQUM1QixTQUFRLDZCQUE0QjtBQUNwQyxTQUFRLFdBQVU7QUFDbEIsU0FBUSxvQkFBbUI7QUFFM0IsTUFBTSxjQUFjLHNCQUFzQjtBQUMxQyxNQUFNLGNBQWMsS0FBSyxNQUFNLGFBQWEsYUFBYSxNQUFNLENBQUM7QUFVekQsTUFBTSxVQUFVLE9BQU8sS0FBcUIsV0FBNEIsUUFBUSxTQUEwQjtBQUMvRyxRQUFNLEVBQUMsVUFBVSxPQUFPLGFBQWEsY0FBYyxNQUFLLElBQUk7QUFHNUQsTUFBSSxhQUFhLE9BQU8sT0FBTyxRQUFRLEtBQUs7QUFHNUMsUUFBTSxVQUFVLGNBQWMsS0FBSztBQUduQyxRQUFNLFVBQVUsWUFBWSxHQUFHO0FBRS9CLFNBQU8sY0FBYyxZQUFZLEVBQzlCLEtBQUssT0FBTyxXQUFtQjtBQUM5QixVQUFNLFVBQWtCLGFBQWEsWUFBWSxPQUFPO0FBQ3hELFVBQU0sY0FBc0IsZ0JBQWdCLFFBQVEsT0FBTztBQUUzRCxRQUFHLGdCQUFnQixHQUFHO0FBQ3BCLFVBQUk7QUFBQSxnQ0FBbUMsTUFBTSxtQkFBbUIsUUFBUSxLQUFLO0FBQzdFLGVBQVMsQ0FBQztBQUNWLGFBQU87QUFBQSxJQUNUO0FBRUEsUUFBSTtBQUFBLGdEQUFtRCxPQUFPLE9BQU8sTUFBTSxPQUFPLFFBQVEsS0FBSztBQUUvRixVQUFNLGlCQUEyQixDQUFDLFdBQVcsTUFBTSxHQUFHLFVBQVUsU0FBUztBQUV6RSxVQUFNLE1BQU0sT0FBTyxnQkFBZ0I7QUFBQSxNQUNqQyxVQUFVO0FBQUEsTUFDVixPQUFPO0FBQUEsSUFDVCxDQUFDO0FBR0QsWUFBUSxRQUFRLHdCQUF3QixPQUFPLEdBQUc7QUFHbEQsYUFBUyxDQUFDO0FBQ1YsV0FBTztBQUFBLEVBQ1QsQ0FBQyxFQUNBLE1BQU0sQ0FBQyxVQUFVO0FBRWhCLFFBQUk7QUFBQSxFQUFLLE9BQU8sV0FBVyxNQUFNLE9BQU8sSUFBSSxTQUFTLEtBQUs7QUFHMUQsWUFBUSxLQUFLLDZCQUE2QjtBQUcxQyxhQUFTLENBQUM7QUFDVixXQUFPO0FBQUEsRUFDVCxDQUFDO0FBQ0w7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { readFileSync } from "fs";
|
|
2
|
-
import {
|
|
2
|
+
import { getLexPackageJsonPath } from "../../utils/file.js";
|
|
3
3
|
import { log } from "../../utils/log.js";
|
|
4
|
-
const packagePath =
|
|
4
|
+
const packagePath = getLexPackageJsonPath();
|
|
5
5
|
const packageJson = JSON.parse(readFileSync(packagePath, "utf8"));
|
|
6
6
|
const parseVersion = (packageVersion) => packageVersion?.replace(/\^/g, "");
|
|
7
7
|
const packages = {
|
|
@@ -38,4 +38,4 @@ export {
|
|
|
38
38
|
parseVersion,
|
|
39
39
|
versions
|
|
40
40
|
};
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbW1hbmRzL3ZlcnNpb25zL3ZlcnNpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtyZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcblxuaW1wb3J0IHtnZXRMZXhQYWNrYWdlSnNvblBhdGh9IGZyb20gJy4uLy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uLy4uL3V0aWxzL2xvZy5qcyc7XG5cbmNvbnN0IHBhY2thZ2VQYXRoID0gZ2V0TGV4UGFja2FnZUpzb25QYXRoKCk7XG5jb25zdCBwYWNrYWdlSnNvbiA9IEpTT04ucGFyc2UocmVhZEZpbGVTeW5jKHBhY2thZ2VQYXRoLCAndXRmOCcpKTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlVmVyc2lvbiA9IChwYWNrYWdlVmVyc2lvbjogc3RyaW5nKTogc3RyaW5nID0+IHBhY2thZ2VWZXJzaW9uPy5yZXBsYWNlKC9cXF4vZywgJycpO1xuXG5leHBvcnQgY29uc3QgcGFja2FnZXMgPSB7XG4gIGVzYnVpbGQ6IHBhcnNlVmVyc2lvbihwYWNrYWdlSnNvbi5kZXBlbmRlbmNpZXMuZXNidWlsZCksXG4gIGplc3Q6IHBhcnNlVmVyc2lvbihwYWNrYWdlSnNvbi5kZXBlbmRlbmNpZXMuamVzdCksXG4gIGxleDogcGFja2FnZUpzb24udmVyc2lvbixcbiAgdHlwZXNjcmlwdDogcGFyc2VWZXJzaW9uKHBhY2thZ2VKc29uLmRlcGVuZGVuY2llcy50eXBlc2NyaXB0KSxcbiAgd2VicGFjazogcGFyc2VWZXJzaW9uKHBhY2thZ2VKc29uLmRlcGVuZGVuY2llcy53ZWJwYWNrKVxufTtcblxuZXhwb3J0IGNvbnN0IGpzb25WZXJzaW9ucyA9IChsZXhQYWNrYWdlcykgPT4gT2JqZWN0LmtleXMobGV4UGFja2FnZXMpLnJlZHVjZSgobGlzdCwga2V5KSA9PiB7XG4gIGxpc3Rba2V5XSA9IHBhY2thZ2VzW2tleV07XG4gIHJldHVybiBsaXN0O1xufSwge30pO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZlcnNpb25zQ21kIHtcbiAgcmVhZG9ubHkganNvbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCB2ZXJzaW9ucyA9IChjbWQ6IFZlcnNpb25zQ21kLCBjYWxsYmFjazogKHN0YXR1czogbnVtYmVyKSA9PiB2b2lkKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgaWYoY21kLmpzb24pIHtcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShqc29uVmVyc2lvbnMocGFja2FnZXMpKSk7XG4gIH0gZWxzZSB7XG4gICAgbG9nKCdWZXJzaW9uczonLCAnaW5mbycsIGZhbHNlKTtcbiAgICBsb2coYCAgTGV4OiAke3BhY2thZ2VzLmxleH1gLCAnaW5mbycsIGZhbHNlKTtcbiAgICBsb2coJyAgLS0tLS0tLS0tLScsICdub3RlJywgZmFsc2UpO1xuICAgIGxvZyhgICBFU0J1aWxkOiAke3BhY2thZ2VzLmVzYnVpbGR9YCwgJ2luZm8nLCBmYWxzZSk7XG4gICAgbG9nKGAgIEplc3Q6ICR7cGFja2FnZXMuamVzdH1gLCAnaW5mbycsIGZhbHNlKTtcbiAgICBsb2coYCAgVHlwZXNjcmlwdDogJHtwYWNrYWdlcy50eXBlc2NyaXB0fWAsICdpbmZvJywgZmFsc2UpO1xuICAgIGxvZyhgICBXZWJwYWNrOiAke3BhY2thZ2VzLndlYnBhY2t9YCwgJ2luZm8nLCBmYWxzZSk7XG4gIH1cblxuICBpZihjYWxsYmFjaykge1xuICAgIGNhbGxiYWNrKDApO1xuICB9XG5cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgwKTtcbn07Il0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxvQkFBbUI7QUFFM0IsU0FBUSw2QkFBNEI7QUFDcEMsU0FBUSxXQUFVO0FBRWxCLE1BQU0sY0FBYyxzQkFBc0I7QUFDMUMsTUFBTSxjQUFjLEtBQUssTUFBTSxhQUFhLGFBQWEsTUFBTSxDQUFDO0FBRXpELE1BQU0sZUFBZSxDQUFDLG1CQUFtQyxnQkFBZ0IsUUFBUSxPQUFPLEVBQUU7QUFFMUYsTUFBTSxXQUFXO0FBQUEsRUFDdEIsU0FBUyxhQUFhLFlBQVksYUFBYSxPQUFPO0FBQUEsRUFDdEQsTUFBTSxhQUFhLFlBQVksYUFBYSxJQUFJO0FBQUEsRUFDaEQsS0FBSyxZQUFZO0FBQUEsRUFDakIsWUFBWSxhQUFhLFlBQVksYUFBYSxVQUFVO0FBQUEsRUFDNUQsU0FBUyxhQUFhLFlBQVksYUFBYSxPQUFPO0FBQ3hEO0FBRU8sTUFBTSxlQUFlLENBQUMsZ0JBQWdCLE9BQU8sS0FBSyxXQUFXLEVBQUUsT0FBTyxDQUFDLE1BQU0sUUFBUTtBQUMxRixPQUFLLEdBQUcsSUFBSSxTQUFTLEdBQUc7QUFDeEIsU0FBTztBQUNULEdBQUcsQ0FBQyxDQUFDO0FBTUUsTUFBTSxXQUFXLENBQUMsS0FBa0IsYUFBd0Q7QUFDakcsTUFBRyxJQUFJLE1BQU07QUFDWCxZQUFRLElBQUksS0FBSyxVQUFVLGFBQWEsUUFBUSxDQUFDLENBQUM7QUFBQSxFQUNwRCxPQUFPO0FBQ0wsUUFBSSxhQUFhLFFBQVEsS0FBSztBQUM5QixRQUFJLFVBQVUsU0FBUyxHQUFHLElBQUksUUFBUSxLQUFLO0FBQzNDLFFBQUksZ0JBQWdCLFFBQVEsS0FBSztBQUNqQyxRQUFJLGNBQWMsU0FBUyxPQUFPLElBQUksUUFBUSxLQUFLO0FBQ25ELFFBQUksV0FBVyxTQUFTLElBQUksSUFBSSxRQUFRLEtBQUs7QUFDN0MsUUFBSSxpQkFBaUIsU0FBUyxVQUFVLElBQUksUUFBUSxLQUFLO0FBQ3pELFFBQUksY0FBYyxTQUFTLE9BQU8sSUFBSSxRQUFRLEtBQUs7QUFBQSxFQUNyRDtBQUVBLE1BQUcsVUFBVTtBQUNYLGFBQVMsQ0FBQztBQUFBLEVBQ1o7QUFFQSxTQUFPLFFBQVEsUUFBUSxDQUFDO0FBQzFCOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/dist/create/changelog.js
CHANGED
|
@@ -125,4 +125,4 @@ ${cliName} Error: ${error.message}`, "error", quiet);
|
|
|
125
125
|
export {
|
|
126
126
|
createChangelog
|
|
127
127
|
};
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NyZWF0ZS9jaGFuZ2Vsb2cudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4ZWNhfSBmcm9tICdleGVjYSc7XG5pbXBvcnQge3dyaXRlRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJ2xvZGFzaC9jYXBpdGFsaXplLmpzJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5LmpzJztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gvbWVyZ2UuanMnO1xuaW1wb3J0IHtEYXRlVGltZX0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHtqb2luIGFzIHBhdGhKb2lufSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDaGFuZ2Vsb2cgPSBhc3luYyAoe2NsaU5hbWUsIGNvbmZpZywgb3V0cHV0RmlsZSA9ICdjaGFuZ2Vsb2cudG1wLm1kJywgcXVpZXR9KTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIGNvbnN0IGdpdE9wdGlvbnM6IHN0cmluZ1tdID0gW1xuICAgICdsb2cnLFxuICAgICctMycsXG4gICAgJy0tcHJldHR5PWZvcm1hdDp7XCJhdXRob3JOYW1lXCI6IFwiJWFuXCIsIFwiYXV0aG9yRW1haWxcIjogXCIlYWVcIiwgXCJoYXNoU2hvcnRcIjogXCIlaFwiLCBcImhhc2hGdWxsXCI6IFwiJUhcIiwgXCJ0YWdcIjogXCIlRFwiLCBcImRhdGVcIjogJWN0LCBcInN1YmplY3RcIjogXCIlc1wiLFwiY29tbWVudHNcIjogXCIlYlwifVtsZXhfYnJlYWtdJ1xuICBdO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZ2l0ID0gYXdhaXQgZXhlY2EoJ2dpdCcsIGdpdE9wdGlvbnMsIHtlbmNvZGluZzogJ3V0ZjgnfSk7XG5cbiAgICBjb25zdCB7c3Rkb3V0fSA9IGdpdDtcbiAgICBjb25zdCBlbnRyaWVzOiBzdHJpbmdbXSA9IHN0ZG91dC5zcGxpdCgnW2xleF9icmVha10nKS5maWx0ZXIoKGl0ZW0pID0+ICEhaXRlbSk7XG4gICAgY29uc3QgZ2l0SnNvbiA9IEpTT04ucGFyc2UoXG4gICAgICAoYFske2VudHJpZXMuam9pbignLCcpfV1gKS5yZXBsYWNlKC9cIlteXCJdKig/OlwiXCJbXlwiXSopKlwiL2csIChtYXRjaCkgPT4gbWF0Y2gucmVwbGFjZSgvXFxuL2csICdbbGV4X2JyZWFrXScpKVxuICAgICk7XG4gICAgY29uc3QgY29tbWl0Q29udGVudCA9IHt9O1xuICAgIGxldCB2ZXJzaW9uOiBzdHJpbmcgPSAnVW5yZWxlYXNlZCc7XG5cbiAgICBnaXRKc29uLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGNvbnN0IHtjb21tZW50cywgYXV0aG9yRW1haWwsIGF1dGhvck5hbWUsIGRhdGUsIGhhc2hGdWxsLCBoYXNoU2hvcnQsIHRhZ30gPSBpdGVtO1xuICAgICAgY29uc3QgZm9ybWF0RGF0ZTogc3RyaW5nID0gRGF0ZVRpbWUuZnJvbU1pbGxpcyhkYXRlKS50b0Zvcm1hdCgnREREJyk7XG5cbiAgICAgIGlmKCFpc0VtcHR5KHRhZykpIHtcbiAgICAgICAgY29uc3QgcmVmcyA9IHRhZy5zcGxpdCgnLCAnKTtcbiAgICAgICAgY29uc3QgdXBkYXRlZFZlcnNpb246IHN0cmluZyA9IHJlZnMucmVkdWNlKChyZWY6IHN0cmluZywgdGFnSXRlbTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgbGV0IHVwZGF0ZWRSZWY6IHN0cmluZyA9IHJlZjtcblxuICAgICAgICAgIGlmKHVwZGF0ZWRSZWYgPT09ICcnICYmIHRhZ0l0ZW0uaW5jbHVkZXMoJ3RhZzogdicpKSB7XG4gICAgICAgICAgICB1cGRhdGVkUmVmID0gdGFnSXRlbS5yZXBsYWNlKCd0YWc6IHYnLCAnJykudHJpbSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiB1cGRhdGVkUmVmO1xuICAgICAgICB9LCAnJyk7XG5cbiAgICAgICAgaWYoIWlzRW1wdHkodXBkYXRlZFZlcnNpb24pKSB7XG4gICAgICAgICAgdmVyc2lvbiA9IHVwZGF0ZWRWZXJzaW9uO1xuICAgICAgICAgIGNvbW1pdENvbnRlbnRbdmVyc2lvbl0gPSB7ZGF0ZTogZm9ybWF0RGF0ZSwgdmVyc2lvbjogdXBkYXRlZFZlcnNpb259O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmKCFjb21taXRDb250ZW50W3ZlcnNpb25dKSB7XG4gICAgICAgIGNvbW1pdENvbnRlbnRbdmVyc2lvbl0gPSB7bGlzdDoge319O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdWJqZWN0TGluZXM6IHN0cmluZ1tdID0gY29tbWVudHMuc3BsaXQoJ1tsZXhfYnJlYWtdJyk7XG4gICAgICBjb25zdCB0b3BpY3MgPSB7fTtcblxuXG4gICAgICBmb3IobGV0IGlkeDogbnVtYmVyID0gMCwgbGVuOiBudW1iZXIgPSBzdWJqZWN0TGluZXMubGVuZ3RoOyBpZHggPCBsZW47IGlkeCsrKSB7XG4gICAgICAgIGNvbnN0IG5leHRMaW5lOiBzdHJpbmcgPSBzdWJqZWN0TGluZXNbaWR4XTtcbiAgICAgICAgY29uc3QgZm9ybWF0TGluZTogc3RyaW5nID0gbmV4dExpbmUudHJpbSgpO1xuICAgICAgICBjb25zdCBoZWFkZXJQYXR0ZXJuOiBSZWdFeHAgPSAvXihcXHcqKSg/OlxcKChbXFx3JC5cXC0gKl0qKVxcKSk/OiAoLiopJC87XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSBmb3JtYXRMaW5lLm1hdGNoKGhlYWRlclBhdHRlcm4pO1xuXG4gICAgICAgIGlmKG1hdGNoZXMpIHtcbiAgICAgICAgICBjb25zdCBpdGVtVHlwZTogc3RyaW5nID0gY2FwaXRhbGl6ZShtYXRjaGVzWzFdKTtcbiAgICAgICAgICBjb25zdCBpdGVtU2NvcGU6IHN0cmluZyA9IG1hdGNoZXNbMl07XG4gICAgICAgICAgY29uc3QgaXRlbURldGFpbHM6IHN0cmluZyA9IG1hdGNoZXNbM107XG4gICAgICAgICAgY29uc3QgZGV0YWlscyA9IHtcbiAgICAgICAgICAgIGF1dGhvckVtYWlsLFxuICAgICAgICAgICAgYXV0aG9yTmFtZSxcbiAgICAgICAgICAgIGRldGFpbHM6IGl0ZW1EZXRhaWxzLFxuICAgICAgICAgICAgaGFzaEZ1bGwsXG4gICAgICAgICAgICBoYXNoU2hvcnQsXG4gICAgICAgICAgICB0eXBlOiBpdGVtVHlwZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBpZighdG9waWNzW2l0ZW1TY29wZV0pIHtcbiAgICAgICAgICAgIHRvcGljc1tpdGVtU2NvcGVdID0ge1tpdGVtVHlwZV06IFtkZXRhaWxzXX07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRvcGljc1tpdGVtU2NvcGVdW2l0ZW1UeXBlXS5wdXNoKGRldGFpbHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb21taXRDb250ZW50W3ZlcnNpb25dID0gbWVyZ2UoY29tbWl0Q29udGVudFt2ZXJzaW9uXSwge2xpc3Q6IHRvcGljc30pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgZm9ybWF0TG9nOiBzdHJpbmcgPSBPYmplY3Qua2V5cyhjb21taXRDb250ZW50KS5yZWR1Y2UoKGNvbnRlbnQ6IHN0cmluZywgdmVyc2lvbktleTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB7ZGF0ZSwgbGlzdCA9IHt9LCB2ZXJzaW9ufSA9IGNvbW1pdENvbnRlbnRbdmVyc2lvbktleV07XG4gICAgICBjb25zdCBmb3JtYXRTY29wZXM6IHN0cmluZ1tdID0gT2JqZWN0LmtleXMobGlzdCk7XG4gICAgICBsZXQgdXBkYXRlZENvbnRlbnQ6IHN0cmluZyA9IGNvbnRlbnQ7XG5cbiAgICAgIGNvbnN0IHZlcnNpb25MYWJlbDogc3RyaW5nID0gdmVyc2lvbiA/IHZlcnNpb24gOiAnVW5yZWxlYXNlZCc7XG4gICAgICBjb25zdCBoZWFkZXJMYWJlbHM6IHN0cmluZ1tdID0gW3ZlcnNpb25MYWJlbF07XG4gICAgICBpZihkYXRlKSB7XG4gICAgICAgIGhlYWRlckxhYmVscy5wdXNoKGAoJHtkYXRlfSlgKTtcbiAgICAgIH1cblxuICAgICAgdXBkYXRlZENvbnRlbnQgKz0gYFxcbiMjICR7aGVhZGVyTGFiZWxzLmpvaW4oJyAnKX1cXG5gO1xuXG4gICAgICBmb3JtYXRTY29wZXMuZm9yRWFjaCgoc2NvcGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgICAgdXBkYXRlZENvbnRlbnQgKz0gYFxcbiMjIyAke3Njb3BlTmFtZX1cXG5cXG5gO1xuXG4gICAgICAgIC8vIEdldCB0aGUgdG9waWMgbmFtZVxuICAgICAgICBjb25zdCBpdGVtTGlzdCA9IGxpc3Rbc2NvcGVOYW1lXTtcbiAgICAgICAgY29uc3QgaXRlbU5hbWVzOiBzdHJpbmdbXSA9IE9iamVjdC5rZXlzKGl0ZW1MaXN0KTtcblxuICAgICAgICBpdGVtTmFtZXMuZm9yRWFjaCgoaXRlbU5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIHVwZGF0ZWRDb250ZW50ICs9IGAqICR7aXRlbU5hbWV9XFxuYDtcblxuICAgICAgICAgIGl0ZW1MaXN0W2l0ZW1OYW1lXS5mb3JFYWNoKChjaGFuZ2VzKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7YXV0aG9yRW1haWwsIGF1dGhvck5hbWUsIGRldGFpbHMsIGhhc2hGdWxsLCBoYXNoU2hvcnR9ID0gY2hhbmdlcztcbiAgICAgICAgICAgIGNvbnN0IHtnaXRVcmx9ID0gY29uZmlnO1xuICAgICAgICAgICAgbGV0IGhhc2g6IHN0cmluZyA9IGAjJHtoYXNoU2hvcnR9YDtcblxuICAgICAgICAgICAgaWYoIWlzRW1wdHkoZ2l0VXJsKSkge1xuICAgICAgICAgICAgICBsZXQgY29tbWl0UGF0aDogc3RyaW5nID0gJ2NvbW1pdHMnO1xuXG4gICAgICAgICAgICAgIGlmKGdpdFVybC5pbmNsdWRlcygnZ2l0aHViLmNvbScpKSB7XG4gICAgICAgICAgICAgICAgY29tbWl0UGF0aCA9ICdjb21taXQnO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgaGFzaCA9IGBbIyR7aGFzaFNob3J0fV0oJHtnaXRVcmx9LyR7Y29tbWl0UGF0aH0vJHtoYXNoRnVsbH0pYDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdXBkYXRlZENvbnRlbnQgKz0gYCAgKiAke2RldGFpbHN9IChbJHthdXRob3JOYW1lfV0obWFpbHRvOiR7YXV0aG9yRW1haWx9KSBpbiAke2hhc2h9KVxcbmA7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB1cGRhdGVkQ29udGVudDtcbiAgICB9LCAnIyBDaGFuZ2VzXFxuJyk7XG5cbiAgICBjb25zdCBsb2dGaWxlOiBzdHJpbmcgPSBwYXRoSm9pbihwcm9jZXNzLmN3ZCgpLCBvdXRwdXRGaWxlKTtcbiAgICB3cml0ZUZpbGVTeW5jKGxvZ0ZpbGUsIGZvcm1hdExvZyk7XG4gICAgc3Bpbm5lci5zdWNjZWVkKCdHaXQgY2hhbmdlIGxvZyBjb21wbGV0ZSEnKTtcblxuICAgIC8vIEtpbGwgcHJvY2Vzc1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgLy8gRGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgLy8gU3RvcCBzcGlubmVyXG4gICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgZ2VuZXJhdGluZyBjaGFuZ2UgbG9nIScpO1xuXG4gICAgLy8gS2lsbCBwcm9jZXNzXG4gICAgcmV0dXJuIGVycm9yLnN0YXR1cztcbiAgfVxufTsiXSwKICAibWFwcGluZ3MiOiAiQUFJQSxTQUFRLGFBQVk7QUFDcEIsU0FBUSxxQkFBb0I7QUFDNUIsT0FBTyxnQkFBZ0I7QUFDdkIsT0FBTyxhQUFhO0FBQ3BCLE9BQU8sV0FBVztBQUNsQixTQUFRLGdCQUFlO0FBQ3ZCLFNBQVEsUUFBUSxnQkFBZTtBQUUvQixTQUFRLHFCQUFvQjtBQUM1QixTQUFRLFdBQVU7QUFFWCxNQUFNLGtCQUFrQixPQUFPLEVBQUMsU0FBUyxRQUFRLGFBQWEsb0JBQW9CLE1BQUssTUFBdUI7QUFDbkgsUUFBTSxVQUFVLGNBQWMsS0FBSztBQUVuQyxRQUFNLGFBQXVCO0FBQUEsSUFDM0I7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFFQSxNQUFJO0FBQ0YsVUFBTSxNQUFNLE1BQU0sTUFBTSxPQUFPLFlBQVksRUFBQyxVQUFVLE9BQU0sQ0FBQztBQUU3RCxVQUFNLEVBQUMsT0FBTSxJQUFJO0FBQ2pCLFVBQU0sVUFBb0IsT0FBTyxNQUFNLGFBQWEsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSTtBQUM3RSxVQUFNLFVBQVUsS0FBSztBQUFBLE1BQ2xCLElBQUksUUFBUSxLQUFLLEdBQUcsQ0FBQyxJQUFLLFFBQVEsd0JBQXdCLENBQUMsVUFBVSxNQUFNLFFBQVEsT0FBTyxhQUFhLENBQUM7QUFBQSxJQUMzRztBQUNBLFVBQU0sZ0JBQWdCLENBQUM7QUFDdkIsUUFBSSxVQUFrQjtBQUV0QixZQUFRLFFBQVEsQ0FBQyxTQUFTO0FBQ3hCLFlBQU0sRUFBQyxVQUFVLGFBQWEsWUFBWSxNQUFNLFVBQVUsV0FBVyxJQUFHLElBQUk7QUFDNUUsWUFBTSxhQUFxQixTQUFTLFdBQVcsSUFBSSxFQUFFLFNBQVMsS0FBSztBQUVuRSxVQUFHLENBQUMsUUFBUSxHQUFHLEdBQUc7QUFDaEIs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
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NyZWF0ZS9jaGFuZ2Vsb2cudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4ZWNhfSBmcm9tICdleGVjYSc7XG5pbXBvcnQge3dyaXRlRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCBjYXBpdGFsaXplIGZyb20gJ2xvZGFzaC9jYXBpdGFsaXplLmpzJztcbmltcG9ydCBpc0VtcHR5IGZyb20gJ2xvZGFzaC9pc0VtcHR5LmpzJztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gvbWVyZ2UuanMnO1xuaW1wb3J0IHtEYXRlVGltZX0gZnJvbSAnbHV4b24nO1xuaW1wb3J0IHtqb2luIGFzIHBhdGhKb2lufSBmcm9tICdwYXRoJztcblxuXG5pbXBvcnQge2NyZWF0ZVNwaW5uZXJ9IGZyb20gJy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNoYW5nZWxvZyA9IGFzeW5jICh7Y2xpTmFtZSwgY29uZmlnLCBvdXRwdXRGaWxlID0gJ2NoYW5nZWxvZy50bXAubWQnLCBxdWlldH0pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgY29uc3QgZ2l0T3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgJ2xvZycsXG4gICAgJy0zJyxcbiAgICAnLS1wcmV0dHk9Zm9ybWF0OntcImF1dGhvck5hbWVcIjogXCIlYW5cIiwgXCJhdXRob3JFbWFpbFwiOiBcIiVhZVwiLCBcImhhc2hTaG9ydFwiOiBcIiVoXCIsIFwiaGFzaEZ1bGxcIjogXCIlSFwiLCBcInRhZ1wiOiBcIiVEXCIsIFwiZGF0ZVwiOiAlY3QsIFwic3ViamVjdFwiOiBcIiVzXCIsXCJjb21tZW50c1wiOiBcIiViXCJ9W2xleF9icmVha10nXG4gIF07XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBnaXQgPSBhd2FpdCBleGVjYSgnZ2l0JywgZ2l0T3B0aW9ucywge2VuY29kaW5nOiAndXRmOCd9KTtcblxuICAgIGNvbnN0IHtzdGRvdXR9ID0gZ2l0O1xuICAgIGNvbnN0IGVudHJpZXM6IHN0cmluZ1tdID0gc3Rkb3V0LnNwbGl0KCdbbGV4X2JyZWFrXScpLmZpbHRlcigoaXRlbSkgPT4gISFpdGVtKTtcbiAgICBjb25zdCBnaXRKc29uID0gSlNPTi5wYXJzZShcbiAgICAgIChgWyR7ZW50cmllcy5qb2luKCcsJyl9XWApLnJlcGxhY2UoL1wiW15cIl0qKD86XCJcIlteXCJdKikqXCIvZywgKG1hdGNoKSA9PiBtYXRjaC5yZXBsYWNlKC9cXG4vZywgJ1tsZXhfYnJlYWtdJykpXG4gICAgKTtcbiAgICBjb25zdCBjb21taXRDb250ZW50ID0ge307XG4gICAgbGV0IHZlcnNpb246IHN0cmluZyA9ICdVbnJlbGVhc2VkJztcblxuICAgIGdpdEpzb24uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgY29uc3Qge2NvbW1lbnRzLCBhdXRob3JFbWFpbCwgYXV0aG9yTmFtZSwgZGF0ZSwgaGFzaEZ1bGwsIGhhc2hTaG9ydCwgdGFnfSA9IGl0ZW07XG4gICAgICBjb25zdCBmb3JtYXREYXRlOiBzdHJpbmcgPSBEYXRlVGltZS5mcm9tTWlsbGlzKGRhdGUpLnRvRm9ybWF0KCdEREQnKTtcblxuICAgICAgaWYoIWlzRW1wdHkodGFnKSkge1xuICAgICAgICBjb25zdCByZWZzID0gdGFnLnNwbGl0KCcsICcpO1xuICAgICAgICBjb25zdCB1cGRhdGVkVmVyc2lvbjogc3RyaW5nID0gcmVmcy5yZWR1Y2UoKHJlZjogc3RyaW5nLCB0YWdJdGVtOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBsZXQgdXBkYXRlZFJlZjogc3RyaW5nID0gcmVmO1xuXG4gICAgICAgICAgaWYodXBkYXRlZFJlZiA9PT0gJycgJiYgdGFnSXRlbS5pbmNsdWRlcygndGFnOiB2JykpIHtcbiAgICAgICAgICAgIHVwZGF0ZWRSZWYgPSB0YWdJdGVtLnJlcGxhY2UoJ3RhZzogdicsICcnKS50cmltKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZWRSZWY7XG4gICAgICAgIH0sICcnKTtcblxuICAgICAgICBpZighaXNFbXB0eSh1cGRhdGVkVmVyc2lvbikpIHtcbiAgICAgICAgICB2ZXJzaW9uID0gdXBkYXRlZFZlcnNpb247XG4gICAgICAgICAgY29tbWl0Q29udGVudFt2ZXJzaW9uXSA9IHtkYXRlOiBmb3JtYXREYXRlLCB2ZXJzaW9uOiB1cGRhdGVkVmVyc2lvbn07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYoIWNvbW1pdENvbnRlbnRbdmVyc2lvbl0pIHtcbiAgICAgICAgY29tbWl0Q29udGVudFt2ZXJzaW9uXSA9IHtsaXN0OiB7fX07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN1YmplY3RMaW5lczogc3RyaW5nW10gPSBjb21tZW50cy5zcGxpdCgnW2xleF9icmVha10nKTtcbiAgICAgIGNvbnN0IHRvcGljcyA9IHt9O1xuXG5cbiAgICAgIGZvcihsZXQgaWR4OiBudW1iZXIgPSAwLCBsZW46IG51bWJlciA9IHN1YmplY3RMaW5lcy5sZW5ndGg7IGlkeCA8IGxlbjsgaWR4KyspIHtcbiAgICAgICAgY29uc3QgbmV4dExpbmU6IHN0cmluZyA9IHN1YmplY3RMaW5lc1tpZHhdO1xuICAgICAgICBjb25zdCBmb3JtYXRMaW5lOiBzdHJpbmcgPSBuZXh0TGluZS50cmltKCk7XG4gICAgICAgIGNvbnN0IGhlYWRlclBhdHRlcm46IFJlZ0V4cCA9IC9eKFxcdyopKD86XFwoKFtcXHckLlxcLSAqXSopXFwpKT86ICguKikkLztcbiAgICAgICAgY29uc3QgbWF0Y2hlcyA9IGZvcm1hdExpbmUubWF0Y2goaGVhZGVyUGF0dGVybik7XG5cbiAgICAgICAgaWYobWF0Y2hlcykge1xuICAgICAgICAgIGNvbnN0IGl0ZW1UeXBlOiBzdHJpbmcgPSBjYXBpdGFsaXplKG1hdGNoZXNbMV0pO1xuICAgICAgICAgIGNvbnN0IGl0ZW1TY29wZTogc3RyaW5nID0gbWF0Y2hlc1syXTtcbiAgICAgICAgICBjb25zdCBpdGVtRGV0YWlsczogc3RyaW5nID0gbWF0Y2hlc1szXTtcbiAgICAgICAgICBjb25zdCBkZXRhaWxzID0ge1xuICAgICAgICAgICAgYXV0aG9yRW1haWwsXG4gICAgICAgICAgICBhdXRob3JOYW1lLFxuICAgICAgICAgICAgZGV0YWlsczogaXRlbURldGFpbHMsXG4gICAgICAgICAgICBoYXNoRnVsbCxcbiAgICAgICAgICAgIGhhc2hTaG9ydCxcbiAgICAgICAgICAgIHR5cGU6IGl0ZW1UeXBlXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmKCF0b3BpY3NbaXRlbVNjb3BlXSkge1xuICAgICAgICAgICAgdG9waWNzW2l0ZW1TY29wZV0gPSB7W2l0ZW1UeXBlXTogW2RldGFpbHNdfTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdG9waWNzW2l0ZW1TY29wZV1baXRlbVR5cGVdLnB1c2goZGV0YWlscyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbW1pdENvbnRlbnRbdmVyc2lvbl0gPSBtZXJnZShjb21taXRDb250ZW50W3ZlcnNpb25dLCB7bGlzdDogdG9waWNzfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBmb3JtYXRMb2c6IHN0cmluZyA9IE9iamVjdC5rZXlzKGNvbW1pdENvbnRlbnQpLnJlZHVjZSgoY29udGVudDogc3RyaW5nLCB2ZXJzaW9uS2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHtkYXRlLCBsaXN0ID0ge30sIHZlcnNpb259ID0gY29tbWl0Q29udGVudFt2ZXJzaW9uS2V5XTtcbiAgICAgIGNvbnN0IGZvcm1hdFNjb3Blczogc3RyaW5nW10gPSBPYmplY3Qua2V5cyhsaXN0KTtcbiAgICAgIGxldCB1cGRhdGVkQ29udGVudDogc3RyaW5nID0gY29udGVudDtcblxuICAgICAgY29uc3QgdmVyc2lvbkxhYmVsOiBzdHJpbmcgPSB2ZXJzaW9uID8gdmVyc2lvbiA6ICdVbnJlbGVhc2VkJztcbiAgICAgIGNvbnN0IGhlYWRlckxhYmVsczogc3RyaW5nW10gPSBbdmVyc2lvbkxhYmVsXTtcbiAgICAgIGlmKGRhdGUpIHtcbiAgICAgICAgaGVhZGVyTGFiZWxzLnB1c2goYCgke2RhdGV9KWApO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGVkQ29udGVudCArPSBgXFxuIyMgJHtoZWFkZXJMYWJlbHMuam9pbignICcpfVxcbmA7XG5cbiAgICAgIGZvcm1hdFNjb3Blcy5mb3JFYWNoKChzY29wZU5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgICB1cGRhdGVkQ29udGVudCArPSBgXFxuIyMjICR7c2NvcGVOYW1lfVxcblxcbmA7XG5cbiAgICAgICAgLy8gR2V0IHRoZSB0b3BpYyBuYW1lXG4gICAgICAgIGNvbnN0IGl0ZW1MaXN0ID0gbGlzdFtzY29wZU5hbWVdO1xuICAgICAgICBjb25zdCBpdGVtTmFtZXM6IHN0cmluZ1tdID0gT2JqZWN0LmtleXMoaXRlbUxpc3QpO1xuXG4gICAgICAgIGl0ZW1OYW1lcy5mb3JFYWNoKChpdGVtTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgdXBkYXRlZENvbnRlbnQgKz0gYCogJHtpdGVtTmFtZX1cXG5gO1xuXG4gICAgICAgICAgaXRlbUxpc3RbaXRlbU5hbWVdLmZvckVhY2goKGNoYW5nZXMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHthdXRob3JFbWFpbCwgYXV0aG9yTmFtZSwgZGV0YWlscywgaGFzaEZ1bGwsIGhhc2hTaG9ydH0gPSBjaGFuZ2VzO1xuICAgICAgICAgICAgY29uc3Qge2dpdFVybH0gPSBjb25maWc7XG4gICAgICAgICAgICBsZXQgaGFzaDogc3RyaW5nID0gYCMke2hhc2hTaG9ydH1gO1xuXG4gICAgICAgICAgICBpZighaXNFbXB0eShnaXRVcmwpKSB7XG4gICAgICAgICAgICAgIGxldCBjb21taXRQYXRoOiBzdHJpbmcgPSAnY29tbWl0cyc7XG5cbiAgICAgICAgICAgICAgaWYoZ2l0VXJsLmluY2x1ZGVzKCdnaXRodWIuY29tJykpIHtcbiAgICAgICAgICAgICAgICBjb21taXRQYXRoID0gJ2NvbW1pdCc7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBoYXNoID0gYFsjJHtoYXNoU2hvcnR9XSgke2dpdFVybH0vJHtjb21taXRQYXRofS8ke2hhc2hGdWxsfSlgO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB1cGRhdGVkQ29udGVudCArPSBgICAqICR7ZGV0YWlsc30gKFske2F1dGhvck5hbWV9XShtYWlsdG86JHthdXRob3JFbWFpbH0pIGluICR7aGFzaH0pXFxuYDtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHVwZGF0ZWRDb250ZW50O1xuICAgIH0sICcjIENoYW5nZXNcXG4nKTtcblxuICAgIGNvbnN0IGxvZ0ZpbGU6IHN0cmluZyA9IHBhdGhKb2luKHByb2Nlc3MuY3dkKCksIG91dHB1dEZpbGUpO1xuICAgIHdyaXRlRmlsZVN5bmMobG9nRmlsZSwgZm9ybWF0TG9nKTtcbiAgICBzcGlubmVyLnN1Y2NlZWQoJ0dpdCBjaGFuZ2UgbG9nIGNvbXBsZXRlIScpO1xuXG4gICAgLy8gS2lsbCBwcm9jZXNzXG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCBnZW5lcmF0aW5nIGNoYW5nZSBsb2chJyk7XG5cbiAgICAvLyBLaWxsIHByb2Nlc3NcbiAgICByZXR1cm4gZXJyb3Iuc3RhdHVzO1xuICB9XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUlBLFNBQVEsYUFBWTtBQUNwQixTQUFRLHFCQUFvQjtBQUM1QixPQUFPLGdCQUFnQjtBQUN2QixPQUFPLGFBQWE7QUFDcEIsT0FBTyxXQUFXO0FBQ2xCLFNBQVEsZ0JBQWU7QUFDdkIsU0FBUSxRQUFRLGdCQUFlO0FBRy9CLFNBQVEscUJBQW9CO0FBQzVCLFNBQVEsV0FBVTtBQUVYLE1BQU0sa0JBQWtCLE9BQU8sRUFBQyxTQUFTLFFBQVEsYUFBYSxvQkFBb0IsTUFBSyxNQUF1QjtBQUNuSCxRQUFNLFVBQVUsY0FBYyxLQUFLO0FBRW5DLFFBQU0sYUFBdUI7QUFBQSxJQUMzQjtBQUFBLElBQ0E7QUFBQSxJQUNBO0FBQUEsRUFDRjtBQUVBLE1BQUk7QUFDRixVQUFNLE1BQU0sTUFBTSxNQUFNLE9BQU8sWUFBWSxFQUFDLFVBQVUsT0FBTSxDQUFDO0FBRTdELFVBQU0sRUFBQyxPQUFNLElBQUk7QUFDakIsVUFBTSxVQUFvQixPQUFPLE1BQU0sYUFBYSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJO0FBQzdFLFVBQU0sVUFBVSxLQUFLO0FBQUEsTUFDbEIsSUFBSSxRQUFRLEtBQUssR0FBRyxDQUFDLElBQUssUUFBUSx3QkFBd0IsQ0FBQyxVQUFVLE1BQU0sUUFBUSxPQUFPLGFBQWEsQ0FBQztBQUFBLElBQzNHO0FBQ0EsVUFBTSxnQkFBZ0IsQ0FBQztBQUN2QixRQUFJLFVBQWtCO0FBRXRCLFlBQVEsUUFBUSxDQUFDLFNBQVM7QUFDeEIsWUFBTSxFQUFDLFVBQVUsYUFBYSxZQUFZLE1BQU0sVUFBVSxXQUFXLElBQUcsSUFBSTtBQUM1RSxZQUFNLGFBQXFCLFNBQVMsV0FBVyxJQUFJLEVBQUUsU0FBUyxLQUFLO0FBRW5FLFVBQUcsQ0FBQyxRQUFRLEdBQUcsR0FBRztBQUNo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
|