@nlabs/lex 1.46.1 → 1.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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.js +72 -14
- package/dist/commands/ai/ai.js +303 -0
- package/dist/commands/ai/index.js +7 -0
- package/dist/commands/build/build.js +350 -0
- package/dist/commands/clean/clean.js +31 -0
- package/dist/commands/compile/compile.js +195 -0
- package/dist/commands/config/config.js +43 -0
- package/dist/commands/copy/copy.js +38 -0
- package/dist/commands/create/create.js +124 -0
- package/dist/commands/dev/dev.js +70 -0
- package/dist/commands/init/init.js +93 -0
- package/dist/commands/link/link.js +15 -0
- package/dist/commands/lint/lint.js +656 -0
- package/dist/commands/migrate/migrate.js +37 -0
- package/dist/commands/publish/publish.js +104 -0
- package/dist/commands/test/test.js +327 -0
- package/dist/commands/update/update.js +62 -0
- package/dist/commands/upgrade/upgrade.js +47 -0
- package/dist/commands/versions/versions.js +41 -0
- package/dist/create/changelog.js +3 -3
- package/dist/index.js +35 -0
- package/dist/jest.config.lex.d.ts +2 -0
- package/dist/lex.js +25 -22
- package/dist/types.js +1 -0
- package/dist/utils/aiService.js +290 -0
- package/dist/utils/app.js +4 -4
- package/dist/utils/file.js +1 -1
- package/dist/utils/log.js +2 -1
- package/dist/utils/reactShim.js +3 -3
- package/dist/webpack.config.d.ts +2 -0
- package/eslint.config.js +10 -0
- package/index.cjs +20 -0
- package/jest.config.cjs +31 -27
- package/jest.config.lex.js +90 -38
- package/jest.setup.js +5 -0
- package/lex.config.js +50 -0
- package/package.json +70 -50
- package/{.postcssrc.js → postcss.config.js} +21 -9
- package/tsconfig.build.json +7 -16
- package/tsconfig.json +2 -1
- package/webpack.config.js +136 -77
- package/.eslintrc +0 -45
- 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 -116
- 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/clean.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { LexConfig } from "../LexConfig.js";
|
|
2
|
-
import { createSpinner, removeFiles, removeModules } from "../utils/app.js";
|
|
3
|
-
import { log } from "../utils/log.js";
|
|
4
|
-
const clean = async (cmd, callback = () => ({})) => {
|
|
5
|
-
const { cliName = "Lex", quiet, snapshots } = cmd;
|
|
6
|
-
const spinner = createSpinner(quiet);
|
|
7
|
-
log(`${cliName} cleaning directory...`, "info", quiet);
|
|
8
|
-
await LexConfig.parseConfig(cmd);
|
|
9
|
-
spinner.start("Cleaning files...");
|
|
10
|
-
try {
|
|
11
|
-
await removeModules();
|
|
12
|
-
await removeFiles("./coverage", true);
|
|
13
|
-
await removeFiles("./npm-debug.log", true);
|
|
14
|
-
if (snapshots) {
|
|
15
|
-
await removeFiles("./**/__snapshots__", true);
|
|
16
|
-
}
|
|
17
|
-
spinner.succeed("Successfully cleaned!");
|
|
18
|
-
callback(0);
|
|
19
|
-
return 0;
|
|
20
|
-
} catch (error) {
|
|
21
|
-
log(`
|
|
22
|
-
${cliName} Error: ${error.message}`, "error", quiet);
|
|
23
|
-
spinner.fail("Failed to clean project.");
|
|
24
|
-
callback(1);
|
|
25
|
-
return 1;
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
export {
|
|
29
|
-
clean
|
|
30
|
-
};
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NsZWFuLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNwaW5uZXIsIHJlbW92ZUZpbGVzLCByZW1vdmVNb2R1bGVzfSBmcm9tICcuLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBjb25zdCBjbGVhbiA9IGFzeW5jIChjbWQ6IGFueSwgY2FsbGJhY2s6IGFueSA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBxdWlldCwgc25hcHNob3RzfSA9IGNtZDtcblxuICAvLyBTcGlubmVyXG4gIGNvbnN0IHNwaW5uZXIgPSBjcmVhdGVTcGlubmVyKHF1aWV0KTtcblxuICAvLyBEaXNwbGF5IHN0YXR1c1xuICBsb2coYCR7Y2xpTmFtZX0gY2xlYW5pbmcgZGlyZWN0b3J5Li4uYCwgJ2luZm8nLCBxdWlldCk7XG5cbiAgLy8gR2V0IGN1c3RvbSBjb25maWd1cmF0aW9uXG4gIGF3YWl0IExleENvbmZpZy5wYXJzZUNvbmZpZyhjbWQpO1xuXG4gIC8vIFN0YXJ0IGNsZWFuaW5nIHNwaW5uZXJcbiAgc3Bpbm5lci5zdGFydCgnQ2xlYW5pbmcgZmlsZXMuLi4nKTtcblxuICB0cnkge1xuICAgIC8vIFJlbW92ZSBub2RlX21vZHVsZXNcbiAgICBhd2FpdCByZW1vdmVNb2R1bGVzKCk7XG5cbiAgICAvLyBSZW1vdmUgdGVzdCBjb3ZlcmFnZSByZXBvcnRzXG4gICAgYXdhaXQgcmVtb3ZlRmlsZXMoJy4vY292ZXJhZ2UnLCB0cnVlKTtcblxuICAgIC8vIFJlbW92ZSBucG0gbG9nc1xuICAgIGF3YWl0IHJlbW92ZUZpbGVzKCcuL25wbS1kZWJ1Zy5sb2cnLCB0cnVlKTtcblxuICAgIGlmKHNuYXBzaG90cykge1xuICAgICAgYXdhaXQgcmVtb3ZlRmlsZXMoJy4vKiovX19zbmFwc2hvdHNfXycsIHRydWUpO1xuICAgIH1cblxuICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgIHNwaW5uZXIuc3VjY2VlZCgnU3VjY2Vzc2Z1bGx5IGNsZWFuZWQhJyk7XG5cbiAgICAvLyBTdG9wIHByb2Nlc3NcbiAgICBjYWxsYmFjaygwKTtcbiAgICByZXR1cm4gMDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIC8vIERpc3BsYXkgZXJyb3IgbWVzc2FnZVxuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIGNsZWFuIHByb2plY3QuJyk7XG5cbiAgICAvLyBLaWxsIHByb2Nlc3NcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxufTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLFNBQVEsaUJBQWdCO0FBQ3hCLFNBQVEsZUFBZSxhQUFhLHFCQUFvQjtBQUN4RCxTQUFRLFdBQVU7QUFFWCxNQUFNLFFBQVEsT0FBTyxLQUFVLFdBQWdCLE9BQU8sQ0FBQyxPQUF3QjtBQUNwRixRQUFNLEVBQUMsVUFBVSxPQUFPLE9BQU8sVUFBUyxJQUFJO0FBRzVDLFFBQU0sVUFBVSxjQUFjLEtBQUs7QUFHbkMsTUFBSSxHQUFHLE9BQU8sMEJBQTBCLFFBQVEsS0FBSztBQUdyRCxRQUFNLFVBQVUsWUFBWSxHQUFHO0FBRy9CLFVBQVEsTUFBTSxtQkFBbUI7QUFFakMsTUFBSTtBQUVGLFVBQU0sY0FBYztBQUdwQixVQUFNLFlBQVksY0FBYyxJQUFJO0FBR3BDLFVBQU0sWUFBWSxtQkFBbUIsSUFBSTtBQUV6QyxRQUFHLFdBQVc7QUFDWixZQUFNLFlBQVksc0JBQXNCLElBQUk7QUFBQSxJQUM5QztBQUdBLFlBQVEsUUFBUSx1QkFBdUI7QUFHdkMsYUFBUyxDQUFDO0FBQ1YsV0FBTztBQUFBLEVBQ1QsU0FBUSxPQUFPO0FBRWIsUUFBSTtBQUFBLEVBQUssT0FBTyxXQUFXLE1BQU0sT0FBTyxJQUFJLFNBQVMsS0FBSztBQUcxRCxZQUFRLEtBQUssMEJBQTBCO0FBR3ZDLGFBQVMsQ0FBQztBQUNWLFdBQU87QUFBQSxFQUNUO0FBQ0Y7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { clean } from "./clean";
|
|
2
|
-
import { LexConfig, defaultConfigValues } from "../LexConfig.js";
|
|
3
|
-
import { removeFiles, removeModules } from "../utils/app.js";
|
|
4
|
-
jest.mock("../utils/app", () => ({
|
|
5
|
-
...jest.requireActual("../utils/app"),
|
|
6
|
-
removeFiles: jest.fn(() => Promise.resolve()),
|
|
7
|
-
removeModules: jest.fn(() => Promise.resolve())
|
|
8
|
-
}));
|
|
9
|
-
jest.mock("../LexConfig", () => ({
|
|
10
|
-
LexConfig: {
|
|
11
|
-
config: {},
|
|
12
|
-
checkTypescriptConfig: jest.fn(),
|
|
13
|
-
parseConfig: jest.fn()
|
|
14
|
-
}
|
|
15
|
-
}));
|
|
16
|
-
describe("clean", () => {
|
|
17
|
-
let callback;
|
|
18
|
-
let oldConsole;
|
|
19
|
-
beforeAll(() => {
|
|
20
|
-
oldConsole = { ...console };
|
|
21
|
-
console = {
|
|
22
|
-
...oldConsole,
|
|
23
|
-
debug: jest.fn(),
|
|
24
|
-
error: jest.fn(),
|
|
25
|
-
warn: jest.fn()
|
|
26
|
-
};
|
|
27
|
-
});
|
|
28
|
-
beforeEach(() => {
|
|
29
|
-
callback = jest.fn();
|
|
30
|
-
LexConfig.config = {
|
|
31
|
-
...defaultConfigValues
|
|
32
|
-
};
|
|
33
|
-
});
|
|
34
|
-
afterAll(() => {
|
|
35
|
-
console = { ...oldConsole };
|
|
36
|
-
jest.resetAllMocks();
|
|
37
|
-
});
|
|
38
|
-
it("should clean using default config", async () => {
|
|
39
|
-
const status = await clean({}, callback);
|
|
40
|
-
expect(LexConfig.parseConfig).toHaveBeenCalled();
|
|
41
|
-
expect(removeFiles).toHaveBeenCalled();
|
|
42
|
-
expect(removeModules).toHaveBeenCalled();
|
|
43
|
-
expect(callback).toHaveBeenCalledWith(0);
|
|
44
|
-
expect(status).toBe(0);
|
|
45
|
-
});
|
|
46
|
-
it("should clean using config", async () => {
|
|
47
|
-
const status = await clean({
|
|
48
|
-
snapshots: true
|
|
49
|
-
}, callback);
|
|
50
|
-
expect(LexConfig.parseConfig).toHaveBeenCalled();
|
|
51
|
-
expect(removeFiles).toHaveBeenCalled();
|
|
52
|
-
expect(removeModules).toHaveBeenCalled();
|
|
53
|
-
expect(callback).toHaveBeenCalledWith(0);
|
|
54
|
-
expect(status).toBe(0);
|
|
55
|
-
});
|
|
56
|
-
it("should error on removing files", async () => {
|
|
57
|
-
removeFiles.mockImplementation(() => Promise.reject(new Error("Remove Error")));
|
|
58
|
-
const status = await clean({}, callback);
|
|
59
|
-
expect(callback).toHaveBeenCalledWith(1);
|
|
60
|
-
expect(status).toBe(1);
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NsZWFuLnRlc3QudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7Y2xlYW59IGZyb20gJy4vY2xlYW4nO1xuaW1wb3J0IHtMZXhDb25maWcsIGRlZmF1bHRDb25maWdWYWx1ZXN9IGZyb20gJy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge3JlbW92ZUZpbGVzLCByZW1vdmVNb2R1bGVzfSBmcm9tICcuLi91dGlscy9hcHAuanMnO1xuXG5qZXN0Lm1vY2soJy4uL3V0aWxzL2FwcCcsICgpID0+ICh7XG4gIC4uLmplc3QucmVxdWlyZUFjdHVhbCgnLi4vdXRpbHMvYXBwJyksXG4gIHJlbW92ZUZpbGVzOiBqZXN0LmZuKCgpID0+IFByb21pc2UucmVzb2x2ZSgpKSxcbiAgcmVtb3ZlTW9kdWxlczogamVzdC5mbigoKSA9PiBQcm9taXNlLnJlc29sdmUoKSlcbn0pKTtcblxuamVzdC5tb2NrKCcuLi9MZXhDb25maWcnLCAoKSA9PiAoe1xuICBMZXhDb25maWc6IHtcbiAgICBjb25maWc6IHt9LFxuICAgIGNoZWNrVHlwZXNjcmlwdENvbmZpZzogamVzdC5mbigpLFxuICAgIHBhcnNlQ29uZmlnOiBqZXN0LmZuKClcbiAgfVxufSkpO1xuXG5kZXNjcmliZSgnY2xlYW4nLCAoKSA9PiB7XG4gIGxldCBjYWxsYmFjazogamVzdC5Nb2NrO1xuICBsZXQgb2xkQ29uc29sZTtcblxuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIG9sZENvbnNvbGUgPSB7Li4uY29uc29sZX07XG4gICAgY29uc29sZSA9IHtcbiAgICAgIC4uLm9sZENvbnNvbGUsXG4gICAgICBkZWJ1ZzogamVzdC5mbigpLFxuICAgICAgZXJyb3I6IGplc3QuZm4oKSxcbiAgICAgIHdhcm46IGplc3QuZm4oKVxuICAgIH07XG4gIH0pO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGNhbGxiYWNrID0gamVzdC5mbigpO1xuICAgIExleENvbmZpZy5jb25maWcgPSB7XG4gICAgICAuLi5kZWZhdWx0Q29uZmlnVmFsdWVzXG4gICAgfTtcbiAgfSk7XG5cbiAgYWZ0ZXJBbGwoKCkgPT4ge1xuICAgIGNvbnNvbGUgPSB7Li4ub2xkQ29uc29sZX07XG4gICAgamVzdC5yZXNldEFsbE1vY2tzKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2xlYW4gdXNpbmcgZGVmYXVsdCBjb25maWcnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc3RhdHVzOiBudW1iZXIgPSBhd2FpdCBjbGVhbih7fSwgY2FsbGJhY2spO1xuICAgIGV4cGVjdChMZXhDb25maWcucGFyc2VDb25maWcpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBleHBlY3QocmVtb3ZlRmlsZXMpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBleHBlY3QocmVtb3ZlTW9kdWxlcykudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIGV4cGVjdChjYWxsYmFjaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoMCk7XG4gICAgZXhwZWN0KHN0YXR1cykudG9CZSgwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjbGVhbiB1c2luZyBjb25maWcnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc3RhdHVzOiBudW1iZXIgPSBhd2FpdCBjbGVhbih7XG4gICAgICBzbmFwc2hvdHM6IHRydWVcbiAgICB9LCBjYWxsYmFjayk7XG4gICAgZXhwZWN0KExleENvbmZpZy5wYXJzZUNvbmZpZykudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIGV4cGVjdChyZW1vdmVGaWxlcykudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIGV4cGVjdChyZW1vdmVNb2R1bGVzKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgZXhwZWN0KGNhbGxiYWNrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgwKTtcbiAgICBleHBlY3Qoc3RhdHVzKS50b0JlKDApO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIGVycm9yIG9uIHJlbW92aW5nIGZpbGVzJywgYXN5bmMgKCkgPT4ge1xuICAgIChyZW1vdmVGaWxlcyBhcyBqZXN0Lk1vY2spLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ1JlbW92ZSBFcnJvcicpKSk7XG4gICAgY29uc3Qgc3RhdHVzOiBudW1iZXIgPSBhd2FpdCBjbGVhbih7fSwgY2FsbGJhY2spO1xuICAgIGV4cGVjdChjYWxsYmFjaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoMSk7XG4gICAgZXhwZWN0KHN0YXR1cykudG9CZSgxKTtcbiAgfSk7XG59KTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVEsYUFBWTtBQUNwQixTQUFRLFdBQVcsMkJBQTBCO0FBQzdDLFNBQVEsYUFBYSxxQkFBb0I7QUFFekMsS0FBSyxLQUFLLGdCQUFnQixPQUFPO0FBQUEsRUFDL0IsR0FBRyxLQUFLLGNBQWMsY0FBYztBQUFBLEVBQ3BDLGFBQWEsS0FBSyxHQUFHLE1BQU0sUUFBUSxRQUFRLENBQUM7QUFBQSxFQUM1QyxlQUFlLEtBQUssR0FBRyxNQUFNLFFBQVEsUUFBUSxDQUFDO0FBQ2hELEVBQUU7QUFFRixLQUFLLEtBQUssZ0JBQWdCLE9BQU87QUFBQSxFQUMvQixXQUFXO0FBQUEsSUFDVCxRQUFRLENBQUM7QUFBQSxJQUNULHVCQUF1QixLQUFLLEdBQUc7QUFBQSxJQUMvQixhQUFhLEtBQUssR0FBRztBQUFBLEVBQ3ZCO0FBQ0YsRUFBRTtBQUVGLFNBQVMsU0FBUyxNQUFNO0FBQ3RCLE1BQUk7QUFDSixNQUFJO0FBRUosWUFBVSxNQUFNO0FBQ2QsaUJBQWEsRUFBQyxHQUFHLFFBQU87QUFDeEIsY0FBVTtBQUFBLE1BQ1IsR0FBRztBQUFBLE1BQ0gsT0FBTyxLQUFLLEdBQUc7QUFBQSxNQUNmLE9BQU8sS0FBSyxHQUFHO0FBQUEsTUFDZixNQUFNLEtBQUssR0FBRztBQUFBLElBQ2hCO0FBQUEsRUFDRixDQUFDO0FBRUQsYUFBVyxNQUFNO0FBQ2YsZUFBVyxLQUFLLEdBQUc7QUFDbkIsY0FBVSxTQUFTO0FBQUEsTUFDakIsR0FBRztBQUFBLElBQ0w7QUFBQSxFQUNGLENBQUM7QUFFRCxXQUFTLE1BQU07QUFDYixjQUFVLEVBQUMsR0FBRyxXQUFVO0FBQ3hCLFNBQUssY0FBYztBQUFBLEVBQ3JCLENBQUM7QUFFRCxLQUFHLHFDQUFxQyxZQUFZO0FBQ2xELFVBQU0sU0FBaUIsTUFBTSxNQUFNLENBQUMsR0FBRyxRQUFRO0FBQy9DLFdBQU8sVUFBVSxXQUFXLEVBQUUsaUJBQWlCO0FBQy9DLFdBQU8sV0FBVyxFQUFFLGlCQUFpQjtBQUNyQyxXQUFPLGFBQWEsRUFBRSxpQkFBaUI7QUFDdkMsV0FBTyxRQUFRLEVBQUUscUJBQXFCLENBQUM7QUFDdkMsV0FBTyxNQUFNLEVBQUUsS0FBSyxDQUFDO0FBQUEsRUFDdkIsQ0FBQztBQUVELEtBQUcsNkJBQTZCLFlBQVk7QUFDMUMsVUFBTSxTQUFpQixNQUFNLE1BQU07QUFBQSxNQUNqQyxXQUFXO0FBQUEsSUFDYixHQUFHLFFBQVE7QUFDWCxXQUFPLFVBQVUsV0FBVyxFQUFFLGlCQUFpQjtBQUMvQyxXQUFPLFdBQVcsRUFBRSxpQkFBaUI7QUFDckMsV0FBTyxhQUFhLEVBQUUsaUJBQWlCO0FBQ3ZDLFdBQU8sUUFBUSxFQUFFLHFCQUFxQixDQUFDO0FBQ3ZDLFdBQU8sTUFBTSxFQUFFLEtBQUssQ0FBQztBQUFBLEVBQ3ZCLENBQUM7QUFFRCxLQUFHLGtDQUFrQyxZQUFZO0FBQy9DLElBQUMsWUFBMEIsbUJBQW1CLE1BQU0sUUFBUSxPQUFPLElBQUksTUFBTSxjQUFjLENBQUMsQ0FBQztBQUM3RixVQUFNLFNBQWlCLE1BQU0sTUFBTSxDQUFDLEdBQUcsUUFBUTtBQUMvQyxXQUFPLFFBQVEsRUFBRSxxQkFBcUIsQ0FBQztBQUN2QyxXQUFPLE1BQU0sRUFBRSxLQUFLLENBQUM7QUFBQSxFQUN2QixDQUFDO0FBQ0gsQ0FBQzsiLAogICJuYW1lcyI6IFtdCn0K
|
package/dist/commands/compile.js
DELETED
|
@@ -1,195 +0,0 @@
|
|
|
1
|
-
import { execa } from "execa";
|
|
2
|
-
import { existsSync, lstatSync, readdirSync } from "fs";
|
|
3
|
-
import { sync as globSync } from "glob";
|
|
4
|
-
import { extname as pathExtname, join as pathJoin, resolve as pathResolve } from "path";
|
|
5
|
-
import { URL } from "url";
|
|
6
|
-
import { LexConfig } from "../LexConfig.js";
|
|
7
|
-
import { checkLinkedModules, copyFiles, createSpinner, getFilesByExt, removeFiles } from "../utils/app.js";
|
|
8
|
-
import { relativeNodePath } from "../utils/file.js";
|
|
9
|
-
import { log } from "../utils/log.js";
|
|
10
|
-
const hasFileType = (startPath, ext) => {
|
|
11
|
-
if (!existsSync(startPath)) {
|
|
12
|
-
return false;
|
|
13
|
-
}
|
|
14
|
-
const files = readdirSync(startPath);
|
|
15
|
-
return files.some((file) => {
|
|
16
|
-
const filename = pathJoin(startPath, file);
|
|
17
|
-
const fileExt = pathExtname(filename);
|
|
18
|
-
const stat = lstatSync(filename);
|
|
19
|
-
if (stat.isDirectory()) {
|
|
20
|
-
return hasFileType(filename, ext);
|
|
21
|
-
}
|
|
22
|
-
return ext.includes(fileExt);
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
const compile = async (cmd, callback = () => ({})) => {
|
|
26
|
-
const {
|
|
27
|
-
cliName = "Lex",
|
|
28
|
-
config,
|
|
29
|
-
outputPath,
|
|
30
|
-
quiet,
|
|
31
|
-
remove,
|
|
32
|
-
sourcePath,
|
|
33
|
-
watch
|
|
34
|
-
} = cmd;
|
|
35
|
-
const spinner = createSpinner(quiet);
|
|
36
|
-
log(`${cliName} compiling...`, "info", quiet);
|
|
37
|
-
await LexConfig.parseConfig(cmd);
|
|
38
|
-
const { outputFullPath, sourceFullPath, useTypescript } = LexConfig.config;
|
|
39
|
-
const outputDir = outputPath || outputFullPath;
|
|
40
|
-
const sourceDir = sourcePath ? pathResolve(process.cwd(), `./${sourcePath}`) : sourceFullPath;
|
|
41
|
-
const dirName = new URL(".", import.meta.url).pathname;
|
|
42
|
-
const dirPath = pathResolve(dirName, "../..");
|
|
43
|
-
checkLinkedModules();
|
|
44
|
-
if (remove) {
|
|
45
|
-
await removeFiles(outputDir);
|
|
46
|
-
}
|
|
47
|
-
if (useTypescript) {
|
|
48
|
-
LexConfig.checkTypescriptConfig();
|
|
49
|
-
const typescriptPath = relativeNodePath("typescript/bin/tsc", dirPath);
|
|
50
|
-
const typescriptOptions = config ? ["-p", config] : [
|
|
51
|
-
"--allowSyntheticDefaultImports",
|
|
52
|
-
"--baseUrl",
|
|
53
|
-
sourceDir,
|
|
54
|
-
"--declaration",
|
|
55
|
-
"--emitDeclarationOnly",
|
|
56
|
-
"--lib",
|
|
57
|
-
["ESNext", "DOM"],
|
|
58
|
-
"--module",
|
|
59
|
-
"esnext",
|
|
60
|
-
"--moduleResolution",
|
|
61
|
-
"node",
|
|
62
|
-
"--noImplicitReturns",
|
|
63
|
-
"--noImplicitThis",
|
|
64
|
-
"--outDir",
|
|
65
|
-
outputDir,
|
|
66
|
-
"--removeComments",
|
|
67
|
-
"--resolveJsonModule",
|
|
68
|
-
"--target",
|
|
69
|
-
"ESNext",
|
|
70
|
-
"--typeRoots",
|
|
71
|
-
["node_modules/@types", "node_modules/json-d-ts"]
|
|
72
|
-
];
|
|
73
|
-
spinner.start("Static type checking with Typescript...");
|
|
74
|
-
try {
|
|
75
|
-
await execa(typescriptPath, typescriptOptions, { encoding: "utf8" });
|
|
76
|
-
spinner.succeed("Successfully completed type checking!");
|
|
77
|
-
} catch (error) {
|
|
78
|
-
log(`
|
|
79
|
-
${cliName} Error: ${error.message}`, "error", quiet);
|
|
80
|
-
spinner.fail("Type checking failed.");
|
|
81
|
-
callback(1);
|
|
82
|
-
return 1;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
const globOptions = {
|
|
86
|
-
cwd: sourceDir,
|
|
87
|
-
dot: false,
|
|
88
|
-
nodir: true,
|
|
89
|
-
nosort: true
|
|
90
|
-
};
|
|
91
|
-
const tsFiles = globSync(`${sourceDir}/**/!(*.spec|*.test).ts*`, globOptions);
|
|
92
|
-
const jsFiles = globSync(`${sourceDir}/**/!(*.spec|*.test).js`, globOptions);
|
|
93
|
-
const sourceFiles = [...tsFiles, ...jsFiles];
|
|
94
|
-
const esbuildPath = relativeNodePath("esbuild/bin/esbuild", dirPath);
|
|
95
|
-
const esbuildOptions = [
|
|
96
|
-
...sourceFiles,
|
|
97
|
-
"--color=true",
|
|
98
|
-
"--format=cjs",
|
|
99
|
-
`--outdir=${outputDir}`,
|
|
100
|
-
"--platform=node",
|
|
101
|
-
"--sourcemap=inline",
|
|
102
|
-
"--target=node20"
|
|
103
|
-
];
|
|
104
|
-
if (watch) {
|
|
105
|
-
esbuildOptions.push("--watch");
|
|
106
|
-
}
|
|
107
|
-
const cssFiles = getFilesByExt(".css", LexConfig.config);
|
|
108
|
-
if (cssFiles.length) {
|
|
109
|
-
const postcssPath = relativeNodePath("postcss-cli/index.js", dirPath);
|
|
110
|
-
const postcssOptions = [
|
|
111
|
-
`${sourceDir}/**/**.css`,
|
|
112
|
-
"--base",
|
|
113
|
-
sourceDir,
|
|
114
|
-
"--dir",
|
|
115
|
-
outputDir,
|
|
116
|
-
"--config",
|
|
117
|
-
pathResolve(dirName, "../../.postcssrc.js")
|
|
118
|
-
];
|
|
119
|
-
try {
|
|
120
|
-
await execa(postcssPath, postcssOptions, { encoding: "utf8" });
|
|
121
|
-
spinner.succeed(`Successfully formatted ${cssFiles.length} css files!`);
|
|
122
|
-
} catch (error) {
|
|
123
|
-
log(`
|
|
124
|
-
${cliName} Error: ${error.message}`, "error", quiet);
|
|
125
|
-
spinner.fail("Failed formatting css.");
|
|
126
|
-
callback(1);
|
|
127
|
-
return 1;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
const gifFiles = getFilesByExt(".gif", LexConfig.config);
|
|
131
|
-
const jpgFiles = getFilesByExt(".jpg", LexConfig.config);
|
|
132
|
-
const pngFiles = getFilesByExt(".png", LexConfig.config);
|
|
133
|
-
const svgFiles = getFilesByExt(".svg", LexConfig.config);
|
|
134
|
-
const imageFiles = [...gifFiles, ...jpgFiles, ...pngFiles, ...svgFiles];
|
|
135
|
-
if (imageFiles.length) {
|
|
136
|
-
try {
|
|
137
|
-
await copyFiles(imageFiles, "image", spinner, LexConfig.config);
|
|
138
|
-
} catch (error) {
|
|
139
|
-
log(`
|
|
140
|
-
${cliName} Error: ${error.message}`, "error", quiet);
|
|
141
|
-
spinner.fail("Failed to move images to output directory.");
|
|
142
|
-
callback(1);
|
|
143
|
-
return 1;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
const ttfFiles = getFilesByExt(".ttf", LexConfig.config);
|
|
147
|
-
const otfFiles = getFilesByExt(".otf", LexConfig.config);
|
|
148
|
-
const woffFiles = getFilesByExt(".woff", LexConfig.config);
|
|
149
|
-
const woff2Files = getFilesByExt(".woff2", LexConfig.config);
|
|
150
|
-
const fontFiles = [...ttfFiles, ...otfFiles, ...woffFiles, ...woff2Files];
|
|
151
|
-
if (fontFiles.length) {
|
|
152
|
-
try {
|
|
153
|
-
await copyFiles(fontFiles, "font", spinner, LexConfig.config);
|
|
154
|
-
} catch (error) {
|
|
155
|
-
log(`
|
|
156
|
-
${cliName} Error: ${error.message}`, "error", quiet);
|
|
157
|
-
spinner.fail("Failed to move fonts to output directory.");
|
|
158
|
-
callback(1);
|
|
159
|
-
return 1;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
const mdFiles = getFilesByExt(".md", LexConfig.config);
|
|
163
|
-
if (mdFiles.length) {
|
|
164
|
-
try {
|
|
165
|
-
await copyFiles(mdFiles, "documents", spinner, LexConfig.config);
|
|
166
|
-
} catch (error) {
|
|
167
|
-
log(`
|
|
168
|
-
${cliName} Error: ${error.message}`, "error", quiet);
|
|
169
|
-
spinner.fail("Failed to move docs to output directory.");
|
|
170
|
-
callback(1);
|
|
171
|
-
return 1;
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
spinner.start(watch ? "Watching for changes..." : "Compiling with ESBuild...");
|
|
175
|
-
try {
|
|
176
|
-
await execa(esbuildPath, esbuildOptions, { encoding: "utf8" });
|
|
177
|
-
spinner.succeed("Compile completed successfully!");
|
|
178
|
-
} catch (error) {
|
|
179
|
-
log(`
|
|
180
|
-
${cliName} Error: ${error.message}`, "error", quiet);
|
|
181
|
-
if (!quiet) {
|
|
182
|
-
console.error(error);
|
|
183
|
-
}
|
|
184
|
-
spinner.fail("Code compiling failed.");
|
|
185
|
-
callback(1);
|
|
186
|
-
return 1;
|
|
187
|
-
}
|
|
188
|
-
callback(0);
|
|
189
|
-
return 0;
|
|
190
|
-
};
|
|
191
|
-
export {
|
|
192
|
-
compile,
|
|
193
|
-
hasFileType
|
|
194
|
-
};
|
|
195
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NvbXBpbGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4ZWNhfSBmcm9tICdleGVjYSc7XG5pbXBvcnQge2V4aXN0c1N5bmMsIGxzdGF0U3luYywgcmVhZGRpclN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7c3luYyBhcyBnbG9iU3luY30gZnJvbSAnZ2xvYic7XG5pbXBvcnQge2V4dG5hbWUgYXMgcGF0aEV4dG5hbWUsIGpvaW4gYXMgcGF0aEpvaW4sIHJlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtVUkx9IGZyb20gJ3VybCc7XG5cbmltcG9ydCB7TGV4Q29uZmlnfSBmcm9tICcuLi9MZXhDb25maWcuanMnO1xuaW1wb3J0IHtjaGVja0xpbmtlZE1vZHVsZXMsIGNvcHlGaWxlcywgY3JlYXRlU3Bpbm5lciwgZ2V0RmlsZXNCeUV4dCwgcmVtb3ZlRmlsZXN9IGZyb20gJy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge3JlbGF0aXZlTm9kZVBhdGh9IGZyb20gJy4uL3V0aWxzL2ZpbGUuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBjb25zdCBoYXNGaWxlVHlwZSA9IChzdGFydFBhdGg6IHN0cmluZywgZXh0OiBzdHJpbmdbXSk6IGJvb2xlYW4gPT4ge1xuICBpZighZXhpc3RzU3luYyhzdGFydFBhdGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZmlsZXM6IHN0cmluZ1tdID0gcmVhZGRpclN5bmMoc3RhcnRQYXRoKTtcblxuICByZXR1cm4gZmlsZXMuc29tZSgoZmlsZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgZmlsZW5hbWU6IHN0cmluZyA9IHBhdGhKb2luKHN0YXJ0UGF0aCwgZmlsZSk7XG4gICAgY29uc3QgZmlsZUV4dDogc3RyaW5nID0gcGF0aEV4dG5hbWUoZmlsZW5hbWUpO1xuICAgIGNvbnN0IHN0YXQgPSBsc3RhdFN5bmMoZmlsZW5hbWUpO1xuXG4gICAgaWYoc3RhdC5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAvLyBSZWN1cnNpdmUgc2VhcmNoXG4gICAgICByZXR1cm4gaGFzRmlsZVR5cGUoZmlsZW5hbWUsIGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGV4dC5pbmNsdWRlcyhmaWxlRXh0KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY29tcGlsZSA9IGFzeW5jIChjbWQ6IGFueSwgY2FsbGJhY2s6IGFueSA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7XG4gICAgY2xpTmFtZSA9ICdMZXgnLFxuICAgIGNvbmZpZyxcbiAgICBvdXRwdXRQYXRoLFxuICAgIHF1aWV0LFxuICAgIHJlbW92ZSxcbiAgICBzb3VyY2VQYXRoLFxuICAgIHdhdGNoXG4gIH0gPSBjbWQ7XG5cbiAgLy8gU3Bpbm5lclxuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgLy8gRGlzcGxheSBzdGF0dXNcbiAgbG9nKGAke2NsaU5hbWV9IGNvbXBpbGluZy4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIC8vIEdldCBjdXN0b20gY29uZmlndXJhdGlvblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICAvLyBDb21waWxlIHR5cGVcbiAgY29uc3Qge291dHB1dEZ1bGxQYXRoLCBzb3VyY2VGdWxsUGF0aCwgdXNlVHlwZXNjcmlwdH0gPSBMZXhDb25maWcuY29uZmlnO1xuICBjb25zdCBvdXRwdXREaXI6IHN0cmluZyA9IG91dHB1dFBhdGggfHwgb3V0cHV0RnVsbFBhdGg7XG4gIGNvbnN0IHNvdXJjZURpcjogc3RyaW5nID0gc291cmNlUGF0aCA/IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIGAuLyR7c291cmNlUGF0aH1gKSA6IHNvdXJjZUZ1bGxQYXRoO1xuICBjb25zdCBkaXJOYW1lID0gbmV3IFVSTCgnLicsIGltcG9ydC5tZXRhLnVybCkucGF0aG5hbWU7XG4gIGNvbnN0IGRpclBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLicpO1xuXG4gIC8vIENoZWNrIGZvciBsaW5rZWQgbW9kdWxlc1xuICBjaGVja0xpbmtlZE1vZHVsZXMoKTtcblxuICAvLyBDbGVhbiBvdXRwdXQgZGlyZWN0b3J5IGJlZm9yZSB3ZSBzdGFydCBhZGRpbmcgaW4gbmV3IGZpbGVzXG4gIGlmKHJlbW92ZSkge1xuICAgIGF3YWl0IHJlbW92ZUZpbGVzKG91dHB1dERpcik7XG4gIH1cblxuICAvLyBBZGQgdHNjb25maWcgZmlsZSBpZiBub25lIGV4aXN0c1xuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgLy8gTWFrZSBzdXJlIHRzY29uZmlnLmpzb24gZXhpc3RzXG4gICAgTGV4Q29uZmlnLmNoZWNrVHlwZXNjcmlwdENvbmZpZygpO1xuXG4gICAgLy8gQ2hlY2sgc3RhdGljIHR5cGVzIHdpdGggdHlwZXNjcmlwdFxuICAgIGNvbnN0IHR5cGVzY3JpcHRQYXRoOiBzdHJpbmcgPSByZWxhdGl2ZU5vZGVQYXRoKCd0eXBlc2NyaXB0L2Jpbi90c2MnLCBkaXJQYXRoKTtcbiAgICBjb25zdCB0eXBlc2NyaXB0T3B0aW9uczogc3RyaW5nW10gPSBjb25maWcgP1xuICAgICAgWyctcCcsIGNvbmZpZ10gOlxuICAgICAgW1xuICAgICAgICAnLS1hbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzJyxcbiAgICAgICAgJy0tYmFzZVVybCcsIHNvdXJjZURpcixcbiAgICAgICAgJy0tZGVjbGFyYXRpb24nLFxuICAgICAgICAnLS1lbWl0RGVjbGFyYXRpb25Pbmx5JyxcbiAgICAgICAgJy0tbGliJywgWydFU05leHQnLCAnRE9NJ10sXG4gICAgICAgICctLW1vZHVsZScsICdlc25leHQnLFxuICAgICAgICAnLS1tb2R1bGVSZXNvbHV0aW9uJywgJ25vZGUnLFxuICAgICAgICAnLS1ub0ltcGxpY2l0UmV0dXJucycsXG4gICAgICAgICctLW5vSW1wbGljaXRUaGlzJyxcbiAgICAgICAgJy0tb3V0RGlyJywgb3V0cHV0RGlyLFxuICAgICAgICAnLS1yZW1vdmVDb21tZW50cycsXG4gICAgICAgICctLXJlc29sdmVKc29uTW9kdWxlJyxcbiAgICAgICAgJy0tdGFyZ2V0JywgJ0VTTmV4dCcsXG4gICAgICAgICctLXR5cGVSb290cycsIFsnbm9kZV9tb2R1bGVzL0B0eXBlcycsICdub2RlX21vZHVsZXMvanNvbi1kLXRzJ11cbiAgICAgIF07XG5cbiAgICAvLyBTdGFydCB0eXBlIGNoZWNraW5nIHNwaW5uZXJcbiAgICBzcGlubmVyLnN0YXJ0KCdTdGF0aWMgdHlwZSBjaGVja2luZyB3aXRoIFR5cGVzY3JpcHQuLi4nKTtcblxuICAgIC8vIFR5cGUgY2hlY2tpbmdcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlY2EodHlwZXNjcmlwdFBhdGgsIHR5cGVzY3JpcHRPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4J30pO1xuXG4gICAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICAgIHNwaW5uZXIuc3VjY2VlZCgnU3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCB0eXBlIGNoZWNraW5nIScpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIC8vIERpc3BsYXkgZXJyb3IgbWVzc2FnZVxuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICAgIHNwaW5uZXIuZmFpbCgnVHlwZSBjaGVja2luZyBmYWlsZWQuJyk7XG5cbiAgICAgIC8vIEtpbGwgUHJvY2Vzc1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICAvLyBTb3VyY2UgZmlsZXNcbiAgY29uc3QgZ2xvYk9wdGlvbnMgPSB7XG4gICAgY3dkOiBzb3VyY2VEaXIsXG4gICAgZG90OiBmYWxzZSxcbiAgICBub2RpcjogdHJ1ZSxcbiAgICBub3NvcnQ6IHRydWVcbiAgfTtcbiAgY29uc3QgdHNGaWxlczogc3RyaW5nW10gPSBnbG9iU3luYyhgJHtzb3VyY2VEaXJ9LyoqLyEoKi5zcGVjfCoudGVzdCkudHMqYCwgZ2xvYk9wdGlvbnMpO1xuICBjb25zdCBqc0ZpbGVzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKGAke3NvdXJjZURpcn0vKiovISgqLnNwZWN8Ki50ZXN0KS5qc2AsIGdsb2JPcHRpb25zKTtcbiAgY29uc3Qgc291cmNlRmlsZXM6IHN0cmluZ1tdID0gWy4uLnRzRmlsZXMsIC4uLmpzRmlsZXNdO1xuXG4gIC8vIEVTQnVpbGQgb3B0aW9uc1xuICBjb25zdCBlc2J1aWxkUGF0aDogc3RyaW5nID0gcmVsYXRpdmVOb2RlUGF0aCgnZXNidWlsZC9iaW4vZXNidWlsZCcsIGRpclBhdGgpO1xuICBjb25zdCBlc2J1aWxkT3B0aW9uczogc3RyaW5nW10gPSBbXG4gICAgLi4uc291cmNlRmlsZXMsXG4gICAgJy0tY29sb3I9dHJ1ZScsXG4gICAgJy0tZm9ybWF0PWNqcycsXG4gICAgYC0tb3V0ZGlyPSR7b3V0cHV0RGlyfWAsXG4gICAgJy0tcGxhdGZvcm09bm9kZScsXG4gICAgJy0tc291cmNlbWFwPWlubGluZScsXG4gICAgJy0tdGFyZ2V0PW5vZGUyMCdcbiAgXTtcblxuICBpZih3YXRjaCkge1xuICAgIGVzYnVpbGRPcHRpb25zLnB1c2goJy0td2F0Y2gnKTtcbiAgfVxuXG4gIC8vIFVzZSBQb3N0Q1NTIGZvciBDU1MgZmlsZXNcbiAgY29uc3QgY3NzRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLmNzcycsIExleENvbmZpZy5jb25maWcpO1xuXG4gIGlmKGNzc0ZpbGVzLmxlbmd0aCkge1xuICAgIGNvbnN0IHBvc3Rjc3NQYXRoOiBzdHJpbmcgPSByZWxhdGl2ZU5vZGVQYXRoKCdwb3N0Y3NzLWNsaS9pbmRleC5qcycsIGRpclBhdGgpO1xuICAgIGNvbnN0IHBvc3Rjc3NPcHRpb25zOiBzdHJpbmdbXSA9IFtcbiAgICAgIGAke3NvdXJjZURpcn0vKiovKiouY3NzYCxcbiAgICAgICctLWJhc2UnLFxuICAgICAgc291cmNlRGlyLFxuICAgICAgJy0tZGlyJyxcbiAgICAgIG91dHB1dERpcixcbiAgICAgICctLWNvbmZpZycsXG4gICAgICBwYXRoUmVzb2x2ZShkaXJOYW1lLCAnLi4vLi4vLnBvc3Rjc3NyYy5qcycpXG4gICAgXTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBleGVjYShwb3N0Y3NzUGF0aCwgcG9zdGNzc09wdGlvbnMsIHtlbmNvZGluZzogJ3V0ZjgnfSk7XG4gICAgICBzcGlubmVyLnN1Y2NlZWQoYFN1Y2Nlc3NmdWxseSBmb3JtYXR0ZWQgJHtjc3NGaWxlcy5sZW5ndGh9IGNzcyBmaWxlcyFgKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgLy8gU3RvcCBzcGlubmVyXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCBmb3JtYXR0aW5nIGNzcy4nKTtcblxuICAgICAgLy8gS2lsbCBQcm9jZXNzXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvcHkgaW1hZ2UgZmlsZXNcbiAgY29uc3QgZ2lmRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLmdpZicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBqcGdGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuanBnJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IHBuZ0ZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5wbmcnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgc3ZnRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLnN2ZycsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBpbWFnZUZpbGVzOiBzdHJpbmdbXSA9IFsuLi5naWZGaWxlcywgLi4uanBnRmlsZXMsIC4uLnBuZ0ZpbGVzLCAuLi5zdmdGaWxlc107XG5cbiAgaWYoaW1hZ2VGaWxlcy5sZW5ndGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29weUZpbGVzKGltYWdlRmlsZXMsICdpbWFnZScsIHNwaW5uZXIsIExleENvbmZpZy5jb25maWcpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIC8vIERpc3BsYXkgZXJyb3IgbWVzc2FnZVxuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIHRvIG1vdmUgaW1hZ2VzIHRvIG91dHB1dCBkaXJlY3RvcnkuJyk7XG5cbiAgICAgIC8vIEtpbGwgUHJvY2Vzc1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICAvLyBDb3B5IGZvbnQgZmlsZXNcbiAgY29uc3QgdHRmRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLnR0ZicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBvdGZGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcub3RmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IHdvZmZGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcud29mZicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCB3b2ZmMkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy53b2ZmMicsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBmb250RmlsZXM6IHN0cmluZ1tdID0gWy4uLnR0ZkZpbGVzLCAuLi5vdGZGaWxlcywgLi4ud29mZkZpbGVzLCAuLi53b2ZmMkZpbGVzXTtcblxuICBpZihmb250RmlsZXMubGVuZ3RoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNvcHlGaWxlcyhmb250RmlsZXMsICdmb250Jywgc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgLy8gRGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gbW92ZSBmb250cyB0byBvdXRwdXQgZGlyZWN0b3J5LicpO1xuXG4gICAgICAvLyBLaWxsIFByb2Nlc3NcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29weSBtYXJrZG93biBmaWxlc1xuICBjb25zdCBtZEZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5tZCcsIExleENvbmZpZy5jb25maWcpO1xuXG4gIGlmKG1kRmlsZXMubGVuZ3RoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGNvcHlGaWxlcyhtZEZpbGVzLCAnZG9jdW1lbnRzJywgc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgLy8gRGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gbW92ZSBkb2NzIHRvIG91dHB1dCBkaXJlY3RvcnkuJyk7XG5cbiAgICAgIC8vIEtpbGwgUHJvY2Vzc1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICAvLyBTdGFydCBjb21waWxlIHNwaW5uZXJcbiAgc3Bpbm5lci5zdGFydCh3YXRjaCA/ICdXYXRjaGluZyBmb3IgY2hhbmdlcy4uLicgOiAnQ29tcGlsaW5nIHdpdGggRVNCdWlsZC4uLicpO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlY2EoZXNidWlsZFBhdGgsIGVzYnVpbGRPcHRpb25zLCB7ZW5jb2Rpbmc6ICd1dGY4J30pO1xuXG4gICAgLy8gU3RvcCBzcGlubmVyXG4gICAgc3Bpbm5lci5zdWNjZWVkKCdDb21waWxlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJyk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICBpZighcXVpZXQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgIHNwaW5uZXIuZmFpbCgnQ29kZSBjb21waWxpbmcgZmFpbGVkLicpO1xuXG4gICAgLy8gS2lsbCBQcm9jZXNzXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvLyBTdG9wIHByb2Nlc3NcbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiAwO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLFNBQVEsYUFBWTtBQUNwQixTQUFRLFlBQVksV0FBVyxtQkFBa0I7QUFDakQsU0FBUSxRQUFRLGdCQUFlO0FBQy9CLFNBQVEs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
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import { existsSync, readdirSync } from "fs";
|
|
2
|
-
import { compile, hasFileType } from "./compile.js";
|
|
3
|
-
import { LexConfig, defaultConfigValues } from "../LexConfig.js";
|
|
4
|
-
import { checkLinkedModules, removeFiles } from "../utils/app.js";
|
|
5
|
-
jest.mock("execa", () => ({
|
|
6
|
-
...jest.requireActual("execa"),
|
|
7
|
-
execa: jest.fn(() => Promise.resolve({}))
|
|
8
|
-
}));
|
|
9
|
-
jest.mock("fs", () => ({
|
|
10
|
-
...jest.requireActual("fs"),
|
|
11
|
-
existsSync: jest.fn(() => true),
|
|
12
|
-
lstatSync: jest.fn(() => ({
|
|
13
|
-
isDirectory: jest.fn(() => false)
|
|
14
|
-
})),
|
|
15
|
-
readdirSync: jest.fn(() => [])
|
|
16
|
-
}));
|
|
17
|
-
jest.mock("../utils/app", () => ({
|
|
18
|
-
...jest.requireActual("../utils/app"),
|
|
19
|
-
checkLinkedModules: jest.fn(),
|
|
20
|
-
removeFiles: jest.fn(() => Promise.resolve()),
|
|
21
|
-
removeModules: jest.fn(() => Promise.resolve())
|
|
22
|
-
}));
|
|
23
|
-
jest.mock("../LexConfig", () => ({
|
|
24
|
-
LexConfig: {
|
|
25
|
-
config: {},
|
|
26
|
-
checkTypescriptConfig: jest.fn(),
|
|
27
|
-
parseConfig: jest.fn()
|
|
28
|
-
}
|
|
29
|
-
}));
|
|
30
|
-
describe("compile", () => {
|
|
31
|
-
let callback;
|
|
32
|
-
let oldConsole;
|
|
33
|
-
beforeAll(() => {
|
|
34
|
-
oldConsole = { ...console };
|
|
35
|
-
console = {
|
|
36
|
-
...oldConsole,
|
|
37
|
-
debug: jest.fn(),
|
|
38
|
-
error: jest.fn(),
|
|
39
|
-
warn: jest.fn()
|
|
40
|
-
};
|
|
41
|
-
});
|
|
42
|
-
beforeEach(() => {
|
|
43
|
-
callback = jest.fn();
|
|
44
|
-
LexConfig.config = {
|
|
45
|
-
...defaultConfigValues
|
|
46
|
-
};
|
|
47
|
-
});
|
|
48
|
-
afterAll(() => {
|
|
49
|
-
console = { ...oldConsole };
|
|
50
|
-
jest.resetAllMocks();
|
|
51
|
-
});
|
|
52
|
-
it("should clean using default config", async () => {
|
|
53
|
-
const status = await compile({}, callback);
|
|
54
|
-
expect(checkLinkedModules).toHaveBeenCalled();
|
|
55
|
-
expect(callback).toHaveBeenCalledWith(0);
|
|
56
|
-
expect(status).toBe(0);
|
|
57
|
-
});
|
|
58
|
-
it("should clean using config", async () => {
|
|
59
|
-
LexConfig.config = {
|
|
60
|
-
...LexConfig.config,
|
|
61
|
-
useTypescript: true
|
|
62
|
-
};
|
|
63
|
-
const status = await compile({
|
|
64
|
-
remove: true
|
|
65
|
-
}, callback);
|
|
66
|
-
expect(checkLinkedModules).toHaveBeenCalled();
|
|
67
|
-
expect(removeFiles).toHaveBeenCalled();
|
|
68
|
-
expect(LexConfig.checkTypescriptConfig).toHaveBeenCalled();
|
|
69
|
-
expect(callback).toHaveBeenCalledWith(0);
|
|
70
|
-
expect(status).toBe(0);
|
|
71
|
-
});
|
|
72
|
-
describe("hasFileType", () => {
|
|
73
|
-
const filePath = "./";
|
|
74
|
-
it("should return false if path does not exist", () => {
|
|
75
|
-
existsSync.mockImplementation(() => false);
|
|
76
|
-
const status = hasFileType(filePath, [".js"]);
|
|
77
|
-
expect(status).toBe(false);
|
|
78
|
-
});
|
|
79
|
-
it("should return true if path has file type", () => {
|
|
80
|
-
existsSync.mockImplementation(() => true);
|
|
81
|
-
readdirSync.mockImplementation(() => ["test.js"]);
|
|
82
|
-
const status = hasFileType(filePath, [".js"]);
|
|
83
|
-
expect(status).toBe(true);
|
|
84
|
-
});
|
|
85
|
-
it("should return false if path does not have file type", () => {
|
|
86
|
-
existsSync.mockImplementation(() => true);
|
|
87
|
-
readdirSync.mockImplementation(() => ["test.css"]);
|
|
88
|
-
const status = hasFileType(filePath, [".js"]);
|
|
89
|
-
expect(status).toBe(false);
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NvbXBpbGUudGVzdC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtleGlzdHNTeW5jLCByZWFkZGlyU3luY30gZnJvbSAnZnMnO1xuXG5pbXBvcnQge2NvbXBpbGUsIGhhc0ZpbGVUeXBlfSBmcm9tICcuL2NvbXBpbGUuanMnO1xuaW1wb3J0IHtMZXhDb25maWcsIGRlZmF1bHRDb25maWdWYWx1ZXN9IGZyb20gJy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NoZWNrTGlua2VkTW9kdWxlcywgcmVtb3ZlRmlsZXN9IGZyb20gJy4uL3V0aWxzL2FwcC5qcyc7XG5cbmplc3QubW9jaygnZXhlY2EnLCAoKSA9PiAoe1xuICAuLi5qZXN0LnJlcXVpcmVBY3R1YWwoJ2V4ZWNhJyksXG4gIGV4ZWNhOiBqZXN0LmZuKCgpID0+IFByb21pc2UucmVzb2x2ZSh7fSkpXG59KSk7XG5cbmplc3QubW9jaygnZnMnLCAoKSA9PiAoe1xuICAuLi5qZXN0LnJlcXVpcmVBY3R1YWwoJ2ZzJyksXG4gIGV4aXN0c1N5bmM6IGplc3QuZm4oKCkgPT4gdHJ1ZSksXG4gIGxzdGF0U3luYzogamVzdC5mbigoKSA9PiAoe1xuICAgIGlzRGlyZWN0b3J5OiBqZXN0LmZuKCgpID0+IGZhbHNlKVxuICB9KSksXG4gIHJlYWRkaXJTeW5jOiBqZXN0LmZuKCgpID0+IFtdKVxufSkpO1xuXG5qZXN0Lm1vY2soJy4uL3V0aWxzL2FwcCcsICgpID0+ICh7XG4gIC4uLmplc3QucmVxdWlyZUFjdHVhbCgnLi4vdXRpbHMvYXBwJyksXG4gIGNoZWNrTGlua2VkTW9kdWxlczogamVzdC5mbigpLFxuICByZW1vdmVGaWxlczogamVzdC5mbigoKSA9PiBQcm9taXNlLnJlc29sdmUoKSksXG4gIHJlbW92ZU1vZHVsZXM6IGplc3QuZm4oKCkgPT4gUHJvbWlzZS5yZXNvbHZlKCkpXG59KSk7XG5cbmplc3QubW9jaygnLi4vTGV4Q29uZmlnJywgKCkgPT4gKHtcbiAgTGV4Q29uZmlnOiB7XG4gICAgY29uZmlnOiB7fSxcbiAgICBjaGVja1R5cGVzY3JpcHRDb25maWc6IGplc3QuZm4oKSxcbiAgICBwYXJzZUNvbmZpZzogamVzdC5mbigpXG4gIH1cbn0pKTtcblxuZGVzY3JpYmUoJ2NvbXBpbGUnLCAoKSA9PiB7XG4gIGxldCBjYWxsYmFjazogamVzdC5Nb2NrO1xuICBsZXQgb2xkQ29uc29sZTtcblxuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIG9sZENvbnNvbGUgPSB7Li4uY29uc29sZX07XG4gICAgY29uc29sZSA9IHtcbiAgICAgIC4uLm9sZENvbnNvbGUsXG4gICAgICBkZWJ1ZzogamVzdC5mbigpLFxuICAgICAgZXJyb3I6IGplc3QuZm4oKSxcbiAgICAgIHdhcm46IGplc3QuZm4oKVxuICAgIH07XG4gIH0pO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGNhbGxiYWNrID0gamVzdC5mbigpO1xuICAgIExleENvbmZpZy5jb25maWcgPSB7XG4gICAgICAuLi5kZWZhdWx0Q29uZmlnVmFsdWVzXG4gICAgfTtcbiAgfSk7XG5cbiAgYWZ0ZXJBbGwoKCkgPT4ge1xuICAgIGNvbnNvbGUgPSB7Li4ub2xkQ29uc29sZX07XG4gICAgamVzdC5yZXNldEFsbE1vY2tzKCk7XG4gIH0pO1xuXG4gIGl0KCdzaG91bGQgY2xlYW4gdXNpbmcgZGVmYXVsdCBjb25maWcnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgc3RhdHVzOiBudW1iZXIgPSBhd2FpdCBjb21waWxlKHt9LCBjYWxsYmFjayk7XG4gICAgZXhwZWN0KGNoZWNrTGlua2VkTW9kdWxlcykudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIGV4cGVjdChjYWxsYmFjaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoMCk7XG4gICAgZXhwZWN0KHN0YXR1cykudG9CZSgwKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBjbGVhbiB1c2luZyBjb25maWcnLCBhc3luYyAoKSA9PiB7XG4gICAgTGV4Q29uZmlnLmNvbmZpZyA9IHtcbiAgICAgIC4uLkxleENvbmZpZy5jb25maWcsXG4gICAgICB1c2VUeXBlc2NyaXB0OiB0cnVlXG4gICAgfTtcbiAgICBjb25zdCBzdGF0dXM6IG51bWJlciA9IGF3YWl0IGNvbXBpbGUoe1xuICAgICAgcmVtb3ZlOiB0cnVlXG4gICAgfSwgY2FsbGJhY2spO1xuICAgIGV4cGVjdChjaGVja0xpbmtlZE1vZHVsZXMpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBleHBlY3QocmVtb3ZlRmlsZXMpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICBleHBlY3QoTGV4Q29uZmlnLmNoZWNrVHlwZXNjcmlwdENvbmZpZykudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIGV4cGVjdChjYWxsYmFjaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoMCk7XG4gICAgZXhwZWN0KHN0YXR1cykudG9CZSgwKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2hhc0ZpbGVUeXBlJywgKCkgPT4ge1xuICAgIGNvbnN0IGZpbGVQYXRoID0gJy4vJztcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGlmIHBhdGggZG9lcyBub3QgZXhpc3QnLCAoKSA9PiB7XG4gICAgICAoZXhpc3RzU3luYyBhcyBqZXN0Lk1vY2spLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBmYWxzZSk7XG4gICAgICBjb25zdCBzdGF0dXM6IGJvb2xlYW4gPSBoYXNGaWxlVHlwZShmaWxlUGF0aCwgWycuanMnXSk7XG4gICAgICBleHBlY3Qoc3RhdHVzKS50b0JlKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgaWYgcGF0aCBoYXMgZmlsZSB0eXBlJywgKCkgPT4ge1xuICAgICAgKGV4aXN0c1N5bmMgYXMgamVzdC5Nb2NrKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gdHJ1ZSk7XG4gICAgICAocmVhZGRpclN5bmMgYXMgamVzdC5Nb2NrKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gWyd0ZXN0LmpzJ10pO1xuICAgICAgY29uc3Qgc3RhdHVzOiBib29sZWFuID0gaGFzRmlsZVR5cGUoZmlsZVBhdGgsIFsnLmpzJ10pO1xuICAgICAgZXhwZWN0KHN0YXR1cykudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGlmIHBhdGggZG9lcyBub3QgaGF2ZSBmaWxlIHR5cGUnLCAoKSA9PiB7XG4gICAgICAoZXhpc3RzU3luYyBhcyBqZXN0Lk1vY2spLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB0cnVlKTtcbiAgICAgIChyZWFkZGlyU3luYyBhcyBqZXN0Lk1vY2spLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBbJ3Rlc3QuY3NzJ10pO1xuICAgICAgY29uc3Qgc3RhdHVzOiBib29sZWFuID0gaGFzRmlsZVR5cGUoZmlsZVBhdGgsIFsnLmpzJ10pO1xuICAgICAgZXhwZWN0KHN0YXR1cykudG9CZShmYWxzZSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFRLFlBQVksbUJBQWtCO0FBRXRDLFNBQVEsU0FBUyxtQkFBa0I7QUFDbkMsU0FBUSxXQUFXLDJCQUEwQjtBQUM3QyxTQUFRLG9CQUFvQixtQkFBa0I7QUFFOUMsS0FBSyxLQUFLLFNBQVMsT0FBTztBQUFBLEVBQ3hCLEdBQUcsS0FBSyxjQUFjLE9BQU87QUFBQSxFQUM3QixPQUFPLEtBQUssR0FBRyxNQUFNLFFBQVEsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUMxQyxFQUFFO0FBRUYsS0FBSyxLQUFLLE1BQU0sT0FBTztBQUFBLEVBQ3JCLEdBQUcsS0FBSyxjQUFjLElBQUk7QUFBQSxFQUMxQixZQUFZLEtBQUssR0FBRyxNQUFNLElBQUk7QUFBQSxFQUM5QixXQUFXLEtBQUssR0FBRyxPQUFPO0FBQUEsSUFDeEIsYUFBYSxLQUFLLEdBQUcsTUFBTSxLQUFLO0FBQUEsRUFDbEMsRUFBRTtBQUFBLEVBQ0YsYUFBYSxLQUFLLEdBQUcsTUFBTSxDQUFDLENB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
|
package/dist/commands/config.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { writeFileSync } from "fs";
|
|
2
|
-
import startCase from "lodash/startCase.js";
|
|
3
|
-
import { relative as pathRelative } from "path";
|
|
4
|
-
import { LexConfig } from "../LexConfig.js";
|
|
5
|
-
import { createSpinner } from "../utils/app.js";
|
|
6
|
-
import { log } from "../utils/log.js";
|
|
7
|
-
const config = async (type, cmd, callback = () => ({})) => {
|
|
8
|
-
const { cliName = "Lex", json, quiet } = cmd;
|
|
9
|
-
const validTypes = ["app", "jest", "webpack"];
|
|
10
|
-
if (!validTypes.includes(type)) {
|
|
11
|
-
log(`
|
|
12
|
-
${cliName} Error: Option for ${type} not found. Configurations only available for app, jest, and webpack.`, "error", quiet);
|
|
13
|
-
callback(1);
|
|
14
|
-
return Promise.resolve(1);
|
|
15
|
-
}
|
|
16
|
-
log(`${cliName} generating configuration for ${startCase(type)}...`, "info", quiet);
|
|
17
|
-
await LexConfig.parseConfig(cmd);
|
|
18
|
-
let configOptions;
|
|
19
|
-
switch (type) {
|
|
20
|
-
case "app":
|
|
21
|
-
configOptions = LexConfig.config;
|
|
22
|
-
break;
|
|
23
|
-
case "jest":
|
|
24
|
-
configOptions = import("../../jest.config.lex");
|
|
25
|
-
break;
|
|
26
|
-
case "webpack":
|
|
27
|
-
configOptions = import("../../webpack.config");
|
|
28
|
-
break;
|
|
29
|
-
}
|
|
30
|
-
const jsonOutput = JSON.stringify(configOptions, null, 2);
|
|
31
|
-
if (json) {
|
|
32
|
-
const spinner = createSpinner(quiet);
|
|
33
|
-
spinner.start("Creating JSON output...");
|
|
34
|
-
writeFileSync(json, jsonOutput);
|
|
35
|
-
spinner.succeed(`Successfully saved JSON output to ${pathRelative(process.cwd(), json)}`);
|
|
36
|
-
}
|
|
37
|
-
callback(0);
|
|
38
|
-
return Promise.resolve(0);
|
|
39
|
-
};
|
|
40
|
-
export {
|
|
41
|
-
config
|
|
42
|
-
};
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7d3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHN0YXJ0Q2FzZSBmcm9tICdsb2Rhc2gvc3RhcnRDYXNlLmpzJztcbmltcG9ydCB7cmVsYXRpdmUgYXMgcGF0aFJlbGF0aXZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNwaW5uZXJ9IGZyb20gJy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGNvbnN0IGNvbmZpZyA9IGFzeW5jICh0eXBlOiBzdHJpbmcsIGNtZDogYW55LCBjYWxsYmFjazogYW55ID0gKCkgPT4gKHt9KSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIGpzb24sIHF1aWV0fSA9IGNtZDtcbiAgY29uc3QgdmFsaWRUeXBlczogc3RyaW5nW10gPSBbJ2FwcCcsICdqZXN0JywgJ3dlYnBhY2snXTtcblxuICBpZighdmFsaWRUeXBlcy5pbmNsdWRlcyh0eXBlKSkge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogT3B0aW9uIGZvciAke3R5cGV9IG5vdCBmb3VuZC4gQ29uZmlndXJhdGlvbnMgb25seSBhdmFpbGFibGUgZm9yIGFwcCwgamVzdCwgYW5kIHdlYnBhY2suYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoMSk7XG4gIH1cblxuICAvLyBEaXNwbGF5IHN0YXR1c1xuICBsb2coYCR7Y2xpTmFtZX0gZ2VuZXJhdGluZyBjb25maWd1cmF0aW9uIGZvciAke3N0YXJ0Q2FzZSh0eXBlKX0uLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICAvLyBHZXQgY3VzdG9tIGNvbmZpZ3VyYXRpb25cbiAgYXdhaXQgTGV4Q29uZmlnLnBhcnNlQ29uZmlnKGNtZCk7XG5cbiAgbGV0IGNvbmZpZ09wdGlvbnM7XG5cbiAgc3dpdGNoKHR5cGUpIHtcbiAgICBjYXNlICdhcHAnOlxuICAgICAgY29uZmlnT3B0aW9ucyA9IExleENvbmZpZy5jb25maWc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdqZXN0JzpcbiAgICAgIGNvbmZpZ09wdGlvbnMgPSBpbXBvcnQoJy4uLy4uL2plc3QuY29uZmlnLmxleCcpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnd2VicGFjayc6XG4gICAgICBjb25maWdPcHRpb25zID0gaW1wb3J0KCcuLi8uLi93ZWJwYWNrLmNvbmZpZycpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICAvLyBPdXRwdXQgY29uZmlnIHRvIGNvbnNvbGVcbiAgY29uc3QganNvbk91dHB1dDogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoY29uZmlnT3B0aW9ucywgbnVsbCwgMik7XG5cbiAgaWYoanNvbikge1xuICAgIC8vIFNwaW5uZXJcbiAgICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgICAvLyBTdGFydCBzcGlubmVyXG4gICAgc3Bpbm5lci5zdGFydCgnQ3JlYXRpbmcgSlNPTiBvdXRwdXQuLi4nKTtcblxuICAgIC8vIFNhdmUganNvbiBsb2NhbGx5XG4gICAgd3JpdGVGaWxlU3luYyhqc29uLCBqc29uT3V0cHV0KTtcblxuICAgIC8vIFN1Y2Nlc3Mgc3Bpbm5lclxuICAgIHNwaW5uZXIuc3VjY2VlZChgU3VjY2Vzc2Z1bGx5IHNhdmVkIEpTT04gb3V0cHV0IHRvICR7cGF0aFJlbGF0aXZlKHByb2Nlc3MuY3dkKCksIGpzb24pfWApO1xuICB9XG5cbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoMCk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxxQkFBb0I7QUFDNUIsT0FBTyxlQUFlO0FBQ3RCLFNBQVEsWUFBWSxvQkFBbUI7QUFFdkMsU0FBUSxpQkFBZ0I7QUFDeEIsU0FBUSxxQkFBb0I7QUFDNUIsU0FBUSxXQUFVO0FBRVgsTUFBTSxTQUFTLE9BQU8sTUFBYyxLQUFVLFdBQWdCLE9BQU8sQ0FBQyxPQUF3QjtBQUNuRyxRQUFNLEVBQUMsVUFBVSxPQUFPLE1BQU0sTUFBSyxJQUFJO0FBQ3ZDLFFBQU0sYUFBdUIsQ0FBQyxPQUFPLFFBQVEsU0FBUztBQUV0RCxNQUFHLENBQUMsV0FBVyxTQUFTLElBQUksR0FBRztBQUM3QixRQUFJO0FBQUEsRUFBSyxPQUFPLHNCQUFzQixJQUFJLHlFQUF5RSxTQUFTLEtBQUs7QUFDakksYUFBUyxDQUFDO0FBQ1YsV0FBTyxRQUFRLFFBQVEsQ0FBQztBQUFBLEVBQzFCO0FBR0EsTUFBSSxHQUFHLE9BQU8saUNBQWlDLFVBQVUsSUFBSSxDQUFDLE9BQU8sUUFBUSxLQUFLO0FBR2xGLFFBQU0sVUFBVSxZQUFZLEdBQUc7QUFFL0IsTUFBSTtBQUVKLFVBQU8sTUFBTTtBQUFBLElBQ1gsS0FBSztBQUNILHNCQUFnQixVQUFVO0FBQzFCO0FBQUEsSUFDRixLQUFLO0FBQ0gsc0JBQWdCLE9BQU8sdUJBQXVCO0FBQzlDO0FBQUEsSUFDRixLQUFLO0FBQ0gsc0JBQWdCLE9BQU8sc0JBQXNCO0FBQzdDO0FBQUEsRUFDSjtBQUdBLFFBQU0sYUFBcUIsS0FBSyxVQUFVLGVBQWUsTUFBTSxDQUFDO0FBRWhFLE1BQUcsTUFBTTtBQUVQLFVBQU0sVUFBVSxjQUFjLEtBQUs7QUFHbkMsWUFBUSxNQUFNLHlCQUF5QjtBQUd2QyxrQkFBYyxNQUFNLFVBQVU7QUFHOUIsWUFBUSxRQUFRLHFDQUFxQyxhQUFhLFFBQVEsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFO0FBQUEsRUFDMUY7QUFFQSxXQUFTLENBQUM7QUFDVixTQUFPLFFBQVEsUUFBUSxDQUFDO0FBQzFCOyIsCiAgIm5hbWVzIjogW10KfQo=
|
package/dist/commands/copy.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { existsSync, lstatSync } from "fs";
|
|
2
|
-
import { copyFileSync, copyFolderRecursiveSync } from "../utils/app.js";
|
|
3
|
-
import { log } from "../utils/log.js";
|
|
4
|
-
const copy = (from, to, cmd, callback = () => ({})) => {
|
|
5
|
-
const { cliName = "Lex", quiet } = cmd;
|
|
6
|
-
log(`${cliName} copying "${to}"...`, "info", quiet);
|
|
7
|
-
if (!existsSync(from)) {
|
|
8
|
-
log(`
|
|
9
|
-
${cliName} Error: Path not found, "${from}"...`, "error", quiet);
|
|
10
|
-
callback(1);
|
|
11
|
-
return Promise.resolve(1);
|
|
12
|
-
}
|
|
13
|
-
if (lstatSync(from).isDirectory()) {
|
|
14
|
-
try {
|
|
15
|
-
copyFolderRecursiveSync(from, to);
|
|
16
|
-
} catch (error) {
|
|
17
|
-
log(`
|
|
18
|
-
${cliName} Error: Cannot copy "${from}". ${error.message}`, "error", quiet);
|
|
19
|
-
callback(1);
|
|
20
|
-
return Promise.resolve(1);
|
|
21
|
-
}
|
|
22
|
-
} else {
|
|
23
|
-
try {
|
|
24
|
-
copyFileSync(from, to);
|
|
25
|
-
} catch (error) {
|
|
26
|
-
log(`
|
|
27
|
-
${cliName} Error: Cannot copy "${from}" ${error.message}`, "error", quiet);
|
|
28
|
-
callback(1);
|
|
29
|
-
return Promise.resolve(1);
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
callback(0);
|
|
33
|
-
return Promise.resolve(0);
|
|
34
|
-
};
|
|
35
|
-
export {
|
|
36
|
-
copy
|
|
37
|
-
};
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NvcHkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4aXN0c1N5bmMsIGxzdGF0U3luY30gZnJvbSAnZnMnO1xuXG5pbXBvcnQge2NvcHlGaWxlU3luYywgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmN9IGZyb20gJy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGNvbnN0IGNvcHkgPSAoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBjbWQ6IGFueSwgY2FsbGJhY2s6IGFueSA9ICgpID0+ICh7fSkpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCB7Y2xpTmFtZSA9ICdMZXgnLCBxdWlldH0gPSBjbWQ7XG5cbiAgLy8gRGlzcGxheSBtZXNzYWdlXG4gIGxvZyhgJHtjbGlOYW1lfSBjb3B5aW5nIFwiJHt0b31cIi4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIGlmKCFleGlzdHNTeW5jKGZyb20pKSB7XG4gICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBQYXRoIG5vdCBmb3VuZCwgXCIke2Zyb219XCIuLi5gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgxKTtcbiAgfVxuXG4gIGlmKGxzdGF0U3luYyhmcm9tKS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENvcHkgZGlyZWN0b3J5XG4gICAgICBjb3B5Rm9sZGVyUmVjdXJzaXZlU3luYyhmcm9tLCB0byk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY29weSBcIiR7ZnJvbX1cIi4gJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgxKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENvcHkgZmlsZVxuICAgICAgY29weUZpbGVTeW5jKGZyb20sIHRvKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENhbm5vdCBjb3B5IFwiJHtmcm9tfVwiICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoMCk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxZQUFZLGlCQUFnQjtBQUVwQyxTQUFRLGNBQWMsK0JBQThCO0FBQ3BELFNBQVEsV0FBVTtBQUVYLE1BQU0sT0FBTyxDQUFDLE1BQWMsSUFBWSxLQUFVLFdBQWdCLE9BQU8sQ0FBQyxPQUF3QjtBQUN2RyxRQUFNLEVBQUMsVUFBVSxPQUFPLE1BQUssSUFBSTtBQUdqQyxNQUFJLEdBQUcsT0FBTyxhQUFhLEVBQUUsUUFBUSxRQUFRLEtBQUs7QUFFbEQsTUFBRyxDQUFDLFdBQVcsSUFBSSxHQUFHO0FBQ3BCLFFBQUk7QUFBQSxFQUFLLE9BQU8sNEJBQTRCLElBQUksUUFBUSxTQUFTLEtBQUs7QUFDdEUsYUFBUyxDQUFDO0FBQ1YsV0FBTyxRQUFRLFFBQVEsQ0FBQztBQUFBLEVBQzFCO0FBRUEsTUFBRyxVQUFVLElBQUksRUFBRSxZQUFZLEdBQUc7QUFDaEMsUUFBSTtBQUVGLDhCQUF3QixNQUFNLEVBQUU7QUFBQSxJQUNsQyxTQUFRLE9BQU87QUFDYixVQUFJO0FBQUEsRUFBSyxPQUFPLHdCQUF3QixJQUFJLE1BQU0sTUFBTSxPQUFPLElBQUksU0FBUyxLQUFLO0FBQ2pGLGVBQVMsQ0FBQztBQUNWLGFBQU8sUUFBUSxRQUFRLENBQUM7QUFBQSxJQUMxQjtBQUFBLEVBQ0YsT0FBTztBQUNMLFFBQUk7QUFFRixtQkFBYSxNQUFNLEVBQUU7QUFBQSxJQUN2QixTQUFRLE9BQU87QUFDYixVQUFJO0FBQUEsRUFBSyxPQUFPLHdCQUF3QixJQUFJLEtBQUssTUFBTSxPQUFPLElBQUksU0FBUyxLQUFLO0FBQ2hGLGVBQVMsQ0FBQztBQUNWLGFBQU8sUUFBUSxRQUFRLENBQUM7QUFBQSxJQUMxQjtBQUFBLEVBQ0Y7QUFFQSxXQUFTLENBQUM7QUFDVixTQUFPLFFBQVEsUUFBUSxDQUFDO0FBQzFCOyIsCiAgIm5hbWVzIjogW10KfQo=
|