@mandujs/core 0.7.1 β 0.7.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/package.json +1 -1
- package/src/bundler/build.ts +11 -5
- package/src/filling/auth.ts +40 -40
- package/src/filling/context.ts +438 -464
- package/src/filling/filling.ts +252 -552
- package/src/filling/index.ts +21 -21
- package/src/filling/tmpclaude-2f8d-cwd +1 -0
- package/src/filling/tmpclaude-2fc1-cwd +1 -0
- package/src/filling/tmpclaude-59ee-cwd +1 -0
- package/src/filling/tmpclaude-7608-cwd +1 -0
- package/src/filling/tmpclaude-a102-cwd +1 -0
- package/src/filling/tmpclaude-bf2c-cwd +1 -0
- package/src/filling/tmpclaude-fb5a-cwd +1 -0
- package/src/runtime/index.ts +3 -2
- package/src/runtime/lifecycle.ts +25 -4
- package/src/runtime/ssr.ts +315 -313
- package/src/runtime/tmpclaude-1f31-cwd +1 -0
- package/src/runtime/tmpclaude-8527-cwd +1 -0
- package/src/runtime/tmpclaude-e62c-cwd +1 -0
- package/src/runtime/trace.ts +85 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mandu Trace π§
|
|
3
|
+
* Lifecycle λ¨κ³λ³ μΆμ (μ΅μ
)
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { ManduContext } from "../filling/context";
|
|
7
|
+
|
|
8
|
+
export type TraceEvent =
|
|
9
|
+
| "request"
|
|
10
|
+
| "parse"
|
|
11
|
+
| "transform"
|
|
12
|
+
| "beforeHandle"
|
|
13
|
+
| "handle"
|
|
14
|
+
| "afterHandle"
|
|
15
|
+
| "mapResponse"
|
|
16
|
+
| "afterResponse"
|
|
17
|
+
| "error";
|
|
18
|
+
|
|
19
|
+
export type TracePhase = "begin" | "end" | "error";
|
|
20
|
+
|
|
21
|
+
export interface TraceEntry {
|
|
22
|
+
event: TraceEvent;
|
|
23
|
+
phase: TracePhase;
|
|
24
|
+
time: number;
|
|
25
|
+
name?: string;
|
|
26
|
+
error?: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface TraceCollector {
|
|
30
|
+
records: TraceEntry[];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export const TRACE_KEY = "__mandu_trace";
|
|
34
|
+
|
|
35
|
+
const now = (): number => {
|
|
36
|
+
if (typeof performance !== "undefined" && typeof performance.now === "function") {
|
|
37
|
+
return performance.now();
|
|
38
|
+
}
|
|
39
|
+
return Date.now();
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export function enableTrace(ctx: ManduContext): TraceCollector {
|
|
43
|
+
const existing = ctx.get<TraceCollector>(TRACE_KEY);
|
|
44
|
+
if (existing) return existing;
|
|
45
|
+
const collector: TraceCollector = { records: [] };
|
|
46
|
+
ctx.set(TRACE_KEY, collector);
|
|
47
|
+
return collector;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function getTrace(ctx: ManduContext): TraceCollector | undefined {
|
|
51
|
+
return ctx.get<TraceCollector>(TRACE_KEY);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface Tracer {
|
|
55
|
+
enabled: boolean;
|
|
56
|
+
begin: (event: TraceEvent, name?: string) => () => void;
|
|
57
|
+
error: (event: TraceEvent, err: unknown, name?: string) => void;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const NOOP_TRACER: Tracer = {
|
|
61
|
+
enabled: false,
|
|
62
|
+
begin: () => () => {},
|
|
63
|
+
error: () => {},
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export function createTracer(ctx: ManduContext, enabled?: boolean): Tracer {
|
|
67
|
+
const shouldEnable = Boolean(enabled) || ctx.has(TRACE_KEY);
|
|
68
|
+
if (!shouldEnable) return NOOP_TRACER;
|
|
69
|
+
|
|
70
|
+
const collector = enableTrace(ctx);
|
|
71
|
+
|
|
72
|
+
return {
|
|
73
|
+
enabled: true,
|
|
74
|
+
begin: (event, name) => {
|
|
75
|
+
collector.records.push({ event, phase: "begin", time: now(), name });
|
|
76
|
+
return () => {
|
|
77
|
+
collector.records.push({ event, phase: "end", time: now(), name });
|
|
78
|
+
};
|
|
79
|
+
},
|
|
80
|
+
error: (event, err, name) => {
|
|
81
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
82
|
+
collector.records.push({ event, phase: "error", time: now(), name, error: message });
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|