@ats-cx/cx-core 0.1.0 → 0.1.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/dist/config.d.ts +5 -0
- package/dist/config.js +30 -25
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/config.d.ts
CHANGED
|
@@ -19,4 +19,9 @@ export interface LoadConfigOptions {
|
|
|
19
19
|
export type ConfigSource = "explicit" | "workspace" | "env" | "toolkit";
|
|
20
20
|
/** cx-cli 的机器级配置与无工作区产物目录。 */
|
|
21
21
|
export declare function machineConfigDir(): string;
|
|
22
|
+
/**
|
|
23
|
+
* 只读取 apm-provider 叠层并判定三态,不碰 toolkit / 语义表 / 规则表。
|
|
24
|
+
* 给 `skills` 组与 `init` 的只读探针用:它们只关心站点地址填没填,不该因无关配置损坏而失败。
|
|
25
|
+
*/
|
|
26
|
+
export declare function loadApmProviderState(configDir: string, options?: Pick<LoadConfigOptions, "source">): Pick<ResolvedConfig, "apmProvider" | "apmProviderState">;
|
|
22
27
|
export declare function loadConfig(configDir: string, options?: LoadConfigOptions): ResolvedConfig;
|
package/dist/config.js
CHANGED
|
@@ -8,13 +8,13 @@ import { loadEventSemanticsTable } from "./semantics/table-loader.js";
|
|
|
8
8
|
export function machineConfigDir() {
|
|
9
9
|
return join(process.env.XDG_CONFIG_HOME || join(homedir(), ".config"), "cx-cli");
|
|
10
10
|
}
|
|
11
|
-
|
|
11
|
+
/**
|
|
12
|
+
* 只读取 apm-provider 叠层并判定三态,不碰 toolkit / 语义表 / 规则表。
|
|
13
|
+
* 给 `skills` 组与 `init` 的只读探针用:它们只关心站点地址填没填,不该因无关配置损坏而失败。
|
|
14
|
+
*/
|
|
15
|
+
export function loadApmProviderState(configDir, options = {}) {
|
|
12
16
|
const dir = resolve(configDir);
|
|
13
17
|
const machineDir = machineConfigDir();
|
|
14
|
-
const machineToolkit = options.source === "toolkit"
|
|
15
|
-
? resolveToolkitPaths(readJsonIfExists(join(machineDir, "toolkit.local.json")), machineDir)
|
|
16
|
-
: {};
|
|
17
|
-
const toolkit = mergeLocal(mergeLocal(readJsonIfExists(join(dir, "toolkit.json")), machineToolkit), readJsonIfExists(join(dir, "toolkit.local.json")));
|
|
18
18
|
const apmProviderPaths = [
|
|
19
19
|
join(dir, "apm-provider.json"),
|
|
20
20
|
...(options.source === "toolkit" ? [join(machineDir, "apm-provider.local.json")] : []),
|
|
@@ -22,38 +22,43 @@ export function loadConfig(configDir, options = {}) {
|
|
|
22
22
|
];
|
|
23
23
|
const apmProviderLayers = apmProviderPaths.map(readApmJsonIfExists);
|
|
24
24
|
const apmProviderFiles = apmProviderPaths.filter(existsSync);
|
|
25
|
-
const apmProviderRaw =
|
|
25
|
+
const apmProviderRaw = apmProviderLayers.reduce((merged, layer) => mergeLocal(merged, layer.value), {});
|
|
26
26
|
const fillPath = options.source === "toolkit"
|
|
27
27
|
? join(machineDir, "apm-provider.local.json")
|
|
28
28
|
: join(dir, "apm-provider.local.json");
|
|
29
|
-
let apmProvider = null;
|
|
30
|
-
let apmProviderState;
|
|
31
29
|
const apmJsonError = apmProviderLayers.find(layer => layer.error !== undefined)?.error;
|
|
32
30
|
if (apmJsonError !== undefined) {
|
|
33
|
-
apmProviderState
|
|
31
|
+
return { apmProvider: null, apmProviderState: { kind: "invalid", fillPath, error: apmJsonError } };
|
|
34
32
|
}
|
|
35
|
-
|
|
36
|
-
apmProviderState
|
|
33
|
+
if (!existsSync(join(dir, "apm-provider.json"))) {
|
|
34
|
+
return { apmProvider: null, apmProviderState: { kind: "missing", fillPath, configDir: dir } };
|
|
37
35
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
apmProviderState = { kind: "unconfigured", fillPath };
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
apmProvider = parsed;
|
|
46
|
-
apmProviderState = null;
|
|
47
|
-
}
|
|
36
|
+
try {
|
|
37
|
+
const parsed = parseApmConfig(apmProviderRaw);
|
|
38
|
+
if (parsed.baseUrl === "" || parsed.defaults.host === "") {
|
|
39
|
+
return { apmProvider: null, apmProviderState: { kind: "unconfigured", fillPath } };
|
|
48
40
|
}
|
|
49
|
-
|
|
50
|
-
|
|
41
|
+
return { apmProvider: parsed, apmProviderState: null };
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
return {
|
|
45
|
+
apmProvider: null,
|
|
46
|
+
apmProviderState: {
|
|
51
47
|
kind: "invalid",
|
|
52
48
|
fillPath,
|
|
53
49
|
error: `${error instanceof Error ? error.message : String(error)}(配置文件:${apmProviderFiles.join("、")})`,
|
|
54
|
-
}
|
|
55
|
-
}
|
|
50
|
+
},
|
|
51
|
+
};
|
|
56
52
|
}
|
|
53
|
+
}
|
|
54
|
+
export function loadConfig(configDir, options = {}) {
|
|
55
|
+
const dir = resolve(configDir);
|
|
56
|
+
const machineDir = machineConfigDir();
|
|
57
|
+
const machineToolkit = options.source === "toolkit"
|
|
58
|
+
? resolveToolkitPaths(readJsonIfExists(join(machineDir, "toolkit.local.json")), machineDir)
|
|
59
|
+
: {};
|
|
60
|
+
const toolkit = mergeLocal(mergeLocal(readJsonIfExists(join(dir, "toolkit.json")), machineToolkit), readJsonIfExists(join(dir, "toolkit.local.json")));
|
|
61
|
+
const { apmProvider, apmProviderState } = loadApmProviderState(dir, options);
|
|
57
62
|
const eventSemantics = loadEventSemanticsTable(options.eventSemanticsPath ?? join(dir, "event-semantics.json"), {
|
|
58
63
|
required: options.eventSemanticsPath !== undefined,
|
|
59
64
|
});
|
package/dist/index.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export { fetchLiveProject, resolveUserId } from "./apm/portal.js";
|
|
|
11
11
|
export type { ApmPortalDeps, FetchLiveProjectParams, LiveProjectResult, ResolveUserIdParams, } from "./apm/portal.js";
|
|
12
12
|
export { assertColumnName, assertSafeValue, FIXED_REQUEST_KEYS, isSiteHost, LOG_TYPES, normalizeLogTime, ORDERS, } from "./apm/values.js";
|
|
13
13
|
export type { ApmOrder, LogType } from "./apm/values.js";
|
|
14
|
-
export { loadConfig, machineConfigDir } from "./config.js";
|
|
14
|
+
export { loadApmProviderState, loadConfig, machineConfigDir } from "./config.js";
|
|
15
15
|
export type { ConfigSource, LoadConfigOptions } from "./config.js";
|
|
16
16
|
export { loadEventSemanticsTable } from "./semantics/table-loader.js";
|
|
17
17
|
export type { EventSemanticsTable } from "./semantics/table-loader.js";
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ export { createApmClient } from "./apm/client.js";
|
|
|
5
5
|
export { ApmRequestError } from "./apm/errors.js";
|
|
6
6
|
export { fetchLiveProject, resolveUserId } from "./apm/portal.js";
|
|
7
7
|
export { assertColumnName, assertSafeValue, FIXED_REQUEST_KEYS, isSiteHost, LOG_TYPES, normalizeLogTime, ORDERS, } from "./apm/values.js";
|
|
8
|
-
export { loadConfig, machineConfigDir } from "./config.js";
|
|
8
|
+
export { loadApmProviderState, loadConfig, machineConfigDir } from "./config.js";
|
|
9
9
|
export { loadEventSemanticsTable } from "./semantics/table-loader.js";
|
|
10
10
|
export * from "./normalize/log.js";
|
|
11
11
|
export * from "./normalize/project.js";
|