@trebired/result 0.1.0 → 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/CHANGELOG.md +5 -0
- package/README.md +261 -20
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/instrument_result_exports.d.ts +6 -0
- package/dist/instrument_result_exports.d.ts.map +1 -0
- package/dist/instrument_result_exports.js +62 -0
- package/dist/instrument_result_exports.js.map +1 -0
- package/dist/logging.d.ts +4 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +14 -0
- package/dist/logging.js.map +1 -0
- package/dist/module_hooks.d.ts +6 -0
- package/dist/module_hooks.d.ts.map +1 -0
- package/dist/module_hooks.js +90 -0
- package/dist/module_hooks.js.map +1 -0
- package/dist/process_hooks.d.ts +6 -0
- package/dist/process_hooks.d.ts.map +1 -0
- package/dist/process_hooks.js +69 -0
- package/dist/process_hooks.js.map +1 -0
- package/dist/responder.d.ts.map +1 -1
- package/dist/responder.js +6 -4
- package/dist/responder.js.map +1 -1
- package/dist/responder_support.d.ts +2 -2
- package/dist/responder_support.d.ts.map +1 -1
- package/dist/responder_support.js +2 -2
- package/dist/responder_support.js.map +1 -1
- package/dist/src/index.d.ts +7 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +7 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/instrument_result_exports.d.ts +6 -0
- package/dist/src/instrument_result_exports.d.ts.map +1 -0
- package/dist/src/instrument_result_exports.js +62 -0
- package/dist/src/instrument_result_exports.js.map +1 -0
- package/dist/src/logging.d.ts +4 -0
- package/dist/src/logging.d.ts.map +1 -0
- package/dist/src/logging.js +14 -0
- package/dist/src/logging.js.map +1 -0
- package/dist/src/module_hooks.d.ts +6 -0
- package/dist/src/module_hooks.d.ts.map +1 -0
- package/dist/src/module_hooks.js +90 -0
- package/dist/src/module_hooks.js.map +1 -0
- package/dist/src/process_hooks.d.ts +6 -0
- package/dist/src/process_hooks.d.ts.map +1 -0
- package/dist/src/process_hooks.js +69 -0
- package/dist/src/process_hooks.js.map +1 -0
- package/dist/src/responder.d.ts.map +1 -1
- package/dist/src/responder.js +6 -4
- package/dist/src/responder.js.map +1 -1
- package/dist/src/responder_support.d.ts +2 -2
- package/dist/src/responder_support.d.ts.map +1 -1
- package/dist/src/responder_support.js +2 -2
- package/dist/src/responder_support.js.map +1 -1
- package/dist/src/trace/capture.d.ts +8 -0
- package/dist/src/trace/capture.d.ts.map +1 -0
- package/dist/src/trace/capture.js +47 -0
- package/dist/src/trace/capture.js.map +1 -0
- package/dist/src/trace/runtime.d.ts +51 -0
- package/dist/src/trace/runtime.d.ts.map +1 -0
- package/dist/src/trace/runtime.js +151 -0
- package/dist/src/trace/runtime.js.map +1 -0
- package/dist/src/trace/types.d.ts +121 -0
- package/dist/src/trace/types.d.ts.map +1 -0
- package/dist/src/trace/types.js +2 -0
- package/dist/src/trace/types.js.map +1 -0
- package/dist/src/trace/utils.d.ts +14 -0
- package/dist/src/trace/utils.d.ts.map +1 -0
- package/dist/src/trace/utils.js +150 -0
- package/dist/src/trace/utils.js.map +1 -0
- package/dist/src/tracer.d.ts +5 -0
- package/dist/src/tracer.d.ts.map +1 -0
- package/dist/src/tracer.js +76 -0
- package/dist/src/tracer.js.map +1 -0
- package/dist/src/types.d.ts +10 -4
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/wrap/result/function.d.ts +6 -0
- package/dist/src/wrap/result/function.d.ts.map +1 -0
- package/dist/src/wrap/result/function.js +61 -0
- package/dist/src/wrap/result/function.js.map +1 -0
- package/dist/src/wrap/result/promise.d.ts +6 -0
- package/dist/src/wrap/result/promise.d.ts.map +1 -0
- package/dist/src/wrap/result/promise.js +45 -0
- package/dist/src/wrap/result/promise.js.map +1 -0
- package/dist/trace/capture.d.ts +8 -0
- package/dist/trace/capture.d.ts.map +1 -0
- package/dist/trace/capture.js +47 -0
- package/dist/trace/capture.js.map +1 -0
- package/dist/trace/runtime.d.ts +51 -0
- package/dist/trace/runtime.d.ts.map +1 -0
- package/dist/trace/runtime.js +151 -0
- package/dist/trace/runtime.js.map +1 -0
- package/dist/trace/types.d.ts +121 -0
- package/dist/trace/types.d.ts.map +1 -0
- package/dist/trace/types.js +2 -0
- package/dist/trace/types.js.map +1 -0
- package/dist/trace/utils.d.ts +14 -0
- package/dist/trace/utils.d.ts.map +1 -0
- package/dist/trace/utils.js +150 -0
- package/dist/trace/utils.js.map +1 -0
- package/dist/tracer.d.ts +5 -0
- package/dist/tracer.d.ts.map +1 -0
- package/dist/tracer.js +76 -0
- package/dist/tracer.js.map +1 -0
- package/dist/types.d.ts +10 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/wrap/result/function.d.ts +6 -0
- package/dist/wrap/result/function.d.ts.map +1 -0
- package/dist/wrap/result/function.js +61 -0
- package/dist/wrap/result/function.js.map +1 -0
- package/dist/wrap/result/promise.d.ts +6 -0
- package/dist/wrap/result/promise.d.ts.map +1 -0
- package/dist/wrap/result/promise.js +45 -0
- package/dist/wrap/result/promise.js.map +1 -0
- package/package.json +19 -3
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
import { resolveLogger } from "../logging.js";
|
|
3
|
+
import { mergeMetadata } from "../shared.js";
|
|
4
|
+
const RESULT_TRACER_RUNTIME_SYMBOL = Symbol.for("@trebired/result/runtime");
|
|
5
|
+
const DEFAULT_TRACE_CONFIG = {
|
|
6
|
+
enabled: true,
|
|
7
|
+
failedResultSeverity: "error",
|
|
8
|
+
objectDepth: 3,
|
|
9
|
+
stackDepth: 8,
|
|
10
|
+
};
|
|
11
|
+
function createResultTraceRuntime(config = {}) {
|
|
12
|
+
const resolved = resolveTraceConfig(config);
|
|
13
|
+
const state = createRuntimeState(resolved);
|
|
14
|
+
const logger = resolveLogger(resolved.logger, resolved.loggerAdapter);
|
|
15
|
+
return {
|
|
16
|
+
...state,
|
|
17
|
+
emit(record) {
|
|
18
|
+
if (resolved.enabled !== true) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
emitTraceRecord(logger, record);
|
|
22
|
+
runTraceSideEffect(() => resolved.onTrace?.(record));
|
|
23
|
+
return record;
|
|
24
|
+
},
|
|
25
|
+
getTraceStack() {
|
|
26
|
+
return [...(state.storage.getStore() || [])];
|
|
27
|
+
},
|
|
28
|
+
runWithTraceStack(stack, callback) {
|
|
29
|
+
return state.storage.run([...stack], callback);
|
|
30
|
+
},
|
|
31
|
+
withTraceLabel(label, callback) {
|
|
32
|
+
return state.storage.run([...this.getTraceStack(), label], callback);
|
|
33
|
+
},
|
|
34
|
+
markTraced(value) {
|
|
35
|
+
if (value == null || typeof value !== "object") {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
if (state.tracedObjects.has(value)) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
state.tracedObjects.add(value);
|
|
42
|
+
return false;
|
|
43
|
+
},
|
|
44
|
+
resetForTests() {
|
|
45
|
+
resetRuntimeState(state);
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function resolveTraceConfig(config) {
|
|
50
|
+
return {
|
|
51
|
+
...DEFAULT_TRACE_CONFIG,
|
|
52
|
+
...config,
|
|
53
|
+
argumentPreview: {
|
|
54
|
+
maxDepth: 2,
|
|
55
|
+
maxItems: 5,
|
|
56
|
+
maxStringLength: 120,
|
|
57
|
+
...(config.argumentPreview || {}),
|
|
58
|
+
},
|
|
59
|
+
summaryPreview: {
|
|
60
|
+
maxDepth: 2,
|
|
61
|
+
maxItems: 5,
|
|
62
|
+
maxStringLength: 120,
|
|
63
|
+
...(config.summaryPreview || {}),
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function createRuntimeState(config) {
|
|
68
|
+
return {
|
|
69
|
+
config,
|
|
70
|
+
storage: new AsyncLocalStorage(),
|
|
71
|
+
functionCache: new WeakMap(),
|
|
72
|
+
promiseCache: new WeakMap(),
|
|
73
|
+
objectCache: new WeakMap(),
|
|
74
|
+
tracedObjects: new WeakSet(),
|
|
75
|
+
processHooks: new Map(),
|
|
76
|
+
moduleHooks: new Map(),
|
|
77
|
+
moduleFailureKeys: new Set(),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function resetRuntimeState(state) {
|
|
81
|
+
for (const installation of state.processHooks.values()) {
|
|
82
|
+
installation.uninstall();
|
|
83
|
+
}
|
|
84
|
+
for (const installation of state.moduleHooks.values()) {
|
|
85
|
+
installation.uninstall();
|
|
86
|
+
}
|
|
87
|
+
state.tracedObjects = new WeakSet();
|
|
88
|
+
state.functionCache = new WeakMap();
|
|
89
|
+
state.promiseCache = new WeakMap();
|
|
90
|
+
state.objectCache = new WeakMap();
|
|
91
|
+
state.processHooks = new Map();
|
|
92
|
+
state.moduleHooks = new Map();
|
|
93
|
+
state.moduleFailureKeys.clear();
|
|
94
|
+
}
|
|
95
|
+
function readTracerRuntime(tracer) {
|
|
96
|
+
const runtime = tracer
|
|
97
|
+
? tracer[RESULT_TRACER_RUNTIME_SYMBOL]
|
|
98
|
+
: null;
|
|
99
|
+
return (runtime || null);
|
|
100
|
+
}
|
|
101
|
+
function getCachedEntry(cache, key, cacheKey) {
|
|
102
|
+
return cache.get(key)?.get(cacheKey);
|
|
103
|
+
}
|
|
104
|
+
function setCachedEntry(cache, key, cacheKey, value) {
|
|
105
|
+
const current = cache.get(key) || new Map();
|
|
106
|
+
current.set(cacheKey, value);
|
|
107
|
+
cache.set(key, current);
|
|
108
|
+
return value;
|
|
109
|
+
}
|
|
110
|
+
function buildTraceMeta(record) {
|
|
111
|
+
return mergeMetadata({
|
|
112
|
+
kind: record.kind,
|
|
113
|
+
label: record.label,
|
|
114
|
+
error_code: record.errorCode,
|
|
115
|
+
status: record.status,
|
|
116
|
+
failure_site: record.failureSite,
|
|
117
|
+
trace_stack: record.traceStack,
|
|
118
|
+
argument_preview: record.argumentPreview,
|
|
119
|
+
metadata_summary: record.metadataSummary,
|
|
120
|
+
data_summary: record.dataSummary,
|
|
121
|
+
details_summary: record.detailsSummary,
|
|
122
|
+
source: record.source,
|
|
123
|
+
compact_stack: record.compactStack,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
function emitTraceRecord(logger, record) {
|
|
127
|
+
if (!logger) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
runTraceSideEffect(() => selectTraceMethod(logger, record.severity)("result.trace", record.message, buildTraceMeta(record)));
|
|
131
|
+
}
|
|
132
|
+
function runTraceSideEffect(effect) {
|
|
133
|
+
try {
|
|
134
|
+
const output = effect();
|
|
135
|
+
if (output && typeof output.then === "function") {
|
|
136
|
+
Promise.resolve(output).catch(() => { });
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
catch { }
|
|
140
|
+
}
|
|
141
|
+
function selectTraceMethod(logger, severity) {
|
|
142
|
+
if (severity === "error") {
|
|
143
|
+
return logger.error;
|
|
144
|
+
}
|
|
145
|
+
if (severity === "warn") {
|
|
146
|
+
return logger.warn;
|
|
147
|
+
}
|
|
148
|
+
return logger.info;
|
|
149
|
+
}
|
|
150
|
+
export { RESULT_TRACER_RUNTIME_SYMBOL, createResultTraceRuntime, getCachedEntry, readTracerRuntime, setCachedEntry, };
|
|
151
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/trace/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import type { MaybePromise, ResultLike, ResultLogger, ResultLoggerAdapter } from "../types.js";
|
|
2
|
+
export type ResultTraceSeverity = "debug" | "info" | "warn" | "error";
|
|
3
|
+
export type ResultTraceKind = "throw" | "reject" | "result" | "uncaught-exception" | "unhandled-rejection" | "module-load";
|
|
4
|
+
export interface ResultTracePreviewConfig {
|
|
5
|
+
maxDepth?: number;
|
|
6
|
+
maxItems?: number;
|
|
7
|
+
maxStringLength?: number;
|
|
8
|
+
}
|
|
9
|
+
export type ResultTraceFilter = string | RegExp | ((target: string) => boolean) | Array<string | RegExp | ((target: string) => boolean)>;
|
|
10
|
+
export interface ResultTraceRecord {
|
|
11
|
+
createdAt: string;
|
|
12
|
+
kind: ResultTraceKind;
|
|
13
|
+
severity: ResultTraceSeverity;
|
|
14
|
+
label: string;
|
|
15
|
+
errorCode: string;
|
|
16
|
+
status: number | null;
|
|
17
|
+
message: string;
|
|
18
|
+
compactStack: string[];
|
|
19
|
+
failureSite: string | null;
|
|
20
|
+
argumentPreview: string[];
|
|
21
|
+
metadataSummary: string | null;
|
|
22
|
+
dataSummary: string | null;
|
|
23
|
+
detailsSummary: string | null;
|
|
24
|
+
source: string | null;
|
|
25
|
+
traceStack: string[];
|
|
26
|
+
}
|
|
27
|
+
export interface ResultTraceContextInput {
|
|
28
|
+
label?: string | null;
|
|
29
|
+
args?: unknown[];
|
|
30
|
+
source?: string | null;
|
|
31
|
+
kind?: ResultTraceKind;
|
|
32
|
+
severity?: ResultTraceSeverity;
|
|
33
|
+
status?: number | null;
|
|
34
|
+
message?: string | null;
|
|
35
|
+
errorCode?: string | null;
|
|
36
|
+
}
|
|
37
|
+
export interface ResultTraceConfig {
|
|
38
|
+
enabled?: boolean;
|
|
39
|
+
logger?: ResultLogger;
|
|
40
|
+
loggerAdapter?: ResultLoggerAdapter;
|
|
41
|
+
onTrace?(record: ResultTraceRecord): MaybePromise<void>;
|
|
42
|
+
include?: ResultTraceFilter;
|
|
43
|
+
exclude?: ResultTraceFilter;
|
|
44
|
+
objectDepth?: number;
|
|
45
|
+
stackDepth?: number;
|
|
46
|
+
failedResultSeverity?: "warn" | "error";
|
|
47
|
+
argumentPreview?: ResultTracePreviewConfig;
|
|
48
|
+
summaryPreview?: ResultTracePreviewConfig;
|
|
49
|
+
}
|
|
50
|
+
export interface ResultTraceFailureSummary {
|
|
51
|
+
errorCode: string;
|
|
52
|
+
status: number | null;
|
|
53
|
+
message: string;
|
|
54
|
+
compactStack: string[];
|
|
55
|
+
failureSite: string | null;
|
|
56
|
+
metadataSummary: string | null;
|
|
57
|
+
dataSummary: string | null;
|
|
58
|
+
detailsSummary: string | null;
|
|
59
|
+
}
|
|
60
|
+
export interface ResultTraceCallSite {
|
|
61
|
+
stack: string[];
|
|
62
|
+
site: string | null;
|
|
63
|
+
}
|
|
64
|
+
export interface ResultTraceProcessLike {
|
|
65
|
+
on(event: string, listener: (...args: any[]) => void): void;
|
|
66
|
+
off?(event: string, listener: (...args: any[]) => void): void;
|
|
67
|
+
removeListener?(event: string, listener: (...args: any[]) => void): void;
|
|
68
|
+
exit?(code?: number): void;
|
|
69
|
+
}
|
|
70
|
+
export type ResultProcessExitHandler = (record: ResultTraceRecord, target: ResultTraceProcessLike) => void;
|
|
71
|
+
export interface ResultNodeModuleLike {
|
|
72
|
+
_load(request: string, parent?: unknown, isMain?: boolean): unknown;
|
|
73
|
+
_resolveFilename?(request: string, parent?: unknown, isMain?: boolean): string;
|
|
74
|
+
}
|
|
75
|
+
export interface ResultHookInstallation {
|
|
76
|
+
installed: boolean;
|
|
77
|
+
uninstall(): void;
|
|
78
|
+
}
|
|
79
|
+
export interface ResultTracingBoot {
|
|
80
|
+
tracer: ResultTracer;
|
|
81
|
+
processHooks: ResultHookInstallation | null;
|
|
82
|
+
moduleHooks: ResultHookInstallation | null;
|
|
83
|
+
}
|
|
84
|
+
export interface ResultTraceClientOptions extends ResultTraceContextInput, ResultTraceConfig {
|
|
85
|
+
tracer?: ResultTracer;
|
|
86
|
+
}
|
|
87
|
+
export interface WrapResultFunctionOptions extends ResultTraceClientOptions {
|
|
88
|
+
}
|
|
89
|
+
export interface WrapResultPromiseOptions extends ResultTraceClientOptions {
|
|
90
|
+
}
|
|
91
|
+
export interface InstrumentResultExportsOptions extends ResultTraceClientOptions {
|
|
92
|
+
depth?: number;
|
|
93
|
+
}
|
|
94
|
+
export interface ResultProcessHookOptions extends ResultTraceClientOptions {
|
|
95
|
+
process?: ResultTraceProcessLike;
|
|
96
|
+
exitOnUncaughtException?: boolean | ResultProcessExitHandler;
|
|
97
|
+
exitOnUnhandledRejection?: boolean | ResultProcessExitHandler;
|
|
98
|
+
}
|
|
99
|
+
export interface ResultModuleHookOptions extends ResultTraceClientOptions {
|
|
100
|
+
module?: ResultNodeModuleLike;
|
|
101
|
+
labelPrefix?: string;
|
|
102
|
+
depth?: number;
|
|
103
|
+
}
|
|
104
|
+
export interface BootResultTracingOptions extends ResultTraceConfig {
|
|
105
|
+
processHooks?: boolean | ResultProcessHookOptions;
|
|
106
|
+
moduleHooks?: boolean | ResultModuleHookOptions;
|
|
107
|
+
}
|
|
108
|
+
export interface ResultTracer {
|
|
109
|
+
readonly config: Readonly<ResultTraceConfig>;
|
|
110
|
+
traceFailure(failure: unknown, options?: ResultTraceContextInput): ResultTraceRecord | null;
|
|
111
|
+
traceResult(result: ResultLike | null | undefined, options?: ResultTraceContextInput): ResultTraceRecord | null;
|
|
112
|
+
traceError(error: unknown, options?: ResultTraceContextInput): ResultTraceRecord | null;
|
|
113
|
+
wrapFunction<Fn extends (...args: any[]) => any>(fn: Fn, options?: WrapResultFunctionOptions): Fn;
|
|
114
|
+
wrapPromise<T>(promise: Promise<T>, options?: WrapResultPromiseOptions): Promise<T>;
|
|
115
|
+
instrumentExports<T>(target: T, options?: InstrumentResultExportsOptions): T;
|
|
116
|
+
installProcessHooks(options?: ResultProcessHookOptions): ResultHookInstallation;
|
|
117
|
+
installModuleHooks(options?: ResultModuleHookOptions): ResultHookInstallation;
|
|
118
|
+
getTraceStack(): string[];
|
|
119
|
+
resetForTests(): void;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/trace/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/trace/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ResultTraceCallSite, ResultTraceFailureSummary, ResultTraceFilter, ResultTracePreviewConfig } from "./types.js";
|
|
2
|
+
import type { ResultLike } from "../types.js";
|
|
3
|
+
declare function normalizeTraceLabel(input: unknown, fallback?: string): string;
|
|
4
|
+
declare function isFailedResultLike(value: unknown): value is ResultLike;
|
|
5
|
+
declare function captureCallSite(input?: unknown, maxLines?: number): ResultTraceCallSite;
|
|
6
|
+
declare function compactStack(input?: unknown, maxLines?: number): string[];
|
|
7
|
+
declare function normalizeThrownValue(value: unknown, preview: ResultTracePreviewConfig, stackDepth: number): ResultTraceFailureSummary;
|
|
8
|
+
declare function summarizeFailedResult(result: ResultLike, preview: ResultTracePreviewConfig, stackDepth: number): ResultTraceFailureSummary;
|
|
9
|
+
declare function previewCallArguments(args: unknown[], preview: ResultTracePreviewConfig): string[];
|
|
10
|
+
declare function previewValue(value: unknown, preview: ResultTracePreviewConfig): string;
|
|
11
|
+
declare function matchTraceTarget(target: string, include?: ResultTraceFilter, exclude?: ResultTraceFilter): boolean;
|
|
12
|
+
declare function isPlainObject(value: unknown): value is Record<string, unknown>;
|
|
13
|
+
export { captureCallSite, compactStack, isFailedResultLike, isPlainObject, matchTraceTarget, normalizeThrownValue, normalizeTraceLabel, previewCallArguments, previewValue, summarizeFailedResult, };
|
|
14
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/trace/utils.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAIzC,iBAAS,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,SAAiB,GAAG,MAAM,CAG9E;AAED,iBAAS,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAE/D;AAED,iBAAS,eAAe,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,SAAI,GAAG,mBAAmB,CAM3E;AAED,iBAAS,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,SAAI,GAAG,MAAM,EAAE,CAU7D;AAED,iBAAS,oBAAoB,CAC3B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,wBAAwB,EACjC,UAAU,EAAE,MAAM,GACjB,yBAAyB,CAkB3B;AAED,iBAAS,qBAAqB,CAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,wBAAwB,EACjC,UAAU,EAAE,MAAM,GACjB,yBAAyB,CAY3B;AAED,iBAAS,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,wBAAwB,GAAG,MAAM,EAAE,CAG1F;AAED,iBAAS,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAQ/E;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAM3G;AAED,iBAAS,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAOvE;AAsFD,OAAO,EACL,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,GACtB,CAAC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { getResultLevel, isObject, normalizeResultErrorCode, toResultStatus, } from "../shared.js";
|
|
2
|
+
const STACK_LINE_PREFIX = /^\s*at\s+/u;
|
|
3
|
+
function normalizeTraceLabel(input, fallback = "result.trace") {
|
|
4
|
+
const label = typeof input === "string" ? input.trim() : "";
|
|
5
|
+
return label || fallback;
|
|
6
|
+
}
|
|
7
|
+
function isFailedResultLike(value) {
|
|
8
|
+
return isObject(value) && value.ok === false && getResultLevel(value) === "error";
|
|
9
|
+
}
|
|
10
|
+
function captureCallSite(input, maxLines = 8) {
|
|
11
|
+
const stack = compactStack(input, maxLines);
|
|
12
|
+
return {
|
|
13
|
+
stack,
|
|
14
|
+
site: stack[0] || null,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function compactStack(input, maxLines = 8) {
|
|
18
|
+
const stackSource = readStackSource(input);
|
|
19
|
+
return stackSource
|
|
20
|
+
.split("\n")
|
|
21
|
+
.map((line) => line.trim())
|
|
22
|
+
.filter(Boolean)
|
|
23
|
+
.filter((line) => STACK_LINE_PREFIX.test(line))
|
|
24
|
+
.map((line) => line.replace(STACK_LINE_PREFIX, ""))
|
|
25
|
+
.filter((line) => !line.includes("/trace/"))
|
|
26
|
+
.slice(0, Math.max(0, maxLines));
|
|
27
|
+
}
|
|
28
|
+
function normalizeThrownValue(value, preview, stackDepth) {
|
|
29
|
+
if (isFailedResultLike(value)) {
|
|
30
|
+
return summarizeFailedResult(value, preview, stackDepth);
|
|
31
|
+
}
|
|
32
|
+
const captured = captureCallSite(value, stackDepth);
|
|
33
|
+
const source = isObject(value) ? value : null;
|
|
34
|
+
return {
|
|
35
|
+
errorCode: normalizeResultErrorCode(source?.error_code || source?.code) || "thrown-error",
|
|
36
|
+
status: Number.isFinite(Number(source?.status)) ? toResultStatus(source?.status, 500) : null,
|
|
37
|
+
message: readThrownMessage(value),
|
|
38
|
+
compactStack: captured.stack,
|
|
39
|
+
failureSite: captured.site,
|
|
40
|
+
metadataSummary: null,
|
|
41
|
+
dataSummary: null,
|
|
42
|
+
detailsSummary: source?.details != null ? previewValue(source.details, preview) : null,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function summarizeFailedResult(result, preview, stackDepth) {
|
|
46
|
+
const captured = captureCallSite(result.stack, stackDepth);
|
|
47
|
+
return {
|
|
48
|
+
errorCode: normalizeResultErrorCode(result.error_code) || "failed",
|
|
49
|
+
status: Number.isFinite(Number(result.status)) ? toResultStatus(result.status, 500) : null,
|
|
50
|
+
message: typeof result.message === "string" && result.message.trim() ? result.message : "Result failed.",
|
|
51
|
+
compactStack: captured.stack,
|
|
52
|
+
failureSite: captured.site,
|
|
53
|
+
metadataSummary: isObject(result.meta) ? previewValue(result.meta, preview) : null,
|
|
54
|
+
dataSummary: result.data != null ? previewValue(result.data, preview) : null,
|
|
55
|
+
detailsSummary: result.details != null ? previewValue(result.details, preview) : null,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function previewCallArguments(args, preview) {
|
|
59
|
+
const maxItems = preview.maxItems || 5;
|
|
60
|
+
return args.slice(0, maxItems).map((value) => previewValue(value, preview));
|
|
61
|
+
}
|
|
62
|
+
function previewValue(value, preview) {
|
|
63
|
+
const state = {
|
|
64
|
+
depth: preview.maxDepth || 2,
|
|
65
|
+
items: preview.maxItems || 5,
|
|
66
|
+
length: preview.maxStringLength || 120,
|
|
67
|
+
seen: new WeakSet(),
|
|
68
|
+
};
|
|
69
|
+
return renderPreviewValue(value, state, 0);
|
|
70
|
+
}
|
|
71
|
+
function matchTraceTarget(target, include, exclude) {
|
|
72
|
+
if (exclude && matchesFilter(exclude, target)) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
return include ? matchesFilter(include, target) : true;
|
|
76
|
+
}
|
|
77
|
+
function isPlainObject(value) {
|
|
78
|
+
if (!isObject(value)) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
const prototype = Object.getPrototypeOf(value);
|
|
82
|
+
return prototype === Object.prototype || prototype === null;
|
|
83
|
+
}
|
|
84
|
+
function renderPreviewValue(value, state, level) {
|
|
85
|
+
if (value == null)
|
|
86
|
+
return String(value);
|
|
87
|
+
if (typeof value === "string")
|
|
88
|
+
return JSON.stringify(truncateString(value, state.length));
|
|
89
|
+
if (typeof value === "number" || typeof value === "boolean" || typeof value === "bigint")
|
|
90
|
+
return String(value);
|
|
91
|
+
if (typeof value === "function")
|
|
92
|
+
return `[Function ${value.name || "anonymous"}]`;
|
|
93
|
+
if (typeof value === "symbol")
|
|
94
|
+
return value.toString();
|
|
95
|
+
if (level >= state.depth)
|
|
96
|
+
return Array.isArray(value) ? "[Array]" : "[Object]";
|
|
97
|
+
if (typeof value !== "object")
|
|
98
|
+
return String(value);
|
|
99
|
+
if (state.seen.has(value))
|
|
100
|
+
return "[Circular]";
|
|
101
|
+
state.seen.add(value);
|
|
102
|
+
return Array.isArray(value)
|
|
103
|
+
? renderArrayPreview(value, state, level)
|
|
104
|
+
: renderObjectPreview(value, state, level);
|
|
105
|
+
}
|
|
106
|
+
function renderArrayPreview(value, state, level) {
|
|
107
|
+
const items = value.slice(0, state.items).map((entry) => renderPreviewValue(entry, state, level + 1));
|
|
108
|
+
return `[${items.join(", ")}${value.length > state.items ? ", ..." : ""}]`;
|
|
109
|
+
}
|
|
110
|
+
function renderObjectPreview(value, state, level) {
|
|
111
|
+
const entries = Object.entries(value)
|
|
112
|
+
.slice(0, state.items)
|
|
113
|
+
.map(([key, entry]) => `${key}: ${renderPreviewValue(entry, state, level + 1)}`);
|
|
114
|
+
return `{ ${entries.join(", ")}${Object.keys(value).length > state.items ? ", ..." : ""} }`;
|
|
115
|
+
}
|
|
116
|
+
function truncateString(value, length) {
|
|
117
|
+
return value.length > length ? `${value.slice(0, Math.max(0, length - 3))}...` : value;
|
|
118
|
+
}
|
|
119
|
+
function matchesFilter(filter, target) {
|
|
120
|
+
if (Array.isArray(filter)) {
|
|
121
|
+
return filter.some((entry) => matchesFilter(entry, target));
|
|
122
|
+
}
|
|
123
|
+
if (typeof filter === "string") {
|
|
124
|
+
return target.includes(filter);
|
|
125
|
+
}
|
|
126
|
+
return filter instanceof RegExp ? filter.test(target) : filter(target);
|
|
127
|
+
}
|
|
128
|
+
function readStackSource(input) {
|
|
129
|
+
if (typeof input === "string") {
|
|
130
|
+
return input;
|
|
131
|
+
}
|
|
132
|
+
if (isObject(input) && typeof input.stack === "string") {
|
|
133
|
+
return input.stack;
|
|
134
|
+
}
|
|
135
|
+
return new Error().stack || "";
|
|
136
|
+
}
|
|
137
|
+
function readThrownMessage(value) {
|
|
138
|
+
if (value instanceof Error && value.message) {
|
|
139
|
+
return value.message;
|
|
140
|
+
}
|
|
141
|
+
if (typeof value === "string" && value.trim()) {
|
|
142
|
+
return value;
|
|
143
|
+
}
|
|
144
|
+
if (isObject(value) && typeof value.message === "string" && value.message.trim()) {
|
|
145
|
+
return value.message;
|
|
146
|
+
}
|
|
147
|
+
return "Unknown failure.";
|
|
148
|
+
}
|
|
149
|
+
export { captureCallSite, compactStack, isFailedResultLike, isPlainObject, matchTraceTarget, normalizeThrownValue, normalizeTraceLabel, previewCallArguments, previewValue, summarizeFailedResult, };
|
|
150
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/trace/utils.ts"],"names":[],"mappings":"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"}
|
package/dist/tracer.d.ts
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { BootResultTracingOptions, ResultTraceConfig, ResultTracer, ResultTracingBoot } from "./trace/types.js";
|
|
2
|
+
declare function createResultTracer(config?: ResultTraceConfig): ResultTracer;
|
|
3
|
+
declare function bootResultTracing(config?: BootResultTracingOptions): ResultTracingBoot;
|
|
4
|
+
export { createResultTracer, bootResultTracing, };
|
|
5
|
+
//# sourceMappingURL=tracer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracer.d.ts","sourceRoot":"","sources":["../../src/tracer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,wBAAwB,EAExB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAE1B,iBAAS,kBAAkB,CAAC,MAAM,GAAE,iBAAsB,GAAG,YAAY,CA0CxE;AAED,iBAAS,iBAAiB,CAAC,MAAM,GAAE,wBAA6B,GAAG,iBAAiB,CAQnF;AAgCD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,GAClB,CAAC"}
|
package/dist/tracer.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { traceErrorWithRuntime, traceFailureWithRuntime, traceResultWithRuntime, } from "./trace/capture.js";
|
|
2
|
+
import { instrumentResultExportsWithRuntime } from "./instrument_result_exports.js";
|
|
3
|
+
import { installResultModuleHooksWithRuntime } from "./module_hooks.js";
|
|
4
|
+
import { installResultProcessHooksWithRuntime } from "./process_hooks.js";
|
|
5
|
+
import { createResultTraceRuntime, RESULT_TRACER_RUNTIME_SYMBOL } from "./trace/runtime.js";
|
|
6
|
+
import { wrapResultFunctionWithRuntime } from "./wrap/result/function.js";
|
|
7
|
+
import { wrapResultPromiseWithRuntime } from "./wrap/result/promise.js";
|
|
8
|
+
function createResultTracer(config = {}) {
|
|
9
|
+
const runtime = createResultTraceRuntime(config);
|
|
10
|
+
const tracer = {
|
|
11
|
+
config: runtime.config,
|
|
12
|
+
traceFailure(failure, options) {
|
|
13
|
+
return traceFailureWithRuntime(runtime, failure, options);
|
|
14
|
+
},
|
|
15
|
+
traceResult(result, options) {
|
|
16
|
+
return traceResultWithRuntime(runtime, result, options);
|
|
17
|
+
},
|
|
18
|
+
traceError(error, options) {
|
|
19
|
+
return traceErrorWithRuntime(runtime, error, options);
|
|
20
|
+
},
|
|
21
|
+
wrapFunction(fn, options) {
|
|
22
|
+
return wrapResultFunctionWithRuntime(runtime, fn, options);
|
|
23
|
+
},
|
|
24
|
+
wrapPromise(promise, options) {
|
|
25
|
+
return wrapResultPromiseWithRuntime(runtime, promise, options);
|
|
26
|
+
},
|
|
27
|
+
instrumentExports(target, options) {
|
|
28
|
+
return instrumentResultExportsWithRuntime(runtime, target, options);
|
|
29
|
+
},
|
|
30
|
+
installProcessHooks(options) {
|
|
31
|
+
return installResultProcessHooksWithRuntime(runtime, options);
|
|
32
|
+
},
|
|
33
|
+
installModuleHooks(options) {
|
|
34
|
+
return installResultModuleHooksWithRuntime(runtime, options);
|
|
35
|
+
},
|
|
36
|
+
getTraceStack() {
|
|
37
|
+
return runtime.getTraceStack();
|
|
38
|
+
},
|
|
39
|
+
resetForTests() {
|
|
40
|
+
runtime.resetForTests();
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
Object.defineProperty(tracer, RESULT_TRACER_RUNTIME_SYMBOL, {
|
|
44
|
+
value: runtime,
|
|
45
|
+
enumerable: false,
|
|
46
|
+
});
|
|
47
|
+
return tracer;
|
|
48
|
+
}
|
|
49
|
+
function bootResultTracing(config = {}) {
|
|
50
|
+
const tracer = createResultTracer(config);
|
|
51
|
+
return {
|
|
52
|
+
tracer,
|
|
53
|
+
processHooks: resolveBootProcessHooks(tracer, config),
|
|
54
|
+
moduleHooks: resolveBootModuleHooks(tracer, config),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function resolveBootProcessHooks(tracer, config) {
|
|
58
|
+
if (config.processHooks === false) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
if (!config.processHooks) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
return tracer.installProcessHooks(config.processHooks === true ? {} : config.processHooks);
|
|
65
|
+
}
|
|
66
|
+
function resolveBootModuleHooks(tracer, config) {
|
|
67
|
+
if (config.moduleHooks === false) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
if (!config.moduleHooks) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
return tracer.installModuleHooks(config.moduleHooks === true ? {} : config.moduleHooks);
|
|
74
|
+
}
|
|
75
|
+
export { createResultTracer, bootResultTracing, };
|
|
76
|
+
//# sourceMappingURL=tracer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracer.js","sourceRoot":"","sources":["../../src/tracer.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
+
import type { LoggerAdapterEvent, LoggerAdapterGenericLogMethod, LoggerAdapterLogger, LoggerAdapterLogMethod, LoggerAdapterWriter, NormalizedLoggerAdapter } from "@trebired/logger-adapter";
|
|
1
2
|
export type MaybePromise<T> = T | Promise<T>;
|
|
2
3
|
export type ResultLevel = "ok" | "noop" | "error";
|
|
3
4
|
export type ResultMetadata = Record<string, unknown>;
|
|
5
|
+
export type ResultLogMethod = LoggerAdapterLogMethod;
|
|
6
|
+
export type ResultGenericLogMethod = LoggerAdapterGenericLogMethod;
|
|
7
|
+
export type ResultLogger = LoggerAdapterLogger;
|
|
8
|
+
export type ResultLoggerAdapter = LoggerAdapterWriter;
|
|
9
|
+
export type NormalizedResultLogger = NormalizedLoggerAdapter;
|
|
10
|
+
export type ResultLogEvent = LoggerAdapterEvent;
|
|
4
11
|
export type ResultLike<TData = unknown, TDetails = unknown, TMeta extends ResultMetadata = ResultMetadata> = {
|
|
5
12
|
ok: boolean;
|
|
6
13
|
error: boolean;
|
|
@@ -39,9 +46,6 @@ export interface ResolveResultPresetInput<TType extends string = string> {
|
|
|
39
46
|
status?: number | null;
|
|
40
47
|
type?: TType | null;
|
|
41
48
|
}
|
|
42
|
-
export interface ResultResponderLogger {
|
|
43
|
-
error?(scope: string, message: string, meta?: ResultMetadata): void;
|
|
44
|
-
}
|
|
45
49
|
export interface ResultRespondInput<Req = unknown, Res = unknown, TType extends string = string> {
|
|
46
50
|
req?: Req;
|
|
47
51
|
res: Res;
|
|
@@ -92,7 +96,8 @@ export interface ResultTextContext<Req = unknown, Res = unknown, TType extends s
|
|
|
92
96
|
}
|
|
93
97
|
export interface ResultResponderConfig<Req = unknown, Res = unknown, TType extends string = string> {
|
|
94
98
|
presets?: ResultPresetMap<TType>;
|
|
95
|
-
logger?:
|
|
99
|
+
logger?: ResultLogger;
|
|
100
|
+
loggerAdapter?: ResultLoggerAdapter;
|
|
96
101
|
json(context: ResultJsonContext<Req, Res, TType>): MaybePromise<unknown>;
|
|
97
102
|
render?(context: ResultRenderContext<Req, Res, TType>): MaybePromise<unknown>;
|
|
98
103
|
text(context: ResultTextContext<Req, Res, TType>): MaybePromise<unknown>;
|
|
@@ -102,4 +107,5 @@ export interface ResultResponder<Req = unknown, Res = unknown, TType extends str
|
|
|
102
107
|
respond(input: ResultRespondInput<Req, Res, TType>): MaybePromise<unknown>;
|
|
103
108
|
resolvePreset(input: Omit<ResolveResultPresetInput<TType>, "presets">): ResultPreset;
|
|
104
109
|
}
|
|
110
|
+
export type * from "./trace/types.js";
|
|
105
111
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErD,MAAM,MAAM,UAAU,CACpB,KAAK,GAAG,OAAO,EACf,QAAQ,GAAG,OAAO,EAClB,KAAK,SAAS,cAAc,GAAG,cAAc,IAC3C;IACF,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC;CACd,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5B,MAAM,WAAW,UAAU,CACzB,KAAK,GAAG,OAAO,EACf,QAAQ,GAAG,OAAO,EAClB,KAAK,SAAS,cAAc,GAAG,cAAc;IAE7C,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,cAAc,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM;IAC9D,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAC,CAAC;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,CAAC;CAC9D;AAED,MAAM,MAAM,eAAe,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,IACvD,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEzD,MAAM,WAAW,wBAAwB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM;IACrE,OAAO,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACxC,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|