target-supabase-sdk 0.1.9 → 0.2.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/README.md +66 -0
- package/dist/browser.d.ts +52 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +45 -0
- package/dist/browser.js.map +1 -0
- package/dist/command/command.api.js +5 -5
- package/dist/command/command.api.js.map +1 -1
- package/dist/index.d.ts +2 -48
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -41
- package/dist/index.js.map +1 -1
- package/dist/link/link.interface.d.ts +1 -1
- package/dist/link/link.interface.d.ts.map +1 -1
- package/dist/node/node-log-scope.d.ts +11 -0
- package/dist/node/node-log-scope.d.ts.map +1 -0
- package/dist/node/node-log-scope.js +7 -0
- package/dist/node/node-log-scope.js.map +1 -0
- package/dist/node/node-runtime.base.d.ts +42 -0
- package/dist/node/node-runtime.base.d.ts.map +1 -0
- package/dist/node/node-runtime.base.js +397 -0
- package/dist/node/node-runtime.base.js.map +1 -0
- package/dist/node/node.api.d.ts +3 -3
- package/dist/node/node.api.js +3 -3
- package/dist/node/node.api.js.map +1 -1
- package/dist/node/task-node.d.ts +20 -0
- package/dist/node/task-node.d.ts.map +1 -0
- package/dist/node/task-node.js +245 -0
- package/dist/node/task-node.js.map +1 -0
- package/dist/node/trigger-node.d.ts +18 -0
- package/dist/node/trigger-node.d.ts.map +1 -0
- package/dist/node/trigger-node.js +150 -0
- package/dist/node/trigger-node.js.map +1 -0
- package/dist/node.d.ts +22 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +19 -0
- package/dist/node.js.map +1 -0
- package/dist/repo/repo-manager.d.ts +14 -3
- package/dist/repo/repo-manager.d.ts.map +1 -1
- package/dist/repo/repo-manager.js +27 -17
- package/dist/repo/repo-manager.js.map +1 -1
- package/dist/repo/repo.script-loader.d.ts +3 -3
- package/dist/repo/repo.script-loader.d.ts.map +1 -1
- package/dist/repo/repo.script-loader.js +10 -10
- package/dist/repo/repo.script-loader.js.map +1 -1
- package/dist/shared/log/create-api-logger.d.ts +10 -6
- package/dist/shared/log/create-api-logger.d.ts.map +1 -1
- package/dist/shared/log/create-api-logger.js +10 -6
- package/dist/shared/log/create-api-logger.js.map +1 -1
- package/dist/shared/log/index.d.ts +10 -0
- package/dist/shared/log/index.d.ts.map +1 -0
- package/dist/shared/log/index.js +10 -0
- package/dist/shared/log/index.js.map +1 -0
- package/dist/shared/log/log-manager.d.ts +25 -46
- package/dist/shared/log/log-manager.d.ts.map +1 -1
- package/dist/shared/log/log-manager.js +59 -40
- package/dist/shared/log/log-manager.js.map +1 -1
- package/dist/shared/log/log-scope.d.ts +49 -0
- package/dist/shared/log/log-scope.d.ts.map +1 -0
- package/dist/shared/log/log-scope.js +70 -0
- package/dist/shared/log/log-scope.js.map +1 -0
- package/dist/task/index.d.ts +15 -0
- package/dist/task/index.d.ts.map +1 -0
- package/dist/task/index.js +14 -0
- package/dist/task/index.js.map +1 -0
- package/dist/task/local-task-registry.d.ts +10 -0
- package/dist/task/local-task-registry.d.ts.map +1 -1
- package/dist/task/local-task-registry.js +83 -22
- package/dist/task/local-task-registry.js.map +1 -1
- package/dist/task/task-manager.d.ts +18 -6
- package/dist/task/task-manager.d.ts.map +1 -1
- package/dist/task/task-manager.js +46 -67
- package/dist/task/task-manager.js.map +1 -1
- package/dist/task/task-post.api.d.ts +49 -0
- package/dist/task/task-post.api.d.ts.map +1 -0
- package/dist/task/task-post.api.js +91 -0
- package/dist/task/task-post.api.js.map +1 -0
- package/dist/task/task-repo-context.d.ts +2 -0
- package/dist/task/task-repo-context.d.ts.map +1 -1
- package/dist/task/task-repo-context.js.map +1 -1
- package/dist/task/task-repo-validation.d.ts +46 -0
- package/dist/task/task-repo-validation.d.ts.map +1 -0
- package/dist/task/task-repo-validation.js +96 -0
- package/dist/task/task-repo-validation.js.map +1 -0
- package/dist/task/task.api.d.ts +11 -53
- package/dist/task/task.api.d.ts.map +1 -1
- package/dist/task/task.api.js +13 -61
- package/dist/task/task.api.js.map +1 -1
- package/dist/task/task.interface.d.ts +2 -0
- package/dist/task/task.interface.d.ts.map +1 -1
- package/dist/task/task.interface.js.map +1 -1
- package/dist/trigger/trigger.api.d.ts +140 -0
- package/dist/trigger/trigger.api.d.ts.map +1 -0
- package/dist/trigger/trigger.api.js +125 -0
- package/dist/trigger/trigger.api.js.map +1 -0
- package/dist/trigger/trigger.interface.d.ts +43 -0
- package/dist/trigger/trigger.interface.d.ts.map +1 -0
- package/dist/trigger/trigger.interface.js +11 -0
- package/dist/trigger/trigger.interface.js.map +1 -0
- package/dist/trigger/trigger.utils.d.ts +6 -0
- package/dist/trigger/trigger.utils.d.ts.map +1 -0
- package/dist/trigger/trigger.utils.js +39 -0
- package/dist/trigger/trigger.utils.js.map +1 -0
- package/package.json +21 -6
- package/src/browser.ts +100 -0
- package/src/command/command.api.ts +5 -5
- package/src/index.ts +2 -79
- package/src/link/link.interface.ts +1 -1
- package/src/node/node-log-scope.ts +15 -0
- package/src/node/node-runtime.base.ts +450 -0
- package/src/node/node.api.ts +3 -3
- package/src/node/task-node.ts +284 -0
- package/src/node/trigger-node.ts +180 -0
- package/src/node.ts +62 -0
- package/src/repo/repo-manager.ts +49 -21
- package/src/repo/repo.script-loader.ts +13 -13
- package/src/shared/log/create-api-logger.ts +23 -12
- package/src/shared/log/index.ts +23 -0
- package/src/shared/log/log-manager.ts +85 -90
- package/src/shared/log/log-scope.ts +123 -0
- package/src/task/index.ts +48 -0
- package/src/task/local-task-registry.ts +110 -23
- package/src/task/task-manager.ts +73 -84
- package/src/task/task-post.api.ts +116 -0
- package/src/task/task-repo-context.ts +2 -0
- package/src/task/task-repo-validation.ts +171 -0
- package/src/task/task.api.ts +13 -73
- package/src/task/task.interface.ts +2 -0
- package/src/trigger/trigger.api.ts +166 -0
- package/src/trigger/trigger.interface.ts +50 -0
- package/src/trigger/trigger.utils.ts +56 -0
- package/dist/node/node-manager.d.ts +0 -48
- package/dist/node/node-manager.d.ts.map +0 -1
- package/dist/node/node-manager.js +0 -619
- package/dist/node/node-manager.js.map +0 -1
- package/src/node/node-manager.ts +0 -673
|
@@ -51,20 +51,20 @@ async function loadLocalEntry(logger, entry, taskTypeKey) {
|
|
|
51
51
|
return loaded?.context ?? null;
|
|
52
52
|
}
|
|
53
53
|
async function loadRemoteRepoContext(logger, taskTypeKey) {
|
|
54
|
-
logger.info("從 Supabase 加載 Repo", { topic: "repo",
|
|
54
|
+
logger.info("從 Supabase 加載 Repo", { topic: "repo", data: { taskTypeKey } });
|
|
55
55
|
const remoteRepo = await fetchRemoteRepo(taskTypeKey);
|
|
56
56
|
if (remoteRepo == null) {
|
|
57
57
|
const error = `Supabase 未找到 Repo (value=${taskTypeKey})`;
|
|
58
|
-
logger.warn(error, { topic: "repo",
|
|
59
|
-
return { context: null, error };
|
|
58
|
+
logger.warn(error, { topic: "repo", data: { taskTypeKey } });
|
|
59
|
+
return { context: null, error, failureReason: "REMOTE_REPO_NOT_FOUND" };
|
|
60
60
|
}
|
|
61
61
|
const repoUrl = remoteRepo.details?.url?.trim() ?? "";
|
|
62
62
|
const repoHash = remoteRepo.details?.hash?.trim() ?? repoUrl;
|
|
63
63
|
const cacheKey = buildRemoteCacheKey(taskTypeKey, repoHash);
|
|
64
64
|
const cached = remoteContextCache.get(cacheKey);
|
|
65
65
|
if (cached != null) {
|
|
66
|
-
logger.info("命中遠程 Repo 上下文緩存", { topic: "repo",
|
|
67
|
-
return { context: cached };
|
|
66
|
+
logger.info("命中遠程 Repo 上下文緩存", { topic: "repo", data: { cacheKey } });
|
|
67
|
+
return { context: cached, resolvedVia: "remote" };
|
|
68
68
|
}
|
|
69
69
|
const scripts = await fetchRemoteScripts(taskTypeKey);
|
|
70
70
|
const entryScript = pickEntryScript(scripts);
|
|
@@ -74,7 +74,7 @@ async function loadRemoteRepoContext(logger, taskTypeKey) {
|
|
|
74
74
|
if (loaded == null && repoUrl !== "") {
|
|
75
75
|
logger.info("未找到 script 行,嘗試從 Repo.details.url 加載", {
|
|
76
76
|
topic: "repo",
|
|
77
|
-
|
|
77
|
+
data: { taskTypeKey, url: repoUrl },
|
|
78
78
|
});
|
|
79
79
|
loaded = await loadRepoContextFromUrl({ logger, url: repoUrl, taskTypeKey });
|
|
80
80
|
}
|
|
@@ -82,42 +82,48 @@ async function loadRemoteRepoContext(logger, taskTypeKey) {
|
|
|
82
82
|
const error = `無法從 Repo 加載 TaskRepoContext (hasUrl=${repoUrl !== ""}, scriptCount=${scripts.length})`;
|
|
83
83
|
logger.warn(error, {
|
|
84
84
|
topic: "repo",
|
|
85
|
-
|
|
85
|
+
data: { taskTypeKey, hasUrl: repoUrl !== "", scriptCount: scripts.length },
|
|
86
86
|
});
|
|
87
|
-
return { context: null, error };
|
|
87
|
+
return { context: null, error, failureReason: "REMOTE_REPO_LOAD_FAILED" };
|
|
88
88
|
}
|
|
89
89
|
remoteContextCache.set(cacheKey, loaded.context);
|
|
90
|
-
return { context: loaded.context };
|
|
90
|
+
return { context: loaded.context, resolvedVia: "remote" };
|
|
91
91
|
}
|
|
92
|
-
const getRepoContext = async ({ logger, taskTypeKey, }) => {
|
|
92
|
+
const getRepoContext = async ({ logger, taskTypeKey, includeRemote = true, }) => {
|
|
93
93
|
const localEntry = localRepoRegistry.get(taskTypeKey);
|
|
94
94
|
if (localEntry != null) {
|
|
95
|
-
logger.info("使用本地註冊的 Repo", { topic: "repo",
|
|
95
|
+
logger.info("使用本地註冊的 Repo", { topic: "repo", data: { taskTypeKey } });
|
|
96
96
|
const context = await loadLocalEntry(logger, localEntry, taskTypeKey);
|
|
97
97
|
if (context != null && isTaskRepoContext(context)) {
|
|
98
|
-
return { context: context };
|
|
98
|
+
return { context: context, resolvedVia: "local" };
|
|
99
99
|
}
|
|
100
100
|
const error = "本地 Repo 模組加載失敗或未導出有效的 TaskRepoContext";
|
|
101
|
-
logger.warn(error, { topic: "repo",
|
|
102
|
-
return { context: null, error };
|
|
101
|
+
logger.warn(error, { topic: "repo", data: { taskTypeKey } });
|
|
102
|
+
return { context: null, error, failureReason: "LOCAL_REPO_LOAD_FAILED" };
|
|
103
|
+
}
|
|
104
|
+
if (!includeRemote) {
|
|
105
|
+
const error = `本地未註冊 Repo (value=${taskTypeKey})`;
|
|
106
|
+
logger.warn(error, { topic: "repo", data: { taskTypeKey, includeRemote: false } });
|
|
107
|
+
return { context: null, error, failureReason: "LOCAL_REPO_NOT_FOUND" };
|
|
103
108
|
}
|
|
104
109
|
try {
|
|
105
110
|
const result = await loadRemoteRepoContext(logger, taskTypeKey);
|
|
106
111
|
if (result.context != null && isTaskRepoContext(result.context)) {
|
|
107
|
-
return { context: result.context };
|
|
112
|
+
return { context: result.context, resolvedVia: "remote" };
|
|
108
113
|
}
|
|
109
114
|
return {
|
|
110
115
|
context: null,
|
|
111
116
|
error: result.error ?? "遠程 Repo 上下文無效",
|
|
117
|
+
failureReason: result.failureReason ?? "REMOTE_REPO_LOAD_FAILED",
|
|
112
118
|
};
|
|
113
119
|
}
|
|
114
120
|
catch (error) {
|
|
115
121
|
const message = error instanceof Error ? error.message : String(error);
|
|
116
122
|
logger.error("從 Supabase 加載 Repo 失敗", {
|
|
117
123
|
topic: "repo",
|
|
118
|
-
|
|
124
|
+
data: { taskTypeKey, error: message },
|
|
119
125
|
});
|
|
120
|
-
return { context: null, error: message };
|
|
126
|
+
return { context: null, error: message, failureReason: "REMOTE_REPO_LOAD_FAILED" };
|
|
121
127
|
}
|
|
122
128
|
};
|
|
123
129
|
/** Register an in-process TaskRepoContext (highest priority — no Supabase fetch). */
|
|
@@ -137,6 +143,9 @@ function registerLocalModule(taskTypeKey, modulePath, exportName) {
|
|
|
137
143
|
function unregisterLocalRepo(taskTypeKey) {
|
|
138
144
|
localRepoRegistry.delete(taskTypeKey);
|
|
139
145
|
}
|
|
146
|
+
function hasLocalRepo(taskTypeKey) {
|
|
147
|
+
return localRepoRegistry.has(taskTypeKey);
|
|
148
|
+
}
|
|
140
149
|
function getRegisteredLocalTaskTypeKeys() {
|
|
141
150
|
return [...localRepoRegistry.keys()];
|
|
142
151
|
}
|
|
@@ -148,6 +157,7 @@ const RepoManager = {
|
|
|
148
157
|
registerLocalRepoContext,
|
|
149
158
|
registerLocalModule,
|
|
150
159
|
unregisterLocalRepo,
|
|
160
|
+
hasLocalRepo,
|
|
151
161
|
getRegisteredLocalTaskTypeKeys,
|
|
152
162
|
clearRemoteContextCache,
|
|
153
163
|
clearRepoScriptModuleCache,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-manager.js","sourceRoot":"","sources":["../../src/repo/repo-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EACH,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAQ,MAAM,kBAAkB,CAAC;AACtD,OAAO,EACH,0BAA0B,EAC1B,yBAAyB,EACzB,sBAAsB,GACzB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,WAAW,EAAE,CAAC;AAMnD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAA0B,CAAC;AAC5D,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"repo-manager.js","sourceRoot":"","sources":["../../src/repo/repo-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LoggerWithScope } from "../shared/log";
|
|
2
2
|
import { TaskRepoScriptRecord } from "../task/task-repo-context";
|
|
3
3
|
import { LoadedRepoContext } from "./repo-context.utils";
|
|
4
4
|
/** Resolve repo `details.url` to a value suitable for dynamic `import()`. */
|
|
5
5
|
export declare function resolveRepoEntryHref(url: string, cwd?: string): string;
|
|
6
6
|
export declare function loadRepoContextFromScript({ logger, script, taskTypeKey, }: {
|
|
7
|
-
logger:
|
|
7
|
+
logger: LoggerWithScope;
|
|
8
8
|
script: TaskRepoScriptRecord;
|
|
9
9
|
taskTypeKey: string;
|
|
10
10
|
}): Promise<LoadedRepoContext | null>;
|
|
11
11
|
export declare function loadRepoContextFromUrl({ logger, url, taskTypeKey, exportName, }: {
|
|
12
|
-
logger:
|
|
12
|
+
logger: LoggerWithScope;
|
|
13
13
|
url: string;
|
|
14
14
|
taskTypeKey: string;
|
|
15
15
|
exportName?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo.script-loader.d.ts","sourceRoot":"","sources":["../../src/repo/repo.script-loader.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"repo.script-loader.d.ts","sourceRoot":"","sources":["../../src/repo/repo.script-loader.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAEH,iBAAiB,EAEpB,MAAM,sBAAsB,CAAC;AAQ9B,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAgB,GAAG,MAAM,CAM7E;AAWD,wBAAsB,yBAAyB,CAAC,EAC5C,MAAM,EACN,MAAM,EACN,WAAW,GACd,EAAE;IACC,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA8CpC;AAED,wBAAsB,sBAAsB,CAAC,EACzC,MAAM,EACN,GAAG,EACH,WAAW,EACX,UAAU,GACb,EAAE;IACC,MAAM,EAAE,eAAe,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA8BpC;AAED,kEAAkE;AAClE,wBAAgB,0BAA0B,IAAI,IAAI,CAEjD"}
|
|
@@ -29,32 +29,32 @@ export async function loadRepoContextFromScript({ logger, script, taskTypeKey, }
|
|
|
29
29
|
const cacheKey = `${taskTypeKey}@${loadKey}`;
|
|
30
30
|
const cached = importedModuleCache.get(cacheKey);
|
|
31
31
|
if (cached != null) {
|
|
32
|
-
logger.info("命中 Repo 脚本模块缓存", { topic: "repo",
|
|
32
|
+
logger.info("命中 Repo 脚本模块缓存", { topic: "repo", data: { cacheKey } });
|
|
33
33
|
return cached;
|
|
34
34
|
}
|
|
35
35
|
const { source, modulePath, exportName } = script.details;
|
|
36
36
|
try {
|
|
37
37
|
let moduleExports;
|
|
38
38
|
if (source != null && source.trim() !== "") {
|
|
39
|
-
logger.info("从 source 动态加载 Repo 脚本", { topic: "repo",
|
|
39
|
+
logger.info("从 source 动态加载 Repo 脚本", { topic: "repo", data: { scriptId: script.id } });
|
|
40
40
|
moduleExports = await importFromSource(source, cacheKey);
|
|
41
41
|
}
|
|
42
42
|
else if (modulePath != null && modulePath.trim() !== "") {
|
|
43
43
|
logger.info("从 modulePath 动态加载 Repo 脚本", {
|
|
44
44
|
topic: "repo",
|
|
45
|
-
|
|
45
|
+
data: { scriptId: script.id, modulePath },
|
|
46
46
|
});
|
|
47
47
|
moduleExports = await importFromFilePath(modulePath);
|
|
48
48
|
}
|
|
49
49
|
else {
|
|
50
|
-
logger.warn("脚本缺少 source 或 modulePath", { topic: "repo",
|
|
50
|
+
logger.warn("脚本缺少 source 或 modulePath", { topic: "repo", data: { scriptId: script.id } });
|
|
51
51
|
return null;
|
|
52
52
|
}
|
|
53
53
|
const context = normalizeRepoContextModule(moduleExports, taskTypeKey, exportName);
|
|
54
54
|
if (context == null) {
|
|
55
55
|
logger.warn("脚本模块未导出合法的 TaskRepoContext", {
|
|
56
56
|
topic: "repo",
|
|
57
|
-
|
|
57
|
+
data: { scriptId: script.id, exportName: exportName ?? "default" },
|
|
58
58
|
});
|
|
59
59
|
return null;
|
|
60
60
|
}
|
|
@@ -65,7 +65,7 @@ export async function loadRepoContextFromScript({ logger, script, taskTypeKey, }
|
|
|
65
65
|
catch (error) {
|
|
66
66
|
logger.error("动态加载 Repo 脚本失败", {
|
|
67
67
|
topic: "repo",
|
|
68
|
-
|
|
68
|
+
data: { scriptId: script.id, error: error instanceof Error ? error.message : error },
|
|
69
69
|
});
|
|
70
70
|
return null;
|
|
71
71
|
}
|
|
@@ -75,17 +75,17 @@ export async function loadRepoContextFromUrl({ logger, url, taskTypeKey, exportN
|
|
|
75
75
|
const cacheKey = `${taskTypeKey}@url:${href}`;
|
|
76
76
|
const cached = importedModuleCache.get(cacheKey);
|
|
77
77
|
if (cached != null) {
|
|
78
|
-
logger.info("命中 Repo URL 模块缓存", { topic: "repo",
|
|
78
|
+
logger.info("命中 Repo URL 模块缓存", { topic: "repo", data: { cacheKey } });
|
|
79
79
|
return cached;
|
|
80
80
|
}
|
|
81
81
|
try {
|
|
82
|
-
logger.info("从 Repo URL 动态加载脚本", { topic: "repo",
|
|
82
|
+
logger.info("从 Repo URL 动态加载脚本", { topic: "repo", data: { url, href } });
|
|
83
83
|
const moduleExports = await import(href);
|
|
84
84
|
const context = normalizeRepoContextModule(moduleExports, taskTypeKey, exportName);
|
|
85
85
|
if (context == null) {
|
|
86
86
|
logger.warn("Repo URL 模块未导出合法的 TaskRepoContext", {
|
|
87
87
|
topic: "repo",
|
|
88
|
-
|
|
88
|
+
data: { url, exportName: exportName ?? "default" },
|
|
89
89
|
});
|
|
90
90
|
return null;
|
|
91
91
|
}
|
|
@@ -96,7 +96,7 @@ export async function loadRepoContextFromUrl({ logger, url, taskTypeKey, exportN
|
|
|
96
96
|
catch (error) {
|
|
97
97
|
logger.error("从 Repo URL 动态加载失败", {
|
|
98
98
|
topic: "repo",
|
|
99
|
-
|
|
99
|
+
data: { url, error: error instanceof Error ? error.message : error },
|
|
100
100
|
});
|
|
101
101
|
return null;
|
|
102
102
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo.script-loader.js","sourceRoot":"","sources":["../../src/repo/repo.script-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAW,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAEzF,OAAO,EACH,gBAAgB,EAEhB,0BAA0B,GAC7B,MAAM,sBAAsB,CAAC;AAE9B,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA6B,CAAC;AAEjE,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IAChD,OAAO,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;AAChD,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,oBAAoB,CAAC,GAAW,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACjE,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,OAAO,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,MAAc,EAAE,QAAgB;IAC5D,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,qBAAqB,EAAE,cAAc,CAAC,CAAC;IAClE,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,IAAI,MAAM,CAAC,CAAC;IACtD,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,EAC5C,MAAM,EACN,MAAM,EACN,WAAW,GAKd;IACG,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,GAAG,WAAW,IAAI,OAAO,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"repo.script-loader.js","sourceRoot":"","sources":["../../src/repo/repo.script-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type LoggerWithScope } from "./log-manager";
|
|
2
|
+
import { type LogScope, type LogScopePatch } from "./log-scope";
|
|
2
3
|
/**
|
|
3
4
|
* Options for {@link createApiLogger}.
|
|
4
5
|
*
|
|
5
|
-
* - **
|
|
6
|
-
* - **
|
|
6
|
+
* - **Trace:** optional `traceId` / `traceParentId` (generated root when traceId omitted)
|
|
7
|
+
* - **Labels:** optional `labels` (e.g. `{ nodeId }`)
|
|
7
8
|
*/
|
|
8
9
|
export type CreateApiLoggerOptions = {
|
|
9
10
|
traceId?: string;
|
|
10
|
-
|
|
11
|
+
traceParentId?: string | null;
|
|
12
|
+
labels?: Record<string, string>;
|
|
13
|
+
} & Partial<Omit<LogScope, "module" | "traceId" | "traceParentId" | "labels">>;
|
|
11
14
|
/**
|
|
12
15
|
* Logger for one SDK API invocation.
|
|
13
16
|
*
|
|
14
|
-
* Binds
|
|
17
|
+
* Binds `module` + normalized {@link LogScope}.
|
|
15
18
|
*/
|
|
16
|
-
export declare function createApiLogger(module: string, options?: CreateApiLoggerOptions):
|
|
19
|
+
export declare function createApiLogger(module: string, options?: CreateApiLoggerOptions): LoggerWithScope;
|
|
20
|
+
export type { LogScopePatch };
|
|
17
21
|
//# sourceMappingURL=create-api-logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-api-logger.d.ts","sourceRoot":"","sources":["../../../src/shared/log/create-api-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,
|
|
1
|
+
{"version":3,"file":"create-api-logger.d.ts","sourceRoot":"","sources":["../../../src/shared/log/create-api-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAkB,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAEhF;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,eAAe,GAAG,QAAQ,CAAC,CAAC,CAAC;AAE/E;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,eAAe,CAajG;AAED,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
import { logManager } from "./log-manager";
|
|
2
|
+
import { normalizeScope } from "./log-scope";
|
|
2
3
|
/**
|
|
3
4
|
* Logger for one SDK API invocation.
|
|
4
5
|
*
|
|
5
|
-
* Binds
|
|
6
|
+
* Binds `module` + normalized {@link LogScope}.
|
|
6
7
|
*/
|
|
7
8
|
export function createApiLogger(module, options) {
|
|
8
|
-
const { traceId, ...
|
|
9
|
-
|
|
9
|
+
const { traceId, traceParentId, labels, ...rest } = options ?? {};
|
|
10
|
+
const scope = normalizeScope({
|
|
10
11
|
module,
|
|
11
|
-
traceId
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
traceId,
|
|
13
|
+
traceParentId: traceParentId ?? null,
|
|
14
|
+
labels,
|
|
15
|
+
...rest,
|
|
16
|
+
}, { generateTraceId: true });
|
|
17
|
+
return logManager.withScope(scope).logger;
|
|
14
18
|
}
|
|
15
19
|
//# sourceMappingURL=create-api-logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-api-logger.js","sourceRoot":"","sources":["../../../src/shared/log/create-api-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"create-api-logger.js","sourceRoot":"","sources":["../../../src/shared/log/create-api-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAwB,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,cAAc,EAAqC,MAAM,aAAa,CAAC;AAchF;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,OAAgC;IAC5E,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IAClE,MAAM,KAAK,GAAG,cAAc,CACxB;QACI,MAAM;QACN,OAAO;QACP,aAAa,EAAE,aAAa,IAAI,IAAI;QACpC,MAAM;QACN,GAAG,IAAI;KACV,EACD,EAAE,eAAe,EAAE,IAAI,EAAE,CAC5B,CAAC;IACF,OAAO,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Log domain public API — curated re-exports only.
|
|
3
|
+
*/
|
|
4
|
+
export { logManager, LogManager, LogLevel } from "./log-manager";
|
|
5
|
+
export type { LogEntry, LogOptions, LoggerWithScope, LogRestParams } from "./log-manager";
|
|
6
|
+
export { createApiLogger } from "./create-api-logger";
|
|
7
|
+
export type { CreateApiLoggerOptions } from "./create-api-logger";
|
|
8
|
+
export { applyScopePatch, createChildScope, createRootScope, formatScopeLabels, normalizeScope, resolveLogData, withModule, } from "./log-scope";
|
|
9
|
+
export type { LogScope, LogScopeInput, LogScopePatch, CreateRootScopeInput, CreateChildScopeInput } from "./log-scope";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/log/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACjE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG1F,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAGlE,OAAO,EACH,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,UAAU,GACb,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Log domain public API — curated re-exports only.
|
|
3
|
+
*/
|
|
4
|
+
// log-manager
|
|
5
|
+
export { logManager, LogManager, LogLevel } from "./log-manager";
|
|
6
|
+
// create-api-logger
|
|
7
|
+
export { createApiLogger } from "./create-api-logger";
|
|
8
|
+
// log-scope
|
|
9
|
+
export { applyScopePatch, createChildScope, createRootScope, formatScopeLabels, normalizeScope, resolveLogData, withModule, } from "./log-scope";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/shared/log/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGjE,oBAAoB;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,YAAY;AACZ,OAAO,EACH,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,UAAU,GACb,MAAM,aAAa,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type LogScope, type LogScopePatch } from "./log-scope";
|
|
1
2
|
/**
|
|
2
3
|
* Log severity and semantics (low → high). `minLevel` filters by {@link LOG_LEVEL_RANK}.
|
|
3
4
|
*
|
|
@@ -18,39 +19,23 @@ declare enum LogLevel {
|
|
|
18
19
|
ERROR = "ERROR",
|
|
19
20
|
CRITICAL = "CRITICAL"
|
|
20
21
|
}
|
|
21
|
-
interface LogEntry {
|
|
22
|
+
interface LogEntry extends LogScope {
|
|
22
23
|
timestamp: number;
|
|
23
24
|
level: LogLevel;
|
|
24
|
-
/** Tell people what happened, but more structured */
|
|
25
25
|
message: string;
|
|
26
|
-
/** Category of a kind of log */
|
|
27
26
|
topic: string | null;
|
|
28
|
-
/** Where the log comes from */
|
|
29
|
-
module: string;
|
|
30
|
-
/** Specific process — correlates one logical chain (loop, request). */
|
|
31
|
-
traceId: string;
|
|
32
|
-
/** Worker node id when the log is node-scoped; omit for scheduler / admin / API-only paths. */
|
|
33
|
-
nodeId?: string;
|
|
34
27
|
extra?: string;
|
|
35
|
-
|
|
28
|
+
/** Per-line structured business payload. */
|
|
29
|
+
data?: unknown;
|
|
36
30
|
}
|
|
37
|
-
|
|
38
|
-
module: LogEntry["module"];
|
|
39
|
-
traceId: LogEntry["traceId"];
|
|
40
|
-
nodeId?: LogEntry["nodeId"];
|
|
41
|
-
}
|
|
42
|
-
type LogRestParams = Omit<LogParams, "message">;
|
|
43
|
-
interface LogEntryPayload {
|
|
44
|
-
message: LogEntry["message"];
|
|
31
|
+
type LogRestParams = {
|
|
45
32
|
topic?: LogEntry["topic"];
|
|
46
33
|
extra?: LogEntry["extra"];
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
type LogParams = Pick<LogEntryPayload, "message" | "topic" | "extra" | "context">;
|
|
34
|
+
data?: unknown;
|
|
35
|
+
};
|
|
36
|
+
type LogParams = {
|
|
37
|
+
message: LogEntry["message"];
|
|
38
|
+
} & LogRestParams;
|
|
54
39
|
interface LogOptions {
|
|
55
40
|
defaultTopic: LogEntry["topic"];
|
|
56
41
|
formatTimestamp: boolean;
|
|
@@ -61,21 +46,17 @@ interface LogOptions {
|
|
|
61
46
|
minLevel?: LogLevel;
|
|
62
47
|
onLog?: (entry: LogEntry) => void;
|
|
63
48
|
}
|
|
64
|
-
interface
|
|
65
|
-
/** Rank 0 — diagnostic detail; dev/troubleshooting only. */
|
|
49
|
+
interface LoggerWithScope {
|
|
66
50
|
debug: (message: LogParams["message"], restParams?: LogRestParams) => void;
|
|
67
|
-
/** Rank 1 — normal operational flow. */
|
|
68
51
|
info: (message: LogParams["message"], restParams?: LogRestParams) => void;
|
|
69
|
-
/** Rank 2 — positive milestone (semantic INFO, not higher severity). */
|
|
70
52
|
success: (message: LogParams["message"], restParams?: LogRestParams) => void;
|
|
71
|
-
/** Rank 3 — recoverable anomaly; system continues. */
|
|
72
53
|
warn: (message: LogParams["message"], restParams?: LogRestParams) => void;
|
|
73
|
-
/** Rank 4 — a concrete operation failed; needs investigation. */
|
|
74
54
|
error: (message: LogParams["message"], restParams?: LogRestParams) => void;
|
|
75
|
-
/** Rank 5 — invariant / design / integrity breach; escalate immediately. */
|
|
76
55
|
critical: (message: LogParams["message"], restParams?: LogRestParams) => void;
|
|
77
|
-
/** Merge partial fields into this logger's bound
|
|
78
|
-
|
|
56
|
+
/** Merge partial fields into this logger's bound scope. */
|
|
57
|
+
resetScope: (fields: LogScopePatch) => void;
|
|
58
|
+
/** @deprecated use {@link LoggerWithScope.resetScope} */
|
|
59
|
+
resetContext: (fields: LogScopePatch) => void;
|
|
79
60
|
}
|
|
80
61
|
declare class LogManager {
|
|
81
62
|
private static instance;
|
|
@@ -95,20 +76,18 @@ declare class LogManager {
|
|
|
95
76
|
private emitLog;
|
|
96
77
|
private log;
|
|
97
78
|
generateTraceId(): string;
|
|
98
|
-
debug(message: LogParams["message"],
|
|
99
|
-
info(message: LogParams["message"],
|
|
100
|
-
success(message: LogParams["message"],
|
|
101
|
-
warn(message: LogParams["message"],
|
|
102
|
-
error(message: LogParams["message"],
|
|
103
|
-
critical(message: LogParams["message"],
|
|
104
|
-
|
|
105
|
-
logger:
|
|
106
|
-
|
|
79
|
+
debug(message: LogParams["message"], logScope: LogScope, restParams?: LogRestParams): void;
|
|
80
|
+
info(message: LogParams["message"], logScope: LogScope, restParams?: LogRestParams): void;
|
|
81
|
+
success(message: LogParams["message"], logScope: LogScope, restParams?: LogRestParams): void;
|
|
82
|
+
warn(message: LogParams["message"], logScope: LogScope, restParams?: LogRestParams): void;
|
|
83
|
+
error(message: LogParams["message"], logScope: LogScope, restParams?: LogRestParams): void;
|
|
84
|
+
critical(message: LogParams["message"], logScope: LogScope, restParams?: LogRestParams): void;
|
|
85
|
+
withScope(scope: LogScope): {
|
|
86
|
+
logger: LoggerWithScope;
|
|
87
|
+
scope: LogScope;
|
|
107
88
|
};
|
|
108
89
|
}
|
|
109
90
|
export declare const logManager: LogManager;
|
|
110
91
|
export { LogManager, LogLevel };
|
|
111
|
-
export {
|
|
112
|
-
export type { CreateApiLoggerOptions } from "./create-api-logger";
|
|
113
|
-
export type { LogOptions, LogEntry, LogContext, LoggerWithContext, LogRestParams };
|
|
92
|
+
export type { LogOptions, LogEntry, LoggerWithScope, LogRestParams };
|
|
114
93
|
//# sourceMappingURL=log-manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-manager.d.ts","sourceRoot":"","sources":["../../../src/shared/log/log-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"log-manager.d.ts","sourceRoot":"","sources":["../../../src/shared/log/log-manager.ts"],"names":[],"mappings":"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"}
|