helixlife-expert-cli 0.3.1 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/cli/bin/helixlife-expert.js +1 -1
- package/cli/dist/modules/analysis/api.d.ts +28 -0
- package/cli/dist/modules/analysis/api.d.ts.map +1 -0
- package/cli/dist/modules/analysis/api.js +264 -0
- package/cli/dist/modules/analysis/api.js.map +1 -0
- package/cli/dist/modules/analysis/bio.d.ts +159 -0
- package/cli/dist/modules/analysis/bio.d.ts.map +1 -0
- package/cli/dist/modules/analysis/bio.js +275 -0
- package/cli/dist/modules/analysis/bio.js.map +1 -0
- package/cli/dist/modules/analysis/catalog.d.ts +21 -0
- package/cli/dist/modules/analysis/catalog.d.ts.map +1 -0
- package/cli/dist/modules/analysis/catalog.js +123 -0
- package/cli/dist/modules/analysis/catalog.js.map +1 -0
- package/cli/dist/modules/analysis/commands.d.ts +15 -0
- package/cli/dist/modules/analysis/commands.d.ts.map +1 -0
- package/cli/dist/modules/analysis/commands.js +463 -0
- package/cli/dist/modules/analysis/commands.js.map +1 -0
- package/cli/dist/modules/analysis/constants.d.ts +14 -0
- package/cli/dist/modules/analysis/constants.d.ts.map +1 -1
- package/cli/dist/modules/analysis/constants.js +15 -0
- package/cli/dist/modules/analysis/constants.js.map +1 -1
- package/cli/dist/modules/analysis/errors.d.ts +11 -0
- package/cli/dist/modules/analysis/errors.d.ts.map +1 -0
- package/cli/dist/modules/analysis/errors.js +84 -0
- package/cli/dist/modules/analysis/errors.js.map +1 -0
- package/cli/dist/modules/analysis/files.d.ts +2 -0
- package/cli/dist/modules/analysis/files.d.ts.map +1 -0
- package/cli/dist/modules/analysis/files.js +33 -0
- package/cli/dist/modules/analysis/files.js.map +1 -0
- package/cli/dist/modules/analysis/flags.d.ts +27 -0
- package/cli/dist/modules/analysis/flags.d.ts.map +1 -0
- package/cli/dist/modules/analysis/flags.js +58 -0
- package/cli/dist/modules/analysis/flags.js.map +1 -0
- package/cli/dist/modules/analysis/index.d.ts.map +1 -1
- package/cli/dist/modules/analysis/index.js +154 -7
- package/cli/dist/modules/analysis/index.js.map +1 -1
- package/cli/dist/modules/analysis/inputs.d.ts +36 -0
- package/cli/dist/modules/analysis/inputs.d.ts.map +1 -0
- package/cli/dist/modules/analysis/inputs.js +120 -0
- package/cli/dist/modules/analysis/inputs.js.map +1 -0
- package/cli/dist/modules/analysis/json.d.ts +7 -0
- package/cli/dist/modules/analysis/json.d.ts.map +1 -0
- package/cli/dist/modules/analysis/json.js +30 -0
- package/cli/dist/modules/analysis/json.js.map +1 -0
- package/cli/dist/modules/analysis/overrides.d.ts +5 -0
- package/cli/dist/modules/analysis/overrides.d.ts.map +1 -0
- package/cli/dist/modules/analysis/overrides.js +150 -0
- package/cli/dist/modules/analysis/overrides.js.map +1 -0
- package/cli/dist/modules/analysis/prepare.d.ts +47 -0
- package/cli/dist/modules/analysis/prepare.d.ts.map +1 -0
- package/cli/dist/modules/analysis/prepare.js +910 -0
- package/cli/dist/modules/analysis/prepare.js.map +1 -0
- package/cli/dist/modules/analysis/schema.d.ts +5 -0
- package/cli/dist/modules/analysis/schema.d.ts.map +1 -0
- package/cli/dist/modules/analysis/schema.js +39 -0
- package/cli/dist/modules/analysis/schema.js.map +1 -0
- package/cli/dist/modules/expert-scaffold.d.ts.map +1 -1
- package/cli/dist/modules/expert-scaffold.js +1 -0
- package/cli/dist/modules/expert-scaffold.js.map +1 -1
- package/cli/dist/modules/fund/index.d.ts.map +1 -1
- package/cli/dist/modules/fund/index.js +1 -0
- package/cli/dist/modules/fund/index.js.map +1 -1
- package/cli/dist/modules/literature/index.d.ts.map +1 -1
- package/cli/dist/modules/literature/index.js +1 -0
- package/cli/dist/modules/literature/index.js.map +1 -1
- package/cli/dist/modules/meta/index.d.ts.map +1 -1
- package/cli/dist/modules/meta/index.js +1 -0
- package/cli/dist/modules/meta/index.js.map +1 -1
- package/cli/dist/modules/proposal/index.d.ts.map +1 -1
- package/cli/dist/modules/proposal/index.js +2 -0
- package/cli/dist/modules/proposal/index.js.map +1 -1
- package/cli/dist/modules/sci/index.d.ts.map +1 -1
- package/cli/dist/modules/sci/index.js +1 -0
- package/cli/dist/modules/sci/index.js.map +1 -1
- package/cli/dist/modules/shared/workflow-app/command.js +11 -11
- package/cli/dist/modules/shared/workflow-app/command.js.map +1 -1
- package/cli/dist/modules/upgrade/index.d.ts.map +1 -1
- package/cli/dist/modules/upgrade/index.js +1 -0
- package/cli/dist/modules/upgrade/index.js.map +1 -1
- package/cli/dist/program.d.ts.map +1 -1
- package/cli/dist/program.js +3 -1
- package/cli/dist/program.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { writeFile } from "node:fs/promises";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { basename, join } from "node:path";
|
|
4
|
+
import { fetchWithTimeout } from "../../core/index.js";
|
|
5
|
+
import { ANALYSIS_BIO_TIMEOUT_MS } from "./constants.js";
|
|
6
|
+
import { AnalysisError } from "./errors.js";
|
|
7
|
+
import { resolveUserPath } from "../../core/paths.js";
|
|
8
|
+
export async function downloadToPath(url, outputPath) {
|
|
9
|
+
let response;
|
|
10
|
+
try {
|
|
11
|
+
response = await fetchWithTimeout(url, { method: "GET" }, ANALYSIS_BIO_TIMEOUT_MS);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
throw new AnalysisError("下载失败,请检查网络后重试。");
|
|
15
|
+
}
|
|
16
|
+
if (!response.ok) {
|
|
17
|
+
throw new AnalysisError(`下载失败 (${response.status})`);
|
|
18
|
+
}
|
|
19
|
+
const target = outputPath ? resolveUserPath(outputPath) : defaultDownloadPath(url);
|
|
20
|
+
const bytes = Buffer.from(await response.arrayBuffer());
|
|
21
|
+
await writeFile(target, bytes);
|
|
22
|
+
return target;
|
|
23
|
+
}
|
|
24
|
+
function defaultDownloadPath(url) {
|
|
25
|
+
try {
|
|
26
|
+
const name = decodeURIComponent(basename(new URL(url).pathname)) || "download.bin";
|
|
27
|
+
return join(homedir(), "Downloads", name);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return join(homedir(), "Downloads", "download.bin");
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../../src/modules/analysis/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,UAA8B;IAC9E,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,uBAAuB,CAAC,CAAC;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,aAAa,CAAC,SAAS,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACnF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,MAAM,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAW;IACtC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,cAAc,CAAC;QACnF,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface ToolRunFlags {
|
|
2
|
+
demo: boolean;
|
|
3
|
+
files: string[];
|
|
4
|
+
sets: string[];
|
|
5
|
+
specifics: string[];
|
|
6
|
+
configPath?: string;
|
|
7
|
+
cloudDataId?: string;
|
|
8
|
+
cloudKey?: string;
|
|
9
|
+
cloudFilter?: string;
|
|
10
|
+
cloudIndex?: number;
|
|
11
|
+
cloudRecordJson?: string;
|
|
12
|
+
cloudRecordFile?: string;
|
|
13
|
+
recordKey?: string;
|
|
14
|
+
recordId?: string;
|
|
15
|
+
recordJson?: string;
|
|
16
|
+
recordFile?: string;
|
|
17
|
+
menuUuid?: string;
|
|
18
|
+
route?: string;
|
|
19
|
+
uuid?: string;
|
|
20
|
+
toolProductUuid?: string;
|
|
21
|
+
download?: string;
|
|
22
|
+
downloadItem?: number;
|
|
23
|
+
downloadLabel?: string;
|
|
24
|
+
}
|
|
25
|
+
export declare function readToolRunFlags(raw: Record<string, unknown>): ToolRunFlags;
|
|
26
|
+
export declare function collectRepeat(_value: string, previous: string[] | undefined): string[];
|
|
27
|
+
//# sourceMappingURL=flags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags.d.ts","sourceRoot":"","sources":["../../../src/modules/analysis/flags.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAyB3E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAEtF"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { AnalysisError } from "./errors.js";
|
|
2
|
+
export function readToolRunFlags(raw) {
|
|
3
|
+
return {
|
|
4
|
+
demo: raw.demo === true,
|
|
5
|
+
files: stringList(raw.file),
|
|
6
|
+
sets: stringList(raw.set),
|
|
7
|
+
specifics: stringList(raw.specific),
|
|
8
|
+
configPath: optionalText(raw.config),
|
|
9
|
+
cloudDataId: optionalText(raw.cloudDataId),
|
|
10
|
+
cloudKey: optionalText(raw.cloudKey),
|
|
11
|
+
cloudFilter: optionalText(raw.cloudFilter),
|
|
12
|
+
cloudIndex: optionalIndex(raw.cloudIndex, "--cloudIndex"),
|
|
13
|
+
cloudRecordJson: optionalText(raw.cloudRecordJson),
|
|
14
|
+
cloudRecordFile: optionalText(raw.cloudRecordFile),
|
|
15
|
+
recordKey: optionalText(raw.recordKey),
|
|
16
|
+
recordId: optionalText(raw.recordId),
|
|
17
|
+
recordJson: optionalText(raw.recordJson),
|
|
18
|
+
recordFile: optionalText(raw.recordFile),
|
|
19
|
+
menuUuid: optionalText(raw.menuUuid),
|
|
20
|
+
route: optionalText(raw.route),
|
|
21
|
+
uuid: optionalText(raw.uuid),
|
|
22
|
+
toolProductUuid: optionalText(raw.toolProductUuid),
|
|
23
|
+
download: optionalText(raw.download),
|
|
24
|
+
downloadItem: optionalInteger(raw.downloadItem, "--downloadItem"),
|
|
25
|
+
downloadLabel: optionalText(raw.downloadLabel),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function collectRepeat(_value, previous) {
|
|
29
|
+
return [...(previous ?? []), _value];
|
|
30
|
+
}
|
|
31
|
+
function stringList(value) {
|
|
32
|
+
if (Array.isArray(value)) {
|
|
33
|
+
return value.filter((item) => typeof item === "string");
|
|
34
|
+
}
|
|
35
|
+
return typeof value === "string" && value ? [value] : [];
|
|
36
|
+
}
|
|
37
|
+
function optionalText(value) {
|
|
38
|
+
return typeof value === "string" && value.trim() ? value : undefined;
|
|
39
|
+
}
|
|
40
|
+
function optionalIndex(value, flag) {
|
|
41
|
+
if (value === undefined || value === null || value === "")
|
|
42
|
+
return undefined;
|
|
43
|
+
const raw = String(value);
|
|
44
|
+
if (!/^(0|[1-9]\d*)$/.test(raw)) {
|
|
45
|
+
throw new AnalysisError(`${flag} 无效: ${raw}`);
|
|
46
|
+
}
|
|
47
|
+
return Number(raw);
|
|
48
|
+
}
|
|
49
|
+
function optionalInteger(value, flag) {
|
|
50
|
+
if (value === undefined || value === null || value === "")
|
|
51
|
+
return undefined;
|
|
52
|
+
const raw = String(value);
|
|
53
|
+
if (!/^-?\d+$/.test(raw)) {
|
|
54
|
+
throw new AnalysisError(`${flag} 无效: ${raw}`);
|
|
55
|
+
}
|
|
56
|
+
return Number(raw);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flags.js","sourceRoot":"","sources":["../../../src/modules/analysis/flags.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/analysis/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/analysis/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsDzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2J/D"}
|
|
@@ -1,23 +1,170 @@
|
|
|
1
1
|
import { emitJson } from "../../core/index.js";
|
|
2
2
|
import { ANALYSIS_EXPERT_ID, ANALYSIS_EXPERT_TITLE } from "./constants.js";
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import { runAnalysisCommand, runHistoryDelete, runHistoryDownload, runHistoryList, runHistoryRename, runHistorySave, runHistoryView, runSpecificSearch, runToolCloud, runToolExec, runToolInspect, runToolMenus, runToolPrepare, runToolSearch, } from "./commands.js";
|
|
4
|
+
const FORMAT = ["--format <format>", "输出格式:markdown | json(本命令固定 JSON)", "json"];
|
|
5
|
+
function collect(value, previous = []) {
|
|
6
|
+
return [...previous, value];
|
|
7
|
+
}
|
|
8
|
+
function addResolveOptions(command) {
|
|
9
|
+
return command
|
|
10
|
+
.option("--toolProductUuid <uuid>", "工具产品 UUID,默认仙桃主产品")
|
|
11
|
+
.option("--uuid <uuid>", "工具 UUID;与 --route 同时传入时跳过菜单解析")
|
|
12
|
+
.option("--route <route>", "工具 route,例如 app1.violin_flat")
|
|
13
|
+
.option("--menuUuid <uuid>", "菜单 UUID");
|
|
14
|
+
}
|
|
15
|
+
function addInputOptions(command) {
|
|
16
|
+
return command
|
|
17
|
+
.option("--demo", "使用模块默认远端示例输入")
|
|
18
|
+
.option("--file <path>", "本地文件;可重复,多上传写成 key=path", collect, [])
|
|
19
|
+
.option("--set <entry>", "覆盖 args_main,点分路径,例如 title.title=My Title", collect, [])
|
|
20
|
+
.option("--specific <entry>", "覆盖 args_specific,例如 genes=TP53", collect, [])
|
|
21
|
+
.option("--config <path>", "args_main 覆盖 JSON 文件")
|
|
22
|
+
.option("--cloudDataId <id>", "按 data_id 选择云端记录")
|
|
23
|
+
.option("--cloudFilter <keyword>", "按疾病或关键词筛选云端记录")
|
|
24
|
+
.option("--cloudIndex <n>", "云端记录的 0 起序号")
|
|
25
|
+
.option("--cloudKey <key>", "云端字段名,例如 surv")
|
|
26
|
+
.option("--cloudRecordJson <json>", "选中的云端记录 JSON")
|
|
27
|
+
.option("--cloudRecordFile <path>", "选中的云端记录 JSON 文件")
|
|
28
|
+
.option("--recordKey <key>", "XTRecord 字段名")
|
|
29
|
+
.option("--recordId <id>", "按 record_id 选择历史记录")
|
|
30
|
+
.option("--recordJson <json>", "选中的历史记录 JSON")
|
|
31
|
+
.option("--recordFile <path>", "选中的历史记录 JSON 文件");
|
|
32
|
+
}
|
|
33
|
+
// 注册数据分析专家:业务命令在本 CLI 内调用菜单、生信统一入口和原上传接口
|
|
5
34
|
export function registerAnalysisCommands(program) {
|
|
6
|
-
const analysis = program
|
|
7
|
-
.command(ANALYSIS_EXPERT_ID)
|
|
8
|
-
.description(ANALYSIS_EXPERT_TITLE);
|
|
35
|
+
const analysis = program.command(ANALYSIS_EXPERT_ID).description(ANALYSIS_EXPERT_TITLE);
|
|
9
36
|
analysis
|
|
10
37
|
.command("info")
|
|
11
38
|
.description("查看数据分析专家模块状态")
|
|
39
|
+
.option(...FORMAT)
|
|
12
40
|
.action(() => {
|
|
13
41
|
emitJson({
|
|
14
42
|
ok: true,
|
|
15
43
|
expert: ANALYSIS_EXPERT_ID,
|
|
16
44
|
title: ANALYSIS_EXPERT_TITLE,
|
|
17
45
|
implemented: true,
|
|
18
|
-
runtime: "
|
|
19
|
-
note: "
|
|
46
|
+
runtime: "internal",
|
|
47
|
+
note: "分析/绘图由本 CLI 直接调用菜单、生信统一入口与上传接口,凭证为 ~/.config/helixlife",
|
|
20
48
|
});
|
|
21
49
|
});
|
|
50
|
+
const tool = analysis.command("tool").description("检索、检视并执行数据分析工具");
|
|
51
|
+
tool
|
|
52
|
+
.command("search <keyword>")
|
|
53
|
+
.description("按工具 id、标题、路径或 route 搜索")
|
|
54
|
+
.option("--toolProductUuid <uuid>", "工具产品 UUID,默认仙桃主产品")
|
|
55
|
+
.option(...FORMAT)
|
|
56
|
+
.action(async (keyword, opts) => {
|
|
57
|
+
await runAnalysisCommand("tool search", () => runToolSearch(keyword, opts.toolProductUuid));
|
|
58
|
+
});
|
|
59
|
+
tool
|
|
60
|
+
.command("menus")
|
|
61
|
+
.description("列出工具目录(标题、module_id、path、route)")
|
|
62
|
+
.option("--toolProductUuid <uuid>", "工具产品 UUID,默认仙桃主产品")
|
|
63
|
+
.option(...FORMAT)
|
|
64
|
+
.action(async (opts) => {
|
|
65
|
+
await runAnalysisCommand("tool menus", () => runToolMenus(opts.toolProductUuid));
|
|
66
|
+
});
|
|
67
|
+
tool
|
|
68
|
+
.command("inspect <tool>")
|
|
69
|
+
.description("查看工具动态输入与参数 schema")
|
|
70
|
+
.option("--toolProductUuid <uuid>", "工具产品 UUID,默认仙桃主产品")
|
|
71
|
+
.option(...FORMAT)
|
|
72
|
+
.action(async (name, opts) => {
|
|
73
|
+
await runAnalysisCommand("tool inspect", () => runToolInspect(name, opts.toolProductUuid));
|
|
74
|
+
});
|
|
75
|
+
const cloud = tool
|
|
76
|
+
.command("cloud <tool>")
|
|
77
|
+
.description("分页列出工具的云端数据候选")
|
|
78
|
+
.option("--filter <keyword>", "云端筛选词,例如疾病名")
|
|
79
|
+
.option("--page <n>", "页码,从 1 开始", "1")
|
|
80
|
+
.option("--all", "从当前页合并到最后一页")
|
|
81
|
+
.option("--argsKey <key>", "云端字段名;默认识别")
|
|
82
|
+
.option("--recordJson <json>", "当前云端记录种子 JSON")
|
|
83
|
+
.option("--recordFile <path>", "当前云端记录种子 JSON 文件")
|
|
84
|
+
.option("--uuid <uuid>", "工具 UUID")
|
|
85
|
+
.option("--toolProductUuid <uuid>", "工具产品 UUID,默认仙桃主产品")
|
|
86
|
+
.option(...FORMAT);
|
|
87
|
+
cloud.action(async (name, opts) => {
|
|
88
|
+
await runAnalysisCommand("tool cloud", () => runToolCloud(name, opts));
|
|
89
|
+
});
|
|
90
|
+
const specific = tool
|
|
91
|
+
.command("specific-search <tool> <argsKey> <query>")
|
|
92
|
+
.description("搜索动态 args_specific 的可选值")
|
|
93
|
+
.option("--selected <value>", "当前已选值")
|
|
94
|
+
.option(...FORMAT);
|
|
95
|
+
addResolveOptions(specific);
|
|
96
|
+
addInputOptions(specific);
|
|
97
|
+
specific.action(async (name, argsKey, query, opts) => {
|
|
98
|
+
await runAnalysisCommand("tool specific-search", () => runSpecificSearch(name, argsKey, query, opts));
|
|
99
|
+
});
|
|
100
|
+
const prepare = tool
|
|
101
|
+
.command("prepare <tool>")
|
|
102
|
+
.description("准备输入并返回最终动态 schema")
|
|
103
|
+
.option(...FORMAT);
|
|
104
|
+
addResolveOptions(prepare);
|
|
105
|
+
addInputOptions(prepare);
|
|
106
|
+
prepare.action(async (name, opts) => {
|
|
107
|
+
await runAnalysisCommand("tool prepare", () => runToolPrepare(name, opts));
|
|
108
|
+
});
|
|
109
|
+
const exec = tool
|
|
110
|
+
.command("exec <tool>")
|
|
111
|
+
.description("提交分析;需要落盘时加 --download")
|
|
112
|
+
.option("--download <path>", "提交后下载到本地路径")
|
|
113
|
+
.option("--downloadItem <n>", "多个产物时按 1 起序号选择")
|
|
114
|
+
.option("--downloadLabel <text>", "多个产物时按名称选择")
|
|
115
|
+
.option(...FORMAT);
|
|
116
|
+
addResolveOptions(exec);
|
|
117
|
+
addInputOptions(exec);
|
|
118
|
+
exec.action(async (name, opts) => {
|
|
119
|
+
await runAnalysisCommand("tool exec", () => runToolExec(name, opts));
|
|
120
|
+
});
|
|
121
|
+
const history = analysis.command("history").description("查看、下载和管理分析历史");
|
|
122
|
+
history
|
|
123
|
+
.command("list")
|
|
124
|
+
.description("列出历史记录")
|
|
125
|
+
.option("--page <n>", "页码,从 1 开始", "1")
|
|
126
|
+
.option(...FORMAT)
|
|
127
|
+
.action(async (opts) => {
|
|
128
|
+
await runAnalysisCommand("history list", () => runHistoryList(opts.page));
|
|
129
|
+
});
|
|
130
|
+
history
|
|
131
|
+
.command("view <fuid>")
|
|
132
|
+
.description("查看一条历史记录的可下载文件")
|
|
133
|
+
.option(...FORMAT)
|
|
134
|
+
.action(async (fuid) => {
|
|
135
|
+
await runAnalysisCommand("history view", () => runHistoryView(fuid));
|
|
136
|
+
});
|
|
137
|
+
history
|
|
138
|
+
.command("download <fuid>")
|
|
139
|
+
.description("下载历史产物")
|
|
140
|
+
.option("--device <format>", "期望格式,例如 pdf、xlsx、zip")
|
|
141
|
+
.option("--item <n>", "按 1 起序号选择下载项")
|
|
142
|
+
.option("--label <text>", "按名称选择下载项")
|
|
143
|
+
.option("--output <path>", "保存路径,默认下载目录")
|
|
144
|
+
.option(...FORMAT)
|
|
145
|
+
.action(async (fuid, opts) => {
|
|
146
|
+
await runAnalysisCommand("history download", () => runHistoryDownload(fuid, opts));
|
|
147
|
+
});
|
|
148
|
+
history
|
|
149
|
+
.command("rename <fuid> <name>")
|
|
150
|
+
.description("重命名历史记录")
|
|
151
|
+
.option(...FORMAT)
|
|
152
|
+
.action(async (fuid, name) => {
|
|
153
|
+
await runAnalysisCommand("history rename", () => runHistoryRename(fuid, name));
|
|
154
|
+
});
|
|
155
|
+
history
|
|
156
|
+
.command("delete <fuid>")
|
|
157
|
+
.description("删除历史记录")
|
|
158
|
+
.option(...FORMAT)
|
|
159
|
+
.action(async (fuid) => {
|
|
160
|
+
await runAnalysisCommand("history delete", () => runHistoryDelete(fuid));
|
|
161
|
+
});
|
|
162
|
+
history
|
|
163
|
+
.command("save <fuid> <uuid> <moduleId> <name>")
|
|
164
|
+
.description("把直接分析结果保存到历史")
|
|
165
|
+
.option(...FORMAT)
|
|
166
|
+
.action(async (fuid, uuid, moduleId, name) => {
|
|
167
|
+
await runAnalysisCommand("history save", () => runHistorySave(fuid, uuid, moduleId, name));
|
|
168
|
+
});
|
|
22
169
|
}
|
|
23
170
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/analysis/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/analysis/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type JsonObject } from "./json.js";
|
|
2
|
+
export interface DemoUpload {
|
|
3
|
+
fileName: string;
|
|
4
|
+
fileOss: string;
|
|
5
|
+
fileSize: number;
|
|
6
|
+
}
|
|
7
|
+
export interface UploadField {
|
|
8
|
+
key: string;
|
|
9
|
+
label: string;
|
|
10
|
+
required: boolean;
|
|
11
|
+
defaultUpload: DemoUpload | null;
|
|
12
|
+
}
|
|
13
|
+
export interface RecordDefault {
|
|
14
|
+
key: string;
|
|
15
|
+
label: string;
|
|
16
|
+
moduleId: string;
|
|
17
|
+
moduleName: string;
|
|
18
|
+
recordId: string;
|
|
19
|
+
recordName: string;
|
|
20
|
+
time: string;
|
|
21
|
+
}
|
|
22
|
+
export interface RecordField {
|
|
23
|
+
label: string;
|
|
24
|
+
options: JsonObject[];
|
|
25
|
+
}
|
|
26
|
+
export interface CloudDefault {
|
|
27
|
+
key: string;
|
|
28
|
+
label: string;
|
|
29
|
+
record: JsonObject;
|
|
30
|
+
}
|
|
31
|
+
export declare function listUploadFields(argsData: unknown[]): UploadField[];
|
|
32
|
+
export declare function findDefaultRecord(argsData: unknown[]): RecordDefault | null;
|
|
33
|
+
export declare function findRecordField(argsData: unknown[], key: string): RecordField | null;
|
|
34
|
+
export declare function findArgsDataType(argsData: unknown[], key: string): string | null;
|
|
35
|
+
export declare function findDefaultCloud(argsData: unknown[]): CloudDefault | null;
|
|
36
|
+
//# sourceMappingURL=inputs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../../../src/modules/analysis/inputs.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvE,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAsBnE;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,aAAa,GAAG,IAAI,CAmB3E;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CASpF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAShF;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,GAAG,IAAI,CAYzE"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { asArray, asObject, textOf } from "./json.js";
|
|
2
|
+
export function listUploadFields(argsData) {
|
|
3
|
+
return argsData.flatMap((item) => {
|
|
4
|
+
const field = asObject(item);
|
|
5
|
+
if (!field || field.type !== "XTUpload")
|
|
6
|
+
return [];
|
|
7
|
+
const key = textOf(field.key);
|
|
8
|
+
if (!key)
|
|
9
|
+
return [];
|
|
10
|
+
const defaults = asObject(field.default_value);
|
|
11
|
+
const fileName = textOf(defaults?.file_name);
|
|
12
|
+
const fileOss = textOf(defaults?.file_oss);
|
|
13
|
+
const fileSize = defaults?.file_size;
|
|
14
|
+
return [
|
|
15
|
+
{
|
|
16
|
+
key,
|
|
17
|
+
label: textOf(field.label),
|
|
18
|
+
required: field.required === true,
|
|
19
|
+
defaultUpload: fileName && fileOss && typeof fileSize === "number"
|
|
20
|
+
? { fileName, fileOss, fileSize }
|
|
21
|
+
: null,
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
export function findDefaultRecord(argsData) {
|
|
27
|
+
for (const item of argsData) {
|
|
28
|
+
const field = asObject(item);
|
|
29
|
+
if (!field || field.type !== "XTRecord")
|
|
30
|
+
continue;
|
|
31
|
+
const key = textOf(field.key);
|
|
32
|
+
const defaults = asObject(field.default_value);
|
|
33
|
+
const recordId = textOf(defaults?.record_id);
|
|
34
|
+
if (!key || !recordId)
|
|
35
|
+
continue;
|
|
36
|
+
return {
|
|
37
|
+
key,
|
|
38
|
+
label: textOf(field.label),
|
|
39
|
+
moduleId: textOf(defaults?.module_id),
|
|
40
|
+
moduleName: textOf(defaults?.module_name),
|
|
41
|
+
recordId,
|
|
42
|
+
recordName: textOf(defaults?.record_name),
|
|
43
|
+
time: textOf(defaults?.time),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
export function findRecordField(argsData, key) {
|
|
49
|
+
const wanted = key.trim();
|
|
50
|
+
if (!wanted)
|
|
51
|
+
return null;
|
|
52
|
+
for (const item of argsData) {
|
|
53
|
+
const field = asObject(item);
|
|
54
|
+
if (!field || field.type !== "XTRecord" || textOf(field.key) !== wanted)
|
|
55
|
+
continue;
|
|
56
|
+
return { label: textOf(field.label), options: listRecordOptions(field) };
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
export function findArgsDataType(argsData, key) {
|
|
61
|
+
const wanted = key.trim();
|
|
62
|
+
if (!wanted)
|
|
63
|
+
return null;
|
|
64
|
+
for (const item of argsData) {
|
|
65
|
+
const field = asObject(item);
|
|
66
|
+
if (!field || textOf(field.key) !== wanted)
|
|
67
|
+
continue;
|
|
68
|
+
return textOf(field.type);
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
export function findDefaultCloud(argsData) {
|
|
73
|
+
for (const item of argsData) {
|
|
74
|
+
const field = asObject(item);
|
|
75
|
+
if (!field)
|
|
76
|
+
continue;
|
|
77
|
+
const key = textOf(field.key);
|
|
78
|
+
if (!key)
|
|
79
|
+
continue;
|
|
80
|
+
const record = findCloudRecord(field);
|
|
81
|
+
if (record) {
|
|
82
|
+
return { key, label: textOf(field.label), record };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
function listRecordOptions(field) {
|
|
88
|
+
const options = [];
|
|
89
|
+
for (const item of asArray(field.options)) {
|
|
90
|
+
const record = asObject(item);
|
|
91
|
+
if (record && textOf(record.record_id)) {
|
|
92
|
+
options.push(structuredClone(record));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (options.length > 0)
|
|
96
|
+
return options;
|
|
97
|
+
const defaults = asObject(field.default_value);
|
|
98
|
+
if (defaults && textOf(defaults.record_id)) {
|
|
99
|
+
options.push(structuredClone(defaults));
|
|
100
|
+
}
|
|
101
|
+
return options;
|
|
102
|
+
}
|
|
103
|
+
function findCloudRecord(value, depth = 0) {
|
|
104
|
+
if (!isPlain(value) || depth > 3)
|
|
105
|
+
return null;
|
|
106
|
+
if (textOf(value.data_id))
|
|
107
|
+
return structuredClone(value);
|
|
108
|
+
for (const child of Object.values(value)) {
|
|
109
|
+
if (!isPlain(child))
|
|
110
|
+
continue;
|
|
111
|
+
const found = findCloudRecord(child, depth + 1);
|
|
112
|
+
if (found)
|
|
113
|
+
return found;
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
function isPlain(value) {
|
|
118
|
+
return asObject(value) !== undefined;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=inputs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inputs.js","sourceRoot":"","sources":["../../../src/modules/analysis/inputs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type JsonObject = Record<string, unknown>;
|
|
2
|
+
export declare function isJsonObject(value: unknown): value is JsonObject;
|
|
3
|
+
export declare function asObject(value: unknown): JsonObject | undefined;
|
|
4
|
+
export declare function asArray(value: unknown): unknown[];
|
|
5
|
+
export declare function textOf(value: unknown): string;
|
|
6
|
+
export declare function deepMerge(base: JsonObject, ...layers: JsonObject[]): JsonObject;
|
|
7
|
+
//# sourceMappingURL=json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/modules/analysis/json.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAE/D;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,CAEjD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE7C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,GAAG,UAAU,CAM/E"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export function isJsonObject(value) {
|
|
2
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
3
|
+
}
|
|
4
|
+
export function asObject(value) {
|
|
5
|
+
return isJsonObject(value) ? value : undefined;
|
|
6
|
+
}
|
|
7
|
+
export function asArray(value) {
|
|
8
|
+
return Array.isArray(value) ? value : [];
|
|
9
|
+
}
|
|
10
|
+
export function textOf(value) {
|
|
11
|
+
return typeof value === "string" ? value.trim() : "";
|
|
12
|
+
}
|
|
13
|
+
export function deepMerge(base, ...layers) {
|
|
14
|
+
const result = structuredClone(base);
|
|
15
|
+
for (const layer of layers) {
|
|
16
|
+
mergeInto(result, layer);
|
|
17
|
+
}
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
function mergeInto(target, source) {
|
|
21
|
+
for (const [key, value] of Object.entries(source)) {
|
|
22
|
+
const current = target[key];
|
|
23
|
+
if (isJsonObject(current) && isJsonObject(value)) {
|
|
24
|
+
mergeInto(current, value);
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
target[key] = structuredClone(value);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/modules/analysis/json.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAgB,EAAE,GAAG,MAAoB;IACjE,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,SAAS,CAAC,MAAkB,EAAE,MAAkB;IACvD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type JsonObject } from "./json.js";
|
|
2
|
+
export declare function parseSetOverrides(entries: string[] | undefined): JsonObject;
|
|
3
|
+
export declare function applySpecificOverrides(base: JsonObject, entries: string[] | undefined): JsonObject;
|
|
4
|
+
export declare function loadArgsMainConfig(moduleId: string, configPath: string | undefined): Promise<JsonObject>;
|
|
5
|
+
//# sourceMappingURL=overrides.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overrides.d.ts","sourceRoot":"","sources":["../../../src/modules/analysis/overrides.ts"],"names":[],"mappings":"AAEA,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAIpE,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,UAAU,CAiB3E;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,UAAU,CAuBlG;AAGD,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAAC,UAAU,CAAC,CAsBrB"}
|