@nlabs/lex 1.46.2 → 1.47.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__mocks__/LexConfig.js +20 -0
- package/__mocks__/boxen.js +7 -0
- package/__mocks__/build.js +16 -0
- package/__mocks__/chalk.js +23 -0
- package/__mocks__/compile.js +8 -0
- package/__mocks__/execa.js +21 -0
- package/__mocks__/ora.js +17 -0
- package/__mocks__/versions.js +12 -0
- package/dist/LexConfig.d.ts +79 -0
- package/dist/LexConfig.js +83 -15
- package/dist/commands/ai/ai.d.ts +17 -0
- package/dist/commands/ai/ai.js +303 -0
- package/dist/commands/ai/index.d.ts +8 -0
- package/dist/commands/ai/index.js +7 -0
- package/dist/commands/build/build.cli.test.d.ts +5 -0
- package/dist/commands/build/build.d.ts +18 -0
- package/dist/commands/build/build.integration.test.d.ts +1 -0
- package/dist/commands/build/build.js +400 -0
- package/dist/commands/build/build.options.test.d.ts +5 -0
- package/dist/commands/clean/clean.cli.test.d.ts +1 -0
- package/dist/commands/clean/clean.d.ts +7 -0
- package/dist/commands/clean/clean.integration.test.d.ts +1 -0
- package/dist/commands/clean/clean.js +31 -0
- package/dist/commands/clean/clean.options.test.d.ts +1 -0
- package/dist/commands/compile/compile.cli.test.d.ts +1 -0
- package/dist/commands/compile/compile.d.ts +2 -0
- package/dist/commands/compile/compile.integration.test.d.ts +1 -0
- package/dist/commands/compile/compile.js +239 -0
- package/dist/commands/compile/compile.options.test.d.ts +1 -0
- package/dist/commands/config/config.cli.test.d.ts +1 -0
- package/dist/commands/config/config.d.ts +7 -0
- package/dist/commands/config/config.integration.test.d.ts +1 -0
- package/dist/commands/config/config.js +43 -0
- package/dist/commands/config/config.options.test.d.ts +1 -0
- package/dist/commands/copy/copy.cli.test.d.ts +1 -0
- package/dist/commands/copy/copy.d.ts +6 -0
- package/dist/commands/copy/copy.integration.test.d.ts +1 -0
- package/dist/commands/copy/copy.js +38 -0
- package/dist/commands/copy/copy.options.test.d.ts +1 -0
- package/dist/commands/create/create.cli.test.d.ts +1 -0
- package/dist/commands/create/create.d.ts +8 -0
- package/dist/commands/create/create.integration.test.d.ts +1 -0
- package/dist/commands/create/create.js +124 -0
- package/dist/commands/create/create.options.test.d.ts +1 -0
- package/dist/commands/dev/dev.cli.test.d.ts +1 -0
- package/dist/commands/dev/dev.d.ts +11 -0
- package/dist/commands/dev/dev.integration.test.d.ts +1 -0
- package/dist/commands/dev/dev.js +70 -0
- package/dist/commands/dev/dev.options.test.d.ts +1 -0
- package/dist/commands/init/init.cli.test.d.ts +1 -0
- package/dist/commands/init/init.d.ts +9 -0
- package/dist/commands/init/init.integration.test.d.ts +1 -0
- package/dist/commands/init/init.js +93 -0
- package/dist/commands/init/init.options.test.d.ts +1 -0
- package/dist/commands/link/link.cli.test.d.ts +1 -0
- package/dist/commands/link/link.d.ts +6 -0
- package/dist/commands/link/link.integration.test.d.ts +1 -0
- package/dist/commands/link/link.js +15 -0
- package/dist/commands/link/link.options.test.d.ts +1 -0
- package/dist/commands/lint/autofix.d.ts +2 -0
- package/dist/commands/lint/lint.cli.test.d.ts +1 -0
- package/dist/commands/lint/lint.d.ts +39 -0
- package/dist/commands/lint/lint.integration.test.d.ts +1 -0
- package/dist/commands/lint/lint.js +820 -0
- package/dist/commands/lint/lint.options.test.d.ts +1 -0
- package/dist/commands/migrate/migrate.cli.test.d.ts +1 -0
- package/dist/commands/migrate/migrate.d.ts +7 -0
- package/dist/commands/migrate/migrate.integration.test.d.ts +1 -0
- package/dist/commands/migrate/migrate.js +37 -0
- package/dist/commands/migrate/migrate.options.test.d.ts +1 -0
- package/dist/commands/publish/publish.cli.test.d.ts +1 -0
- package/dist/commands/publish/publish.d.ts +12 -0
- package/dist/commands/publish/publish.integration.test.d.ts +1 -0
- package/dist/commands/publish/publish.js +104 -0
- package/dist/commands/publish/publish.options.test.d.ts +1 -0
- package/dist/commands/test/test.cli.test.d.ts +1 -0
- package/dist/commands/test/test.d.ts +50 -0
- package/dist/commands/test/test.integration.test.d.ts +1 -0
- package/dist/commands/test/test.js +327 -0
- package/dist/commands/test/test.options.test.d.ts +1 -0
- package/dist/commands/test/test.test.d.ts +1 -0
- package/dist/commands/update/update.cli.test.d.ts +1 -0
- package/dist/commands/update/update.d.ts +9 -0
- package/dist/commands/update/update.integration.test.d.ts +1 -0
- package/dist/commands/update/update.js +131 -0
- package/dist/commands/update/update.options.test.d.ts +1 -0
- package/dist/commands/upgrade/upgrade.cli.test.d.ts +1 -0
- package/dist/commands/upgrade/upgrade.d.ts +7 -0
- package/dist/commands/upgrade/upgrade.integration.test.d.ts +1 -0
- package/dist/commands/upgrade/upgrade.js +47 -0
- package/dist/commands/upgrade/upgrade.options.test.d.ts +1 -0
- package/dist/commands/versions/versions.cli.test.d.ts +1 -0
- package/dist/commands/versions/versions.d.ts +13 -0
- package/dist/commands/versions/versions.integration.test.d.ts +1 -0
- package/dist/commands/versions/versions.js +41 -0
- package/dist/commands/versions/versions.options.test.d.ts +1 -0
- package/dist/create/changelog.d.ts +6 -0
- package/dist/create/changelog.js +3 -3
- package/dist/index.d.ts +31 -0
- package/dist/index.js +35 -0
- package/dist/lex.d.ts +2 -0
- package/dist/lex.js +25 -22
- package/dist/types.d.ts +5 -0
- package/dist/types.js +1 -0
- package/dist/utils/aiService.d.ts +9 -0
- package/dist/utils/aiService.js +299 -0
- package/dist/utils/app.d.ts +41 -0
- package/dist/utils/app.js +53 -3
- package/dist/utils/file.d.ts +3 -0
- package/dist/utils/file.js +18 -3
- package/dist/utils/log.d.ts +1 -0
- package/dist/utils/log.js +2 -1
- package/dist/utils/reactShim.d.ts +2 -0
- package/dist/utils/reactShim.js +3 -3
- package/eslint.config.js +5 -0
- package/index.cjs +20 -0
- package/jest.config.cjs +31 -27
- package/jest.config.lex.d.ts +2 -0
- package/jest.config.lex.js +86 -38
- package/jest.setup.js +5 -0
- package/lex.config.js +50 -0
- package/package.json +73 -53
- package/{.postcssrc.js → postcss.config.js} +21 -9
- package/resolver.cjs +125 -14
- package/tsconfig.json +2 -1
- package/webpack.config.d.ts +2 -0
- package/webpack.config.js +27 -11
- package/dist/commands/build.js +0 -265
- package/dist/commands/bulid.test.js +0 -317
- package/dist/commands/clean.js +0 -31
- package/dist/commands/clean.test.js +0 -63
- package/dist/commands/compile.js +0 -195
- package/dist/commands/compile.test.js +0 -93
- package/dist/commands/config.js +0 -43
- package/dist/commands/copy.js +0 -38
- package/dist/commands/create.js +0 -120
- package/dist/commands/dev.js +0 -70
- package/dist/commands/init.js +0 -93
- package/dist/commands/link.js +0 -15
- package/dist/commands/lint.js +0 -179
- package/dist/commands/migrate.js +0 -37
- package/dist/commands/publish.js +0 -104
- package/dist/commands/test.js +0 -190
- package/dist/commands/update.js +0 -64
- package/dist/commands/upgrade.js +0 -47
- package/dist/commands/versions.js +0 -41
- package/dist/commands/versions.test.js +0 -49
- package/dist/lint.js +0 -11
- package/jest.setup.ts +0 -3
package/dist/commands/init.js
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { execa } from "execa";
|
|
2
|
-
import { renameSync, writeFileSync } from "fs";
|
|
3
|
-
import { resolve as pathResolve } from "path";
|
|
4
|
-
import { URL } from "url";
|
|
5
|
-
import { LexConfig } from "../LexConfig.js";
|
|
6
|
-
import { createSpinner, getPackageJson, setPackageJson } from "../utils/app.js";
|
|
7
|
-
import { log } from "../utils/log.js";
|
|
8
|
-
const init = async (appName, packageName, cmd, callback = () => ({})) => {
|
|
9
|
-
const { cliName = "Lex", install, packageManager: cmdPackageManager, quiet, typescript } = cmd;
|
|
10
|
-
const cwd = process.cwd();
|
|
11
|
-
const spinner = createSpinner(quiet);
|
|
12
|
-
log(`${cliName} is downloading the app module...`, "info", quiet);
|
|
13
|
-
spinner.start("Downloading app...");
|
|
14
|
-
const tmpPath = pathResolve(cwd, "./.lexTmp");
|
|
15
|
-
const appPath = pathResolve(cwd, `./${appName}`);
|
|
16
|
-
const dirName = new URL(".", import.meta.url).pathname;
|
|
17
|
-
const dnpPath = pathResolve(dirName, "../../node_modules/download-npm-package/bin/cli.js");
|
|
18
|
-
await LexConfig.parseConfig(cmd);
|
|
19
|
-
const { packageManager: configPackageManager, useTypescript: configTypescript } = LexConfig.config;
|
|
20
|
-
const packageManager = cmdPackageManager || configPackageManager;
|
|
21
|
-
const useTypescript = typescript !== void 0 ? typescript : configTypescript;
|
|
22
|
-
let appModule = packageName;
|
|
23
|
-
if (!appModule) {
|
|
24
|
-
if (useTypescript) {
|
|
25
|
-
appModule = "@nlabs/arkhamjs-example-ts-react";
|
|
26
|
-
} else {
|
|
27
|
-
appModule = "@nlabs/arkhamjs-example-flow-react";
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
try {
|
|
31
|
-
await execa(dnpPath, [appModule, tmpPath], {});
|
|
32
|
-
spinner.succeed("Successfully downloaded app!");
|
|
33
|
-
} catch (error) {
|
|
34
|
-
console.log("error", error);
|
|
35
|
-
log(`
|
|
36
|
-
${cliName} Error: There was an error downloading ${appModule}. Make sure the package exists and there is a network connection.`, "error", quiet);
|
|
37
|
-
spinner.fail("Downloaded of app failed.");
|
|
38
|
-
callback(1);
|
|
39
|
-
return 1;
|
|
40
|
-
}
|
|
41
|
-
try {
|
|
42
|
-
renameSync(`${tmpPath}/${appModule}`, appPath);
|
|
43
|
-
} catch (error) {
|
|
44
|
-
log(`
|
|
45
|
-
${cliName} Error: There was an error copying ${appModule} to the current working directory.`, "error", quiet);
|
|
46
|
-
callback(1);
|
|
47
|
-
return 1;
|
|
48
|
-
}
|
|
49
|
-
const packagePath = `${appPath}/package.json`;
|
|
50
|
-
const packageJson = getPackageJson(packagePath);
|
|
51
|
-
packageJson.name = appName;
|
|
52
|
-
packageJson.description = `${cliName} created app`;
|
|
53
|
-
packageJson.version = "0.1.0";
|
|
54
|
-
delete packageJson.keywords;
|
|
55
|
-
delete packageJson.author;
|
|
56
|
-
delete packageJson.contributors;
|
|
57
|
-
delete packageJson.repository;
|
|
58
|
-
delete packageJson.homepage;
|
|
59
|
-
delete packageJson.bugs;
|
|
60
|
-
try {
|
|
61
|
-
setPackageJson(packageJson, packagePath);
|
|
62
|
-
const readmePath = `${appPath}/README.md`;
|
|
63
|
-
writeFileSync(readmePath, `# ${appName}`);
|
|
64
|
-
} catch (error) {
|
|
65
|
-
log(`
|
|
66
|
-
${cliName} Error: ${error.message}`, "error", quiet);
|
|
67
|
-
callback(1);
|
|
68
|
-
return 1;
|
|
69
|
-
}
|
|
70
|
-
if (install) {
|
|
71
|
-
spinner.start("Installing dependencies...");
|
|
72
|
-
process.chdir(appPath);
|
|
73
|
-
try {
|
|
74
|
-
await execa(packageManager, ["install"], {
|
|
75
|
-
encoding: "utf8",
|
|
76
|
-
stdio: "inherit"
|
|
77
|
-
});
|
|
78
|
-
spinner.succeed("Successfully installed dependencies!");
|
|
79
|
-
} catch (error) {
|
|
80
|
-
log(`
|
|
81
|
-
${cliName} Error: ${error.message}`, "error", quiet);
|
|
82
|
-
spinner.fail("Failed to install dependencies.");
|
|
83
|
-
callback(1);
|
|
84
|
-
return 1;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
callback(0);
|
|
88
|
-
return 0;
|
|
89
|
-
};
|
|
90
|
-
export {
|
|
91
|
-
init
|
|
92
|
-
};
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2luaXQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4ZWNhfSBmcm9tICdleGVjYSc7XG5pbXBvcnQge3JlbmFtZVN5bmMsIHdyaXRlRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7cmVzb2x2ZSBhcyBwYXRoUmVzb2x2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQge1VSTH0gZnJvbSAndXJsJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNwaW5uZXIsIGdldFBhY2thZ2VKc29uLCBzZXRQYWNrYWdlSnNvbn0gZnJvbSAnLi4vdXRpbHMvYXBwLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi91dGlscy9sb2cuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEluaXRPcHRpb25zIHtcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgaW5zdGFsbD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHBhY2thZ2VNYW5hZ2VyPzogc3RyaW5nO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHR5cGVzY3JpcHQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBJbml0Q2FsbGJhY2sgPSAoc3RhdHVzOiBudW1iZXIpID0+IHZvaWQ7XG5cbmV4cG9ydCBjb25zdCBpbml0ID0gYXN5bmMgKFxuICBhcHBOYW1lOiBzdHJpbmcsXG4gIHBhY2thZ2VOYW1lOiBzdHJpbmcsXG4gIGNtZDogSW5pdE9wdGlvbnMsXG4gIGNhbGxiYWNrOiBJbml0Q2FsbGJhY2sgPSAoKSA9PiAoe30pXG4pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBpbnN0YWxsLCBwYWNrYWdlTWFuYWdlcjogY21kUGFja2FnZU1hbmFnZXIsIHF1aWV0LCB0eXBlc2NyaXB0fSA9IGNtZDtcbiAgY29uc3QgY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpO1xuXG4gIC8vIFNwaW5uZXJcbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIC8vIERvd25sb2FkIGFwcCBtb2R1bGUgaW50byB0ZW1wb3JhcnkgZGlyZWN0b3J5XG4gIGxvZyhgJHtjbGlOYW1lfSBpcyBkb3dubG9hZGluZyB0aGUgYXBwIG1vZHVsZS4uLmAsICdpbmZvJywgcXVpZXQpO1xuICBzcGlubmVyLnN0YXJ0KCdEb3dubG9hZGluZyBhcHAuLi4nKTtcbiAgY29uc3QgdG1wUGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoY3dkLCAnLi8ubGV4VG1wJyk7XG4gIGNvbnN0IGFwcFBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGN3ZCwgYC4vJHthcHBOYW1lfWApO1xuICBjb25zdCBkaXJOYW1lID0gbmV3IFVSTCgnLicsIGltcG9ydC5tZXRhLnVybCkucGF0aG5hbWU7XG4gIGNvbnN0IGRucFBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLi9ub2RlX21vZHVsZXMvZG93bmxvYWQtbnBtLXBhY2thZ2UvYmluL2NsaS5qcycpO1xuXG4gIC8vIEdldCBjdXN0b20gY29uZmlndXJhdGlvblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcbiAgY29uc3Qge3BhY2thZ2VNYW5hZ2VyOiBjb25maWdQYWNrYWdlTWFuYWdlciwgdXNlVHlwZXNjcmlwdDogY29uZmlnVHlwZXNjcmlwdH0gPSBMZXhDb25maWcuY29uZmlnO1xuICBjb25zdCBwYWNrYWdlTWFuYWdlcjogc3RyaW5nID0gY21kUGFja2FnZU1hbmFnZXIgfHwgY29uZmlnUGFja2FnZU1hbmFnZXI7XG4gIGNvbnN0IHVzZVR5cGVzY3JpcHQ6IGJvb2xlYW4gPSB0eXBlc2NyaXB0ICE9PSB1bmRlZmluZWQgPyB0eXBlc2NyaXB0IDogY29uZmlnVHlwZXNjcmlwdDtcblxuICBsZXQgYXBwTW9kdWxlOiBzdHJpbmcgPSBwYWNrYWdlTmFtZTtcblxuICAvLyBVc2UgYmFzZSBhcHAgbW9kdWxlIGJhc2VkIG9uIGNvbmZpZ1xuICBpZighYXBwTW9kdWxlKSB7XG4gICAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgICAgYXBwTW9kdWxlID0gJ0BubGFicy9hcmtoYW1qcy1leGFtcGxlLXRzLXJlYWN0JztcbiAgICB9IGVsc2Uge1xuICAgICAgYXBwTW9kdWxlID0gJ0BubGFicy9hcmtoYW1qcy1leGFtcGxlLWZsb3ctcmVhY3QnO1xuICAgIH1cbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY2EoZG5wUGF0aCwgW2FwcE1vZHVsZSwgdG1wUGF0aF0sIHt9KTtcblxuICAgIC8vIFN0b3Agc3Bpbm5lciBhbmQgdXBkYXRlIHN0YXR1c1xuICAgIHNwaW5uZXIuc3VjY2VlZCgnU3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWQgYXBwIScpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgY29uc29sZS5sb2coJ2Vycm9yJywgZXJyb3IpO1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogVGhlcmUgd2FzIGFuIGVycm9yIGRvd25sb2FkaW5nICR7YXBwTW9kdWxlfS4gTWFrZSBzdXJlIHRoZSBwYWNrYWdlIGV4aXN0cyBhbmQgdGhlcmUgaXMgYSBuZXR3b3JrIGNvbm5lY3Rpb24uYCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgLy8gU3RvcCBzcGlubmVyIGFuZCBraWxsIHByb2Nlc3NcbiAgICBzcGlubmVyLmZhaWwoJ0Rvd25sb2FkZWQgb2YgYXBwIGZhaWxlZC4nKTtcblxuICAgIC8vIEtpbGwgcHJvY2Vzc1xuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgLy8gTW92ZSBpbnRvIGNvbmZpZ3VyZWQgZGlyZWN0b3J5XG4gIHRyeSB7XG4gICAgcmVuYW1lU3luYyhgJHt0bXBQYXRofS8ke2FwcE1vZHVsZX1gLCBhcHBQYXRoKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogVGhlcmUgd2FzIGFuIGVycm9yIGNvcHlpbmcgJHthcHBNb2R1bGV9IHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8vIENvbmZpZ3VyZSBwYWNrYWdlLmpzb25cbiAgY29uc3QgcGFja2FnZVBhdGg6IHN0cmluZyA9IGAke2FwcFBhdGh9L3BhY2thZ2UuanNvbmA7XG4gIGNvbnN0IHBhY2thZ2VKc29uID0gZ2V0UGFja2FnZUpzb24ocGFja2FnZVBhdGgpO1xuICBwYWNrYWdlSnNvbi5uYW1lID0gYXBwTmFtZTtcbiAgcGFja2FnZUpzb24uZGVzY3JpcHRpb24gPSBgJHtjbGlOYW1lfSBjcmVhdGVkIGFwcGA7XG4gIHBhY2thZ2VKc29uLnZlcnNpb24gPSAnMC4xLjAnO1xuICBkZWxldGUgcGFja2FnZUpzb24ua2V5d29yZHM7XG4gIGRlbGV0ZSBwYWNrYWdlSnNvbi5hdXRob3I7XG4gIGRlbGV0ZSBwYWNrYWdlSnNvbi5jb250cmlidXRvcnM7XG4gIGRlbGV0ZSBwYWNrYWdlSnNvbi5yZXBvc2l0b3J5O1xuICBkZWxldGUgcGFja2FnZUpzb24uaG9tZXBhZ2U7XG4gIGRlbGV0ZSBwYWNrYWdlSnNvbi5idWdzO1xuXG4gIHRyeSB7XG4gICAgLy8gVXBkYXRlIHBhY2thZ2UuanNvblxuICAgIHNldFBhY2thZ2VKc29uKHBhY2thZ2VKc29uLCBwYWNrYWdlUGF0aCk7XG5cbiAgICAvLyBVcGRhdGUgUkVBRE1FXG4gICAgY29uc3QgcmVhZG1lUGF0aDogc3RyaW5nID0gYCR7YXBwUGF0aH0vUkVBRE1FLm1kYDtcbiAgICB3cml0ZUZpbGVTeW5jKHJlYWRtZVBhdGgsIGAjICR7YXBwTmFtZX1gKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGlmKGluc3RhbGwpIHtcbiAgICBzcGlubmVyLnN0YXJ0KCdJbnN0YWxsaW5nIGRlcGVuZGVuY2llcy4uLicpO1xuXG4gICAgLy8gQ2hhbmdlIHRvIHRoZSBhcHAgZGlyZWN0b3J5XG4gICAgcHJvY2Vzcy5jaGRpcihhcHBQYXRoKTtcblxuICAgIC8vIEluc3RhbGwgZGVwZW5kZW5jaWVzXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGV4ZWNhKHBhY2thZ2VNYW5hZ2VyLCBbJ2luc3RhbGwnXSwge1xuICAgICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgICBzdGRpbzogJ2luaGVyaXQnXG4gICAgICB9KTtcblxuICAgICAgLy8gU3RvcCBzcGlubmVyXG4gICAgICBzcGlubmVyLnN1Y2NlZWQoJ1N1Y2Nlc3NmdWxseSBpbnN0YWxsZWQgZGVwZW5kZW5jaWVzIScpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIC8vIERpc3BsYXkgZXJyb3IgbWVzc2FnZVxuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIGluc3RhbGwgZGVwZW5kZW5jaWVzLicpO1xuXG4gICAgICAvLyBLaWxsIHByb2Nlc3NcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgLy8gS2lsbCBwcm9jZXNzXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gMDtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxTQUFRLGFBQVk7QUFDcEIsU0FBUSxZQUFZLHFCQUFvQjtBQUN4QyxTQUFRLFdBQVcsbUJBQWtCO0FBQ3JDLFNBQVEsV0FBVTtBQUVsQixTQUFRLGlCQUFnQjtBQUN4QixTQUFRLGVBQWUsZ0JBQWdCLHNCQUFxQjtBQUM1RCxTQUFRLFdBQVU7QUFZWCxNQUFNLE9BQU8sT0FDbEIsU0FDQSxhQUNBLEtBQ0EsV0FBeUIsT0FBTyxDQUFDLE9BQ2I7QUFDcEIsUUFBTSxFQUFDLFVBQVUsT0FBTyxTQUFTLGdCQUFnQixtQkFBbUIsT0FBTyxXQUFVLElBQUk7QUFDekYsUUFBTSxNQUFjLFFBQVEsSUFBSTtBQUdoQyxRQUFNLFVBQVUsY0FBYyxLQUFLO0FBR25DLE1BQUksR0FBRyxPQUFPLHFDQUFxQyxRQUFRLEtBQUs7QUFDaEUsVUFBUSxNQUFNLG9CQUFvQjtBQUNsQyxRQUFNLFVBQWtCLFlBQVksS0FBSyxXQUFXO0FBQ3BELFFBQU0sVUFBa0IsWUFBWSxLQUFLLEtBQUssT0FBTyxFQUFFO0FBQ3ZELFFBQU0sVUFBVSxJQUFJLElBQUksS0FBSyxZQUFZLEdBQUcsRUFBRTtBQUM5QyxRQUFNLFVBQWtCLFlBQVksU0FBUyxvREFBb0Q7QUFHakcsUUFBTSxVQUFVLFlBQVksR0FBRztBQUMvQixRQUFNLEVBQUMsZ0JBQWdCLHNCQUFzQixlQUFlLGlCQUFnQixJQUFJLFVBQVU7QUFDMUYsUUFBTSxpQkFBeUIscUJBQXFCO0FBQ3BELFFBQU0sZ0JBQXlCLGVBQWUsU0FBWSxhQUFhO0FBRXZFLE1BQUksWUFBb0I7QUFHeEIsTUFBRyxDQUFDLFdBQVc7QUFDYixRQUFHLGVBQWU7QUFDaEIsa0JBQVk7QUFBQSxJQUNkLE9BQU87QUFDTCxrQkFBWTtBQUFBLElBQ2Q7QUFBQSxFQUNGO0FBRUEsTUFBSTtBQUNGLFVBQU0sTUFBTSxTQUFTLENBQUMsV0FBVyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBRzdDLFlBQVEsUUFBUSw4QkFBOEI7QUFBQSxFQUNoRCxTQUFRLE9BQU87QUFDYixZQUFRLElBQUksU0FBUyxLQUFLO0FBQzFCLFFBQUk7QUFBQSxFQUFLLE9BQU8sMENBQTBDLFNBQVMscUVBQXFFLFNBQVMsS0FBSztBQUd0SixZQUFRLEtBQUssMkJBQTJCO0FBR3hDLGFBQVMsQ0FBQztBQUNWLFdBQU87QUFBQSxFQUNUO0FBR0EsTUFBSTtBQUNGLGVBQVcsR0FBRyxPQUFPLElBQUksU0FBUyxJQUFJLE9BQU87QUFBQSxFQUMvQyxTQUFRLE9BQU87QUFDYixRQUFJO0FBQUEsRUFBSyxPQUFPLHNDQUFzQyxTQUFTLHNDQUFzQyxTQUFTLEtBQUs7QUFDbkgsYUFBUyxDQUFDO0FBQ1YsV0FBTztBQUFBLEVBQ1Q7QUFHQSxRQUFNLGNBQXNCLEdBQUcsT0FBTztBQUN0QyxRQUFNLGNBQWMsZUFBZSxXQUFXO0FBQzlDLGNBQVksT0FBTztBQUNuQixjQUFZLGNBQWMsR0FBRyxPQUFPO0FBQ3BDLGNBQVksVUFBVTtBQUN0QixTQUFPLFlBQVk7QUFDbkIsU0FBTyxZQUFZO0FBQ25CLFNBQU8sWUFBWTtBQUNuQixTQUFPLFlBQVk7QUFDbkIsU0FBTyxZQUFZO0FBQ25CLFNBQU8sWUFBWTtBQUVuQixNQUFJO0FBRUYsbUJBQWUsYUFBYSxXQUFXO0FBR3ZDLFVBQU0sYUFBcUIsR0FBRyxPQUFPO0FBQ3JDLGtCQUFjLFlBQVksS0FBSyxPQUFPLEVBQUU7QUFBQSxFQUMxQyxTQUFRLE9BQU87QUFDYixRQUFJO0FBQUEsRUFBSyxPQUFPLFdBQVcsTUFBTSxPQUFPLElBQUksU0FBUyxLQUFLO0FBQzFELGFBQVMsQ0FBQztBQUNWLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBRyxTQUFTO0FBQ1YsWUFBUSxNQUFNLDRCQUE0QjtBQUcxQyxZQUFRLE1BQU0sT0FBTztBQUdyQixRQUFJO0FBQ0YsWUFBTSxNQUFNLGdCQUFnQixDQUFDLFNBQVMsR0FBRztBQUFBLFFBQ3ZDLFVBQVU7QUFBQSxRQUNWLE9BQU87QUFBQSxNQUNULENBQUM7QUFHRCxjQUFRLFFBQVEsc0NBQXNDO0FBQUEsSUFDeEQsU0FBUSxPQUFPO0FBRWIsVUFBSTtBQUFBLEVBQUssT0FBTyxXQUFXLE1BQU0sT0FBTyxJQUFJLFNBQVMsS0FBSztBQUcxRCxjQUFRLEtBQUssaUNBQWlDO0FBRzlDLGVBQVMsQ0FBQztBQUNWLGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUdBLFdBQVMsQ0FBQztBQUNWLFNBQU87QUFDVDsiLAogICJuYW1lcyI6IFtdCn0K
|
package/dist/commands/link.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { LexConfig } from "../LexConfig.js";
|
|
2
|
-
import { checkLinkedModules } from "../utils/app.js";
|
|
3
|
-
import { log } from "../utils/log.js";
|
|
4
|
-
const linked = async (cmd, callback = () => ({})) => {
|
|
5
|
-
const { cliName = "Lex", quiet } = cmd;
|
|
6
|
-
log(`${cliName} checking for linked modules...`, "info", quiet);
|
|
7
|
-
await LexConfig.parseConfig(cmd);
|
|
8
|
-
checkLinkedModules();
|
|
9
|
-
callback(0);
|
|
10
|
-
return Promise.resolve(0);
|
|
11
|
-
};
|
|
12
|
-
export {
|
|
13
|
-
linked
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2xpbmsudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge0xleENvbmZpZ30gZnJvbSAnLi4vTGV4Q29uZmlnLmpzJztcbmltcG9ydCB7Y2hlY2tMaW5rZWRNb2R1bGVzfSBmcm9tICcuLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlua09wdGlvbnMge1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCB0eXBlIExpbmtDYWxsYmFjayA9IChzdGF0dXM6IG51bWJlcikgPT4gdm9pZDtcblxuZXhwb3J0IGNvbnN0IGxpbmtlZCA9IGFzeW5jIChjbWQ6IExpbmtPcHRpb25zLCBjYWxsYmFjazogTGlua0NhbGxiYWNrID0gKCkgPT4gKHt9KSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIHF1aWV0fSA9IGNtZDtcblxuICAvLyBEaXNwbGF5IHN0YXR1c1xuICBsb2coYCR7Y2xpTmFtZX0gY2hlY2tpbmcgZm9yIGxpbmtlZCBtb2R1bGVzLi4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIC8vIENoZWNrIGZvciBsaW5rZWQgbW9kdWxlc1xuICBjaGVja0xpbmtlZE1vZHVsZXMoKTtcbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoMCk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxpQkFBZ0I7QUFDeEIsU0FBUSwwQkFBeUI7QUFDakMsU0FBUSxXQUFVO0FBU1gsTUFBTSxTQUFTLE9BQU8sS0FBa0IsV0FBeUIsT0FBTyxDQUFDLE9BQXdCO0FBQ3RHLFFBQU0sRUFBQyxVQUFVLE9BQU8sTUFBSyxJQUFJO0FBR2pDLE1BQUksR0FBRyxPQUFPLG1DQUFtQyxRQUFRLEtBQUs7QUFHOUQsUUFBTSxVQUFVLFlBQVksR0FBRztBQUcvQixxQkFBbUI7QUFDbkIsV0FBUyxDQUFDO0FBQ1YsU0FBTyxRQUFRLFFBQVEsQ0FBQztBQUMxQjsiLAogICJuYW1lcyI6IFtdCn0K
|
package/dist/commands/lint.js
DELETED
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
import { execa } from "execa";
|
|
2
|
-
import { resolve as pathResolve } from "path";
|
|
3
|
-
import { URL } from "url";
|
|
4
|
-
import { LexConfig } from "../LexConfig.js";
|
|
5
|
-
import { createSpinner } from "../utils/app.js";
|
|
6
|
-
import { relativeNodePath } from "../utils/file.js";
|
|
7
|
-
import { log } from "../utils/log.js";
|
|
8
|
-
const lint = async (cmd, callback = process.exit) => {
|
|
9
|
-
const {
|
|
10
|
-
cache,
|
|
11
|
-
cacheFile,
|
|
12
|
-
cacheLocation,
|
|
13
|
-
cliName = "Lex",
|
|
14
|
-
color,
|
|
15
|
-
config,
|
|
16
|
-
debug,
|
|
17
|
-
env,
|
|
18
|
-
envInfo,
|
|
19
|
-
ext = ".js",
|
|
20
|
-
fix,
|
|
21
|
-
fixDryRun,
|
|
22
|
-
fixType,
|
|
23
|
-
format,
|
|
24
|
-
global,
|
|
25
|
-
ignorePath,
|
|
26
|
-
ignorePattern,
|
|
27
|
-
init,
|
|
28
|
-
maxWarnings,
|
|
29
|
-
noColor,
|
|
30
|
-
noEslintrc = true,
|
|
31
|
-
noIgnore,
|
|
32
|
-
noInlineConfig,
|
|
33
|
-
outputFile,
|
|
34
|
-
parser,
|
|
35
|
-
parserOptions,
|
|
36
|
-
plugin,
|
|
37
|
-
printConfig,
|
|
38
|
-
quiet,
|
|
39
|
-
reportUnusedDisableDirectives,
|
|
40
|
-
resolvePluginsRelativeTo,
|
|
41
|
-
rule,
|
|
42
|
-
rulesdir,
|
|
43
|
-
stdin,
|
|
44
|
-
stdinFilename
|
|
45
|
-
} = cmd;
|
|
46
|
-
log(`${cliName} linting...`, "info", quiet);
|
|
47
|
-
const spinner = createSpinner(quiet);
|
|
48
|
-
await LexConfig.parseConfig(cmd);
|
|
49
|
-
const { useTypescript } = LexConfig.config;
|
|
50
|
-
let extensions = ext;
|
|
51
|
-
if (useTypescript) {
|
|
52
|
-
LexConfig.checkTypescriptConfig();
|
|
53
|
-
extensions = ".ts,.tsx";
|
|
54
|
-
}
|
|
55
|
-
const dirName = new URL(".", import.meta.url).pathname;
|
|
56
|
-
const dirPath = pathResolve(dirName, "../..");
|
|
57
|
-
const eslintPath = relativeNodePath("eslint/bin/eslint.js", dirPath);
|
|
58
|
-
const eslintOptions = ["./src"];
|
|
59
|
-
if (noEslintrc) {
|
|
60
|
-
eslintOptions.push("--no-eslintrc");
|
|
61
|
-
}
|
|
62
|
-
if (config) {
|
|
63
|
-
eslintOptions.push("--config", config);
|
|
64
|
-
} else {
|
|
65
|
-
let configPath;
|
|
66
|
-
if (useTypescript) {
|
|
67
|
-
configPath = relativeNodePath("eslint-config-styleguidejs/typescript.js", dirPath);
|
|
68
|
-
} else {
|
|
69
|
-
configPath = relativeNodePath("eslint-config-styleguidejs/react.js", dirPath);
|
|
70
|
-
}
|
|
71
|
-
eslintOptions.push("--config", configPath);
|
|
72
|
-
}
|
|
73
|
-
if (env) {
|
|
74
|
-
eslintOptions.push("--env", env);
|
|
75
|
-
}
|
|
76
|
-
if (extensions) {
|
|
77
|
-
eslintOptions.push("--ext", extensions);
|
|
78
|
-
}
|
|
79
|
-
if (global) {
|
|
80
|
-
eslintOptions.push("--global", global);
|
|
81
|
-
}
|
|
82
|
-
if (parser) {
|
|
83
|
-
eslintOptions.push("--parser", parser);
|
|
84
|
-
}
|
|
85
|
-
if (parserOptions) {
|
|
86
|
-
eslintOptions.push("--parserOptions", parserOptions);
|
|
87
|
-
}
|
|
88
|
-
if (resolvePluginsRelativeTo) {
|
|
89
|
-
eslintOptions.push("--resolvePluginsRelativeTo", resolvePluginsRelativeTo);
|
|
90
|
-
}
|
|
91
|
-
if (rulesdir) {
|
|
92
|
-
eslintOptions.push("--rulesdir", rulesdir);
|
|
93
|
-
}
|
|
94
|
-
if (plugin) {
|
|
95
|
-
eslintOptions.push("--plugin", plugin);
|
|
96
|
-
}
|
|
97
|
-
if (rule) {
|
|
98
|
-
eslintOptions.push("--rule", rule);
|
|
99
|
-
}
|
|
100
|
-
if (fix) {
|
|
101
|
-
eslintOptions.push("--fix");
|
|
102
|
-
}
|
|
103
|
-
if (fixDryRun) {
|
|
104
|
-
eslintOptions.push("--fixDryRun");
|
|
105
|
-
}
|
|
106
|
-
if (fixType) {
|
|
107
|
-
eslintOptions.push("--fixType", fixType);
|
|
108
|
-
}
|
|
109
|
-
if (ignorePath) {
|
|
110
|
-
eslintOptions.push("--ignorePath", ignorePath);
|
|
111
|
-
}
|
|
112
|
-
if (noIgnore) {
|
|
113
|
-
eslintOptions.push("--noIgnore");
|
|
114
|
-
}
|
|
115
|
-
if (ignorePattern) {
|
|
116
|
-
eslintOptions.push("--ignorePattern", ignorePattern);
|
|
117
|
-
}
|
|
118
|
-
if (stdin) {
|
|
119
|
-
eslintOptions.push("--stdin");
|
|
120
|
-
}
|
|
121
|
-
if (stdinFilename) {
|
|
122
|
-
eslintOptions.push("--stdinFilename", stdinFilename);
|
|
123
|
-
}
|
|
124
|
-
if (maxWarnings) {
|
|
125
|
-
eslintOptions.push("--maxWarnings", maxWarnings);
|
|
126
|
-
}
|
|
127
|
-
if (outputFile) {
|
|
128
|
-
eslintOptions.push("--outputFile", outputFile);
|
|
129
|
-
}
|
|
130
|
-
if (format) {
|
|
131
|
-
eslintOptions.push("--format", format);
|
|
132
|
-
}
|
|
133
|
-
if (color) {
|
|
134
|
-
eslintOptions.push("--color");
|
|
135
|
-
}
|
|
136
|
-
if (noColor) {
|
|
137
|
-
eslintOptions.push("--noColor");
|
|
138
|
-
}
|
|
139
|
-
if (noInlineConfig) {
|
|
140
|
-
eslintOptions.push("--noInlineConfig", noInlineConfig ? "true" : "false");
|
|
141
|
-
}
|
|
142
|
-
if (reportUnusedDisableDirectives) {
|
|
143
|
-
eslintOptions.push("--reportUnusedDisableDirectives");
|
|
144
|
-
}
|
|
145
|
-
if (cacheLocation) {
|
|
146
|
-
eslintOptions.push("--cacheLocation", cacheLocation);
|
|
147
|
-
}
|
|
148
|
-
if (init) {
|
|
149
|
-
eslintOptions.push("--init");
|
|
150
|
-
}
|
|
151
|
-
if (envInfo) {
|
|
152
|
-
eslintOptions.push("--env-info");
|
|
153
|
-
}
|
|
154
|
-
if (debug) {
|
|
155
|
-
eslintOptions.push("--debug");
|
|
156
|
-
}
|
|
157
|
-
if (printConfig) {
|
|
158
|
-
eslintOptions.push("--printConfig", printConfig);
|
|
159
|
-
}
|
|
160
|
-
try {
|
|
161
|
-
await execa(eslintPath, eslintOptions, {
|
|
162
|
-
encoding: "utf8",
|
|
163
|
-
stdio: "inherit"
|
|
164
|
-
});
|
|
165
|
-
spinner.succeed("Linting completed!");
|
|
166
|
-
callback(0);
|
|
167
|
-
return 0;
|
|
168
|
-
} catch (error) {
|
|
169
|
-
log(`
|
|
170
|
-
${cliName} Error: Check for unit test errors and/or coverage.`, "error", quiet);
|
|
171
|
-
spinner.fail("Testing failed!");
|
|
172
|
-
callback(1);
|
|
173
|
-
return 1;
|
|
174
|
-
}
|
|
175
|
-
};
|
|
176
|
-
export {
|
|
177
|
-
lint
|
|
178
|
-
};
|
|
179
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2xpbnQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDIyLVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4ZWNhfSBmcm9tICdleGVjYSc7XG5pbXBvcnQge3Jlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtVUkx9IGZyb20gJ3VybCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyfSBmcm9tICcuLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtyZWxhdGl2ZU5vZGVQYXRofSBmcm9tICcuLi91dGlscy9maWxlLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuLi91dGlscy9sb2cuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIExpbnRPcHRpb25zIHtcbiAgcmVhZG9ubHkgY2FjaGU/OiBib29sZWFuO1xuICByZWFkb25seSBjYWNoZUZpbGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNhY2hlTG9jYXRpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbG9yPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgY29uZmlnPzogc3RyaW5nO1xuICByZWFkb25seSBkZWJ1Zz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGVudj86IHN0cmluZztcbiAgcmVhZG9ubHkgZW52SW5mbz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGV4dD86IHN0cmluZztcbiAgcmVhZG9ubHkgZml4PzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZml4RHJ5UnVuPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZml4VHlwZT86IHN0cmluZztcbiAgcmVhZG9ubHkgZm9ybWF0Pzogc3RyaW5nO1xuICByZWFkb25seSBnbG9iYWw/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlnbm9yZVBhdGg/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlnbm9yZVBhdHRlcm4/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGluaXQ/OiBib29sZWFuO1xuICByZWFkb25seSBtYXhXYXJuaW5ncz86IHN0cmluZztcbiAgcmVhZG9ubHkgbm9Db2xvcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IG5vRXNsaW50cmM/OiBib29sZWFuO1xuICByZWFkb25seSBub0lnbm9yZT86IGJvb2xlYW47XG4gIHJlYWRvbmx5IG5vSW5saW5lQ29uZmlnPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgb3V0cHV0RmlsZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcGFyc2VyPzogc3RyaW5nO1xuICByZWFkb25seSBwYXJzZXJPcHRpb25zPzogc3RyaW5nO1xuICByZWFkb25seSBwbHVnaW4/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW50Q29uZmlnPzogc3RyaW5nO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHJlcG9ydFVudXNlZERpc2FibGVEaXJlY3RpdmVzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcmVzb2x2ZVBsdWdpbnNSZWxhdGl2ZVRvPzogc3RyaW5nO1xuICByZWFkb25seSBydWxlPzogc3RyaW5nO1xuICByZWFkb25seSBydWxlc2Rpcj86IHN0cmluZztcbiAgcmVhZG9ubHkgc3RkaW4/OiBib29sZWFuO1xuICByZWFkb25seSBzdGRpbkZpbGVuYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBMaW50Q2FsbGJhY2sgPSB0eXBlb2YgcHJvY2Vzcy5leGl0O1xuXG5leHBvcnQgY29uc3QgbGludCA9IGFzeW5jIChjbWQ6IExpbnRPcHRpb25zLCBjYWxsYmFjazogTGludENhbGxiYWNrID0gcHJvY2Vzcy5leGl0KTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge1xuICAgIGNhY2hlLFxuICAgIGNhY2hlRmlsZSxcbiAgICBjYWNoZUxvY2F0aW9uLFxuICAgIGNsaU5hbWUgPSAnTGV4JyxcbiAgICBjb2xvcixcbiAgICBjb25maWcsXG4gICAgZGVidWcsXG4gICAgZW52LFxuICAgIGVudkluZm8sXG4gICAgZXh0ID0gJy5qcycsXG4gICAgZml4LFxuICAgIGZpeERyeVJ1bixcbiAgICBmaXhUeXBlLFxuICAgIGZvcm1hdCxcbiAgICBnbG9iYWwsXG4gICAgaWdub3JlUGF0aCxcbiAgICBpZ25vcmVQYXR0ZXJuLFxuICAgIGluaXQsXG4gICAgbWF4V2FybmluZ3MsXG4gICAgbm9Db2xvcixcbiAgICBub0VzbGludHJjID0gdHJ1ZSxcbiAgICBub0lnbm9yZSxcbiAgICBub0lubGluZUNvbmZpZyxcbiAgICBvdXRwdXRGaWxlLFxuICAgIHBhcnNlcixcbiAgICBwYXJzZXJPcHRpb25zLFxuICAgIHBsdWdpbixcbiAgICBwcmludENvbmZpZyxcbiAgICBxdWlldCxcbiAgICByZXBvcnRVbnVzZWREaXNhYmxlRGlyZWN0aXZlcyxcbiAgICByZXNvbHZlUGx1Z2luc1JlbGF0aXZlVG8sXG4gICAgcnVsZSxcbiAgICBydWxlc2RpcixcbiAgICBzdGRpbixcbiAgICBzdGRpbkZpbGVuYW1lXG4gIH0gPSBjbWQ7XG5cbiAgbG9nKGAke2NsaU5hbWV9IGxpbnRpbmcuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICAvLyBTcGlubmVyXG4gIGNvbnN0IHNwaW5uZXIgPSBjcmVhdGVTcGlubmVyKHF1aWV0KTtcblxuICAvLyBHZXQgY3VzdG9tIGNvbmZpZ3VyYXRpb25cbiAgYXdhaXQgTGV4Q29uZmlnLnBhcnNlQ29uZmlnKGNtZCk7XG5cbiAgY29uc3Qge3VzZVR5cGVzY3JpcHR9ID0gTGV4Q29uZmlnLmNvbmZpZztcbiAgbGV0IGV4dGVuc2lvbnMgPSBleHQ7XG5cbiAgaWYodXNlVHlwZXNjcmlwdCkge1xuICAgIExleENvbmZpZy5jaGVja1R5cGVzY3JpcHRDb25maWcoKTtcbiAgICBleHRlbnNpb25zID0gJy50cywudHN4JztcbiAgfVxuXG4gIC8vIENvbmZpZ3VyZSBqZXN0XG4gIGNvbnN0IGRpck5hbWUgPSBuZXcgVVJMKCcuJywgaW1wb3J0Lm1ldGEudXJsKS5wYXRobmFtZTtcbiAgY29uc3QgZGlyUGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uJyk7XG4gIGNvbnN0IGVzbGludFBhdGg6IHN0cmluZyA9IHJlbGF0aXZlTm9kZVBhdGgoJ2VzbGludC9iaW4vZXNsaW50LmpzJywgZGlyUGF0aCk7XG4gIGNvbnN0IGVzbGludE9wdGlvbnM6IHN0cmluZ1tdID0gWycuL3NyYyddO1xuXG4gIGlmKG5vRXNsaW50cmMpIHtcbiAgICBlc2xpbnRPcHRpb25zLnB1c2goJy0tbm8tZXNsaW50cmMnKTtcbiAgfVxuXG4gIGlmKGNvbmZpZykge1xuICAgIGVzbGludE9wdGlvbnMucHVzaCgnLS1jb25maWcnLCBjb25maWcpO1xuICB9IGVsc2Uge1xuICAgIGxldCBjb25maWdQYXRoOiBzdHJpbmc7XG5cbiAgICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgICBjb25maWdQYXRoID0gcmVsYXRpdmVOb2RlUGF0aCgnZXNsaW50LWNvbmZpZy1zdHlsZWd1aWRlanMvdHlwZXNjcmlwdC5qcycsIGRpclBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWdQYXRoID0gcmVsYXRpdmVOb2RlUGF0aCgnZXNsaW50LWNvbmZpZy1zdHlsZWd1aWRlanMvcmVhY3QuanMnLCBkaXJQYXRoKTtcbiAgICB9XG4gICAgZXNsaW50T3B0aW9ucy5wdXNoKCctLWNvbmZpZycsIGNvbmZpZ1BhdGgpO1xuICB9XG5cbiAgaWYoZW52KSB7XG4gICAgZXNsaW50T3B0aW9ucy5wdXNoKCctLWVudicsIGVudik7XG4gIH1cblxuICBpZihleHRlbnNpb25zKSB7XG4gICAgZXNsaW50T3B0aW9ucy5wdXNoKCctLWV4dCcsIGV4dGVuc2lvbnMpO1xuICB9XG5cbiAgaWYoZ2xvYmFsKSB7XG4gICAgZXNsaW50T3B0aW9ucy5wdXNoKCctLWdsb2JhbCcsIGdsb2JhbCk7XG4gIH1cblxuICBpZihwYXJzZXIpIHtcbiAgICBlc2xpbnRPcHRpb25zLnB1c2goJy0tcGFyc2VyJywgcGFyc2VyKTtcbiAgfVxuXG4gIGlmKHBhcnNlck9wdGlvbnMpIHtcbiAgICBlc2xpbnRPcHRpb25zLnB1c2goJy0tcGFyc2VyT3B0aW9ucycsIHBhcnNlck9wdGlvbnMpO1xuICB9XG5cbiAgaWYocmVzb2x2ZVBsdWdpbnNSZWxhdGl2ZVRvKSB7XG4gICAgZXNsaW50T3B0aW9ucy5wdXNoKCctLXJlc29sdmVQbHVnaW5zUmVsYXRpdmVUbycsIHJlc29sdmVQbHVnaW5zUmVsYXRpdmVUbyk7XG4gIH1cblxuICBpZihydWxlc2Rpcikge1xuICAgIGVzbGludE9wdGlvbnMucHVzaCgnLS1ydWxlc2RpcicsIHJ1bGVzZGlyKTtcbiAgfVxuXG4gIGlmKHBsdWdpbikge1xuICAgIGVzbGludE9wdGlvbnMucHVzaCgnLS1wbHVnaW4nLCBwbHVnaW4pO1xuICB9XG5cbiAgaWYocnVsZSkge1xuICAgIGVzbGludE9wdGlvbnMucHVzaCgnLS1ydWxlJywgcnVsZSk7XG4gIH1cblxuICBpZihmaXgpIHtcbiAgICBlc2xpbnRPcHRpb25zLnB1c2goJy0tZml4Jyk7XG4gIH1cblxuICBpZihmaXhEcnlSdW4pIHtcbiAgICBlc2xpbnRPcHRpb25zLnB1c2goJy0tZml4RHJ5UnVuJyk7XG4gIH1cblxuICBpZihmaXhUeXBlKSB7XG4gICAgZXNsaW50T3B0aW9ucy5wdXNoKCctLWZpeFR5cGUnLCBmaXhUeXBlKTtcbiAgfVxuXG4gIGlmKGlnbm9yZVBhdGgpIHtcbiAgICBlc2xpbnRPcHRpb25zLnB1c2goJy0taWdub3JlUGF0aCcsIGlnbm9yZVBhdGgpO1xuICB9XG5cbiAgaWYobm9JZ25vcmUpIHtcbiAgICBlc2xpbnRPcHRpb25zLnB1c2goJy0tbm9JZ25vcmUnKTtcbiAgfVxuXG4gIGlmKGlnbm9yZVBhdHRlcm4pIHtcbiAgICBlc2xpbnRPcHRpb25zLnB1c2goJy0taWdub3JlUGF0dGVybicsIGlnbm9yZVBhdHRlcm4pO1xuICB9XG5cbiAgaWYoc3RkaW4pIHtcbiAgICBlc2xpbnRPcHRpb25zLnB1c2goJy0tc3RkaW4nKTtcbiAgfVxuXG4gIGlmKHN0ZGluRmlsZW5hbWUpIHtcbiAgICBlc2xpbnRPcHRpb25zLnB1c2goJy0tc3RkaW5GaWxlbmFtZScsIHN0ZGluRmlsZW5hbWUpO1xuICB9XG5cbiAgaWYobWF4V2FybmluZ3MpIHtcbiAgICBlc2xpbnRPcHRpb25zLnB1c2goJy0tbWF4V2FybmluZ3MnLCBtYXhXYXJuaW5ncyk7XG4gIH1cblxuICBpZihvdXRwdXRGaWxlKSB7XG4gICAgZXNsaW50T3B0aW9ucy5wdXNoKCctLW91dHB1dEZpbGUnLCBvdXRwdXRGaWxlKTtcbiAgfVxuXG4gIGlmKGZvcm1hdCkge1xuICAgIGVzbGludE9wdGlvbnMucHVzaCgnLS1mb3JtYXQnLCBmb3JtYXQpO1xuICB9XG5cbiAgaWYoY29sb3IpIHtcbiAgICBlc2xpbnRPcHRpb25zLnB1c2goJy0tY29sb3InKTtcbiAgfVxuXG4gIGlmKG5vQ29sb3IpIHtcbiAgICBlc2xpbnRPcHRpb25zLnB1c2goJy0tbm9Db2xvcicpO1xuICB9XG5cbiAgaWYobm9JbmxpbmVDb25maWcpIHtcbiAgICBlc2xpbnRPcHRpb25zLnB1c2goJy0tbm9JbmxpbmVDb25maWcnLCBub0lubGluZUNvbmZpZyA/ICd0cnVlJyA6ICdmYWxzZScpO1xuICB9XG5cbiAgaWYocmVwb3J0VW51c2VkRGlzYWJsZURpcmVjdGl2ZXMpIHtcbiAgICBlc2xpbnRPcHRpb25zLnB1c2goJy0tcmVwb3J0VW51c2VkRGlzYWJsZURpcmVjdGl2ZXMnKTtcbiAgfVxuXG4gIGlmKGNhY2hlTG9jYXRpb24pIHtcbiAgICBlc2xpbnRPcHRpb25zLnB1c2goJy0tY2FjaGVMb2NhdGlvbicsIGNhY2hlTG9jYXRpb24pO1xuICB9XG5cbiAgaWYoaW5pdCkge1xuICAgIGVzbGludE9wdGlvbnMucHVzaCgnLS1pbml0Jyk7XG4gIH1cblxuICBpZihlbnZJbmZvKSB7XG4gICAgZXNsaW50T3B0aW9ucy5wdXNoKCctLWVudi1pbmZvJyk7XG4gIH1cblxuICBpZihkZWJ1Zykge1xuICAgIGVzbGludE9wdGlvbnMucHVzaCgnLS1kZWJ1ZycpO1xuICB9XG5cbiAgaWYocHJpbnRDb25maWcpIHtcbiAgICBlc2xpbnRPcHRpb25zLnB1c2goJy0tcHJpbnRDb25maWcnLCBwcmludENvbmZpZyk7XG4gIH1cblxuICAvLyBUZXN0IGFwcCB1c2luZyBqZXN0XG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY2EoZXNsaW50UGF0aCwgZXNsaW50T3B0aW9ucywge1xuICAgICAgZW5jb2Rpbmc6ICd1dGY4JyxcbiAgICAgIHN0ZGlvOiAnaW5oZXJpdCdcbiAgICB9KTtcblxuICAgIHNwaW5uZXIuc3VjY2VlZCgnTGludGluZyBjb21wbGV0ZWQhJyk7XG5cbiAgICAvLyBLaWxsIHByb2Nlc3NcbiAgICBjYWxsYmFjaygwKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIC8vIERpc3BsYXkgZXJyb3IgbWVzc2FnZVxuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2hlY2sgZm9yIHVuaXQgdGVzdCBlcnJvcnMgYW5kL29yIGNvdmVyYWdlLmAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgIHNwaW5uZXIuZmFpbCgnVGVzdGluZyBmYWlsZWQhJyk7XG5cbiAgICAvLyBLaWxsIHByb2Nlc3NcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLFNBQVEsYUFBWTtBQUNwQixTQUFRLFdBQVcsbUJBQWtCO0FBQ3JDLFNBQVEsV0FBVTtBQUVsQixTQUFRLGlCQUFnQjtBQUN4QixTQUFRLHFCQUFv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
|
package/dist/commands/migrate.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { execa } from "execa";
|
|
2
|
-
import { LexConfig } from "../LexConfig.js";
|
|
3
|
-
import { createSpinner, getPackageJson, removeConflictModules, removeModules } from "../utils/app.js";
|
|
4
|
-
import { log } from "../utils/log.js";
|
|
5
|
-
const migrate = async (cmd, callback = process.exit) => {
|
|
6
|
-
const { cliName = "Lex", packageManager: cmdPackageManager, quiet } = cmd;
|
|
7
|
-
const cwd = process.cwd();
|
|
8
|
-
const spinner = createSpinner(quiet);
|
|
9
|
-
spinner.start("Removing node modules...");
|
|
10
|
-
await removeModules();
|
|
11
|
-
const { packageManager: configPackageManager } = LexConfig.config;
|
|
12
|
-
const packageManager = cmdPackageManager || configPackageManager;
|
|
13
|
-
const packagePath = `${cwd}/package.json`;
|
|
14
|
-
const appPackage = getPackageJson(packagePath);
|
|
15
|
-
const { dependencies = {}, devDependencies = {} } = appPackage;
|
|
16
|
-
appPackage.dependencies = removeConflictModules(dependencies);
|
|
17
|
-
appPackage.devDependencies = removeConflictModules(devDependencies);
|
|
18
|
-
try {
|
|
19
|
-
await execa(packageManager, ["install"], {
|
|
20
|
-
encoding: "utf8",
|
|
21
|
-
stdio: "inherit"
|
|
22
|
-
});
|
|
23
|
-
spinner.succeed("Successfully migrated app!");
|
|
24
|
-
callback(0);
|
|
25
|
-
return 0;
|
|
26
|
-
} catch (error) {
|
|
27
|
-
log(`
|
|
28
|
-
${cliName} Error: ${error.message}`, "error", quiet);
|
|
29
|
-
spinner.fail("Failed to remove modules.");
|
|
30
|
-
callback(1);
|
|
31
|
-
return 1;
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
export {
|
|
35
|
-
migrate
|
|
36
|
-
};
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL21pZ3JhdGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4ZWNhfSBmcm9tICdleGVjYSc7XG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyLCBnZXRQYWNrYWdlSnNvbiwgcmVtb3ZlQ29uZmxpY3RNb2R1bGVzLCByZW1vdmVNb2R1bGVzfSBmcm9tICcuLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlncmF0ZU9wdGlvbnMge1xuICByZWFkb25seSBjbGlOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBwYWNrYWdlTWFuYWdlcj86IHN0cmluZztcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBNaWdyYXRlQ2FsbGJhY2sgPSB0eXBlb2YgcHJvY2Vzcy5leGl0O1xuXG5leHBvcnQgY29uc3QgbWlncmF0ZSA9IGFzeW5jIChjbWQ6IE1pZ3JhdGVPcHRpb25zLCBjYWxsYmFjazogTWlncmF0ZUNhbGxiYWNrID0gcHJvY2Vzcy5leGl0KTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge2NsaU5hbWUgPSAnTGV4JywgcGFja2FnZU1hbmFnZXI6IGNtZFBhY2thZ2VNYW5hZ2VyLCBxdWlldH0gPSBjbWQ7XG5cbiAgY29uc3QgY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpO1xuXG4gIC8vIC8vIERpc3BsYXkgbWVzc2FnZVxuICAvLyBsb2coYCR7Y2xpTmFtZX0gY29weWluZyBcIiR7dG99XCIuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICAvLyBTcGlubmVyXG4gIGNvbnN0IHNwaW5uZXIgPSBjcmVhdGVTcGlubmVyKHF1aWV0KTtcbiAgc3Bpbm5lci5zdGFydCgnUmVtb3Zpbmcgbm9kZSBtb2R1bGVzLi4uJyk7XG5cbiAgLy8gUmVtb3ZlIG5vZGVfbW9kdWxlc1xuICBhd2FpdCByZW1vdmVNb2R1bGVzKCk7XG5cbiAgY29uc3Qge3BhY2thZ2VNYW5hZ2VyOiBjb25maWdQYWNrYWdlTWFuYWdlcn0gPSBMZXhDb25maWcuY29uZmlnO1xuICBjb25zdCBwYWNrYWdlTWFuYWdlcjogc3RyaW5nID0gY21kUGFja2FnZU1hbmFnZXIgfHwgY29uZmlnUGFja2FnZU1hbmFnZXI7XG4gIGNvbnN0IHBhY2thZ2VQYXRoOiBzdHJpbmcgPSBgJHtjd2R9L3BhY2thZ2UuanNvbmA7XG4gIGNvbnN0IGFwcFBhY2thZ2UgPSBnZXRQYWNrYWdlSnNvbihwYWNrYWdlUGF0aCk7XG4gIGNvbnN0IHtkZXBlbmRlbmNpZXMgPSB7fSwgZGV2RGVwZW5kZW5jaWVzID0ge319ID0gYXBwUGFja2FnZTtcblxuICAvLyBSZW1vdmUgRVNCdWlsZCwgSmVzdCBhbmQgV2VicGFjayBmcm9tIGFwcCBzaW5jZSBpdCB3aWxsIGNvbmZsaWN0XG4gIGFwcFBhY2thZ2UuZGVwZW5kZW5jaWVzID0gcmVtb3ZlQ29uZmxpY3RNb2R1bGVzKGRlcGVuZGVuY2llcyk7XG4gIGFwcFBhY2thZ2UuZGV2RGVwZW5kZW5jaWVzID0gcmVtb3ZlQ29uZmxpY3RNb2R1bGVzKGRldkRlcGVuZGVuY2llcyk7XG5cbiAgLy8gSW5zdGFsbCBuZXcgbGlzdCBvZiBwYWNrYWdlc1xuICB0cnkge1xuICAgIGF3YWl0IGV4ZWNhKHBhY2thZ2VNYW5hZ2VyLCBbJ2luc3RhbGwnXSwge1xuICAgICAgZW5jb2Rpbmc6ICd1dGY4JyxcbiAgICAgIHN0ZGlvOiAnaW5oZXJpdCdcbiAgICB9KTtcblxuICAgIC8vIFN0b3AgbG9hZGVyXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdTdWNjZXNzZnVsbHkgbWlncmF0ZWQgYXBwIScpO1xuXG4gICAgLy8gS2lsbCBwcm9jZXNzXG4gICAgY2FsbGJhY2soMCk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byByZW1vdmUgbW9kdWxlcy4nKTtcblxuICAgIC8vIEtpbGwgcHJvY2Vzc1xuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiAxO1xuICB9XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxhQUFZO0FBRXBCLFNBQVEsaUJBQWdCO0FBQ3hCLFNBQVEsZUFBZSxnQkFBZ0IsdUJBQXVCLHFCQUFvQjtBQUNsRixTQUFRLFdBQVU7QUFVWCxNQUFNLFVBQVUsT0FBTyxLQUFxQixXQUE0QixRQUFRLFNBQTBCO0FBQy9HLFFBQU0sRUFBQyxVQUFVLE9BQU8sZ0JBQWdCLG1CQUFtQixNQUFLLElBQUk7QUFFcEUsUUFBTSxNQUFjLFFBQVEsSUFBSTtBQU1oQyxRQUFNLFVBQVUsY0FBYyxLQUFLO0FBQ25DLFVBQVEsTUFBTSwwQkFBMEI7QUFHeEMsUUFBTSxjQUFjO0FBRXBCLFFBQU0sRUFBQyxnQkFBZ0IscUJBQW9CLElBQUksVUFBVTtBQUN6RCxRQUFNLGlCQUF5QixxQkFBcUI7QUFDcEQsUUFBTSxjQUFzQixHQUFHLEdBQUc7QUFDbEMsUUFBTSxhQUFhLGVBQWUsV0FBVztBQUM3QyxRQUFNLEVBQUMsZUFBZSxDQUFDLEdBQUcsa0JBQWtCLENBQUMsRUFBQyxJQUFJO0FBR2xELGFBQVcsZUFBZSxzQkFBc0IsWUFBWTtBQUM1RCxhQUFXLGtCQUFrQixzQkFBc0IsZUFBZTtBQUdsRSxNQUFJO0FBQ0YsVUFBTSxNQUFNLGdCQUFnQixDQUFDLFNBQVMsR0FBRztBQUFBLE1BQ3ZDLFVBQVU7QUFBQSxNQUNWLE9BQU87QUFBQSxJQUNULENBQUM7QUFHRCxZQUFRLFFBQVEsNEJBQTRCO0FBRzVDLGFBQVMsQ0FBQztBQUNWLFdBQU87QUFBQSxFQUNULFNBQVEsT0FBTztBQUViLFFBQUk7QUFBQSxFQUFLLE9BQU8sV0FBVyxNQUFNLE9BQU8sSUFBSSxTQUFTLEtBQUs7QUFHMUQsWUFBUSxLQUFLLDJCQUEyQjtBQUd4QyxhQUFTLENBQUM7QUFDVixXQUFPO0FBQUEsRUFDVDtBQUNGOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/dist/commands/publish.js
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { execa } from "execa";
|
|
2
|
-
import semver from "semver";
|
|
3
|
-
import { LexConfig } from "../LexConfig.js";
|
|
4
|
-
import { createSpinner, getPackageJson, setPackageJson } from "../utils/app.js";
|
|
5
|
-
import { log } from "../utils/log.js";
|
|
6
|
-
const publish = async (cmd, callback = process.exit) => {
|
|
7
|
-
const { bump, cliName = "Lex", newVersion, otp, packageManager: cmdPackageManager, private: accessPrivate, tag, quiet } = cmd;
|
|
8
|
-
log(`${cliName} publishing npm module...`, "info", quiet);
|
|
9
|
-
const spinner = createSpinner(quiet);
|
|
10
|
-
await LexConfig.parseConfig(cmd);
|
|
11
|
-
const { packageManager: configPackageManager } = LexConfig.config;
|
|
12
|
-
const packageManager = cmdPackageManager || configPackageManager;
|
|
13
|
-
const publishOptions = ["publish"];
|
|
14
|
-
if (accessPrivate) {
|
|
15
|
-
publishOptions.push("--access", "restricted");
|
|
16
|
-
}
|
|
17
|
-
if (otp) {
|
|
18
|
-
publishOptions.push("--otp", otp);
|
|
19
|
-
}
|
|
20
|
-
if (tag) {
|
|
21
|
-
publishOptions.push("--tag", tag);
|
|
22
|
-
}
|
|
23
|
-
let nextVersion;
|
|
24
|
-
const packagePath = `${process.cwd()}/package.json`;
|
|
25
|
-
let packageJson;
|
|
26
|
-
let packageName;
|
|
27
|
-
let prevVersion;
|
|
28
|
-
try {
|
|
29
|
-
packageJson = getPackageJson(packagePath);
|
|
30
|
-
packageName = packageJson.name;
|
|
31
|
-
prevVersion = packageJson.version;
|
|
32
|
-
} catch (error) {
|
|
33
|
-
log(`
|
|
34
|
-
${cliName} Error: The file, ${packagePath}, was not found or is malformed.
|
|
35
|
-
`, "error", quiet);
|
|
36
|
-
log(error.message, "error");
|
|
37
|
-
callback(1);
|
|
38
|
-
return 1;
|
|
39
|
-
}
|
|
40
|
-
if (newVersion) {
|
|
41
|
-
nextVersion = newVersion;
|
|
42
|
-
} else if (bump) {
|
|
43
|
-
const formatBump = bump.toString().trim().toLowerCase();
|
|
44
|
-
if (formatBump) {
|
|
45
|
-
const validReleases = ["major", "minor", "patch"];
|
|
46
|
-
const validPreReleases = ["alpha", "beta", "rc"];
|
|
47
|
-
const packageVersion = semver.coerce(prevVersion);
|
|
48
|
-
if (!semver.valid(packageVersion)) {
|
|
49
|
-
log(`
|
|
50
|
-
${cliName} Error: Version is invalid in package.json`, "error", quiet);
|
|
51
|
-
callback(1);
|
|
52
|
-
return 1;
|
|
53
|
-
}
|
|
54
|
-
if (validReleases.includes(formatBump)) {
|
|
55
|
-
nextVersion = semver.inc(packageVersion, formatBump);
|
|
56
|
-
} else if (validPreReleases.includes(formatBump)) {
|
|
57
|
-
nextVersion = semver.inc(packageVersion, "prerelease", formatBump);
|
|
58
|
-
} else {
|
|
59
|
-
log(`
|
|
60
|
-
${cliName} Error: Bump type is invalid. please make sure it is one of the following: ${validReleases.join(", ")}, ${validPreReleases.join(", ")}`, "error", quiet);
|
|
61
|
-
callback(1);
|
|
62
|
-
return 1;
|
|
63
|
-
}
|
|
64
|
-
} else {
|
|
65
|
-
log(`
|
|
66
|
-
${cliName} Error: Bump type is missing.`, "error", quiet);
|
|
67
|
-
callback(1);
|
|
68
|
-
return 1;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
if (nextVersion && packageManager === "yarn") {
|
|
72
|
-
publishOptions.push("--new-version", nextVersion);
|
|
73
|
-
} else if (nextVersion && packageJson) {
|
|
74
|
-
try {
|
|
75
|
-
setPackageJson({ ...packageJson, version: nextVersion }, packagePath);
|
|
76
|
-
} catch (error) {
|
|
77
|
-
log(`
|
|
78
|
-
${cliName} Error: The file, ${packagePath}, was not found or is malformed. ${error.message}`, "error", quiet);
|
|
79
|
-
callback(1);
|
|
80
|
-
return 1;
|
|
81
|
-
}
|
|
82
|
-
} else {
|
|
83
|
-
nextVersion = prevVersion;
|
|
84
|
-
}
|
|
85
|
-
try {
|
|
86
|
-
await execa(packageManager, publishOptions, {
|
|
87
|
-
encoding: "utf8",
|
|
88
|
-
stdio: "inherit"
|
|
89
|
-
});
|
|
90
|
-
spinner.succeed(`Successfully published npm package: ${packageName}!`);
|
|
91
|
-
callback(0);
|
|
92
|
-
return 0;
|
|
93
|
-
} catch (error) {
|
|
94
|
-
log(`
|
|
95
|
-
${cliName} Error: ${error.message}`, "error", quiet);
|
|
96
|
-
spinner.fail("Publishing to npm has failed.");
|
|
97
|
-
callback(1);
|
|
98
|
-
return 1;
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
export {
|
|
102
|
-
publish
|
|
103
|
-
};
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL3B1Ymxpc2gudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4ZWNhfSBmcm9tICdleGVjYSc7XG5pbXBvcnQgc2VtdmVyLCB7UmVsZWFzZVR5cGV9IGZyb20gJ3NlbXZlcic7XG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjcmVhdGVTcGlubmVyLCBnZXRQYWNrYWdlSnNvbiwgc2V0UGFja2FnZUpzb259IGZyb20gJy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGJ1bXA/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5ld1ZlcnNpb24/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG90cD86IHN0cmluZztcbiAgcmVhZG9ubHkgcGFja2FnZU1hbmFnZXI/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaXZhdGU/OiBib29sZWFuO1xuICByZWFkb25seSBxdWlldD86IGJvb2xlYW47XG4gIHJlYWRvbmx5IHRhZz86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUHVibGlzaENhbGxiYWNrID0gdHlwZW9mIHByb2Nlc3MuZXhpdDtcblxuZXhwb3J0IGNvbnN0IHB1Ymxpc2ggPSBhc3luYyAoY21kOiBQdWJsaXNoT3B0aW9ucywgY2FsbGJhY2s6IFB1Ymxpc2hDYWxsYmFjayA9IHByb2Nlc3MuZXhpdCk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtidW1wLCBjbGlOYW1lID0gJ0xleCcsIG5ld1ZlcnNpb24sIG90cCwgcGFja2FnZU1hbmFnZXI6IGNtZFBhY2thZ2VNYW5hZ2VyLCBwcml2YXRlOiBhY2Nlc3NQcml2YXRlLCB0YWcsIHF1aWV0fSA9IGNtZDtcbiAgbG9nKGAke2NsaU5hbWV9IHB1Ymxpc2hpbmcgbnBtIG1vZHVsZS4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIC8vIFNwaW5uZXJcbiAgY29uc3Qgc3Bpbm5lciA9IGNyZWF0ZVNwaW5uZXIocXVpZXQpO1xuXG4gIC8vIEdldCBjdXN0b20gY29uZmlndXJhdGlvblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICBjb25zdCB7cGFja2FnZU1hbmFnZXI6IGNvbmZpZ1BhY2thZ2VNYW5hZ2VyfSA9IExleENvbmZpZy5jb25maWc7XG4gIGNvbnN0IHBhY2thZ2VNYW5hZ2VyOiBzdHJpbmcgPSBjbWRQYWNrYWdlTWFuYWdlciB8fCBjb25maWdQYWNrYWdlTWFuYWdlcjtcbiAgY29uc3QgcHVibGlzaE9wdGlvbnM6IHN0cmluZ1tdID0gWydwdWJsaXNoJ107XG5cbiAgaWYoYWNjZXNzUHJpdmF0ZSkge1xuICAgIHB1Ymxpc2hPcHRpb25zLnB1c2goJy0tYWNjZXNzJywgJ3Jlc3RyaWN0ZWQnKTtcbiAgfVxuXG4gIGlmKG90cCkge1xuICAgIHB1Ymxpc2hPcHRpb25zLnB1c2goJy0tb3RwJywgb3RwKTtcbiAgfVxuXG4gIGlmKHRhZykge1xuICAgIHB1Ymxpc2hPcHRpb25zLnB1c2goJy0tdGFnJywgdGFnKTtcbiAgfVxuXG4gIC8vIEdldCBuZXh0IHZlcnNpb24gbnVtYmVyXG4gIGxldCBuZXh0VmVyc2lvbjogc3RyaW5nO1xuICBjb25zdCBwYWNrYWdlUGF0aDogc3RyaW5nID0gYCR7cHJvY2Vzcy5jd2QoKX0vcGFja2FnZS5qc29uYDtcbiAgbGV0IHBhY2thZ2VKc29uO1xuICBsZXQgcGFja2FnZU5hbWU6IHN0cmluZztcbiAgbGV0IHByZXZWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLy8gSWYgbm90IHVzaW5nIHlhcm4sIHdlJ2xsIHVzZSBucG0gYW5kIG1hbnVhbGx5IHVwZGF0ZSB0aGUgdmVyc2lvbiBudW1iZXJcbiAgdHJ5IHtcbiAgICBwYWNrYWdlSnNvbiA9IGdldFBhY2thZ2VKc29uKHBhY2thZ2VQYXRoKTtcbiAgICBwYWNrYWdlTmFtZSA9IHBhY2thZ2VKc29uLm5hbWU7XG4gICAgcHJldlZlcnNpb24gPSBwYWNrYWdlSnNvbi52ZXJzaW9uO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBUaGUgZmlsZSwgJHtwYWNrYWdlUGF0aH0sIHdhcyBub3QgZm91bmQgb3IgaXMgbWFsZm9ybWVkLlxcbmAsICdlcnJvcicsIHF1aWV0KTtcbiAgICBsb2coZXJyb3IubWVzc2FnZSwgJ2Vycm9yJyk7XG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvLyBVcGRhdGUgcGFja2FnZS5qc29uIHdpdGggdGhlIGxhdGVzdCB2ZXJzaW9uXG4gIGlmKG5ld1ZlcnNpb24pIHtcbiAgICAvLyBJZiB1c2luZyBhIHNwZWNpZmljIHZlcnNpb24sIHdlIGRvbid0IG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSBuZXh0IGJ1bXBcbiAgICBuZXh0VmVyc2lvbiA9IG5ld1ZlcnNpb247XG4gIH0gZWxzZSBpZihidW1wKSB7XG4gICAgLy8gRGV0ZXJtaW5lIG5leHQgdmVyc2lvblxuICAgIGNvbnN0IGZvcm1hdEJ1bXAgPSBidW1wLnRvU3RyaW5nKClcbiAgICAgIC50cmltKClcbiAgICAgIC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYoZm9ybWF0QnVtcCkge1xuICAgICAgY29uc3QgdmFsaWRSZWxlYXNlczogc3RyaW5nW10gPSBbJ21ham9yJywgJ21pbm9yJywgJ3BhdGNoJ107XG4gICAgICBjb25zdCB2YWxpZFByZVJlbGVhc2VzOiBzdHJpbmdbXSA9IFsnYWxwaGEnLCAnYmV0YScsICdyYyddO1xuXG4gICAgICAvLyBNYWtlIHN1cmUgdGhlIHZlcnNpb24gaW4gcGFja2FnZS5qc29uIGlzIHZhbGlkXG4gICAgICBjb25zdCBwYWNrYWdlVmVyc2lvbiA9IHNlbXZlci5jb2VyY2UocHJldlZlcnNpb24pO1xuXG4gICAgICBpZighc2VtdmVyLnZhbGlkKHBhY2thZ2VWZXJzaW9uKSkge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IFZlcnNpb24gaXMgaW52YWxpZCBpbiBwYWNrYWdlLmpzb25gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cblxuICAgICAgaWYodmFsaWRSZWxlYXNlcy5pbmNsdWRlcyhmb3JtYXRCdW1wKSkge1xuICAgICAgICBuZXh0VmVyc2lvbiA9IHNlbXZlci5pbmMocGFja2FnZVZlcnNpb24sIGZvcm1hdEJ1bXAgYXMgUmVsZWFzZVR5cGUpO1xuICAgICAgfSBlbHNlIGlmKHZhbGlkUHJlUmVsZWFzZXMuaW5jbHVkZXMoZm9ybWF0QnVtcCkpIHtcbiAgICAgICAgbmV4dFZlcnNpb24gPSBzZW12ZXIuaW5jKHBhY2thZ2VWZXJzaW9uLCAncHJlcmVsZWFzZScsIGZvcm1hdEJ1bXApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBCdW1wIHR5cGUgaXMgaW52YWxpZC4gcGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZzogJHt2YWxpZFJlbGVhc2VzLmpvaW4oJywgJyl9LCAke3ZhbGlkUHJlUmVsZWFzZXMuam9pbignLCAnKX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBCdW1wIHR5cGUgaXMgbWlzc2luZy5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIGlmKG5leHRWZXJzaW9uICYmIHBhY2thZ2VNYW5hZ2VyID09PSAneWFybicpIHtcbiAgICBwdWJsaXNoT3B0aW9ucy5wdXNoKCctLW5ldy12ZXJzaW9uJywgbmV4dFZlcnNpb24pO1xuICB9IGVsc2UgaWYobmV4dFZlcnNpb24gJiYgcGFja2FnZUpzb24pIHtcbiAgICB0cnkge1xuICAgICAgLy8gU2F2ZSB1cGRhdGVkIHZlcnNpb25cbiAgICAgIHNldFBhY2thZ2VKc29uKHsuLi5wYWNrYWdlSnNvbiwgdmVyc2lvbjogbmV4dFZlcnNpb259LCBwYWNrYWdlUGF0aCk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBUaGUgZmlsZSwgJHtwYWNrYWdlUGF0aH0sIHdhcyBub3QgZm91bmQgb3IgaXMgbWFsZm9ybWVkLiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbmV4dFZlcnNpb24gPSBwcmV2VmVyc2lvbjtcbiAgfVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY2EocGFja2FnZU1hbmFnZXIsIHB1Ymxpc2hPcHRpb25zLCB7XG4gICAgICBlbmNvZGluZzogJ3V0ZjgnLFxuICAgICAgc3RkaW86ICdpbmhlcml0J1xuICAgIH0pO1xuXG4gICAgc3Bpbm5lci5zdWNjZWVkKGBTdWNjZXNzZnVsbHkgcHVibGlzaGVkIG5wbSBwYWNrYWdlOiAke3BhY2thZ2VOYW1lfSFgKTtcblxuICAgIC8vIEtpbGwgcHJvY2Vzc1xuICAgIGNhbGxiYWNrKDApO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgLy8gRGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgLy8gU3RvcCBzcGlubmVyXG4gICAgc3Bpbm5lci5mYWlsKCdQdWJsaXNoaW5nIHRvIG5wbSBoYXMgZmFpbGVkLicpO1xuXG4gICAgLy8gS2lsbCBwcm9jZXNzXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxTQUFRLGFBQVk7QUFDcEIsT0FBTyxZQUEyQjtBQUVsQyxTQUFRLGlCQUFnQjtBQUN4QixTQUFRLGVBQWUsZ0JBQWdCLHNCQUFxQjtBQUM1RCxTQUFRLFdBQVU7QUFlWCxNQUFNLFVBQVUsT0FBTyxLQUFxQixXQUE0QixRQUFRLFNBQTBCO0FBQy9HLFFBQU0sRUFBQyxNQUFNLFVBQVUsT0FBTyxZQUFZLEtBQUssZ0JBQWdCLG1CQUFtQixTQUFTLGVBQWUsS0FBSyxNQUFLLElBQUk7QUFDeEgsTUFBSSxHQUFHLE9BQU8sNkJBQTZCLFFBQVEsS0FBSztBQUd4RCxRQUFNLFVBQVUsY0FBYyxLQUFLO0FBR25DLFFBQU0sVUFBVSxZQUFZLEdBQUc7QUFFL0IsUUFBTSxFQUFDLGdCQUFnQixxQkFBb0IsSUFBSSxVQUFVO0FBQ3pELFFBQU0saUJBQXlCLHFCQUFxQjtBQUNwRCxRQUFNLGlCQUEyQixDQUFDLFNBQVM7QUFFM0MsTUFBRyxlQUFlO0FBQ2hCLG1CQUFlLEtBQUssWUFBWSxZQUFZO0FBQUEsRUFDOUM7QUFFQSxNQUFHLEtBQUs7QUFDTixtQkFBZSxLQUFLLFNBQVMsR0FBRztBQUFBLEVBQ2xDO0FBRUEsTUFBRyxLQUFLO0FBQ04sbUJBQWUsS0FBSyxTQUFTLEdBQUc7QUFBQSxFQUNsQztBQUdBLE1BQUk7QUFDSixRQUFNLGNBQXNCLEdBQUcsUUFBUSxJQUFJLENBQUM7QUFDNUMsTUFBSTtBQUNKLE1BQUk7QUFDSixNQUFJO0FBR0osTUFBSTtBQUNGLGtCQUFjLGVBQWUsV0FBVztBQUN4QyxrQkFBYyxZQUFZO0FBQzFCLGtCQUFjLFlBQVk7QUFBQSxFQUM1QixTQUFRLE9BQU87QUFDYixRQUFJO0FBQUEsRUFBSyxPQUFPLHFCQUFxQixXQUFXO0FBQUEsR0FBc0MsU0FBUyxLQUFLO0FBQ3BHLFFBQUksTUFBTSxTQUFTLE9BQU87QUFDMUIsYUFBUyxDQUFDO0FBQ1YsV0FBTztBQUFBLEVBQ1Q7QUFHQSxNQUFHLFlBQVk7QUFFYixrQkFBYztBQUFBLEVBQ2hCLFdBQVUsTUFBTTtBQUVkLFVBQU0sYUFBYSxLQUFLLFNBQVMsRUFDOUIsS0FBSyxFQUNMLFlBQVk7QUFFZixRQUFHLFlBQVk7QUFDYixZQUFNLGdCQUEwQixDQUFDLFNBQVMsU0FBUyxPQUFPO0FBQzFELFlBQU0sbUJBQTZCLENBQUMsU0FBUyxRQUFRLElBQUk7QUFHekQsWUFBTSxpQkFBaUIsT0FBTyxPQUFPLFdBQVc7QUFFaEQsVUFBRyxDQUFDLE9BQU8sTUFBTSxjQUFjLEdBQUc7QUFDaEMsWUFBSTtBQUFBLEVBQUssT0FBTyw4Q0FBOEMsU0FBUyxLQUFLO0FBQzVFLGlCQUFTLENBQUM7QUFDVixlQUFPO0FBQUEsTUFDVDtBQUVBLFVBQUcsY0FBYyxTQUFTLFVBQVUsR0FBRztBQUNyQyxzQkFBYyxPQUFPLElBQUksZ0JBQWdCLFVBQXlCO0FBQUEsTUFDcEUsV0FBVSxpQkFBaUIsU0FBUyxVQUFVLEdBQUc7QUFDL0Msc0JBQWMsT0FBTyxJQUFJLGdCQUFnQixjQUFjLFVBQVU7QUFBQSxNQUNuRSxPQUFPO0FBQ0wsWUFBSTtBQUFBLEVBQUssT0FBTyw4RUFBOEUsY0FBYyxLQUFLLElBQUksQ0FBQyxLQUFLLGlCQUFpQixLQUFLLElBQUksQ0FBQyxJQUFJLFNBQVMsS0FBSztBQUN4SyxpQkFBUyxDQUFDO0FBQ1YsZUFBTztBQUFBLE1BQ1Q7QUFBQSxJQUNGLE9BQU87QUFDTCxVQUFJO0FBQUEsRUFBSyxPQUFPLGlDQUFpQyxTQUFTLEtBQUs7QUFDL0QsZUFBUyxDQUFDO0FBQ1YsYUFBTztBQUFBLElBQ1Q7QUFBQSxFQUNGO0FBRUEsTUFBRyxlQUFlLG1CQUFtQixRQUFRO0FBQzNDLG1CQUFlLEtBQUssaUJBQWlCLFdBQVc7QUFBQSxFQUNsRCxXQUFVLGVBQWUsYUFBYTtBQUNwQyxRQUFJO0FBRUYscUJBQWUsRUFBQyxHQUFHLGFBQWEsU0FBUyxZQUFXLEdBQUcsV0FBVztBQUFBLElBQ3BFLFNBQVEsT0FBTztBQUNiLFVBQUk7QUFBQSxFQUFLLE9BQU8scUJBQXFCLFdBQVcsb0NBQW9DLE1BQU0sT0FBTyxJQUFJLFNBQVMsS0FBSztBQUNuSCxlQUFTLENBQUM7QUFDVixhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0YsT0FBTztBQUNMLGtCQUFjO0FBQUEsRUFDaEI7QUFFQSxNQUFJO0FBQ0YsVUFBTSxNQUFNLGdCQUFnQixnQkFBZ0I7QUFBQSxNQUMxQyxVQUFVO0FBQUEsTUFDVixPQUFPO0FBQUEsSUFDVCxDQUFDO0FBRUQsWUFBUSxRQUFRLHVDQUF1QyxXQUFXLEdBQUc7QUFHckUsYUFBUyxDQUFDO0FBQ1YsV0FBTztBQUFBLEVBQ1QsU0FBUSxPQUFPO0FBRWIsUUFBSTtBQUFBLEVBQUssT0FBTyxXQUFXLE1BQU0sT0FBTyxJQUFJLFNBQVMsS0FBSztBQUcxRCxZQUFRLEtBQUssK0JBQStCO0FBRzVDLGFBQVMsQ0FBQztBQUNWLFdBQU87QUFBQSxFQUNUO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|