@nlabs/lex 1.46.2 → 1.47.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__mocks__/LexConfig.js +20 -0
- package/__mocks__/boxen.js +7 -0
- package/__mocks__/build.js +16 -0
- package/__mocks__/chalk.js +23 -0
- package/__mocks__/compile.js +8 -0
- package/__mocks__/execa.js +21 -0
- package/__mocks__/ora.js +17 -0
- package/__mocks__/versions.js +12 -0
- package/dist/LexConfig.d.ts +79 -0
- package/dist/LexConfig.js +83 -15
- package/dist/commands/ai/ai.d.ts +17 -0
- package/dist/commands/ai/ai.js +303 -0
- package/dist/commands/ai/index.d.ts +8 -0
- package/dist/commands/ai/index.js +7 -0
- package/dist/commands/build/build.cli.test.d.ts +5 -0
- package/dist/commands/build/build.d.ts +18 -0
- package/dist/commands/build/build.integration.test.d.ts +1 -0
- package/dist/commands/build/build.js +400 -0
- package/dist/commands/build/build.options.test.d.ts +5 -0
- package/dist/commands/clean/clean.cli.test.d.ts +1 -0
- package/dist/commands/clean/clean.d.ts +7 -0
- package/dist/commands/clean/clean.integration.test.d.ts +1 -0
- package/dist/commands/clean/clean.js +31 -0
- package/dist/commands/clean/clean.options.test.d.ts +1 -0
- package/dist/commands/compile/compile.cli.test.d.ts +1 -0
- package/dist/commands/compile/compile.d.ts +2 -0
- package/dist/commands/compile/compile.integration.test.d.ts +1 -0
- package/dist/commands/compile/compile.js +239 -0
- package/dist/commands/compile/compile.options.test.d.ts +1 -0
- package/dist/commands/config/config.cli.test.d.ts +1 -0
- package/dist/commands/config/config.d.ts +7 -0
- package/dist/commands/config/config.integration.test.d.ts +1 -0
- package/dist/commands/config/config.js +43 -0
- package/dist/commands/config/config.options.test.d.ts +1 -0
- package/dist/commands/copy/copy.cli.test.d.ts +1 -0
- package/dist/commands/copy/copy.d.ts +6 -0
- package/dist/commands/copy/copy.integration.test.d.ts +1 -0
- package/dist/commands/copy/copy.js +38 -0
- package/dist/commands/copy/copy.options.test.d.ts +1 -0
- package/dist/commands/create/create.cli.test.d.ts +1 -0
- package/dist/commands/create/create.d.ts +8 -0
- package/dist/commands/create/create.integration.test.d.ts +1 -0
- package/dist/commands/create/create.js +124 -0
- package/dist/commands/create/create.options.test.d.ts +1 -0
- package/dist/commands/dev/dev.cli.test.d.ts +1 -0
- package/dist/commands/dev/dev.d.ts +11 -0
- package/dist/commands/dev/dev.integration.test.d.ts +1 -0
- package/dist/commands/dev/dev.js +70 -0
- package/dist/commands/dev/dev.options.test.d.ts +1 -0
- package/dist/commands/init/init.cli.test.d.ts +1 -0
- package/dist/commands/init/init.d.ts +9 -0
- package/dist/commands/init/init.integration.test.d.ts +1 -0
- package/dist/commands/init/init.js +93 -0
- package/dist/commands/init/init.options.test.d.ts +1 -0
- package/dist/commands/link/link.cli.test.d.ts +1 -0
- package/dist/commands/link/link.d.ts +6 -0
- package/dist/commands/link/link.integration.test.d.ts +1 -0
- package/dist/commands/link/link.js +15 -0
- package/dist/commands/link/link.options.test.d.ts +1 -0
- package/dist/commands/lint/autofix.d.ts +2 -0
- package/dist/commands/lint/lint.cli.test.d.ts +1 -0
- package/dist/commands/lint/lint.d.ts +39 -0
- package/dist/commands/lint/lint.integration.test.d.ts +1 -0
- package/dist/commands/lint/lint.js +820 -0
- package/dist/commands/lint/lint.options.test.d.ts +1 -0
- package/dist/commands/migrate/migrate.cli.test.d.ts +1 -0
- package/dist/commands/migrate/migrate.d.ts +7 -0
- package/dist/commands/migrate/migrate.integration.test.d.ts +1 -0
- package/dist/commands/migrate/migrate.js +37 -0
- package/dist/commands/migrate/migrate.options.test.d.ts +1 -0
- package/dist/commands/publish/publish.cli.test.d.ts +1 -0
- package/dist/commands/publish/publish.d.ts +12 -0
- package/dist/commands/publish/publish.integration.test.d.ts +1 -0
- package/dist/commands/publish/publish.js +104 -0
- package/dist/commands/publish/publish.options.test.d.ts +1 -0
- package/dist/commands/test/test.cli.test.d.ts +1 -0
- package/dist/commands/test/test.d.ts +50 -0
- package/dist/commands/test/test.integration.test.d.ts +1 -0
- package/dist/commands/test/test.js +327 -0
- package/dist/commands/test/test.options.test.d.ts +1 -0
- package/dist/commands/test/test.test.d.ts +1 -0
- package/dist/commands/update/update.cli.test.d.ts +1 -0
- package/dist/commands/update/update.d.ts +9 -0
- package/dist/commands/update/update.integration.test.d.ts +1 -0
- package/dist/commands/update/update.js +131 -0
- package/dist/commands/update/update.options.test.d.ts +1 -0
- package/dist/commands/upgrade/upgrade.cli.test.d.ts +1 -0
- package/dist/commands/upgrade/upgrade.d.ts +7 -0
- package/dist/commands/upgrade/upgrade.integration.test.d.ts +1 -0
- package/dist/commands/upgrade/upgrade.js +47 -0
- package/dist/commands/upgrade/upgrade.options.test.d.ts +1 -0
- package/dist/commands/versions/versions.cli.test.d.ts +1 -0
- package/dist/commands/versions/versions.d.ts +13 -0
- package/dist/commands/versions/versions.integration.test.d.ts +1 -0
- package/dist/commands/versions/versions.js +41 -0
- package/dist/commands/versions/versions.options.test.d.ts +1 -0
- package/dist/create/changelog.d.ts +6 -0
- package/dist/create/changelog.js +3 -3
- package/dist/index.d.ts +31 -0
- package/dist/index.js +35 -0
- package/dist/lex.d.ts +2 -0
- package/dist/lex.js +25 -22
- package/dist/types.d.ts +5 -0
- package/dist/types.js +1 -0
- package/dist/utils/aiService.d.ts +9 -0
- package/dist/utils/aiService.js +299 -0
- package/dist/utils/app.d.ts +41 -0
- package/dist/utils/app.js +53 -3
- package/dist/utils/file.d.ts +3 -0
- package/dist/utils/file.js +18 -3
- package/dist/utils/log.d.ts +1 -0
- package/dist/utils/log.js +2 -1
- package/dist/utils/reactShim.d.ts +2 -0
- package/dist/utils/reactShim.js +3 -3
- package/eslint.config.js +5 -0
- package/index.cjs +20 -0
- package/jest.config.cjs +31 -27
- package/jest.config.lex.d.ts +2 -0
- package/jest.config.lex.js +86 -38
- package/jest.setup.js +5 -0
- package/lex.config.js +50 -0
- package/package.json +73 -53
- package/{.postcssrc.js → postcss.config.js} +21 -9
- package/resolver.cjs +125 -14
- package/tsconfig.json +2 -1
- package/webpack.config.d.ts +2 -0
- package/webpack.config.js +27 -11
- package/dist/commands/build.js +0 -265
- package/dist/commands/bulid.test.js +0 -317
- package/dist/commands/clean.js +0 -31
- package/dist/commands/clean.test.js +0 -63
- package/dist/commands/compile.js +0 -195
- package/dist/commands/compile.test.js +0 -93
- package/dist/commands/config.js +0 -43
- package/dist/commands/copy.js +0 -38
- package/dist/commands/create.js +0 -120
- package/dist/commands/dev.js +0 -70
- package/dist/commands/init.js +0 -93
- package/dist/commands/link.js +0 -15
- package/dist/commands/lint.js +0 -179
- package/dist/commands/migrate.js +0 -37
- package/dist/commands/publish.js +0 -104
- package/dist/commands/test.js +0 -190
- package/dist/commands/update.js +0 -64
- package/dist/commands/upgrade.js +0 -47
- package/dist/commands/versions.js +0 -41
- package/dist/commands/versions.test.js +0 -49
- package/dist/lint.js +0 -11
- package/jest.setup.ts +0 -3
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Mock implementation of LexConfig
|
|
2
|
+
const defaultConfigValues = {
|
|
3
|
+
bundler: 'webpack',
|
|
4
|
+
useTypescript: false,
|
|
5
|
+
useGraphQl: false,
|
|
6
|
+
targetEnvironment: 'web',
|
|
7
|
+
sourcePath: './src',
|
|
8
|
+
outputPath: './dist'
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const LexConfig = {
|
|
12
|
+
config: defaultConfigValues,
|
|
13
|
+
parseConfig: jest.fn(),
|
|
14
|
+
checkTypescriptConfig: jest.fn()
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
module.exports = {
|
|
18
|
+
LexConfig,
|
|
19
|
+
defaultConfigValues
|
|
20
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Mock implementation of build module
|
|
2
|
+
const mockSpinner = {
|
|
3
|
+
start: jest.fn(),
|
|
4
|
+
succeed: jest.fn(),
|
|
5
|
+
fail: jest.fn()
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
const build = jest.fn().mockResolvedValue(0);
|
|
9
|
+
const buildWithEsBuild = jest.fn().mockResolvedValue(0);
|
|
10
|
+
const buildWithWebpack = jest.fn().mockResolvedValue(0);
|
|
11
|
+
|
|
12
|
+
module.exports = {
|
|
13
|
+
build,
|
|
14
|
+
buildWithEsBuild,
|
|
15
|
+
buildWithWebpack
|
|
16
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Mock implementation of chalk
|
|
2
|
+
const createChalkMock = (text) => text;
|
|
3
|
+
|
|
4
|
+
const chalkMock = {
|
|
5
|
+
red: createChalkMock,
|
|
6
|
+
green: createChalkMock,
|
|
7
|
+
blue: createChalkMock,
|
|
8
|
+
yellow: createChalkMock,
|
|
9
|
+
cyan: createChalkMock,
|
|
10
|
+
magenta: createChalkMock,
|
|
11
|
+
white: createChalkMock,
|
|
12
|
+
gray: createChalkMock,
|
|
13
|
+
grey: createChalkMock,
|
|
14
|
+
black: createChalkMock,
|
|
15
|
+
bold: createChalkMock,
|
|
16
|
+
dim: createChalkMock,
|
|
17
|
+
italic: createChalkMock,
|
|
18
|
+
underline: createChalkMock,
|
|
19
|
+
strikethrough: createChalkMock
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
module.exports = chalkMock;
|
|
23
|
+
module.exports.default = chalkMock;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Mock implementation of execa
|
|
2
|
+
const mockExeca = jest.fn().mockImplementation(() => ({
|
|
3
|
+
stdout: '',
|
|
4
|
+
stderr: '',
|
|
5
|
+
exitCode: 0,
|
|
6
|
+
command: 'mocked-command',
|
|
7
|
+
pid: 123
|
|
8
|
+
}));
|
|
9
|
+
|
|
10
|
+
mockExeca.sync = jest.fn().mockImplementation(() => ({
|
|
11
|
+
stdout: '',
|
|
12
|
+
stderr: '',
|
|
13
|
+
exitCode: 0,
|
|
14
|
+
command: 'mocked-command',
|
|
15
|
+
pid: 123
|
|
16
|
+
}));
|
|
17
|
+
|
|
18
|
+
module.exports = {
|
|
19
|
+
execa: mockExeca,
|
|
20
|
+
default: mockExeca
|
|
21
|
+
};
|
package/__mocks__/ora.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Mock implementation of ora
|
|
2
|
+
const mockSpinner = {
|
|
3
|
+
start: jest.fn().mockReturnThis(),
|
|
4
|
+
stop: jest.fn().mockReturnThis(),
|
|
5
|
+
succeed: jest.fn().mockReturnThis(),
|
|
6
|
+
fail: jest.fn().mockReturnThis(),
|
|
7
|
+
warn: jest.fn().mockReturnThis(),
|
|
8
|
+
info: jest.fn().mockReturnThis(),
|
|
9
|
+
text: '',
|
|
10
|
+
color: 'cyan',
|
|
11
|
+
isSpinning: false
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const mockOra = jest.fn().mockImplementation(() => mockSpinner);
|
|
15
|
+
|
|
16
|
+
module.exports = mockOra;
|
|
17
|
+
module.exports.default = mockOra;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Mock implementation of versions module
|
|
2
|
+
const jsonVersions = jest.fn().mockResolvedValue({});
|
|
3
|
+
const packages = jest.fn().mockResolvedValue([]);
|
|
4
|
+
const parseVersion = jest.fn().mockReturnValue('1.0.0');
|
|
5
|
+
const versions = jest.fn().mockResolvedValue(undefined);
|
|
6
|
+
|
|
7
|
+
module.exports = {
|
|
8
|
+
jsonVersions,
|
|
9
|
+
packages,
|
|
10
|
+
parseVersion,
|
|
11
|
+
versions
|
|
12
|
+
};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export interface EsbuildConfig {
|
|
2
|
+
entryPoints?: string[];
|
|
3
|
+
outdir?: string;
|
|
4
|
+
platform?: 'node' | 'browser';
|
|
5
|
+
target?: string;
|
|
6
|
+
format?: 'cjs' | 'esm';
|
|
7
|
+
minify?: boolean;
|
|
8
|
+
treeShaking?: boolean;
|
|
9
|
+
drop?: string[];
|
|
10
|
+
pure?: string[];
|
|
11
|
+
external?: string[];
|
|
12
|
+
splitting?: boolean;
|
|
13
|
+
metafile?: boolean;
|
|
14
|
+
sourcemap?: boolean | 'inline' | 'external';
|
|
15
|
+
legalComments?: 'none' | 'inline' | 'eof' | 'linked' | 'separate';
|
|
16
|
+
banner?: Record<string, string>;
|
|
17
|
+
footer?: Record<string, string>;
|
|
18
|
+
define?: Record<string, string>;
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
}
|
|
21
|
+
export interface JestConfig {
|
|
22
|
+
roots?: string[];
|
|
23
|
+
testEnvironment?: string;
|
|
24
|
+
transform?: Record<string, [string, Record<string, unknown>]>;
|
|
25
|
+
transformIgnorePatterns?: string[];
|
|
26
|
+
moduleNameMapper?: Record<string, string>;
|
|
27
|
+
extensionsToTreatAsEsm?: string[];
|
|
28
|
+
preset?: string;
|
|
29
|
+
[key: string]: unknown;
|
|
30
|
+
}
|
|
31
|
+
export interface WebpackConfig {
|
|
32
|
+
entry?: string | string[];
|
|
33
|
+
output?: Record<string, unknown>;
|
|
34
|
+
module?: Record<string, unknown>;
|
|
35
|
+
plugins?: unknown[];
|
|
36
|
+
[key: string]: unknown;
|
|
37
|
+
}
|
|
38
|
+
export interface AIConfig {
|
|
39
|
+
provider?: 'cursor' | 'copilot' | 'openai' | 'anthropic' | 'none';
|
|
40
|
+
apiKey?: string;
|
|
41
|
+
model?: string;
|
|
42
|
+
maxTokens?: number;
|
|
43
|
+
temperature?: number;
|
|
44
|
+
}
|
|
45
|
+
export interface LexConfigType {
|
|
46
|
+
ai?: AIConfig;
|
|
47
|
+
configFiles?: string[];
|
|
48
|
+
copyFiles?: string[];
|
|
49
|
+
entryHTML?: string;
|
|
50
|
+
entryJs?: string;
|
|
51
|
+
esbuild?: EsbuildConfig;
|
|
52
|
+
env?: object;
|
|
53
|
+
gitUrl?: string;
|
|
54
|
+
jest?: JestConfig;
|
|
55
|
+
libraryName?: string;
|
|
56
|
+
libraryTarget?: string;
|
|
57
|
+
outputFile?: string;
|
|
58
|
+
outputFullPath?: string;
|
|
59
|
+
outputHash?: boolean;
|
|
60
|
+
outputPath?: string;
|
|
61
|
+
packageManager?: 'npm' | 'yarn';
|
|
62
|
+
preset?: 'web' | 'node' | 'lambda' | 'mobile';
|
|
63
|
+
sourceFullPath?: string;
|
|
64
|
+
sourcePath?: string;
|
|
65
|
+
targetEnvironment?: 'node' | 'web';
|
|
66
|
+
useGraphQl?: boolean;
|
|
67
|
+
useTypescript?: boolean;
|
|
68
|
+
webpack?: WebpackConfig;
|
|
69
|
+
}
|
|
70
|
+
export type Config = LexConfigType;
|
|
71
|
+
export declare const defaultConfigValues: LexConfigType;
|
|
72
|
+
export declare class LexConfig {
|
|
73
|
+
static config: LexConfigType;
|
|
74
|
+
static set useTypescript(value: boolean);
|
|
75
|
+
static updateConfig(updatedConfig: LexConfigType): LexConfigType;
|
|
76
|
+
static addConfigParams(cmd: any, params: LexConfigType): void;
|
|
77
|
+
static parseConfig(cmd: any, isRoot?: boolean): Promise<void>;
|
|
78
|
+
static checkTypescriptConfig(): void;
|
|
79
|
+
}
|
package/dist/LexConfig.js
CHANGED
|
@@ -5,10 +5,26 @@ import { relativeFilePath } from "./utils/file.js";
|
|
|
5
5
|
import { log } from "./utils/log.js";
|
|
6
6
|
const cwd = process.cwd();
|
|
7
7
|
const defaultConfigValues = {
|
|
8
|
+
ai: {
|
|
9
|
+
provider: "none",
|
|
10
|
+
model: "gpt-4o",
|
|
11
|
+
maxTokens: 4e3,
|
|
12
|
+
temperature: 0.1
|
|
13
|
+
},
|
|
8
14
|
configFiles: [],
|
|
15
|
+
copyFiles: [],
|
|
9
16
|
entryHTML: "index.html",
|
|
10
17
|
entryJs: "index.js",
|
|
11
|
-
esbuild: {
|
|
18
|
+
esbuild: {
|
|
19
|
+
minify: true,
|
|
20
|
+
treeShaking: true,
|
|
21
|
+
drop: ["console", "debugger"],
|
|
22
|
+
pure: ["console.log", "console.warn", "console.error"],
|
|
23
|
+
legalComments: "none",
|
|
24
|
+
splitting: true,
|
|
25
|
+
metafile: false,
|
|
26
|
+
sourcemap: false
|
|
27
|
+
},
|
|
12
28
|
env: null,
|
|
13
29
|
jest: {},
|
|
14
30
|
outputFullPath: pathResolve(cwd, "./dist"),
|
|
@@ -41,9 +57,8 @@ class LexConfig {
|
|
|
41
57
|
}
|
|
42
58
|
}
|
|
43
59
|
}
|
|
44
|
-
// Set options from a custom configuration file
|
|
45
60
|
static updateConfig(updatedConfig) {
|
|
46
|
-
const { outputFullPath, outputPath, sourcePath, sourceFullPath, useTypescript } = updatedConfig;
|
|
61
|
+
const { outputFullPath, outputPath, sourcePath, sourceFullPath, useTypescript, ai } = updatedConfig;
|
|
47
62
|
const cwd2 = process.cwd();
|
|
48
63
|
if (useTypescript !== void 0) {
|
|
49
64
|
LexConfig.useTypescript = useTypescript;
|
|
@@ -54,10 +69,15 @@ class LexConfig {
|
|
|
54
69
|
if (sourcePath !== void 0 && sourceFullPath === void 0) {
|
|
55
70
|
updatedConfig.sourceFullPath = pathResolve(cwd2, sourcePath);
|
|
56
71
|
}
|
|
72
|
+
if (ai) {
|
|
73
|
+
LexConfig.config.ai = { ...LexConfig.config.ai, ...ai };
|
|
74
|
+
if (process.env.CURSOR_IDE === "true" && LexConfig.config.ai.provider === "none") {
|
|
75
|
+
LexConfig.config.ai.provider = "cursor";
|
|
76
|
+
}
|
|
77
|
+
}
|
|
57
78
|
LexConfig.config = { ...LexConfig.config, ...updatedConfig };
|
|
58
79
|
return LexConfig.config;
|
|
59
80
|
}
|
|
60
|
-
// Set option updates from the command line
|
|
61
81
|
static addConfigParams(cmd, params) {
|
|
62
82
|
const nameProperty = "_name";
|
|
63
83
|
const { environment, outputPath, sourcePath, typescript } = cmd;
|
|
@@ -85,13 +105,28 @@ class LexConfig {
|
|
|
85
105
|
0
|
|
86
106
|
);
|
|
87
107
|
}
|
|
88
|
-
// Get configuration
|
|
89
108
|
static async parseConfig(cmd, isRoot = true) {
|
|
90
|
-
const { cliName = "Lex", lexConfig, lexConfigName, quiet, typescript } = cmd;
|
|
91
|
-
const
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
109
|
+
const { cliName = "Lex", lexConfig, lexConfigName, quiet, typescript, debug = false } = cmd;
|
|
110
|
+
const configFormats = ["js", "mjs", "cjs", "ts", "json"];
|
|
111
|
+
const configBaseName = lexConfigName || "lex.config";
|
|
112
|
+
let configPath = lexConfig || "";
|
|
113
|
+
let configExists = lexConfig ? existsSync(configPath) : false;
|
|
114
|
+
if (!configPath || !configExists) {
|
|
115
|
+
if (debug) {
|
|
116
|
+
log(`Searching for config files with base name: ${configBaseName}`, "info", quiet);
|
|
117
|
+
}
|
|
118
|
+
for (const format of configFormats) {
|
|
119
|
+
const potentialPath = isRoot ? pathResolve(cwd, `./${configBaseName}.${format}`) : relativeFilePath(`${configBaseName}.${format}`, cwd);
|
|
120
|
+
if (debug) {
|
|
121
|
+
log(`Checking for config file: ${potentialPath}`, "info", quiet);
|
|
122
|
+
}
|
|
123
|
+
if (existsSync(potentialPath)) {
|
|
124
|
+
configPath = potentialPath;
|
|
125
|
+
configExists = true;
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
95
130
|
if (configExists) {
|
|
96
131
|
log(`Using ${cliName} configuration file: ${configPath}`, "note", quiet);
|
|
97
132
|
const ext = pathExtname(configPath);
|
|
@@ -102,6 +137,8 @@ class LexConfig {
|
|
|
102
137
|
try {
|
|
103
138
|
configJson = JSON.parse(configContent)?.default || {};
|
|
104
139
|
} catch (error) {
|
|
140
|
+
log(`
|
|
141
|
+
${cliName} Error: Failed to parse JSON config: ${error.message}`, "error", quiet);
|
|
105
142
|
configJson = {};
|
|
106
143
|
}
|
|
107
144
|
LexConfig.addConfigParams(cmd, configJson);
|
|
@@ -109,14 +146,45 @@ class LexConfig {
|
|
|
109
146
|
log(`
|
|
110
147
|
${cliName} Error: Config file malformed, ${configPath}`, "error", quiet);
|
|
111
148
|
}
|
|
112
|
-
} else if (
|
|
113
|
-
|
|
114
|
-
|
|
149
|
+
} else if ([".js", ".mjs", ".cjs", ".ts"].includes(ext)) {
|
|
150
|
+
try {
|
|
151
|
+
let lexCustomConfig;
|
|
152
|
+
if (ext === ".cjs") {
|
|
153
|
+
const fileUrl = new URL(`file:///${pathResolve(configPath)}`).href;
|
|
154
|
+
if (debug) {
|
|
155
|
+
log(`Loading CommonJS config from: ${fileUrl}`, "info", quiet);
|
|
156
|
+
}
|
|
157
|
+
lexCustomConfig = await import(fileUrl);
|
|
158
|
+
} else {
|
|
159
|
+
if (debug) {
|
|
160
|
+
log(`Loading ESM/TS config from: ${configPath}`, "info", quiet);
|
|
161
|
+
}
|
|
162
|
+
lexCustomConfig = await import(configPath);
|
|
163
|
+
}
|
|
164
|
+
const config = lexCustomConfig.default || lexCustomConfig;
|
|
165
|
+
if (debug) {
|
|
166
|
+
log(`Loaded config: ${JSON.stringify(config, null, 2)}`, "info", quiet);
|
|
167
|
+
}
|
|
168
|
+
if (!config) {
|
|
169
|
+
log(`
|
|
170
|
+
${cliName} Warning: Config file loaded but no configuration found`, "warn", quiet);
|
|
171
|
+
}
|
|
172
|
+
LexConfig.addConfigParams(cmd, config || {});
|
|
173
|
+
} catch (error) {
|
|
174
|
+
log(`
|
|
175
|
+
${cliName} Error: Failed to load config file: ${error.message}`, "error", quiet);
|
|
176
|
+
if (debug) {
|
|
177
|
+
console.error(error);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
115
180
|
} else {
|
|
116
181
|
log(`
|
|
117
|
-
${cliName} Error: Config file must be a JS or JSON file.`, "error", quiet);
|
|
182
|
+
${cliName} Error: Config file must be a JS, CJS, MJS, TS, or JSON file.`, "error", quiet);
|
|
118
183
|
}
|
|
119
184
|
} else {
|
|
185
|
+
if (debug) {
|
|
186
|
+
log("No config file found. Using default configuration.", "info", quiet);
|
|
187
|
+
}
|
|
120
188
|
LexConfig.useTypescript = !!typescript;
|
|
121
189
|
LexConfig.addConfigParams(cmd, LexConfig.config);
|
|
122
190
|
}
|
|
@@ -133,4 +201,4 @@ export {
|
|
|
133
201
|
LexConfig,
|
|
134
202
|
defaultConfigValues
|
|
135
203
|
};
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL0xleENvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge2V4dG5hbWUgYXMgcGF0aEV4dG5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtVUkx9IGZyb20gJ3VybCc7XG5cbmltcG9ydCB7cmVsYXRpdmVGaWxlUGF0aH0gZnJvbSAnLi91dGlscy9maWxlLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuL3V0aWxzL2xvZy5qcyc7XG5cbmNvbnN0IGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKTtcblxuZXhwb3J0IGludGVyZmFjZSBFc2J1aWxkQ29uZmlnIHtcbiAgZW50cnlQb2ludHM/OiBzdHJpbmdbXTtcbiAgb3V0ZGlyPzogc3RyaW5nO1xuICBwbGF0Zm9ybT86ICdub2RlJyB8ICdicm93c2VyJztcbiAgdGFyZ2V0Pzogc3RyaW5nO1xuICBmb3JtYXQ/OiAnY2pzJyB8ICdlc20nO1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEplc3RDb25maWcge1xuICByb290cz86IHN0cmluZ1tdO1xuICB0ZXN0RW52aXJvbm1lbnQ/OiBzdHJpbmc7XG4gIHRyYW5zZm9ybT86IFJlY29yZDxzdHJpbmcsIFtzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+XT47XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2VicGFja0NvbmZpZyB7XG4gIGVudHJ5Pzogc3RyaW5nIHwgc3RyaW5nW107XG4gIG91dHB1dD86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBtb2R1bGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgcGx1Z2lucz86IHVua25vd25bXTtcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZXhDb25maWdUeXBlIHtcbiAgY29uZmlnRmlsZXM/OiBzdHJpbmdbXTtcbiAgZW50cnlIVE1MPzogc3RyaW5nO1xuICBlbnRyeUpzPzogc3RyaW5nO1xuICBlc2J1aWxkPzogRXNidWlsZENvbmZpZztcbiAgZW52Pzogb2JqZWN0O1xuICBnaXRVcmw/OiBzdHJpbmc7XG4gIGplc3Q/OiBKZXN0Q29uZmlnO1xuICBsaWJyYXJ5TmFtZT86IHN0cmluZztcbiAgbGlicmFyeVRhcmdldD86IHN0cmluZztcbiAgb3V0cHV0RmlsZT86IHN0cmluZztcbiAgb3V0cHV0RnVsbFBhdGg/OiBzdHJpbmc7XG4gIG91dHB1dEhhc2g/OiBib29sZWFuO1xuICBvdXRwdXRQYXRoPzogc3RyaW5nO1xuICBwYWNrYWdlTWFuYWdlcj86ICducG0nIHwgJ3lhcm4nO1xuICBwcmVzZXQ/OiAnd2ViJyB8ICdub2RlJyB8ICdsYW1iZGEnIHwgJ21vYmlsZSc7XG4gIHNvdXJjZUZ1bGxQYXRoPzogc3RyaW5nO1xuICBzb3VyY2VQYXRoPzogc3RyaW5nO1xuICB0YXJnZXRFbnZpcm9ubWVudD86ICdub2RlJyB8ICd3ZWInO1xuICB1c2VHcmFwaFFsPzogYm9vbGVhbjtcbiAgdXNlVHlwZXNjcmlwdD86IGJvb2xlYW47XG4gIHdlYnBhY2s/OiBXZWJwYWNrQ29uZmlnO1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbmZpZ1ZhbHVlczogTGV4Q29uZmlnVHlwZSA9IHtcbiAgY29uZmlnRmlsZXM6IFtdLFxuICBlbnRyeUhUTUw6ICdpbmRleC5odG1sJyxcbiAgZW50cnlKczogJ2luZGV4LmpzJyxcbiAgZXNidWlsZDoge30sXG4gIGVudjogbnVsbCxcbiAgamVzdDoge30sXG4gIG91dHB1dEZ1bGxQYXRoOiBwYXRoUmVzb2x2ZShjd2QsICcuL2Rpc3QnKSxcbiAgb3V0cHV0SGFzaDogZmFsc2UsXG4gIG91dHB1dFBhdGg6ICcuL2Rpc3QnLFxuICBwYWNrYWdlTWFuYWdlcjogJ25wbScsXG4gIHByZXNldDogJ3dlYicsXG4gIHNvdXJjZUZ1bGxQYXRoOiBwYXRoUmVzb2x2ZShjd2QsICcuL3NyYycpLFxuICBzb3VyY2VQYXRoOiAnLi9zcmMnLFxuICB0YXJnZXRFbnZpcm9ubWVudDogJ3dlYicsXG4gIHVzZUdyYXBoUWw6IGZhbHNlLFxuICB1c2VUeXBlc2NyaXB0OiBmYWxzZSxcbiAgd2VicGFjazoge31cbn07XG5cbmV4cG9ydCBjbGFzcyBMZXhDb25maWcge1xuICBzdGF0aWMgY29uZmlnOiBMZXhDb25maWdUeXBlID0ge1xuICAgIC4uLmRlZmF1bHRDb25maWdWYWx1ZXNcbiAgfTtcblxuICBzdGF0aWMgc2V0IHVzZVR5cGVzY3JpcHQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBMZXhDb25maWcuY29uZmlnLnVzZVR5cGVzY3JpcHQgPSB2YWx1ZTtcbiAgICBjb25zdCB7c291cmNlRnVsbFBhdGh9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICAgIC8vIE1ha2Ugc3VyZSB3ZSBjaGFuZ2UgdGhlIGRlZmF1bHQgZW50cnkgZmlsZSBpZiBUeXBlc2NyaXB0IGlzIGJlaW5nIHVzZWQuXG4gICAgY29uc3Qge2VudHJ5SnN9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICAgIGlmKGVudHJ5SnMgPT09ICdpbmRleC5qcycgJiYgdmFsdWUpIHtcbiAgICAgIGNvbnN0IGluZGV4UGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoY3dkLCBzb3VyY2VGdWxsUGF0aCwgJ2luZGV4LnRzeCcpO1xuICAgICAgY29uc3QgaGFzSW5kZXhUc3g6IGJvb2xlYW4gPSBleGlzdHNTeW5jKGluZGV4UGF0aCk7XG5cbiAgICAgIGlmKGhhc0luZGV4VHN4KSB7XG4gICAgICAgIExleENvbmZpZy5jb25maWcuZW50cnlKcyA9ICdpbmRleC50c3gnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgTGV4Q29uZmlnLmNvbmZpZy5lbnRyeUpzID0gJ2luZGV4LnRzJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTZXQgb3B0aW9ucyBmcm9tIGEgY3VzdG9tIGNvbmZpZ3VyYXRpb24gZmlsZVxuICBzdGF0aWMgdXBkYXRlQ29uZmlnKHVwZGF0ZWRDb25maWc6IExleENvbmZpZ1R5cGUpOiBMZXhDb25maWdUeXBlIHtcbiAgICBjb25zdCB7b3V0cHV0RnVsbFBhdGgsIG91dHB1dFBhdGgsIHNvdXJjZVBhdGgsIHNvdXJjZUZ1bGxQYXRoLCB1c2VUeXBlc2NyaXB0fSA9IHVwZGF0ZWRDb25maWc7XG4gICAgY29uc3QgY3dkOiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpO1xuXG4gICAgLy8gVXNlIFR5cGVzY3JpcHRcbiAgICBpZih1c2VUeXBlc2NyaXB0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIExleENvbmZpZy51c2VUeXBlc2NyaXB0ID0gdXNlVHlwZXNjcmlwdDtcbiAgICB9XG5cbiAgICAvLyBEZXN0aW5hdGlvbiBQYXRoXG4gICAgaWYob3V0cHV0UGF0aCAhPT0gdW5kZWZpbmVkICYmIG91dHB1dEZ1bGxQYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHVwZGF0ZWRDb25maWcub3V0cHV0RnVsbFBhdGggPSBwYXRoUmVzb2x2ZShjd2QsIG91dHB1dFBhdGgpO1xuICAgIH1cblxuICAgIC8vIFNvdXJjZSBjb2RlIHBhdGhcbiAgICBpZihzb3VyY2VQYXRoICE9PSB1bmRlZmluZWQgJiYgc291cmNlRnVsbFBhdGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdXBkYXRlZENvbmZpZy5zb3VyY2VGdWxsUGF0aCA9IHBhdGhSZXNvbHZlKGN3ZCwgc291cmNlUGF0aCk7XG4gICAgfVxuXG4gICAgTGV4Q29uZmlnLmNvbmZpZyA9IHsuLi5MZXhDb25maWcuY29uZmlnLCAuLi51cGRhdGVkQ29uZmlnfTtcbiAgICByZXR1cm4gTGV4Q29uZmlnLmNvbmZpZztcbiAgfVxuXG4gIC8vIFNldCBvcHRpb24gdXBkYXRlcyBmcm9tIHRoZSBjb21tYW5kIGxpbmVcbiAgc3RhdGljIGFkZENvbmZpZ1BhcmFtcyhjbWQsIHBhcmFtczogTGV4Q29uZmlnVHlwZSkge1xuICAgIGNvbnN0IG5hbWVQcm9wZXJ0eTogc3RyaW5nID0gJ19uYW1lJztcbiAgICBjb25zdCB7ZW52aXJvbm1lbnQsIG91dHB1dFBhdGgsIHNvdXJjZVBhdGgsIHR5cGVzY3JpcHR9ID0gY21kO1xuXG4gICAgLy8gQ3VzdG9tIG91dHB1dCBkaXJcbiAgICBpZihvdXRwdXRQYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcmFtcy5vdXRwdXRQYXRoID0gb3V0cHV0UGF0aDtcbiAgICAgIHBhcmFtcy5vdXRwdXRGdWxsUGF0aCA9IHBhdGhSZXNvbHZlKGN3ZCwgb3V0cHV0UGF0aCk7XG4gICAgfVxuXG4gICAgLy8gQ3VzdG9tIHNvdXJjZSBkaXJcbiAgICBpZihzb3VyY2VQYXRoICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcmFtcy5zb3VyY2VQYXRoID0gc291cmNlUGF0aDtcbiAgICAgIHBhcmFtcy5zb3VyY2VGdWxsUGF0aCA9IHBhdGhSZXNvbHZlKGN3ZCwgc291cmNlUGF0aCk7XG4gICAgfVxuXG4gICAgLy8gRGV0ZXJtaW5lIGlmIHdlJ3JlIHVzaW5nIFR5cGVzY3JpcHQgb3IgRmxvd1xuICAgIGlmKHR5cGVzY3JpcHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyYW1zLnVzZVR5cGVzY3JpcHQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIFNldCB0aGUgdGFyZ2V0IGVudmlyb25tZW50XG4gICAgaWYoZW52aXJvbm1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyYW1zLnRhcmdldEVudmlyb25tZW50ID0gZW52aXJvbm1lbnQgPT09ICd3ZWInID8gJ3dlYicgOiAnbm9kZSc7XG4gICAgfVxuXG4gICAgcHJvY2Vzcy5lbnYuTEVYX0NPTkZJRyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAge1xuICAgICAgICAuLi5MZXhDb25maWcudXBkYXRlQ29uZmlnKHBhcmFtcyksXG4gICAgICAgIGNvbW1hbmROYW1lOiBjbWRbbmFtZVByb3BlcnR5XSxcbiAgICAgICAgaXNTdGF0aWM6IGNtZC5zdGF0aWNcbiAgICAgIH0sIG51bGwsIDBcbiAgICApO1xuICB9XG5cbiAgLy8gR2V0IGNvbmZpZ3VyYXRpb25cbiAgc3RhdGljIGFzeW5jIHBhcnNlQ29uZmlnKGNtZCwgaXNSb290OiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHtjbGlOYW1lID0gJ0xleCcsIGxleENvbmZpZywgbGV4Q29uZmlnTmFtZSwgcXVpZXQsIHR5cGVzY3JpcHR9ID0gY21kO1xuICAgIGNvbnN0IGNvbmZpZ05hbWU6IHN0cmluZyA9IGxleENvbmZpZ05hbWUgfHwgJ2xleC5jb25maWcuanMnO1xuICAgIGNvbnN0IGRlZmF1bHRDb25maWdQYXRoOiBzdHJpbmcgPSBpc1Jvb3RcbiAgICAgID8gcGF0aFJlc29sdmUoY3dkLCBgLi8ke2NvbmZpZ05hbWV9YClcbiAgICAgIDogcmVsYXRpdmVGaWxlUGF0aChjb25maWdOYW1lLCBjd2QpO1xuICAgIGNvbnN0IGNvbmZpZ1BhdGg6IHN0cmluZyA9IGxleENvbmZpZyB8fCBkZWZhdWx0Q29uZmlnUGF0aDtcbiAgICBjb25zdCBjb25maWdFeGlzdHM6IGJvb2xlYW4gPSBleGlzdHNTeW5jKGNvbmZpZ1BhdGgpO1xuXG4gICAgLy8gSWYgdXNlciBoYXMgYSBMZXggY29uZmlnIGZpbGUsIGxldHMgdXNlIGl0LlxuICAgIGlmKGNvbmZpZ0V4aXN0cykge1xuICAgICAgbG9nKGBVc2luZyAke2NsaU5hbWV9IGNvbmZpZ3VyYXRpb24gZmlsZTogJHtjb25maWdQYXRofWAsICdub3RlJywgcXVpZXQpO1xuICAgICAgY29uc3QgZXh0OiBzdHJpbmcgPSBwYXRoRXh0bmFtZShjb25maWdQYXRoKTtcblxuICAgICAgaWYoZXh0ID09PSAnLmpzb24nKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZ0NvbnRlbnQ6IHN0cmluZyA9IHJlYWRGaWxlU3luYyhjb25maWdQYXRoLCAndXRmOCcpO1xuXG4gICAgICAgIGlmKGNvbmZpZ0NvbnRlbnQpIHtcbiAgICAgICAgICBsZXQgY29uZmlnSnNvbjogTGV4Q29uZmlnVHlwZTtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25maWdKc29uID0gSlNPTi5wYXJzZShjb25maWdDb250ZW50KT8uZGVmYXVsdCB8fCB7fTtcbiAgICAgICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgICAgICBjb25maWdKc29uID0ge307XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgTGV4Q29uZmlnLmFkZENvbmZpZ1BhcmFtcyhjbWQsIGNvbmZpZ0pzb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogQ29uZmlnIGZpbGUgbWFsZm9ybWVkLCAke2NvbmZpZ1BhdGh9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYoZXh0ID09PSAnLmpzJykge1xuICAgICAgICBjb25zdCBsZXhDdXN0b21Db25maWcgPSBhd2FpdCBpbXBvcnQoY29uZmlnUGF0aCk7XG4gICAgICAgIExleENvbmZpZy5hZGRDb25maWdQYXJhbXMoY21kLCBsZXhDdXN0b21Db25maWcuZGVmYXVsdCB8fCB7fSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENvbmZpZyBmaWxlIG11c3QgYmUgYSBKUyBvciBKU09OIGZpbGUuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBEZXRlcm1pbmUgaWYgd2UncmUgdXNpbmcgVHlwZXNjcmlwdCBvciBGbG93XG4gICAgICBMZXhDb25maWcudXNlVHlwZXNjcmlwdCA9ICEhdHlwZXNjcmlwdDtcblxuICAgICAgLy8gU2F2ZSBjb25maWcgYXMgZW52aXJvbm1lbnQgdmFyaWFibGUgZm9yIG90aGVyIGNvbW1hbmRzIHRvIGluY2x1ZGVcbiAgICAgIExleENvbmZpZy5hZGRDb25maWdQYXJhbXMoY21kLCBMZXhDb25maWcuY29uZmlnKTtcbiAgICB9XG4gIH1cblxuICBzdGF0aWMgY2hlY2tUeXBlc2NyaXB0Q29uZmlnKCkge1xuICAgIGNvbnN0IHRzY29uZmlnUGF0aDogc3RyaW5nID0gcGF0aFJlc29sdmUoY3dkLCAnLi90c2NvbmZpZy5qc29uJyk7XG5cbiAgICBpZighZXhpc3RzU3luYyh0c2NvbmZpZ1BhdGgpKSB7XG4gICAgICBjb25zdCBkaXJOYW1lID0gbmV3IFVSTCgnLicsIGltcG9ydC5tZXRhLnVybCkucGF0aG5hbWU7XG4gICAgICB3cml0ZUZpbGVTeW5jKHRzY29uZmlnUGF0aCwgcmVhZEZpbGVTeW5jKHBhdGhSZXNvbHZlKGRpck5hbWUsICcuLi8uLi8uLi90c2NvbmZpZy5iYXNlLmpzb24nKSkpO1xuICAgIH1cbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxZQUFZLGNBQWMscUJBQW9CO0FBQ3RELFNBQVEsV0FBVyxhQUFhLFdBQVcsbUJBQWtCO0FBQzdELFNBQVEsV0FBVTtBQUVsQixTQUFRLHdCQUF1QjtBQUMvQixTQUFRLFdBQVU7QUFFbEIsTUFBTSxNQUFjLFFBQVEsSUFBSTtBQWtEekIsTUFBTSxzQkFBcUM7QUFBQSxFQUNoRCxhQUFhLENBQUM7QUFBQSxFQUNkLFdBQVc7QUFBQSxFQUNYLFNBQVM7QUFBQSxFQUNULFNBQVMsQ0FBQztBQUFBLEVBQ1YsS0FBSztBQUFBLEVBQ0wsTUFBTSxDQUFDO0FBQUEsRUFDUCxnQkFBZ0IsWUFBWSxLQUFLLFFBQVE7QUFBQSxFQUN6QyxZQUFZO0FBQUEsRUFDWixZQUFZO0FBQUEsRUFD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
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL0xleENvbmZpZy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7ZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jfSBmcm9tICdmcyc7XG5pbXBvcnQge2V4dG5hbWUgYXMgcGF0aEV4dG5hbWUsIHJlc29sdmUgYXMgcGF0aFJlc29sdmV9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtVUkx9IGZyb20gJ3VybCc7XG5cbmltcG9ydCB7cmVsYXRpdmVGaWxlUGF0aH0gZnJvbSAnLi91dGlscy9maWxlLmpzJztcbmltcG9ydCB7bG9nfSBmcm9tICcuL3V0aWxzL2xvZy5qcyc7XG5cbmNvbnN0IGN3ZDogc3RyaW5nID0gcHJvY2Vzcy5jd2QoKTtcblxuZXhwb3J0IGludGVyZmFjZSBFc2J1aWxkQ29uZmlnIHtcbiAgZW50cnlQb2ludHM/OiBzdHJpbmdbXTtcbiAgb3V0ZGlyPzogc3RyaW5nO1xuICBwbGF0Zm9ybT86ICdub2RlJyB8ICdicm93c2VyJztcbiAgdGFyZ2V0Pzogc3RyaW5nO1xuICBmb3JtYXQ/OiAnY2pzJyB8ICdlc20nO1xuICBtaW5pZnk/OiBib29sZWFuO1xuICB0cmVlU2hha2luZz86IGJvb2xlYW47XG4gIGRyb3A/OiBzdHJpbmdbXTtcbiAgcHVyZT86IHN0cmluZ1tdO1xuICBleHRlcm5hbD86IHN0cmluZ1tdO1xuICBzcGxpdHRpbmc/OiBib29sZWFuO1xuICBtZXRhZmlsZT86IGJvb2xlYW47XG4gIHNvdXJjZW1hcD86IGJvb2xlYW4gfCAnaW5saW5lJyB8ICdleHRlcm5hbCc7XG4gIGxlZ2FsQ29tbWVudHM/OiAnbm9uZScgfCAnaW5saW5lJyB8ICdlb2YnIHwgJ2xpbmtlZCcgfCAnc2VwYXJhdGUnO1xuICBiYW5uZXI/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBmb290ZXI/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBkZWZpbmU/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEplc3RDb25maWcge1xuICByb290cz86IHN0cmluZ1tdO1xuICB0ZXN0RW52aXJvbm1lbnQ/OiBzdHJpbmc7XG4gIHRyYW5zZm9ybT86IFJlY29yZDxzdHJpbmcsIFtzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+XT47XG4gIHRyYW5zZm9ybUlnbm9yZVBhdHRlcm5zPzogc3RyaW5nW107XG4gIG1vZHVsZU5hbWVNYXBwZXI/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBleHRlbnNpb25zVG9UcmVhdEFzRXNtPzogc3RyaW5nW107XG4gIHByZXNldD86IHN0cmluZztcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXZWJwYWNrQ29uZmlnIHtcbiAgZW50cnk/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgb3V0cHV0PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIG1vZHVsZT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBwbHVnaW5zPzogdW5rbm93bltdO1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFJQ29uZmlnIHtcbiAgcHJvdmlkZXI/OiAnY3Vyc29yJyB8ICdjb3BpbG90JyB8ICdvcGVuYWknIHwgJ2FudGhyb3BpYycgfCAnbm9uZSc7XG4gIGFwaUtleT86IHN0cmluZztcbiAgbW9kZWw/OiBzdHJpbmc7XG4gIG1heFRva2Vucz86IG51bWJlcjtcbiAgdGVtcGVyYXR1cmU/OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIExleENvbmZpZ1R5cGUge1xuICBhaT86IEFJQ29uZmlnO1xuICBjb25maWdGaWxlcz86IHN0cmluZ1tdO1xuICBjb3B5RmlsZXM/OiBzdHJpbmdbXTtcbiAgZW50cnlIVE1MPzogc3RyaW5nO1xuICBlbnRyeUpzPzogc3RyaW5nO1xuICBlc2J1aWxkPzogRXNidWlsZENvbmZpZztcbiAgZW52Pzogb2JqZWN0O1xuICBnaXRVcmw/OiBzdHJpbmc7XG4gIGplc3Q/OiBKZXN0Q29uZmlnO1xuICBsaWJyYXJ5TmFtZT86IHN0cmluZztcbiAgbGlicmFyeVRhcmdldD86IHN0cmluZztcbiAgb3V0cHV0RmlsZT86IHN0cmluZztcbiAgb3V0cHV0RnVsbFBhdGg/OiBzdHJpbmc7XG4gIG91dHB1dEhhc2g/OiBib29sZWFuO1xuICBvdXRwdXRQYXRoPzogc3RyaW5nO1xuICBwYWNrYWdlTWFuYWdlcj86ICducG0nIHwgJ3lhcm4nO1xuICBwcmVzZXQ/OiAnd2ViJyB8ICdub2RlJyB8ICdsYW1iZGEnIHwgJ21vYmlsZSc7XG4gIHNvdXJjZUZ1bGxQYXRoPzogc3RyaW5nO1xuICBzb3VyY2VQYXRoPzogc3RyaW5nO1xuICB0YXJnZXRFbnZpcm9ubWVudD86ICdub2RlJyB8ICd3ZWInO1xuICB1c2VHcmFwaFFsPzogYm9vbGVhbjtcbiAgdXNlVHlwZXNjcmlwdD86IGJvb2xlYW47XG4gIHdlYnBhY2s/OiBXZWJwYWNrQ29uZmlnO1xufVxuXG5leHBvcnQgdHlwZSBDb25maWcgPSBMZXhDb25maWdUeXBlO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbmZpZ1ZhbHVlczogTGV4Q29uZmlnVHlwZSA9IHtcbiAgYWk6IHtcbiAgICBwcm92aWRlcjogJ25vbmUnLFxuICAgIG1vZGVsOiAnZ3B0LTRvJyxcbiAgICBtYXhUb2tlbnM6IDQwMDAsXG4gICAgdGVtcGVyYXR1cmU6IDAuMVxuICB9LFxuICBjb25maWdGaWxlczogW10sXG4gIGNvcHlGaWxlczogW10sXG4gIGVudHJ5SFRNTDogJ2luZGV4Lmh0bWwnLFxuICBlbnRyeUpzOiAnaW5kZXguanMnLFxuICBlc2J1aWxkOiB7XG4gICAgbWluaWZ5OiB0cnVlLFxuICAgIHRyZWVTaGFraW5nOiB0cnVlLFxuICAgIGRyb3A6IFsnY29uc29sZScsICdkZWJ1Z2dlciddLFxuICAgIHB1cmU6IFsnY29uc29sZS5sb2cnLCAnY29uc29sZS53YXJuJywgJ2NvbnNvbGUuZXJyb3InXSxcbiAgICBsZWdhbENvbW1lbnRzOiAnbm9uZScsXG4gICAgc3BsaXR0aW5nOiB0cnVlLFxuICAgIG1ldGFmaWxlOiBmYWxzZSxcbiAgICBzb3VyY2VtYXA6IGZhbHNlXG4gIH0sXG4gIGVudjogbnVsbCxcbiAgamVzdDoge30sXG4gIG91dHB1dEZ1bGxQYXRoOiBwYXRoUmVzb2x2ZShjd2QsICcuL2Rpc3QnKSxcbiAgb3V0cHV0SGFzaDogZmFsc2UsXG4gIG91dHB1dFBhdGg6ICcuL2Rpc3QnLFxuICBwYWNrYWdlTWFuYWdlcjogJ25wbScsXG4gIHByZXNldDogJ3dlYicsXG4gIHNvdXJjZUZ1bGxQYXRoOiBwYXRoUmVzb2x2ZShjd2QsICcuL3NyYycpLFxuICBzb3VyY2VQYXRoOiAnLi9zcmMnLFxuICB0YXJnZXRFbnZpcm9ubWVudDogJ3dlYicsXG4gIHVzZUdyYXBoUWw6IGZhbHNlLFxuICB1c2VUeXBlc2NyaXB0OiBmYWxzZSxcbiAgd2VicGFjazoge31cbn07XG5cbmV4cG9ydCBjbGFzcyBMZXhDb25maWcge1xuICBzdGF0aWMgY29uZmlnOiBMZXhDb25maWdUeXBlID0ge1xuICAgIC4uLmRlZmF1bHRDb25maWdWYWx1ZXNcbiAgfTtcblxuICBzdGF0aWMgc2V0IHVzZVR5cGVzY3JpcHQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBMZXhDb25maWcuY29uZmlnLnVzZVR5cGVzY3JpcHQgPSB2YWx1ZTtcbiAgICBjb25zdCB7c291cmNlRnVsbFBhdGh9ID0gTGV4Q29uZmlnLmNvbmZpZztcblxuICAgIGNvbnN0IHtlbnRyeUpzfSA9IExleENvbmZpZy5jb25maWc7XG5cbiAgICBpZihlbnRyeUpzID09PSAnaW5kZXguanMnICYmIHZhbHVlKSB7XG4gICAgICBjb25zdCBpbmRleFBhdGg6IHN0cmluZyA9IHBhdGhSZXNvbHZlKGN3ZCwgc291cmNlRnVsbFBhdGgsICdpbmRleC50c3gnKTtcbiAgICAgIGNvbnN0IGhhc0luZGV4VHN4OiBib29sZWFuID0gZXhpc3RzU3luYyhpbmRleFBhdGgpO1xuXG4gICAgICBpZihoYXNJbmRleFRzeCkge1xuICAgICAgICBMZXhDb25maWcuY29uZmlnLmVudHJ5SnMgPSAnaW5kZXgudHN4JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIExleENvbmZpZy5jb25maWcuZW50cnlKcyA9ICdpbmRleC50cyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIHVwZGF0ZUNvbmZpZyh1cGRhdGVkQ29uZmlnOiBMZXhDb25maWdUeXBlKTogTGV4Q29uZmlnVHlwZSB7XG4gICAgY29uc3Qge291dHB1dEZ1bGxQYXRoLCBvdXRwdXRQYXRoLCBzb3VyY2VQYXRoLCBzb3VyY2VGdWxsUGF0aCwgdXNlVHlwZXNjcmlwdCwgYWl9ID0gdXBkYXRlZENvbmZpZztcbiAgICBjb25zdCBjd2Q6IHN0cmluZyA9IHByb2Nlc3MuY3dkKCk7XG5cbiAgICBpZih1c2VUeXBlc2NyaXB0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIExleENvbmZpZy51c2VUeXBlc2NyaXB0ID0gdXNlVHlwZXNjcmlwdDtcbiAgICB9XG5cbiAgICBpZihvdXRwdXRQYXRoICE9PSB1bmRlZmluZWQgJiYgb3V0cHV0RnVsbFBhdGggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdXBkYXRlZENvbmZpZy5vdXRwdXRGdWxsUGF0aCA9IHBhdGhSZXNvbHZlKGN3ZCwgb3V0cHV0UGF0aCk7XG4gICAgfVxuXG4gICAgaWYoc291cmNlUGF0aCAhPT0gdW5kZWZpbmVkICYmIHNvdXJjZUZ1bGxQYXRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHVwZGF0ZWRDb25maWcuc291cmNlRnVsbFBhdGggPSBwYXRoUmVzb2x2ZShjd2QsIHNvdXJjZVBhdGgpO1xuICAgIH1cblxuICAgIGlmKGFpKSB7XG4gICAgICBMZXhDb25maWcuY29uZmlnLmFpID0gey4uLkxleENvbmZpZy5jb25maWcuYWksIC4uLmFpfTtcblxuICAgICAgaWYocHJvY2Vzcy5lbnYuQ1VSU09SX0lERSA9PT0gJ3RydWUnICYmIExleENvbmZpZy5jb25maWcuYWkucHJvdmlkZXIgPT09ICdub25lJykge1xuICAgICAgICBMZXhDb25maWcuY29uZmlnLmFpLnByb3ZpZGVyID0gJ2N1cnNvcic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgTGV4Q29uZmlnLmNvbmZpZyA9IHsuLi5MZXhDb25maWcuY29uZmlnLCAuLi51cGRhdGVkQ29uZmlnfTtcblxuICAgIHJldHVybiBMZXhDb25maWcuY29uZmlnO1xuICB9XG5cbiAgc3RhdGljIGFkZENvbmZpZ1BhcmFtcyhjbWQsIHBhcmFtczogTGV4Q29uZmlnVHlwZSkge1xuICAgIGNvbnN0IG5hbWVQcm9wZXJ0eTogc3RyaW5nID0gJ19uYW1lJztcbiAgICBjb25zdCB7ZW52aXJvbm1lbnQsIG91dHB1dFBhdGgsIHNvdXJjZVBhdGgsIHR5cGVzY3JpcHR9ID0gY21kO1xuXG4gICAgaWYob3V0cHV0UGF0aCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJhbXMub3V0cHV0UGF0aCA9IG91dHB1dFBhdGg7XG4gICAgICBwYXJhbXMub3V0cHV0RnVsbFBhdGggPSBwYXRoUmVzb2x2ZShjd2QsIG91dHB1dFBhdGgpO1xuICAgIH1cblxuICAgIGlmKHNvdXJjZVBhdGggIT09IHVuZGVmaW5lZCkge1xuICAgICAgcGFyYW1zLnNvdXJjZVBhdGggPSBzb3VyY2VQYXRoO1xuICAgICAgcGFyYW1zLnNvdXJjZUZ1bGxQYXRoID0gcGF0aFJlc29sdmUoY3dkLCBzb3VyY2VQYXRoKTtcbiAgICB9XG5cbiAgICBpZih0eXBlc2NyaXB0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHBhcmFtcy51c2VUeXBlc2NyaXB0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZihlbnZpcm9ubWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBwYXJhbXMudGFyZ2V0RW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudCA9PT0gJ3dlYicgPyAnd2ViJyA6ICdub2RlJztcbiAgICB9XG5cbiAgICBwcm9jZXNzLmVudi5MRVhfQ09ORklHID0gSlNPTi5zdHJpbmdpZnkoXG4gICAgICB7XG4gICAgICAgIC4uLkxleENvbmZpZy51cGRhdGVDb25maWcocGFyYW1zKSxcbiAgICAgICAgY29tbWFuZE5hbWU6IGNtZFtuYW1lUHJvcGVydHldLFxuICAgICAgICBpc1N0YXRpYzogY21kLnN0YXRpY1xuICAgICAgfSwgbnVsbCwgMFxuICAgICk7XG4gIH1cblxuICBzdGF0aWMgYXN5bmMgcGFyc2VDb25maWcoY21kLCBpc1Jvb3Q6IGJvb2xlYW4gPSB0cnVlKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qge2NsaU5hbWUgPSAnTGV4JywgbGV4Q29uZmlnLCBsZXhDb25maWdOYW1lLCBxdWlldCwgdHlwZXNjcmlwdCwgZGVidWcgPSBmYWxzZX0gPSBjbWQ7XG4gICAgY29uc3QgY29uZmlnRm9ybWF0cyA9IFsnanMnLCAnbWpzJywgJ2NqcycsICd0cycsICdqc29uJ107XG4gICAgY29uc3QgY29uZmlnQmFzZU5hbWU6IHN0cmluZyA9IGxleENvbmZpZ05hbWUgfHwgJ2xleC5jb25maWcnO1xuICAgIGxldCBjb25maWdQYXRoOiBzdHJpbmcgPSBsZXhDb25maWcgfHwgJyc7XG4gICAgbGV0IGNvbmZpZ0V4aXN0czogYm9vbGVhbiA9IGxleENvbmZpZyA/IGV4aXN0c1N5bmMoY29uZmlnUGF0aCkgOiBmYWxzZTtcblxuICAgIGlmKCFjb25maWdQYXRoIHx8ICFjb25maWdFeGlzdHMpIHtcbiAgICAgIGlmKGRlYnVnKSB7XG4gICAgICAgIGxvZyhgU2VhcmNoaW5nIGZvciBjb25maWcgZmlsZXMgd2l0aCBiYXNlIG5hbWU6ICR7Y29uZmlnQmFzZU5hbWV9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICB9XG5cbiAgICAgIGZvcihjb25zdCBmb3JtYXQgb2YgY29uZmlnRm9ybWF0cykge1xuICAgICAgICBjb25zdCBwb3RlbnRpYWxQYXRoID0gaXNSb290XG4gICAgICAgICAgPyBwYXRoUmVzb2x2ZShjd2QsIGAuLyR7Y29uZmlnQmFzZU5hbWV9LiR7Zm9ybWF0fWApXG4gICAgICAgICAgOiByZWxhdGl2ZUZpbGVQYXRoKGAke2NvbmZpZ0Jhc2VOYW1lfS4ke2Zvcm1hdH1gLCBjd2QpO1xuXG4gICAgICAgIGlmKGRlYnVnKSB7XG4gICAgICAgICAgbG9nKGBDaGVja2luZyBmb3IgY29uZmlnIGZpbGU6ICR7cG90ZW50aWFsUGF0aH1gLCAnaW5mbycsIHF1aWV0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKGV4aXN0c1N5bmMocG90ZW50aWFsUGF0aCkpIHtcbiAgICAgICAgICBjb25maWdQYXRoID0gcG90ZW50aWFsUGF0aDtcbiAgICAgICAgICBjb25maWdFeGlzdHMgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYoY29uZmlnRXhpc3RzKSB7XG4gICAgICBsb2coYFVzaW5nICR7Y2xpTmFtZX0gY29uZmlndXJhdGlvbiBmaWxlOiAke2NvbmZpZ1BhdGh9YCwgJ25vdGUnLCBxdWlldCk7XG4gICAgICBjb25zdCBleHQ6IHN0cmluZyA9IHBhdGhFeHRuYW1lKGNvbmZpZ1BhdGgpO1xuXG4gICAgICBpZihleHQgPT09ICcuanNvbicpIHtcbiAgICAgICAgY29uc3QgY29uZmlnQ29udGVudDogc3RyaW5nID0gcmVhZEZpbGVTeW5jKGNvbmZpZ1BhdGgsICd1dGY4Jyk7XG5cbiAgICAgICAgaWYoY29uZmlnQ29udGVudCkge1xuICAgICAgICAgIGxldCBjb25maWdKc29uOiBMZXhDb25maWdUeXBlO1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbmZpZ0pzb24gPSBKU09OLnBhcnNlKGNvbmZpZ0NvbnRlbnQpPy5kZWZhdWx0IHx8IHt9O1xuICAgICAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgICAgIGxvZyhgXFxuJHtjbGlOYW1lfSBFcnJvcjogRmFpbGVkIHRvIHBhcnNlIEpTT04gY29uZmlnOiAke2Vycm9yLm1lc3NhZ2V9YCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgICAgICAgY29uZmlnSnNvbiA9IHt9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIExleENvbmZpZy5hZGRDb25maWdQYXJhbXMoY21kLCBjb25maWdKc29uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENvbmZpZyBmaWxlIG1hbGZvcm1lZCwgJHtjb25maWdQYXRofWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmKFsnLmpzJywgJy5tanMnLCAnLmNqcycsICcudHMnXS5pbmNsdWRlcyhleHQpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgbGV0IGxleEN1c3RvbUNvbmZpZztcblxuICAgICAgICAgIGlmKGV4dCA9PT0gJy5janMnKSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlVXJsID0gbmV3IFVSTChgZmlsZTovLy8ke3BhdGhSZXNvbHZlKGNvbmZpZ1BhdGgpfWApLmhyZWY7XG5cbiAgICAgICAgICAgIGlmKGRlYnVnKSB7XG4gICAgICAgICAgICAgIGxvZyhgTG9hZGluZyBDb21tb25KUyBjb25maWcgZnJvbTogJHtmaWxlVXJsfWAsICdpbmZvJywgcXVpZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV4Q3VzdG9tQ29uZmlnID0gYXdhaXQgaW1wb3J0KGZpbGVVcmwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZihkZWJ1Zykge1xuICAgICAgICAgICAgICBsb2coYExvYWRpbmcgRVNNL1RTIGNvbmZpZyBmcm9tOiAke2NvbmZpZ1BhdGh9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxleEN1c3RvbUNvbmZpZyA9IGF3YWl0IGltcG9ydChjb25maWdQYXRoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBjb25maWcgPSBsZXhDdXN0b21Db25maWcuZGVmYXVsdCB8fCBsZXhDdXN0b21Db25maWc7XG5cbiAgICAgICAgICBpZihkZWJ1Zykge1xuICAgICAgICAgICAgbG9nKGBMb2FkZWQgY29uZmlnOiAke0pTT04uc3RyaW5naWZ5KGNvbmZpZywgbnVsbCwgMil9YCwgJ2luZm8nLCBxdWlldCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYoIWNvbmZpZykge1xuICAgICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IFdhcm5pbmc6IENvbmZpZyBmaWxlIGxvYWRlZCBidXQgbm8gY29uZmlndXJhdGlvbiBmb3VuZGAsICd3YXJuJywgcXVpZXQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIExleENvbmZpZy5hZGRDb25maWdQYXJhbXMoY21kLCBjb25maWcgfHwge30pO1xuICAgICAgICB9IGNhdGNoKGVycm9yKSB7XG4gICAgICAgICAgbG9nKGBcXG4ke2NsaU5hbWV9IEVycm9yOiBGYWlsZWQgdG8gbG9hZCBjb25maWcgZmlsZTogJHtlcnJvci5tZXNzYWdlfWAsICdlcnJvcicsIHF1aWV0KTtcbiAgICAgICAgICBpZihkZWJ1Zykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2coYFxcbiR7Y2xpTmFtZX0gRXJyb3I6IENvbmZpZyBmaWxlIG11c3QgYmUgYSBKUywgQ0pTLCBNSlMsIFRTLCBvciBKU09OIGZpbGUuYCwgJ2Vycm9yJywgcXVpZXQpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZihkZWJ1Zykge1xuICAgICAgICBsb2coJ05vIGNvbmZpZyBmaWxlIGZvdW5kLiBVc2luZyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uJywgJ2luZm8nLCBxdWlldCk7XG4gICAgICB9XG5cbiAgICAgIExleENvbmZpZy51c2VUeXBlc2NyaXB0ID0gISF0eXBlc2NyaXB0O1xuICAgICAgTGV4Q29uZmlnLmFkZENvbmZpZ1BhcmFtcyhjbWQsIExleENvbmZpZy5jb25maWcpO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRpYyBjaGVja1R5cGVzY3JpcHRDb25maWcoKSB7XG4gICAgY29uc3QgdHNjb25maWdQYXRoOiBzdHJpbmcgPSBwYXRoUmVzb2x2ZShjd2QsICcuL3RzY29uZmlnLmpzb24nKTtcblxuICAgIGlmKCFleGlzdHNTeW5jKHRzY29uZmlnUGF0aCkpIHtcbiAgICAgIGNvbnN0IGRpck5hbWUgPSBuZXcgVVJMKCcuJywgaW1wb3J0Lm1ldGEudXJsKS5wYXRobmFtZTtcbiAgICAgIHdyaXRlRmlsZVN5bmModHNjb25maWdQYXRoLCByZWFkRmlsZVN5bmMocGF0aFJlc29sdmUoZGlyTmFtZSwgJy4uLy4uLy4uL3RzY29uZmlnLmJhc2UuanNvbicpKSk7XG4gICAgfVxuICB9XG59Il0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBUSxZQUFZLGNBQWMscUJBQW9CO0FBQ3RELFNBQVEsV0FBVyxhQUFhLFdBQVcsbUJBQWtCO0FBQzdELFNBQVEsV0FBVTtBQUVsQixTQUFRLHdCQUF1QjtBQUMvQixTQUFRLFdBQVU7QUFFbEIsTUFBTSxNQUFjLFFBQVEsSUFBSTtBQTZFekIsTUFBTSxzQkFBcUM7QUFBQSxFQUNoRCxJQUFJO0FBQUEsSUFDRixVQUFVO0FBQUEsSUFDVixPQUFPO0FBQUEsSUFDUCxXQUFXO0FBQUEsSUFDWCxhQUFhO0FBQUEsRUFDZjtBQUFBLEVBQ0EsYUFBYSxDQUFDO0FBQUEsRUFDZCxXQUFXLENBQUM7QUFBQSxFQUNaLFdBQVc7QUFBQSxFQUNYLFNBQVM7QUFBQSxFQUNULFNBQVM7QUFBQSxJQUNQLFFBQVE7QUFBQSxJQUNSLGFBQWE7QUFBQSxJQUNiLE1BQU0sQ0FBQyxXQUFXLFVBQVU7QUFBQSxJQUM1QixNQUFNLENBQUMsZUFBZSxnQkFBZ0IsZUFBZTtBQUFBLElBQ3JELGVBQWU7QUFBQSxJQUNmLFdBQVc7QUFBQSxJQUNYLFVBQVU7QUFBQSxJQUNWLFdBQVc7QUFBQSxFQUNiO0FBQUEsRUFDQSxLQUFLO0FBQUEsRUFDTCxNQUFNLENBQUM7QUFBQSxFQUNQLGdCQUFnQixZQUFZLEtBQUssUUFBUTtBQUFBLEVBQ3pDLFlBQVk7QUFBQSxFQUNaLFlBQVk7QUFBQSxFQUNaLGdCQUFnQjtBQUFBLEVBQ2hCLFFBQVE7QUFBQSxFQUNSLGdCQUFnQixZQUFZLEtBQUssT0FBTztBQUFBLEVBQ3hDLFlBQVk7QUFBQSxFQUNaLG1CQUFtQjtBQUFBLEVBQ25CLFlBQVk7QUFBQSxFQUNaLGVBQWU7QUFBQSxFQUNmLFNBQVMsQ0FBQztBQUNaO0FBRU8sTUFBTSxVQUFVO0FBQUEsRUFDckIsT0FBTyxTQUF3QjtBQUFBLElBQzdCLEdBQUc7QUFBQSxFQUNMO0FBQUEsRUFFQSxXQUFXLGNBQWMsT0FBZ0I7QUFDdkMsY0FBVSxPQUFPLGdCQUFnQjtBQUNqQyxVQUFNLEVBQUMsZUFBYyxJQUFJLFVBQVU7QUFFbkMsVUFBTSxFQUFDLFFBQU8sSUFBSSxVQUFVO0FBRTVCLFFBQUcsWUFBWSxjQUFjLE9BQU87QUFDbEMsWUFBTSxZQUFvQixZQUFZLEtBQUssZ0JBQWdCLFdBQVc7QUFDdEUsWUFBTSxjQUF1QixXQUFXLFNBQVM7QUFFakQsVUFBRyxhQUFhO0FBQ2Qsa0JBQVUsT0FBTyxVQUFVO0FBQUEsTUFDN0IsT0FBTztBQUNMLGtCQUFVLE9BQU8sVUFBVTtBQUFBLE1BQzdCO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUVBLE9BQU8sYUFBYSxlQUE2QztBQUMvRCxVQUFNLEVBQUMsZ0JBQWdCLFlBQVksWUFBWSxnQkFBZ0IsZUFBZSxHQUFFLElBQUk7QUFDcEYsVUFBTUEsT0FBYyxRQUFRLElBQUk7QUFFaEMsUUFBRyxrQkFBa0IsUUFBVztBQUM5QixnQkFBVSxnQkFBZ0I7QUFBQSxJQUM1QjtBQUVBLFFBQUcsZUFBZSxVQUFhLG1CQUFtQixRQUFXO0FBQzNELG9CQUFjLGlCQUFpQixZQUFZQSxNQUFLLFVBQVU7QUFBQSxJQUM1RDtBQUVBLFFBQUcsZUFBZSxVQUFhLG1CQUFtQixRQUFXO0FBQzNELG9CQUFjLGlCQUFpQixZQUFZQSxNQUFLLFVBQVU7QUFBQSxJQUM1RDtBQUVBLFFBQUcsSUFBSTtBQUNMLGdCQUFVLE9BQU8sS0FBSyxFQUFDLEdBQUcsVUFBVSxPQUFPLElBQUksR0FBRyxHQUFFO0FBRXBELFVBQUcsUUFBUSxJQUFJLGVBQWUsVUFBVSxVQUFVLE9BQU8sR0FBRyxhQUFhLFFBQVE7QUFDL0Usa0JBQVUsT0FBTyxHQUFHLFdBQVc7QUFBQSxNQUNqQztBQUFBLElBQ0Y7QUFFQSxjQUFVLFNBQVMsRUFBQyxHQUFHLFVBQVUsUUFBUSxHQUFHLGNBQWE7QUFFekQsV0FBTyxVQUFVO0FBQUEsRUFDbkI7QUFBQSxFQUVBLE9BQU8sZ0JBQWdCLEtBQUssUUFBdUI7QUFDakQsVUFBTSxlQUF1QjtBQUM3QixVQUFNLEVBQUMsYUFBYSxZQUFZLFlBQVksV0FBVSxJQUFJO0FBRTFELFFBQUcsZUFBZSxRQUFXO0FBQzNCLGFBQU8sYUFBYTtBQUNwQixhQUFPLGlCQUFpQixZQUFZLEtBQUssVUFBVTtBQUFBLElBQ3JEO0FBRUEsUUFBRyxlQUFlLFFBQVc7QUFDM0IsYUFBTyxhQUFhO0FBQ3BCLGFBQU8saUJBQWlCLFlBQVksS0FBSyxVQUFVO0FBQUEsSUFDckQ7QUFFQSxRQUFHLGVBQWUsUUFBVztBQUMzQixhQUFPLGdCQUFnQjtBQUFBLElBQ3pCO0FBRUEsUUFBRyxnQkFBZ0IsUUFBVztBQUM1QixhQUFPLG9CQUFvQixnQkFBZ0IsUUFBUSxRQUFRO0FBQUEsSUFDN0Q7QUFFQSxZQUFRLElBQUksYUFBYSxLQUFLO0FBQUEsTUFDNUI7QUFBQSxRQUNFLEdBQUcsVUFBVSxhQUFhLE1BQU07QUFBQSxRQUNoQyxhQUFhLElBQUksWUFBWTtBQUFBLFFBQzdCLFVBQVUsSUFBSTtBQUFBLE1BQ2hCO0FBQUEsTUFBRztBQUFBLE1BQU07QUFBQSxJQUNYO0FBQUEsRUFDRjtBQUFBLEVBRUEsYUFBYSxZQUFZLEtBQUssU0FBa0IsTUFBcUI7QUFDbkUsVUFBTSxFQUFDLFVBQVUsT0FBTyxXQUFXLGVBQWUsT0FBTyxZQUFZLFFBQVEsTUFBSyxJQUFJO0FBQ3RGLFVBQU0sZ0JBQWdCLENBQUMsTUFBTSxPQUFPLE9BQU8sTUFBTSxNQUFNO0FBQ3ZELFVBQU0saUJBQXlCLGlCQUFpQjtBQUNoRCxRQUFJLGFBQXFCLGFBQWE7QUFDdEMsUUFBSSxlQUF3QixZQUFZLFdBQVcsVUFBVSxJQUFJO0FBRWpFLFFBQUcsQ0FBQyxjQUFjLENBQUMsY0FBYztBQUMvQixVQUFHLE9BQU87QUFDUixZQUFJLDhDQUE4QyxjQUFjLElBQUksUUFBUSxLQUFLO0FBQUEsTUFDbkY7QUFFQSxpQkFBVSxVQUFVLGVBQWU7QUFDakMsY0FBTSxnQkFBZ0IsU0FDbEIsWUFBWSxLQUFLLEtBQUssY0FBYyxJQUFJLE1BQU0sRUFBRSxJQUNoRCxpQkFBaUIsR0FBRyxjQUFjLElBQUksTUFBTSxJQUFJLEdBQUc7QUFFdkQsWUFBRyxPQUFPO0FBQ1IsY0FBSSw2QkFBNkIsYUFBYSxJQUFJLFFBQVEsS0FBSztBQUFBLFFBQ2pFO0FBRUEsWUFBRyxXQUFXLGFBQWEsR0FBRztBQUM1Qix1QkFBYTtBQUNiLHlCQUFlO0FBQ2Y7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFFQSxRQUFHLGNBQWM7QUFDZixVQUFJLFNBQVMsT0FBTyx3QkFBd0IsVUFBVSxJQUFJLFFBQVEsS0FBSztBQUN2RSxZQUFNLE1BQWMsWUFBWSxVQUFVO0FBRTFDLFVBQUcsUUFBUSxTQUFTO0FBQ2xCLGNBQU0sZ0JBQXdCLGFBQWEsWUFBWSxNQUFNO0FBRTdELFlBQUcsZUFBZTtBQUNoQixjQUFJO0FBRUosY0FBSTtBQUNGLHlCQUFhLEtBQUssTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDO0FBQUEsVUFDdEQsU0FBUSxPQUFPO0FBQ2IsZ0JBQUk7QUFBQSxFQUFLLE9BQU8sd0NBQXdDLE1BQU0sT0FBTyxJQUFJLFNBQVMsS0FBSztBQUN2Rix5QkFBYSxDQUFDO0FBQUEsVUFDaEI7QUFFQSxvQkFBVSxnQkFBZ0IsS0FBSyxVQUFVO0FBQUEsUUFDM0MsT0FBTztBQUNMLGNBQUk7QUFBQSxFQUFLLE9BQU8sa0NBQWtDLFVBQVUsSUFBSSxTQUFTLEtBQUs7QUFBQSxRQUNoRjtBQUFBLE1BQ0YsV0FBVSxDQUFDLE9BQU8sUUFBUSxRQUFRLEtBQUssRUFBRSxTQUFTLEdBQUcsR0FBRztBQUN0RCxZQUFJO0FBQ0YsY0FBSTtBQUVKLGNBQUcsUUFBUSxRQUFRO0FBQ2pCLGtCQUFNLFVBQVUsSUFBSSxJQUFJLFdBQVcsWUFBWSxVQUFVLENBQUMsRUFBRSxFQUFFO0FBRTlELGdCQUFHLE9BQU87QUFDUixrQkFBSSxpQ0FBaUMsT0FBTyxJQUFJLFFBQVEsS0FBSztBQUFBLFlBQy9EO0FBQ0EsOEJBQWtCLE1BQU0sT0FBTztBQUFBLFVBQ2pDLE9BQU87QUFDTCxnQkFBRyxPQUFPO0FBQ1Isa0JBQUksK0JBQStCLFVBQVUsSUFBSSxRQUFRLEtBQUs7QUFBQSxZQUNoRTtBQUVBLDhCQUFrQixNQUFNLE9BQU87QUFBQSxVQUNqQztBQUVBLGdCQUFNLFNBQVMsZ0JBQWdCLFdBQVc7QUFFMUMsY0FBRyxPQUFPO0FBQ1IsZ0JBQUksa0JBQWtCLEtBQUssVUFBVSxRQUFRLE1BQU0sQ0FBQyxDQUFDLElBQUksUUFBUSxLQUFLO0FBQUEsVUFDeEU7QUFFQSxjQUFHLENBQUMsUUFBUTtBQUNWLGdCQUFJO0FBQUEsRUFBSyxPQUFPLDJEQUEyRCxRQUFRLEtBQUs7QUFBQSxVQUMxRjtBQUVBLG9CQUFVLGdCQUFnQixLQUFLLFVBQVUsQ0FBQyxDQUFDO0FBQUEsUUFDN0MsU0FBUSxPQUFPO0FBQ2IsY0FBSTtBQUFBLEVBQUssT0FBTyx1Q0FBdUMsTUFBTSxPQUFPLElBQUksU0FBUyxLQUFLO0FBQ3RGLGNBQUcsT0FBTztBQUNSLG9CQUFRLE1BQU0sS0FBSztBQUFBLFVBQ3JCO0FBQUEsUUFDRjtBQUFBLE1BQ0YsT0FBTztBQUNMLFlBQUk7QUFBQSxFQUFLLE9BQU8saUVBQWlFLFNBQVMsS0FBSztBQUFBLE1BQ2pHO0FBQUEsSUFDRixPQUFPO0FBQ0wsVUFBRyxPQUFPO0FBQ1IsWUFBSSxzREFBc0QsUUFBUSxLQUFLO0FBQUEsTUFDekU7QUFFQSxnQkFBVSxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzVCLGdCQUFVLGdCQUFnQixLQUFLLFVBQVUsTUFBTTtBQUFBLElBQ2pEO0FBQUEsRUFDRjtBQUFBLEVBRUEsT0FBTyx3QkFBd0I7QUFDN0IsVUFBTSxlQUF1QixZQUFZLEtBQUssaUJBQWlCO0FBRS9ELFFBQUcsQ0FBQyxXQUFXLFlBQVksR0FBRztBQUM1QixZQUFNLFVBQVUsSUFBSSxJQUFJLEtBQUssWUFBWSxHQUFHLEVBQUU7QUFDOUMsb0JBQWMsY0FBYyxhQUFhLFlBQVksU0FBUyw2QkFBNkIsQ0FBQyxDQUFDO0FBQUEsSUFDL0Y7QUFBQSxFQUNGO0FBQ0Y7IiwKICAibmFtZXMiOiBbImN3ZCJdCn0K
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
export interface AIOptions {
|
|
3
|
+
readonly cliName?: string;
|
|
4
|
+
readonly context?: boolean;
|
|
5
|
+
readonly file?: string;
|
|
6
|
+
readonly lexConfig?: string;
|
|
7
|
+
readonly model?: string;
|
|
8
|
+
readonly prompt?: string;
|
|
9
|
+
readonly quiet?: boolean;
|
|
10
|
+
readonly task?: 'generate' | 'explain' | 'test' | 'optimize' | 'help' | 'ask' | 'analyze';
|
|
11
|
+
readonly debug?: boolean;
|
|
12
|
+
readonly provider?: string;
|
|
13
|
+
readonly dir?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const aiFunction: (options: AIOptions) => Promise<any>;
|
|
16
|
+
export declare const ai: Command;
|
|
17
|
+
export default ai;
|