@mrxsys/mrx-core 2.11.0-1-and-276-20251029 → 2.11.0-1-develop-20251030
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.
|
@@ -21,7 +21,21 @@ export declare const error: Elysia<"", {
|
|
|
21
21
|
macro: {};
|
|
22
22
|
macroFn: {};
|
|
23
23
|
parser: {};
|
|
24
|
-
response: {
|
|
24
|
+
response: {
|
|
25
|
+
200: {
|
|
26
|
+
message: string;
|
|
27
|
+
content: any;
|
|
28
|
+
} | {
|
|
29
|
+
message: "mrx-core.error.not_found";
|
|
30
|
+
content?: never;
|
|
31
|
+
} | {
|
|
32
|
+
message: "mrx-core.error.parse";
|
|
33
|
+
content?: never;
|
|
34
|
+
} | {
|
|
35
|
+
message: "mrx-core.error.internal_server_error";
|
|
36
|
+
content?: never;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
25
39
|
}, {}, {
|
|
26
40
|
derive: {};
|
|
27
41
|
resolve: {};
|
|
@@ -21,51 +21,54 @@ var error = new Elysia({
|
|
|
21
21
|
}).error({
|
|
22
22
|
BaseError,
|
|
23
23
|
HttpError
|
|
24
|
-
}).onError(({ code, error: error2, set
|
|
24
|
+
}).onError(({ code, error: error2, set }) => {
|
|
25
25
|
set.headers["content-type"] = "application/json; charset=utf-8";
|
|
26
26
|
switch (code) {
|
|
27
27
|
case "HttpError":
|
|
28
|
-
status
|
|
28
|
+
set.status = error2.httpStatusCode;
|
|
29
|
+
return {
|
|
29
30
|
message: error2.message,
|
|
30
31
|
content: error2.cause
|
|
31
|
-
}
|
|
32
|
-
break;
|
|
32
|
+
};
|
|
33
33
|
case "BaseError":
|
|
34
|
-
status
|
|
35
|
-
|
|
34
|
+
set.status = 500;
|
|
35
|
+
return {
|
|
36
|
+
message: error2.message,
|
|
36
37
|
content: error2.cause
|
|
37
|
-
}
|
|
38
|
-
break;
|
|
38
|
+
};
|
|
39
39
|
case "VALIDATION": {
|
|
40
|
-
status
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
40
|
+
set.status = 422;
|
|
41
|
+
return {
|
|
42
|
+
message: ERROR_KEYS.CORE_ERROR_VALIDATION,
|
|
43
|
+
content: {
|
|
44
|
+
on: error2.type,
|
|
45
|
+
errors: error2.all.map((e) => ({
|
|
46
|
+
path: e.path,
|
|
47
|
+
value: e.value,
|
|
48
|
+
summary: e.summary,
|
|
49
|
+
message: e.schema?.error,
|
|
50
|
+
schema: filterByKeyExclusion(e.schema, ["error"], true)
|
|
51
|
+
}))
|
|
52
|
+
}
|
|
53
|
+
};
|
|
51
54
|
}
|
|
52
55
|
case "NOT_FOUND":
|
|
53
|
-
status
|
|
56
|
+
set.status = 404;
|
|
57
|
+
return {
|
|
54
58
|
message: ERROR_KEYS.CORE_ERROR_NOT_FOUND
|
|
55
|
-
}
|
|
56
|
-
break;
|
|
59
|
+
};
|
|
57
60
|
case "PARSE":
|
|
58
|
-
status
|
|
61
|
+
set.status = 400;
|
|
62
|
+
return {
|
|
59
63
|
message: ERROR_KEYS.CORE_ERROR_PARSE
|
|
60
|
-
}
|
|
61
|
-
break;
|
|
64
|
+
};
|
|
62
65
|
case "INTERNAL_SERVER_ERROR":
|
|
63
66
|
case "UNKNOWN":
|
|
64
67
|
default:
|
|
65
|
-
status
|
|
68
|
+
set.status = 500;
|
|
69
|
+
return {
|
|
66
70
|
message: ERROR_KEYS.CORE_ERROR_INTERNAL_SERVER_ERROR
|
|
67
|
-
}
|
|
68
|
-
break;
|
|
71
|
+
};
|
|
69
72
|
}
|
|
70
73
|
}).as("global");
|
|
71
74
|
export {
|
|
@@ -9,6 +9,80 @@ import {
|
|
|
9
9
|
BaseError
|
|
10
10
|
} from "../../chunk-9cgzhc50.js";
|
|
11
11
|
|
|
12
|
+
// source/modules/logger/worker-logger.ts
|
|
13
|
+
var workerFunction = () => {
|
|
14
|
+
const sinks = {};
|
|
15
|
+
const self = globalThis;
|
|
16
|
+
const processLogEntry = async (log) => {
|
|
17
|
+
await Promise.all(log.sinkNames.map(async (sinkName) => {
|
|
18
|
+
const sink = sinks[sinkName];
|
|
19
|
+
if (!sink)
|
|
20
|
+
return;
|
|
21
|
+
try {
|
|
22
|
+
await sink.log(log.level, log.timestamp, log.object);
|
|
23
|
+
} catch (error) {
|
|
24
|
+
self.postMessage({
|
|
25
|
+
type: "SINK_LOG_ERROR",
|
|
26
|
+
sinkName,
|
|
27
|
+
error,
|
|
28
|
+
object: log.object
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}));
|
|
32
|
+
};
|
|
33
|
+
self.addEventListener("message", async (event) => {
|
|
34
|
+
switch (event.data.type) {
|
|
35
|
+
case "REGISTER_SINK": {
|
|
36
|
+
const {
|
|
37
|
+
sinkName,
|
|
38
|
+
sinkClassName,
|
|
39
|
+
sinkClassString,
|
|
40
|
+
sinkArgs
|
|
41
|
+
} = event.data;
|
|
42
|
+
try {
|
|
43
|
+
const factory = new Function("sinkArgs", `
|
|
44
|
+
${sinkClassString}
|
|
45
|
+
return new ${sinkClassName}(...sinkArgs);
|
|
46
|
+
`);
|
|
47
|
+
sinks[sinkName] = factory(sinkArgs);
|
|
48
|
+
} catch (error) {
|
|
49
|
+
self.postMessage({
|
|
50
|
+
type: "REGISTER_SINK_ERROR",
|
|
51
|
+
sinkName,
|
|
52
|
+
error
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
case "LOG_BATCH": {
|
|
58
|
+
const { logs } = event.data;
|
|
59
|
+
try {
|
|
60
|
+
for (const log of logs)
|
|
61
|
+
await processLogEntry(log);
|
|
62
|
+
} finally {
|
|
63
|
+
self.postMessage({ type: "BATCH_COMPLETE" });
|
|
64
|
+
}
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
case "CLOSE": {
|
|
68
|
+
await Promise.all(Object.entries(sinks).map(async ([name, sink]) => {
|
|
69
|
+
try {
|
|
70
|
+
await sink.close?.();
|
|
71
|
+
} catch (error) {
|
|
72
|
+
self.postMessage({
|
|
73
|
+
type: "SINK_CLOSE_ERROR",
|
|
74
|
+
sinkName: name,
|
|
75
|
+
error
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}));
|
|
79
|
+
self.postMessage({ type: "CLOSE_COMPLETE" });
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
|
|
12
86
|
// source/modules/logger/logger.ts
|
|
13
87
|
class Logger extends TypedEventEmitter {
|
|
14
88
|
_sinks;
|
|
@@ -51,7 +125,7 @@ class Logger extends TypedEventEmitter {
|
|
|
51
125
|
this._batchTimeout = batchTimeout;
|
|
52
126
|
this._autoEnd = autoEnd;
|
|
53
127
|
this._flushOnBeforeExit = flushOnBeforeExit;
|
|
54
|
-
this._worker = new Worker(new
|
|
128
|
+
this._worker = new Worker(URL.createObjectURL(new Blob([`(${workerFunction.toString()})()`], { type: "application/javascript" })), { type: "module" });
|
|
55
129
|
this._setupWorkerMessages();
|
|
56
130
|
if (this._autoEnd)
|
|
57
131
|
this._setupAutoEnd();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const workerFunction: () => void;
|