@nlabs/lex 1.46.2 → 1.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +3 -3
- 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 +69 -52
- package/{.postcssrc.js → postcss.config.js} +21 -9
- package/tsconfig.json +2 -1
- 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/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 = (status) => ({})) => {
|
|
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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NsZWFuLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNwaW5uZXIsIHJlbW92ZUZpbGVzLCByZW1vdmVNb2R1bGVzfSBmcm9tICcuLi91dGlscy9hcHAuanMnO1xuaW1wb3J0IHtsb2d9IGZyb20gJy4uL3V0aWxzL2xvZy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xlYW5PcHRpb25zIHtcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xuICByZWFkb25seSBzbmFwc2hvdHM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBDbGVhbkNhbGxiYWNrID0gKHN0YXR1czogbnVtYmVyKSA9PiB2b2lkO1xuXG5leHBvcnQgY29uc3QgY2xlYW4gPSBhc3luYyAoY21kOiBDbGVhbk9wdGlvbnMsIGNhbGxiYWNrOiBDbGVhbkNhbGxiYWNrID0gKHN0YXR1czogbnVtYmVyKSA9PiAoe30pKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge2NsaU5hbWUgPSAnTGV4JywgcXVpZXQsIHNuYXBzaG90c30gPSBjbWQ7XG5cbiAgLy8gU3Bpbm5lclxuICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgLy8gRGlzcGxheSBzdGF0dXNcbiAgbG9nKGAke2NsaU5hbWV9IGNsZWFuaW5nIGRpcmVjdG9yeS4uLmAsICdpbmZvJywgcXVpZXQpO1xuXG4gIC8vIEdldCBjdXN0b20gY29uZmlndXJhdGlvblxuICBhd2FpdCBMZXhDb25maWcucGFyc2VDb25maWcoY21kKTtcblxuICAvLyBTdGFydCBjbGVhbmluZyBzcGlubmVyXG4gIHNwaW5uZXIuc3RhcnQoJ0NsZWFuaW5nIGZpbGVzLi4uJyk7XG5cbiAgdHJ5IHtcbiAgICAvLyBSZW1vdmUgbm9kZV9tb2R1bGVzXG4gICAgYXdhaXQgcmVtb3ZlTW9kdWxlcygpO1xuXG4gICAgLy8gUmVtb3ZlIHRlc3QgY292ZXJhZ2UgcmVwb3J0c1xuICAgIGF3YWl0IHJlbW92ZUZpbGVzKCcuL2NvdmVyYWdlJywgdHJ1ZSk7XG5cbiAgICAvLyBSZW1vdmUgbnBtIGxvZ3NcbiAgICBhd2FpdCByZW1vdmVGaWxlcygnLi9ucG0tZGVidWcubG9nJywgdHJ1ZSk7XG5cbiAgICBpZihzbmFwc2hvdHMpIHtcbiAgICAgIGF3YWl0IHJlbW92ZUZpbGVzKCcuLyoqL19fc25hcHNob3RzX18nLCB0cnVlKTtcbiAgICB9XG5cbiAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICBzcGlubmVyLnN1Y2NlZWQoJ1N1Y2Nlc3NmdWxseSBjbGVhbmVkIScpO1xuXG4gICAgLy8gU3RvcCBwcm9jZXNzXG4gICAgY2FsbGJhY2soMCk7XG4gICAgcmV0dXJuIDA7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBjbGVhbiBwcm9qZWN0LicpO1xuXG4gICAgLy8gS2lsbCBwcm9jZXNzXG4gICAgY2FsbGJhY2soMSk7XG4gICAgcmV0dXJuIDE7XG4gIH1cbn07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxTQUFRLGlCQUFnQjtBQUN4QixTQUFRLGVBQWUsYUFBYSxxQkFBb0I7QUFDeEQsU0FBUSxXQUFVO0FBVVgsTUFBTSxRQUFRLE9BQU8sS0FBbUIsV0FBMEIsQ0FBQyxZQUFvQixDQUFDLE9BQXdCO0FBQ3JILFFBQU0sRUFBQyxVQUFVLE9BQU8sT0FBTyxVQUFTLElBQUk7QUFHNUMsUUFBTSxVQUFVLGNBQWMsS0FBSztBQUduQyxNQUFJLEdBQUcsT0FBTywwQkFBMEIsUUFBUSxLQUFLO0FBR3JELFFBQU0sVUFBVSxZQUFZLEdBQUc7QUFHL0IsVUFBUSxNQUFNLG1CQUFtQjtBQUVqQyxNQUFJO0FBRUYsVUFBTSxjQUFjO0FBR3BCLFVBQU0sWUFBWSxjQUFjLElBQUk7QUFHcEMsVUFBTSxZQUFZLG1CQUFtQixJQUFJO0FBRXpDLFFBQUcsV0FBVztBQUNaLFlBQU0sWUFBWSxzQkFBc0IsSUFBSTtBQUFBLElBQzlDO0FBR0EsWUFBUSxRQUFRLHVCQUF1QjtBQUd2QyxhQUFTLENBQUM7QUFDVixXQUFPO0FBQUEsRUFDVCxTQUFRLE9BQU87QUFFYixRQUFJO0FBQUEsRUFBSyxPQUFPLFdBQVcsTUFBTSxPQUFPLElBQUksU0FBUyxLQUFLO0FBRzFELFlBQVEsS0FBSywwQkFBMEI7QUFHdkMsYUFBUyxDQUFDO0FBQ1YsV0FBTztBQUFBLEVBQ1Q7QUFDRjsiLAogICJuYW1lcyI6IFtdCn0K
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { clean } from "./clean.js";
|
|
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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NsZWFuLnRlc3QudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7Y2xlYW59IGZyb20gJy4vY2xlYW4uanMnO1xuaW1wb3J0IHtMZXhDb25maWcsIGRlZmF1bHRDb25maWdWYWx1ZXN9IGZyb20gJy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge3JlbW92ZUZpbGVzLCByZW1vdmVNb2R1bGVzfSBmcm9tICcuLi91dGlscy9hcHAuanMnO1xuXG5qZXN0Lm1vY2soJy4uL3V0aWxzL2FwcCcsICgpID0+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/IHBhdGhSZXNvbHZlKHByb2Nlc3MuY3dkKCksIGAuLyR7c291cmNlUGF0aH1gKSA6IHNvdXJjZUZ1bGxQYXRoO1xuICBjb25zdCBkaXJOYW1lID0gbmV3IFVSTCgnLicsIGltcG9ydC5tZXRhLnVybCkucGF0aG5hbWU7XG4gIGNvbnN0IGRpclBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLicpO1xuXG4gIC8vIENoZWNrIGZvciBsaW5rZWQgbW9kdWxlc1xuICBjaGVja0xpbmtlZE1vZHVsZXMoKTtcblxuICAvLyBDbGVhbiBvdXRwdXQgZGlyZWN0b3J5IGJlZm9yZSB3ZSBzdGFydCBhZGRpbmcgaW4gbmV3IGZpbGVzXG4gIGlmKHJlbW92ZSkge1xuICAgIGF3YWl0IHJlbW92ZUZpbGVzKG91dHB1dERpcik7XG4gIH1cblxuICAvLyBBZGQgdHNjb25maWcgZmlsZSBpZiBub25lIGV4aXN0c1xuICBpZih1c2VUeXBlc2NyaXB0KSB7XG4gICAgLy8gTWFrZSBzdXJlIHRzY29uZmlnLmpzb24gZXhpc3RzXG4gICAgTGV4Q29uZmlnLmNoZWNrVHlwZXNjcmlwdENvbmZpZygpO1xuXG4gICAgLy8gQ2hlY2sgc3RhdGljIHR5cGVzIHdpdGggdHlwZXNjcmlwdFxuICAgIGNvbnN0IHR5cGVzY3JpcHRQYXRoOiBzdHJpbmcgPSByZWxhdGl2ZU5vZGVQYXRoKCd0eXBlc2NyaXB0L2Jpbi90c2MnLCBkaXJQYXRoKTtcbiAgICBjb25zdCB0eXBlc2NyaXB0T3B0aW9uczogc3RyaW5nW10gPSBjb25maWcgP1xuICAgICAgWyctcCcsIGNvbmZpZ10gOlxuICAgICAgW1xuICAgICAgICAnLS1hbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzJyxcbiAgICAgICAgJy0tYmFzZVVybCcsIHNvdXJjZURpcixcbiAgICAgICAgJy0tZGVjbGFyYXRpb24nLFxuICAgICAgICAnLS1lbWl0RGVjbGFyYXRpb25Pbmx5JyxcbiAgICAgICAgJy0tbGliJywgJ0VTTmV4dCxET00nLFxuICAgICAgICAnLS1tb2R1bGUnLCAnZXNuZXh0JyxcbiAgICAgICAgJy0tbW9kdWxlUmVzb2x1dGlvbicsICdub2RlJyxcbiAgICAgICAgJy0tbm9JbXBsaWNpdFJldHVybnMnLFxuICAgICAgICAnLS1ub0ltcGxpY2l0VGhpcycsXG4gICAgICAgICctLW91dERpcicsIG91dHB1dERpcixcbiAgICAgICAgJy0tcmVtb3ZlQ29tbWVudHMnLFxuICAgICAgICAnLS1yZXNvbHZlSnNvbk1vZHVsZScsXG4gICAgICAgICctLXRhcmdldCcsICdFU05leHQnLFxuICAgICAgICAnLS10eXBlUm9vdHMnLCAnbm9kZV9tb2R1bGVzL0B0eXBlcyxub2RlX21vZHVsZXMvanNvbi1kLXRzJ1xuICAgICAgXTtcblxuICAgIC8vIFN0YXJ0IHR5cGUgY2hlY2tpbmcgc3Bpbm5lclxuICAgIHNwaW5uZXIuc3RhcnQoJ1N0YXRpYyB0eXBlIGNoZWNraW5nIHdpdGggVHlwZXNjcmlwdC4uLicpO1xuXG4gICAgLy8gVHlwZSBjaGVja2luZ1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBleGVjYSh0eXBlc2NyaXB0UGF0aCwgdHlwZXNjcmlwdE9wdGlvbnMsIHtlbmNvZGluZzogJ3V0ZjgnfSk7XG5cbiAgICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgICAgc3Bpbm5lci5zdWNjZWVkKCdTdWNjZXNzZnVsbHkgY29tcGxldGVkIHR5cGUgY2hlY2tpbmchJyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgLy8gRGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgICAgc3Bpbm5lci5mYWlsKCdUeXBlIGNoZWNraW5nIGZhaWxlZC4nKTtcblxuICAgICAgLy8gS2lsbCBQcm9jZXNzXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNvdXJjZSBmaWxlc1xuICBjb25zdCBnbG9iT3B0aW9ucyA9IHtcbiAgICBjd2Q6IHNvdXJjZURpcixcbiAgICBkb3Q6IGZhbHNlLFxuICAgIG5vZGlyOiB0cnVlLFxuICAgIG5vc29ydDogdHJ1ZVxuICB9O1xuICBjb25zdCB0c0ZpbGVzOiBzdHJpbmdbXSA9IGdsb2JTeW5jKGAke3NvdXJjZURpcn0vKiovISgqLnNwZWN8Ki50ZXN0KS50cypgLCBnbG9iT3B0aW9ucyk7XG4gIGNvbnN0IGpzRmlsZXM6IHN0cmluZ1tdID0gZ2xvYlN5bmMoYCR7c291cmNlRGlyfS8qKi8hKCouc3BlY3wqLnRlc3QpLmpzYCwgZ2xvYk9wdGlvbnMpO1xuICBjb25zdCBzb3VyY2VGaWxlczogc3RyaW5nW10gPSBbLi4udHNGaWxlcywgLi4uanNGaWxlc107XG5cbiAgLy8gRVNCdWlsZCBvcHRpb25zXG4gIGNvbnN0IGVzYnVpbGRQYXRoOiBzdHJpbmcgPSByZWxhdGl2ZU5vZGVQYXRoKCdlc2J1aWxkL2Jpbi9lc2J1aWxkJywgZGlyUGF0aCk7XG4gIGNvbnN0IGVzYnVpbGRPcHRpb25zOiBzdHJpbmdbXSA9IFtcbiAgICAuLi5zb3VyY2VGaWxlcyxcbiAgICAnLS1jb2xvcj10cnVlJyxcbiAgICAnLS1mb3JtYXQ9Y2pzJyxcbiAgICBgLS1vdXRkaXI9JHtvdXRwdXREaXJ9YCxcbiAgICAnLS1wbGF0Zm9ybT1ub2RlJyxcbiAgICAnLS1zb3VyY2VtYXA9aW5saW5lJyxcbiAgICAnLS10YXJnZXQ9bm9kZTIwJ1xuICBdO1xuXG4gIGlmKHdhdGNoKSB7XG4gICAgZXNidWlsZE9wdGlvbnMucHVzaCgnLS13YXRjaCcpO1xuICB9XG5cbiAgLy8gVXNlIFBvc3RDU1MgZm9yIENTUyBmaWxlc1xuICBjb25zdCBjc3NGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuY3NzJywgTGV4Q29uZmlnLmNvbmZpZyk7XG5cbiAgaWYoY3NzRmlsZXMubGVuZ3RoKSB7XG4gICAgY29uc3QgcG9zdGNzc1BhdGg6IHN0cmluZyA9IHJlbGF0aXZlTm9kZVBhdGgoJ3Bvc3Rjc3MtY2xpL2luZGV4LmpzJywgZGlyUGF0aCk7XG4gICAgY29uc3QgcG9zdGNzc09wdGlvbnM6IHN0cmluZ1tdID0gW1xuICAgICAgYCR7c291cmNlRGlyfS8qKi8qKi5jc3NgLFxuICAgICAgJy0tYmFzZScsXG4gICAgICBzb3VyY2VEaXIsXG4gICAgICAnLS1kaXInLFxuICAgICAgb3V0cHV0RGlyLFxuICAgICAgJy0tY29uZmlnJyxcbiAgICAgIHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLi8ucG9zdGNzc3JjLmpzJylcbiAgICBdO1xuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGV4ZWNhKHBvc3Rjc3NQYXRoLCBwb3N0Y3NzT3B0aW9ucywge2VuY29kaW5nOiAndXRmOCd9KTtcbiAgICAgIHNwaW5uZXIuc3VjY2VlZChgU3VjY2Vzc2Z1bGx5IGZvcm1hdHRlZCAke2Nzc0ZpbGVzLmxlbmd0aH0gY3NzIGZpbGVzIWApO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIC8vIERpc3BsYXkgZXJyb3IgbWVzc2FnZVxuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuXG4gICAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICAgIHNwaW5uZXIuZmFpbCgnRmFpbGVkIGZvcm1hdHRpbmcgY3NzLicpO1xuXG4gICAgICAvLyBLaWxsIFByb2Nlc3NcbiAgICAgIGNhbGxiYWNrKDEpO1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29weSBpbWFnZSBmaWxlc1xuICBjb25zdCBnaWZGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuZ2lmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IGpwZ0ZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5qcGcnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3QgcG5nRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLnBuZycsIExleENvbmZpZy5jb25maWcpO1xuICBjb25zdCBzdmdGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcuc3ZnJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IGltYWdlRmlsZXM6IHN0cmluZ1tdID0gWy4uLmdpZkZpbGVzLCAuLi5qcGdGaWxlcywgLi4ucG5nRmlsZXMsIC4uLnN2Z0ZpbGVzXTtcblxuICBpZihpbWFnZUZpbGVzLmxlbmd0aCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBjb3B5RmlsZXMoaW1hZ2VGaWxlcywgJ2ltYWdlJywgc3Bpbm5lciwgTGV4Q29uZmlnLmNvbmZpZyk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgLy8gRGlzcGxheSBlcnJvciBtZXNzYWdlXG4gICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG5cbiAgICAgIC8vIFN0b3Agc3Bpbm5lclxuICAgICAgc3Bpbm5lci5mYWlsKCdGYWlsZWQgdG8gbW92ZSBpbWFnZXMgdG8gb3V0cHV0IGRpcmVjdG9yeS4nKTtcblxuICAgICAgLy8gS2lsbCBQcm9jZXNzXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIC8vIENvcHkgZm9udCBmaWxlc1xuICBjb25zdCB0dGZGaWxlczogc3RyaW5nW10gPSBnZXRGaWxlc0J5RXh0KCcudHRmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IG90ZkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy5vdGYnLCBMZXhDb25maWcuY29uZmlnKTtcbiAgY29uc3Qgd29mZkZpbGVzOiBzdHJpbmdbXSA9IGdldEZpbGVzQnlFeHQoJy53b2ZmJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IHdvZmYyRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLndvZmYyJywgTGV4Q29uZmlnLmNvbmZpZyk7XG4gIGNvbnN0IGZvbnRGaWxlczogc3RyaW5nW10gPSBbLi4udHRmRmlsZXMsIC4uLm90ZkZpbGVzLCAuLi53b2ZmRmlsZXMsIC4uLndvZmYyRmlsZXNdO1xuXG4gIGlmKGZvbnRGaWxlcy5sZW5ndGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29weUZpbGVzKGZvbnRGaWxlcywgJ2ZvbnQnLCBzcGlubmVyLCBMZXhDb25maWcuY29uZmlnKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgLy8gU3RvcCBzcGlubmVyXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBtb3ZlIGZvbnRzIHRvIG91dHB1dCBkaXJlY3RvcnkuJyk7XG5cbiAgICAgIC8vIEtpbGwgUHJvY2Vzc1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gIH1cblxuICAvLyBDb3B5IG1hcmtkb3duIGZpbGVzXG4gIGNvbnN0IG1kRmlsZXM6IHN0cmluZ1tdID0gZ2V0RmlsZXNCeUV4dCgnLm1kJywgTGV4Q29uZmlnLmNvbmZpZyk7XG5cbiAgaWYobWRGaWxlcy5sZW5ndGgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgY29weUZpbGVzKG1kRmlsZXMsICdkb2N1bWVudHMnLCBzcGlubmVyLCBMZXhDb25maWcuY29uZmlnKTtcbiAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAvLyBEaXNwbGF5IGVycm9yIG1lc3NhZ2VcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgICAgLy8gU3RvcCBzcGlubmVyXG4gICAgICBzcGlubmVyLmZhaWwoJ0ZhaWxlZCB0byBtb3ZlIGRvY3MgdG8gb3V0cHV0IGRpcmVjdG9yeS4nKTtcblxuICAgICAgLy8gS2lsbCBQcm9jZXNzXG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgfVxuXG4gIC8vIFN0YXJ0IGNvbXBpbGUgc3Bpbm5lclxuICBzcGlubmVyLnN0YXJ0KHdhdGNoID8gJ1dhdGNoaW5nIGZvciBjaGFuZ2VzLi4uJyA6ICdDb21waWxpbmcgd2l0aCBFU0J1aWxkLi4uJyk7XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjYShlc2J1aWxkUGF0aCwgZXNidWlsZE9wdGlvbnMsIHtlbmNvZGluZzogJ3V0ZjgnfSk7XG5cbiAgICAvLyBTdG9wIHNwaW5uZXJcbiAgICBzcGlubmVyLnN1Y2NlZWQoJ0NvbXBpbGUgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSEnKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIC8vIERpc3BsYXkgZXJyb3IgbWVzc2FnZVxuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcblxuICAgIGlmKCFxdWlldCkge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgfVxuXG4gICAgLy8gU3RvcCBzcGlubmVyXG4gICAgc3Bpbm5lci5mYWlsKCdDb2RlIGNvbXBpbGluZyBmYWlsZWQuJyk7XG5cbiAgICAvLyBLaWxsIFByb2Nlc3NcbiAgICBjYWxsYmFjaygxKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8vIFN0b3AgcHJvY2Vzc1xuICBjYWxsYmFjaygwKTtcbiAgcmV0dXJuIDA7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxhQUFZO0FBQ3BCLFNBQVEsWUFBWSxXQUFXLG1CQUFrQjtBQUNqRCxTQUFRLFFBQVEsZ0JBQWU7QUFDL0IsU0FBUSxXQUFXLGFBQWEs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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.js");
|
|
25
|
-
break;
|
|
26
|
-
case "webpack":
|
|
27
|
-
configOptions = import("../../webpack.config.js");
|
|
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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7d3JpdGVGaWxlU3luY30gZnJvbSAnZnMnO1xuaW1wb3J0IHN0YXJ0Q2FzZSBmcm9tICdsb2Rhc2gvc3RhcnRDYXNlLmpzJztcbmltcG9ydCB7cmVsYXRpdmUgYXMgcGF0aFJlbGF0aXZlfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHtMZXhDb25maWd9IGZyb20gJy4uL0xleENvbmZpZy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNwaW5uZXJ9IGZyb20gJy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb25maWdPcHRpb25zIHtcbiAgcmVhZG9ubHkgY2xpTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkganNvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgcXVpZXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBDb25maWdDYWxsYmFjayA9IChzdGF0dXM6IG51bWJlcikgPT4gdm9pZDtcblxuZXhwb3J0IGNvbnN0IGNvbmZpZyA9IGFzeW5jICh0eXBlOiBzdHJpbmcsIGNtZDogQ29uZmlnT3B0aW9ucywgY2FsbGJhY2s6IENvbmZpZ0NhbGxiYWNrID0gKCkgPT4gKHt9KSk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIGpzb24sIHF1aWV0fSA9IGNtZDtcbiAgY29uc3QgdmFsaWRUeXBlczogc3RyaW5nW10gPSBbJ2FwcCcsICdqZXN0JywgJ3dlYnBhY2snXTtcblxuICBpZighdmFsaWRUeXBlcy5pbmNsdWRlcyh0eXBlKSkge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogT3B0aW9uIGZvciAke3R5cGV9IG5vdCBmb3VuZC4gQ29uZmlndXJhdGlvbnMgb25seSBhdmFpbGFibGUgZm9yIGFwcCwgamVzdCwgYW5kIHdlYnBhY2suYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoMSk7XG4gIH1cblxuICAvLyBEaXNwbGF5IHN0YXR1c1xuICBsb2coYCR7Y2xpTmFtZX0gZ2VuZXJhdGluZyBjb25maWd1cmF0aW9uIGZvciAke3N0YXJ0Q2FzZSh0eXBlKX0uLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICAvLyBHZXQgY3VzdG9tIGNvbmZpZ3VyYXRpb25cbiAgYXdhaXQgTGV4Q29uZmlnLnBhcnNlQ29uZmlnKGNtZCk7XG5cbiAgbGV0IGNvbmZpZ09wdGlvbnM7XG5cbiAgc3dpdGNoKHR5cGUpIHtcbiAgICBjYXNlICdhcHAnOlxuICAgICAgY29uZmlnT3B0aW9ucyA9IExleENvbmZpZy5jb25maWc7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdqZXN0JzpcbiAgICAgIGNvbmZpZ09wdGlvbnMgPSBpbXBvcnQoJy4uLy4uL2plc3QuY29uZmlnLmxleC5qcycpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnd2VicGFjayc6XG4gICAgICBjb25maWdPcHRpb25zID0gaW1wb3J0KCcuLi8uLi93ZWJwYWNrLmNvbmZpZy5qcycpO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICAvLyBPdXRwdXQgY29uZmlnIHRvIGNvbnNvbGVcbiAgY29uc3QganNvbk91dHB1dDogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoY29uZmlnT3B0aW9ucywgbnVsbCwgMik7XG5cbiAgaWYoanNvbikge1xuICAgIC8vIFNwaW5uZXJcbiAgICBjb25zdCBzcGlubmVyID0gY3JlYXRlU3Bpbm5lcihxdWlldCk7XG5cbiAgICAvLyBTdGFydCBzcGlubmVyXG4gICAgc3Bpbm5lci5zdGFydCgnQ3JlYXRpbmcgSlNPTiBvdXRwdXQuLi4nKTtcblxuICAgIC8vIFNhdmUganNvbiBsb2NhbGx5XG4gICAgd3JpdGVGaWxlU3luYyhqc29uLCBqc29uT3V0cHV0KTtcblxuICAgIC8vIFN1Y2Nlc3Mgc3Bpbm5lclxuICAgIHNwaW5uZXIuc3VjY2VlZChgU3VjY2Vzc2Z1bGx5IHNhdmVkIEpTT04gb3V0cHV0IHRvICR7cGF0aFJlbGF0aXZlKHByb2Nlc3MuY3dkKCksIGpzb24pfWApO1xuICB9XG5cbiAgY2FsbGJhY2soMCk7XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoMCk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxxQkFBb0I7QUFDNUIsT0FBTyxlQUFlO0FBQ3RCLFNBQVEsWUFBWSxvQkFBbUI7QUFFdkMsU0FBUSxpQkFBZ0I7QUFDeEIsU0FBUSxxQkFBb0I7QUFDNUIsU0FBUSxXQUFVO0FBVVgsTUFBTSxTQUFTLE9BQU8sTUFBYyxLQUFvQixXQUEyQixPQUFPLENBQUMsT0FBd0I7QUFDeEgsUUFBTSxFQUFDLFVBQVUsT0FBTyxNQUFNLE1BQUssSUFBSTtBQUN2QyxRQUFNLGFBQXVCLENBQUMsT0FBTyxRQUFRLFNBQVM7QUFFdEQsTUFBRyxDQUFDLFdBQVcsU0FBUyxJQUFJLEdBQUc7QUFDN0IsUUFBSTtBQUFBLEVBQUssT0FBTyxzQkFBc0IsSUFBSSx5RUFBeUUsU0FBUyxLQUFLO0FBQ2pJLGFBQVMsQ0FBQztBQUNWLFdBQU8sUUFBUSxRQUFRLENBQUM7QUFBQSxFQUMxQjtBQUdBLE1BQUksR0FBRyxPQUFPLGlDQUFpQyxVQUFVLElBQUksQ0FBQyxPQUFPLFFBQVEsS0FBSztBQUdsRixRQUFNLFVBQVUsWUFBWSxHQUFHO0FBRS9CLE1BQUk7QUFFSixVQUFPLE1BQU07QUFBQSxJQUNYLEtBQUs7QUFDSCxzQkFBZ0IsVUFBVTtBQUMxQjtBQUFBLElBQ0YsS0FBSztBQUNILHNCQUFnQixPQUFPLDBCQUEwQjtBQUNqRDtBQUFBLElBQ0YsS0FBSztBQUNILHNCQUFnQixPQUFPLHlCQUF5QjtBQUNoRDtBQUFBLEVBQ0o7QUFHQSxRQUFNLGFBQXFCLEtBQUssVUFBVSxlQUFlLE1BQU0sQ0FBQztBQUVoRSxNQUFHLE1BQU07QUFFUCxVQUFNLFVBQVUsY0FBYyxLQUFLO0FBR25DLFlBQVEsTUFBTSx5QkFBeUI7QUFHdkMsa0JBQWMsTUFBTSxVQUFVO0FBRzlCLFlBQVEsUUFBUSxxQ0FBcUMsYUFBYSxRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRTtBQUFBLEVBQzFGO0FBRUEsV0FBUyxDQUFDO0FBQ1YsU0FBTyxRQUFRLFFBQVEsQ0FBQztBQUMxQjsiLAogICJuYW1lcyI6IFtdCn0K
|
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,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2NvbW1hbmRzL2NvcHkudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE4LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2V4aXN0c1N5bmMsIGxzdGF0U3luY30gZnJvbSAnZnMnO1xuXG5pbXBvcnQge2NvcHlGaWxlU3luYywgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmN9IGZyb20gJy4uL3V0aWxzL2FwcC5qcyc7XG5pbXBvcnQge2xvZ30gZnJvbSAnLi4vdXRpbHMvbG9nLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBDb3B5T3B0aW9ucyB7XG4gIHJlYWRvbmx5IGNsaU5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHF1aWV0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IHR5cGUgQ29weUNhbGxiYWNrID0gKHN0YXR1czogbnVtYmVyKSA9PiB2b2lkO1xuXG5leHBvcnQgY29uc3QgY29weSA9IChmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcsIGNtZDogQ29weU9wdGlvbnMsIGNhbGxiYWNrOiBDb3B5Q2FsbGJhY2sgPSAoKSA9PiAoe30pKTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3Qge2NsaU5hbWUgPSAnTGV4JywgcXVpZXR9ID0gY21kO1xuXG4gIC8vIERpc3BsYXkgbWVzc2FnZVxuICBsb2coYCR7Y2xpTmFtZX0gY29weWluZyBcIiR7dG99XCIuLi5gLCAnaW5mbycsIHF1aWV0KTtcblxuICBpZighZXhpc3RzU3luYyhmcm9tKSkge1xuICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogUGF0aCBub3QgZm91bmQsIFwiJHtmcm9tfVwiLi4uYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgIGNhbGxiYWNrKDEpO1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoMSk7XG4gIH1cblxuICBpZihsc3RhdFN5bmMoZnJvbSkuaXNEaXJlY3RvcnkoKSkge1xuICAgIHRyeSB7XG4gICAgICAvLyBDb3B5IGRpcmVjdG9yeVxuICAgICAgY29weUZvbGRlclJlY3Vyc2l2ZVN5bmMoZnJvbSwgdG8pO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ2Fubm90IGNvcHkgXCIke2Zyb219XCIuICR7ZXJyb3IubWVzc2FnZX1gLCAnZXJyb3InLCBxdWlldCk7XG4gICAgICBjYWxsYmFjaygxKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoMSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICAvLyBDb3B5IGZpbGVcbiAgICAgIGNvcHlGaWxlU3luYyhmcm9tLCB0byk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBDYW5ub3QgY29weSBcIiR7ZnJvbX1cIiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgY2FsbGJhY2soMSk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDEpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKDApO1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKDApO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLFNBQVEsWUFBWSxpQkFBZ0I7QUFFcEMsU0FBUSxjQUFjLCtCQUE4QjtBQUNwRCxTQUFRLFdBQVU7QUFTWCxNQUFNLE9BQU8sQ0FBQyxNQUFjLElBQVksS0FBa0IsV0FBeUIsT0FBTyxDQUFDLE9BQXdCO0FBQ3hILFFBQU0sRUFBQyxVQUFVLE9BQU8sTUFBSyxJQUFJO0FBR2pDLE1BQUksR0FBRyxPQUFPLGFBQWEsRUFBRSxRQUFRLFFBQVEsS0FBSztBQUVsRCxNQUFHLENBQUMsV0FBVyxJQUFJLEdBQUc7QUFDcEIsUUFBSTtBQUFBLEVBQUssT0FBTyw0QkFBNEIsSUFBSSxRQUFRLFNBQVMsS0FBSztBQUN0RSxhQUFTLENBQUM7QUFDVixXQUFPLFFBQVEsUUFBUSxDQUFDO0FBQUEsRUFDMUI7QUFFQSxNQUFHLFVBQVUsSUFBSSxFQUFFLFlBQVksR0FBRztBQUNoQyxRQUFJO0FBRUYsOEJBQXdCLE1BQU0sRUFBRTtBQUFBLElBQ2xDLFNBQVEsT0FBTztBQUNiLFVBQUk7QUFBQSxFQUFLLE9BQU8sd0JBQXdCLElBQUksTUFBTSxNQUFNLE9BQU8sSUFBSSxTQUFTLEtBQUs7QUFDakYsZUFBUyxDQUFDO0FBQ1YsYUFBTyxRQUFRLFFBQVEsQ0FBQztBQUFBLElBQzFCO0FBQUEsRUFDRixPQUFPO0FBQ0wsUUFBSTtBQUVGLG1CQUFhLE1BQU0sRUFBRTtBQUFBLElBQ3ZCLFNBQVEsT0FBTztBQUNiLFVBQUk7QUFBQSxFQUFLLE9BQU8sd0JBQXdCLElBQUksS0FBSyxNQUFNLE9BQU8sSUFBSSxTQUFTLEtBQUs7QUFDaEYsZUFBUyxDQUFDO0FBQ1YsYUFBTyxRQUFRLFFBQVEsQ0FBQztBQUFBLElBQzFCO0FBQUEsRUFDRjtBQUVBLFdBQVMsQ0FBQztBQUNWLFNBQU8sUUFBUSxRQUFRLENBQUM7QUFDMUI7IiwKICAibmFtZXMiOiBbXQp9Cg==
|