@relkit/invocation 0.2.0 → 0.4.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/dist/context.d.ts.map +1 -1
- package/dist/context.js +3 -1
- package/dist/context.js.map +1 -1
- package/dist/contracts.d.ts +2 -0
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js.map +1 -1
- package/dist/dispatcher-context.d.ts.map +1 -1
- package/dist/dispatcher-context.js +10 -2
- package/dist/dispatcher-context.js.map +1 -1
- package/dist/dispatcher-scope.d.ts +4 -0
- package/dist/dispatcher-scope.d.ts.map +1 -1
- package/dist/dispatcher-scope.js +11 -1
- package/dist/dispatcher-scope.js.map +1 -1
- package/dist/dispatcher-types.d.ts +7 -1
- package/dist/dispatcher-types.d.ts.map +1 -1
- package/dist/dispatcher-types.js.map +1 -1
- package/dist/execution-context.d.ts +20 -0
- package/dist/execution-context.d.ts.map +1 -0
- package/dist/execution-context.js +9 -0
- package/dist/execution-context.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/public-trace.d.ts +28 -0
- package/dist/public-trace.d.ts.map +1 -0
- package/dist/public-trace.js +95 -0
- package/dist/public-trace.js.map +1 -0
- package/dist/root-span.d.ts +6 -0
- package/dist/root-span.d.ts.map +1 -0
- package/dist/root-span.js +24 -0
- package/dist/root-span.js.map +1 -0
- package/dist/span-runtime.d.ts +43 -0
- package/dist/span-runtime.d.ts.map +1 -0
- package/dist/span-runtime.js +73 -0
- package/dist/span-runtime.js.map +1 -0
- package/dist/span-snapshot.d.ts +48 -0
- package/dist/span-snapshot.d.ts.map +1 -0
- package/dist/span-snapshot.js +84 -0
- package/dist/span-snapshot.js.map +1 -0
- package/dist/standalone-dispatcher.d.ts.map +1 -1
- package/dist/standalone-dispatcher.js +3 -1
- package/dist/standalone-dispatcher.js.map +1 -1
- package/dist/trace-limits.d.ts +18 -0
- package/dist/trace-limits.d.ts.map +1 -0
- package/dist/trace-limits.js +42 -0
- package/dist/trace-limits.js.map +1 -0
- package/dist/trace-propagation.d.ts +3 -0
- package/dist/trace-propagation.d.ts.map +1 -0
- package/dist/trace-propagation.js +20 -0
- package/dist/trace-propagation.js.map +1 -0
- package/dist/tracing-span.d.ts +50 -0
- package/dist/tracing-span.d.ts.map +1 -0
- package/dist/tracing-span.js +175 -0
- package/dist/tracing-span.js.map +1 -0
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +6 -1
- package/dist/validation.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Exit } from "effect";
|
|
2
|
+
import { RelkitSpan } from "./tracing-span.js";
|
|
3
|
+
import { traceLimits } from "./trace-limits.js";
|
|
4
|
+
/** One owner per generation; never disables the process-wide context carrier. */
|
|
5
|
+
export class SpanRuntime {
|
|
6
|
+
options;
|
|
7
|
+
limits;
|
|
8
|
+
active = new Set();
|
|
9
|
+
ids;
|
|
10
|
+
recording;
|
|
11
|
+
droppedSpans = 0;
|
|
12
|
+
observerFailures = 0;
|
|
13
|
+
closed = false;
|
|
14
|
+
constructor(options) {
|
|
15
|
+
this.options = options;
|
|
16
|
+
this.ids = options.ids;
|
|
17
|
+
this.limits = traceLimits(options.limits);
|
|
18
|
+
this.recording = options.recording !== false;
|
|
19
|
+
}
|
|
20
|
+
start(options, attributes) {
|
|
21
|
+
const span = new RelkitSpan(options, this, undefined, attributes);
|
|
22
|
+
if (span.recording) {
|
|
23
|
+
this.active.add(span);
|
|
24
|
+
this.notify("started", span);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
this.droppedSpans++;
|
|
28
|
+
}
|
|
29
|
+
return span;
|
|
30
|
+
}
|
|
31
|
+
startRoot(options, traceId, attributes) {
|
|
32
|
+
const span = new RelkitSpan(options, this, traceId, attributes);
|
|
33
|
+
if (span.recording) {
|
|
34
|
+
this.active.add(span);
|
|
35
|
+
this.notify("started", span);
|
|
36
|
+
}
|
|
37
|
+
else
|
|
38
|
+
this.droppedSpans++;
|
|
39
|
+
return span;
|
|
40
|
+
}
|
|
41
|
+
notify(type, span) {
|
|
42
|
+
if (!span.recording)
|
|
43
|
+
return;
|
|
44
|
+
try {
|
|
45
|
+
const result = this.options.observer?.({ type, span, revision: span.revision });
|
|
46
|
+
if (result !== undefined)
|
|
47
|
+
void Promise.resolve(result).catch(() => {
|
|
48
|
+
this.observerFailures++;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
this.observerFailures++;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
capture(value) {
|
|
56
|
+
try {
|
|
57
|
+
return this.options.capture?.(value);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
close(now = BigInt(Date.now()) * 1000000n) {
|
|
64
|
+
if (this.closed)
|
|
65
|
+
return;
|
|
66
|
+
this.closed = true;
|
|
67
|
+
for (const span of this.active) {
|
|
68
|
+
span.attribute("relkit.incomplete", true);
|
|
69
|
+
span.end(now, Exit.fail("generation-closed"));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=span-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"span-runtime.js","sourceRoot":"","sources":["../src/span-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { SpanLifecycle } from "./span-runtime.js";
|
|
2
|
+
export declare function spanSnapshot(event: SpanLifecycle): Readonly<{
|
|
3
|
+
dropped: {
|
|
4
|
+
attributes: number;
|
|
5
|
+
events: number;
|
|
6
|
+
links: number;
|
|
7
|
+
updates: number;
|
|
8
|
+
};
|
|
9
|
+
completedAt?: string;
|
|
10
|
+
durationMs?: number;
|
|
11
|
+
error?: {
|
|
12
|
+
message?: string;
|
|
13
|
+
type?: string;
|
|
14
|
+
};
|
|
15
|
+
links?: {
|
|
16
|
+
traceId: string;
|
|
17
|
+
spanId: string;
|
|
18
|
+
attributes: Readonly<Record<string, unknown>>;
|
|
19
|
+
}[];
|
|
20
|
+
events?: {
|
|
21
|
+
name: string;
|
|
22
|
+
timestamp: string;
|
|
23
|
+
attributes: Readonly<Record<string, string | number | boolean>>;
|
|
24
|
+
droppedAttributes: number;
|
|
25
|
+
}[];
|
|
26
|
+
outcome?: string;
|
|
27
|
+
attributes?: {
|
|
28
|
+
[k: string]: string | number | boolean;
|
|
29
|
+
};
|
|
30
|
+
source?: string;
|
|
31
|
+
correlationId?: string;
|
|
32
|
+
serviceId?: string;
|
|
33
|
+
functionId?: string;
|
|
34
|
+
invocationId?: string;
|
|
35
|
+
originRequestId?: string;
|
|
36
|
+
requestId?: string;
|
|
37
|
+
parentSpanId?: string;
|
|
38
|
+
version: 2;
|
|
39
|
+
signal: "span";
|
|
40
|
+
traceId: import("@relkit/contracts").TraceId;
|
|
41
|
+
spanId: import("@relkit/contracts").SpanId;
|
|
42
|
+
name: string;
|
|
43
|
+
kind: import("effect/Tracer").SpanKind;
|
|
44
|
+
status: "started" | "updated" | "completed";
|
|
45
|
+
revision: number;
|
|
46
|
+
startedAt: string;
|
|
47
|
+
}>;
|
|
48
|
+
//# sourceMappingURL=span-snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"span-snapshot.d.ts","sourceRoot":"","sources":["../src/span-snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EhD"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
export function spanSnapshot(event) {
|
|
2
|
+
const span = event.span;
|
|
3
|
+
const attributes = Object.fromEntries(span.attributes);
|
|
4
|
+
const text = (key) => typeof attributes[key] === "string" ? attributes[key] : undefined;
|
|
5
|
+
const outcome = text("relkit.outcome");
|
|
6
|
+
return Object.freeze({
|
|
7
|
+
version: 2,
|
|
8
|
+
signal: "span",
|
|
9
|
+
traceId: span.traceId,
|
|
10
|
+
spanId: span.spanId,
|
|
11
|
+
name: span.name,
|
|
12
|
+
kind: span.kind,
|
|
13
|
+
status: event.type,
|
|
14
|
+
revision: event.revision,
|
|
15
|
+
startedAt: new Date(Number(span.startTime / 1000000n)).toISOString(),
|
|
16
|
+
...(span.parent._tag === "Some" ? { parentSpanId: span.parent.value.spanId } : {}),
|
|
17
|
+
...(text("relkit.request.id") === undefined ? {} : { requestId: text("relkit.request.id") }),
|
|
18
|
+
...(text("relkit.origin_request.id") === undefined
|
|
19
|
+
? {}
|
|
20
|
+
: { originRequestId: text("relkit.origin_request.id") }),
|
|
21
|
+
...(text("relkit.invocation.id") === undefined
|
|
22
|
+
? {}
|
|
23
|
+
: { invocationId: text("relkit.invocation.id") }),
|
|
24
|
+
...(text("relkit.function.id") === undefined
|
|
25
|
+
? {}
|
|
26
|
+
: { functionId: text("relkit.function.id") }),
|
|
27
|
+
...(text("relkit.service.id") === undefined ? {} : { serviceId: text("relkit.service.id") }),
|
|
28
|
+
...(text("relkit.correlation.id") === undefined
|
|
29
|
+
? {}
|
|
30
|
+
: { correlationId: text("relkit.correlation.id") }),
|
|
31
|
+
...(text("relkit.invocation.source") === undefined
|
|
32
|
+
? {}
|
|
33
|
+
: { source: text("relkit.invocation.source") }),
|
|
34
|
+
...(Object.keys(attributes).length === 0 ? {} : { attributes }),
|
|
35
|
+
...(outcome === undefined ? {} : { outcome }),
|
|
36
|
+
...capture("input", span.captures.input),
|
|
37
|
+
...capture("output", span.captures.output),
|
|
38
|
+
...(span.events.length === 0
|
|
39
|
+
? {}
|
|
40
|
+
: {
|
|
41
|
+
events: span.events.map((item) => ({
|
|
42
|
+
name: item.name,
|
|
43
|
+
timestamp: new Date(Number(item.time / 1000000n)).toISOString(),
|
|
44
|
+
attributes: item.attributes,
|
|
45
|
+
droppedAttributes: item.droppedAttributes,
|
|
46
|
+
})),
|
|
47
|
+
}),
|
|
48
|
+
...(span.links.length === 0
|
|
49
|
+
? {}
|
|
50
|
+
: {
|
|
51
|
+
links: span.links.map((link) => ({
|
|
52
|
+
traceId: link.span.traceId,
|
|
53
|
+
spanId: link.span.spanId,
|
|
54
|
+
attributes: link.attributes,
|
|
55
|
+
})),
|
|
56
|
+
}),
|
|
57
|
+
...(text("error.type") === undefined && text("error.message") === undefined
|
|
58
|
+
? {}
|
|
59
|
+
: {
|
|
60
|
+
error: {
|
|
61
|
+
...(text("error.type") === undefined ? {} : { type: text("error.type") }),
|
|
62
|
+
...(text("error.message") === undefined ? {} : { message: text("error.message") }),
|
|
63
|
+
},
|
|
64
|
+
}),
|
|
65
|
+
...(span.status._tag === "Ended"
|
|
66
|
+
? {
|
|
67
|
+
completedAt: new Date(Number(span.status.endTime / 1000000n)).toISOString(),
|
|
68
|
+
durationMs: Number(span.status.endTime - span.startTime) / 1_000_000,
|
|
69
|
+
}
|
|
70
|
+
: {}),
|
|
71
|
+
dropped: {
|
|
72
|
+
attributes: span.droppedAttributes,
|
|
73
|
+
events: span.droppedEvents,
|
|
74
|
+
links: span.droppedLinks,
|
|
75
|
+
updates: span.droppedUpdates,
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
function capture(kind, value) {
|
|
80
|
+
if (value === undefined)
|
|
81
|
+
return {};
|
|
82
|
+
return { [`${kind}Capture`]: value };
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=span-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"span-snapshot.js","sourceRoot":"","sources":["../src/span-snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standalone-dispatcher.d.ts","sourceRoot":"","sources":["../src/standalone-dispatcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"standalone-dispatcher.d.ts","sourceRoot":"","sources":["../src/standalone-dispatcher.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAEV,oBAAoB,EAEpB,2BAA2B,EAC5B,MAAM,uBAAuB,CAAC;AAS/B,wBAAgB,0BAA0B,CACxC,WAAW,GAAE,2BAAgC,GAC5C,oBAAoB,CAatB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { assertSource, assertInvocationMode, callHook, defaultIdSource, defaultRunner, validateDeclaredError, validated, } from "./validation.js";
|
|
2
|
+
import { createTraceId, isTraceId } from "@relkit/contracts";
|
|
2
3
|
import { InvocationValidationError } from "./contracts.js";
|
|
3
4
|
import { linkSignals } from "./context.js";
|
|
4
5
|
import { normalizeFailure, toPublicEnvelope } from "./failure.js";
|
|
@@ -25,7 +26,8 @@ async function invokeStandalone(request, options, dispatcher) {
|
|
|
25
26
|
const now = options.now?.() ?? options.time?.now().getTime() ?? Date.now();
|
|
26
27
|
const deadlineMs = calculateStandaloneDeadline(request.target.timeoutMs, options, parent, now);
|
|
27
28
|
const idSource = options.idSource ?? defaultIdSource;
|
|
28
|
-
const
|
|
29
|
+
const candidateTraceId = options.traceId ?? parent?.traceId ?? idSource.next("trace");
|
|
30
|
+
const traceId = isTraceId(candidateTraceId) ? candidateTraceId : createTraceId();
|
|
29
31
|
const recordOptions = parent === undefined || parent === options.parent ? options : { ...options, parent };
|
|
30
32
|
const identity = resolveDescriptorIdentity(request.target);
|
|
31
33
|
const record = createStandaloneRecord(identity.id, source, recordOptions, traceId, deadlineMs, now, idSource, undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standalone-dispatcher.js","sourceRoot":"","sources":["../src/standalone-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,QAAQ,EACR,eAAe,EACf,aAAa,EACb,qBAAqB,EACrB,SAAS,GACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAA0B,MAAM,cAAc,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAA4B,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAO1D,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE,MAAM,UAAU,0BAA0B,CACxC,cAA2C,EAAE;IAE7C,IAAI,UAAiC,CAAC;IACtC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,QAAQ,EAAE,CACR,OAA0D,EAC1D,EAAE,CACF,gBAAgB,CACd,OAAO,EACP,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,OAAO,EAAwC,EAC5E,UAAU,CACX;KACJ,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,OAA0D,EAC1D,OAA2C,EAC3C,UAAgC;IAEhC,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;IACxC,MAAM,gBAAgB,GAAG,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,gBAAgB,EAAE,MAAM,CAAC;IAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC;IAC1C,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,oBAAoB,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3E,MAAM,UAAU,GAAG,2BAA2B,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/F,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAC;IACrD,MAAM,
|
|
1
|
+
{"version":3,"file":"standalone-dispatcher.js","sourceRoot":"","sources":["../src/standalone-dispatcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface TraceLimits {
|
|
2
|
+
readonly spansPerTrace: number;
|
|
3
|
+
readonly attributes: number;
|
|
4
|
+
readonly events: number;
|
|
5
|
+
readonly links: number;
|
|
6
|
+
readonly updates: number;
|
|
7
|
+
readonly attributeBytes: number;
|
|
8
|
+
readonly activeSpans: number;
|
|
9
|
+
readonly nameBytes: number;
|
|
10
|
+
readonly keyBytes: number;
|
|
11
|
+
}
|
|
12
|
+
export declare const DEFAULT_TRACE_LIMITS: TraceLimits;
|
|
13
|
+
export declare function traceLimits(options?: Partial<TraceLimits>): TraceLimits;
|
|
14
|
+
export declare function boundedTraceText(value: string, bytes: number): string;
|
|
15
|
+
export declare function safeTraceAttribute(value: unknown, bytes: number): string | number | boolean | undefined;
|
|
16
|
+
/** Reserved identities belong to runtime boundaries, not authored metadata. */
|
|
17
|
+
export declare function isReservedTraceKey(key: string): boolean;
|
|
18
|
+
//# sourceMappingURL=trace-limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-limits.d.ts","sourceRoot":"","sources":["../src/trace-limits.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,oBAAoB,EAAE,WAUjC,CAAC;AAEH,wBAAgB,WAAW,CAAC,OAAO,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,WAAW,CAO3E;AAGD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMrE;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAKvC;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOvD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export const DEFAULT_TRACE_LIMITS = Object.freeze({
|
|
2
|
+
spansPerTrace: 512,
|
|
3
|
+
attributes: 64,
|
|
4
|
+
events: 32,
|
|
5
|
+
links: 64,
|
|
6
|
+
updates: 64,
|
|
7
|
+
attributeBytes: 1024,
|
|
8
|
+
activeSpans: 4096,
|
|
9
|
+
nameBytes: 256,
|
|
10
|
+
keyBytes: 128,
|
|
11
|
+
});
|
|
12
|
+
export function traceLimits(options = {}) {
|
|
13
|
+
const limits = { ...DEFAULT_TRACE_LIMITS, ...options };
|
|
14
|
+
for (const [key, value] of Object.entries(limits)) {
|
|
15
|
+
if (!Number.isSafeInteger(value) || value < 1)
|
|
16
|
+
throw new TypeError(`Invalid trace limit: ${key}`);
|
|
17
|
+
}
|
|
18
|
+
return Object.freeze(limits);
|
|
19
|
+
}
|
|
20
|
+
const encoder = new TextEncoder();
|
|
21
|
+
export function boundedTraceText(value, bytes) {
|
|
22
|
+
const encoded = encoder.encode(value);
|
|
23
|
+
if (encoded.length <= bytes)
|
|
24
|
+
return value;
|
|
25
|
+
let end = bytes;
|
|
26
|
+
while (end > 0 && (encoded[end] & 0xc0) === 0x80)
|
|
27
|
+
end--;
|
|
28
|
+
return new TextDecoder().decode(encoded.subarray(0, end));
|
|
29
|
+
}
|
|
30
|
+
export function safeTraceAttribute(value, bytes) {
|
|
31
|
+
if (typeof value === "string")
|
|
32
|
+
return boundedTraceText(value, bytes);
|
|
33
|
+
if (typeof value === "boolean" || (typeof value === "number" && Number.isFinite(value)))
|
|
34
|
+
return value;
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
/** Reserved identities belong to runtime boundaries, not authored metadata. */
|
|
38
|
+
export function isReservedTraceKey(key) {
|
|
39
|
+
return (key.startsWith("relkit.") ||
|
|
40
|
+
/^(?:traceId|spanId|parentSpanId|requestId|originRequestId|invocationId|correlationId)$/.test(key));
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=trace-limits.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-limits.js","sourceRoot":"","sources":["../src/trace-limits.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,oBAAoB,GAAgB,MAAM,CAAC,MAAM,CAAC;IAC7D,aAAa,EAAE,GAAG;IAClB,UAAU,EAAE,EAAE;IACd,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,EAAE;IACX,cAAc,EAAE,IAAI;IACpB,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,GAAG;IACd,QAAQ,EAAE,GAAG;CACd,CAAC,CAAC;AAEH,MAAM,UAAU,WAAW,CAAC,UAAgC,EAAE;IAC5D,MAAM,MAAM,GAAG,EAAE,GAAG,oBAAoB,EAAE,GAAG,OAAO,EAAE,CAAC;IACvD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;YAC3C,MAAM,IAAI,SAAS,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAClC,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,KAAa;IAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,OAAO,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAE,GAAG,IAAI,CAAC,KAAK,IAAI;QAAE,GAAG,EAAE,CAAC;IACzD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAc,EACd,KAAa;IAEb,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACrE,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrF,OAAO,KAAK,CAAC;IACf,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,OAAO,CACL,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;QACzB,wFAAwF,CAAC,IAAI,CAC3F,GAAG,CACJ,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-propagation.d.ts","sourceRoot":"","sources":["../src/trace-propagation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG/E,wBAAgB,uBAAuB,IAAI,gBAAgB,GAAG,SAAS,CAgBtE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { isSpanId, isTraceId } from "@relkit/contracts";
|
|
2
|
+
import { currentExecutionContext } from "./dispatcher-scope.js";
|
|
3
|
+
export function currentTracePropagation() {
|
|
4
|
+
const context = currentExecutionContext();
|
|
5
|
+
if (!context || !isTraceId(context.span.traceId) || !isSpanId(context.span.spanId))
|
|
6
|
+
return undefined;
|
|
7
|
+
return Object.freeze({
|
|
8
|
+
version: 2,
|
|
9
|
+
producer: Object.freeze({
|
|
10
|
+
traceId: context.span.traceId,
|
|
11
|
+
spanId: context.span.spanId,
|
|
12
|
+
traceFlags: context.span.sampled ? 1 : 0,
|
|
13
|
+
}),
|
|
14
|
+
...(context.requestId === undefined ? {} : { requestId: context.requestId }),
|
|
15
|
+
...(context.originRequestId === undefined ? {} : { originRequestId: context.originRequestId }),
|
|
16
|
+
...(context.correlationId === undefined ? {} : { correlationId: context.correlationId }),
|
|
17
|
+
...(context.invocationId === undefined ? {} : { invocationId: context.invocationId }),
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=trace-propagation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-propagation.js","sourceRoot":"","sources":["../src/trace-propagation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAyB,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,uBAAuB;IACrC,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;IAC1C,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QAChF,OAAO,SAAS,CAAC;IACnB,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;YACtB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;YAC7B,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;YAC3B,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACzC,CAAC;QACF,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;QAC5E,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC;QAC9F,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC;QACxF,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;KACtF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type TraceId, type SpanId } from "@relkit/contracts";
|
|
2
|
+
import { Context, Exit, Option, Tracer } from "effect";
|
|
3
|
+
import type { SpanCapture, SpanRuntime } from "./span-runtime.js";
|
|
4
|
+
export interface TraceEvent {
|
|
5
|
+
name: string;
|
|
6
|
+
readonly time: bigint;
|
|
7
|
+
readonly attributes: Readonly<Record<string, string | number | boolean>>;
|
|
8
|
+
readonly droppedAttributes: number;
|
|
9
|
+
}
|
|
10
|
+
export declare class RelkitSpan implements Tracer.Span {
|
|
11
|
+
readonly runtime: SpanRuntime;
|
|
12
|
+
readonly _tag: "Span";
|
|
13
|
+
readonly spanId: SpanId;
|
|
14
|
+
readonly traceId: TraceId;
|
|
15
|
+
readonly sampled: boolean;
|
|
16
|
+
name: string;
|
|
17
|
+
readonly parent: Option.Option<Tracer.AnySpan>;
|
|
18
|
+
readonly annotations: Context.Context<never>;
|
|
19
|
+
readonly links: Array<Tracer.SpanLink>;
|
|
20
|
+
readonly events: TraceEvent[];
|
|
21
|
+
readonly startTime: bigint;
|
|
22
|
+
readonly kind: Tracer.SpanKind;
|
|
23
|
+
readonly recording: boolean;
|
|
24
|
+
readonly traceState?: string;
|
|
25
|
+
readonly budget: {
|
|
26
|
+
spans: number;
|
|
27
|
+
dropped: number;
|
|
28
|
+
};
|
|
29
|
+
status: Tracer.SpanStatus;
|
|
30
|
+
attributes: Map<string, string | number | boolean>;
|
|
31
|
+
revision: number;
|
|
32
|
+
droppedAttributes: number;
|
|
33
|
+
droppedEvents: number;
|
|
34
|
+
droppedLinks: number;
|
|
35
|
+
droppedUpdates: number;
|
|
36
|
+
captures: Partial<Record<"input" | "output", SpanCapture>>;
|
|
37
|
+
private updates;
|
|
38
|
+
constructor(options: Parameters<Tracer.Tracer["span"]>[0], runtime: SpanRuntime, rootTraceId?: string, initialAttributes?: Readonly<Record<string, unknown>>);
|
|
39
|
+
end(endTime: bigint, exit: Exit.Exit<unknown, unknown>): void;
|
|
40
|
+
attribute(key: string, value: unknown): void;
|
|
41
|
+
rename(name: string): void;
|
|
42
|
+
event(name: string, time: bigint, attributes?: Record<string, unknown>): void;
|
|
43
|
+
capture(kind: "input" | "output", value: unknown): void;
|
|
44
|
+
addLinks(links: ReadonlyArray<Tracer.SpanLink>, notify?: boolean): void;
|
|
45
|
+
private writable;
|
|
46
|
+
private setAttribute;
|
|
47
|
+
private metadata;
|
|
48
|
+
private update;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=tracing-span.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracing-span.d.ts","sourceRoot":"","sources":["../src/tracing-span.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { createSpanId, createTraceId, isSpanId, isTraceId, } from "@relkit/contracts";
|
|
2
|
+
import { Context, Exit, Option, Tracer } from "effect";
|
|
3
|
+
import { boundedTraceText, safeTraceAttribute } from "./trace-limits.js";
|
|
4
|
+
export class RelkitSpan {
|
|
5
|
+
runtime;
|
|
6
|
+
_tag = "Span";
|
|
7
|
+
spanId;
|
|
8
|
+
traceId;
|
|
9
|
+
sampled;
|
|
10
|
+
name;
|
|
11
|
+
parent;
|
|
12
|
+
annotations;
|
|
13
|
+
links = [];
|
|
14
|
+
events = [];
|
|
15
|
+
startTime;
|
|
16
|
+
kind;
|
|
17
|
+
recording;
|
|
18
|
+
traceState;
|
|
19
|
+
budget;
|
|
20
|
+
status;
|
|
21
|
+
attributes = new Map();
|
|
22
|
+
revision = 0;
|
|
23
|
+
droppedAttributes = 0;
|
|
24
|
+
droppedEvents = 0;
|
|
25
|
+
droppedLinks = 0;
|
|
26
|
+
droppedUpdates = 0;
|
|
27
|
+
captures = {};
|
|
28
|
+
updates = 0;
|
|
29
|
+
constructor(options, runtime, rootTraceId, initialAttributes = {}) {
|
|
30
|
+
this.runtime = runtime;
|
|
31
|
+
const parent = Option.getOrUndefined(options.parent);
|
|
32
|
+
this.name = boundedTraceText(options.name, runtime.limits.nameBytes);
|
|
33
|
+
this.parent = options.parent;
|
|
34
|
+
const traceId = parent?.traceId ?? rootTraceId ?? runtime.ids.next("trace");
|
|
35
|
+
const spanId = runtime.ids.next("span");
|
|
36
|
+
this.traceId = isTraceId(traceId) ? traceId : createTraceId();
|
|
37
|
+
this.spanId = isSpanId(spanId) ? spanId : createSpanId();
|
|
38
|
+
this.sampled = options.sampled;
|
|
39
|
+
this.annotations = options.annotations;
|
|
40
|
+
this.startTime = options.startTime;
|
|
41
|
+
this.kind = options.kind;
|
|
42
|
+
this.status = { _tag: "Started", startTime: options.startTime };
|
|
43
|
+
this.budget = parent instanceof RelkitSpan ? parent.budget : { spans: 0, dropped: 0 };
|
|
44
|
+
if (parent instanceof RelkitSpan && parent.traceState !== undefined)
|
|
45
|
+
this.traceState = parent.traceState;
|
|
46
|
+
this.recording =
|
|
47
|
+
runtime.recording &&
|
|
48
|
+
!runtime.closed &&
|
|
49
|
+
runtime.active.size < runtime.limits.activeSpans &&
|
|
50
|
+
this.budget.spans < runtime.limits.spansPerTrace;
|
|
51
|
+
if (this.recording)
|
|
52
|
+
this.budget.spans++;
|
|
53
|
+
else
|
|
54
|
+
this.budget.dropped++;
|
|
55
|
+
for (const [key, value] of Object.entries(initialAttributes))
|
|
56
|
+
this.setAttribute(key, value);
|
|
57
|
+
this.addLinks(options.links, false);
|
|
58
|
+
}
|
|
59
|
+
end(endTime, exit) {
|
|
60
|
+
if (this.status._tag === "Ended")
|
|
61
|
+
return;
|
|
62
|
+
this.status = { _tag: "Ended", startTime: this.startTime, endTime, exit };
|
|
63
|
+
this.revision++;
|
|
64
|
+
this.runtime.active.delete(this);
|
|
65
|
+
this.runtime.notify("completed", this);
|
|
66
|
+
}
|
|
67
|
+
attribute(key, value) {
|
|
68
|
+
if (!this.writable())
|
|
69
|
+
return;
|
|
70
|
+
this.setAttribute(key, value);
|
|
71
|
+
this.update();
|
|
72
|
+
}
|
|
73
|
+
rename(name) {
|
|
74
|
+
if (!this.writable())
|
|
75
|
+
return;
|
|
76
|
+
this.name = boundedTraceText(name, this.runtime.limits.nameBytes);
|
|
77
|
+
this.update();
|
|
78
|
+
}
|
|
79
|
+
event(name, time, attributes = {}) {
|
|
80
|
+
if (!this.writable())
|
|
81
|
+
return;
|
|
82
|
+
if (this.events.length >= this.runtime.limits.events)
|
|
83
|
+
this.droppedEvents++;
|
|
84
|
+
else {
|
|
85
|
+
const metadata = this.metadata(attributes);
|
|
86
|
+
this.events.push(Object.freeze({
|
|
87
|
+
name: boundedTraceText(name, this.runtime.limits.nameBytes),
|
|
88
|
+
time,
|
|
89
|
+
attributes: metadata.attributes,
|
|
90
|
+
droppedAttributes: metadata.dropped,
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
this.update();
|
|
94
|
+
}
|
|
95
|
+
capture(kind, value) {
|
|
96
|
+
if (!this.writable())
|
|
97
|
+
return;
|
|
98
|
+
const captured = this.runtime.capture(value);
|
|
99
|
+
if (captured === undefined)
|
|
100
|
+
return;
|
|
101
|
+
this.captures[kind] = captured;
|
|
102
|
+
this.update();
|
|
103
|
+
}
|
|
104
|
+
addLinks(links, notify = true) {
|
|
105
|
+
if (!this.writable())
|
|
106
|
+
return;
|
|
107
|
+
for (const link of links) {
|
|
108
|
+
if (this.links.length >= this.runtime.limits.links ||
|
|
109
|
+
!isTraceId(link.span.traceId) ||
|
|
110
|
+
!isSpanId(link.span.spanId)) {
|
|
111
|
+
this.droppedLinks++;
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
const metadata = this.metadata(link.attributes);
|
|
115
|
+
this.links.push(Object.freeze({
|
|
116
|
+
span: Tracer.externalSpan({
|
|
117
|
+
traceId: link.span.traceId,
|
|
118
|
+
spanId: link.span.spanId,
|
|
119
|
+
sampled: link.span.sampled,
|
|
120
|
+
}),
|
|
121
|
+
attributes: metadata.attributes,
|
|
122
|
+
}));
|
|
123
|
+
this.droppedAttributes += metadata.dropped;
|
|
124
|
+
}
|
|
125
|
+
if (notify && links.length > 0)
|
|
126
|
+
this.update();
|
|
127
|
+
}
|
|
128
|
+
writable() {
|
|
129
|
+
return this.recording && this.status._tag !== "Ended";
|
|
130
|
+
}
|
|
131
|
+
setAttribute(key, value) {
|
|
132
|
+
const limits = this.runtime.limits;
|
|
133
|
+
const scalar = safeTraceAttribute(value, limits.attributeBytes);
|
|
134
|
+
if (!key ||
|
|
135
|
+
boundedTraceText(key, limits.keyBytes) !== key ||
|
|
136
|
+
scalar === undefined ||
|
|
137
|
+
(!this.attributes.has(key) && this.attributes.size >= limits.attributes)) {
|
|
138
|
+
this.droppedAttributes++;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
this.attributes.set(key, scalar);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
metadata(input) {
|
|
145
|
+
const attributes = Object.create(null);
|
|
146
|
+
let dropped = 0;
|
|
147
|
+
let count = 0;
|
|
148
|
+
for (const key of Object.keys(input)) {
|
|
149
|
+
const descriptor = Object.getOwnPropertyDescriptor(input, key);
|
|
150
|
+
const value = descriptor && "value" in descriptor
|
|
151
|
+
? safeTraceAttribute(descriptor.value, this.runtime.limits.attributeBytes)
|
|
152
|
+
: undefined;
|
|
153
|
+
if (!key ||
|
|
154
|
+
boundedTraceText(key, this.runtime.limits.keyBytes) !== key ||
|
|
155
|
+
value === undefined ||
|
|
156
|
+
count >= this.runtime.limits.attributes) {
|
|
157
|
+
dropped++;
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
attributes[key] = value;
|
|
161
|
+
count++;
|
|
162
|
+
}
|
|
163
|
+
return { attributes: Object.freeze(attributes), dropped };
|
|
164
|
+
}
|
|
165
|
+
update() {
|
|
166
|
+
this.revision++;
|
|
167
|
+
if (this.updates >= this.runtime.limits.updates) {
|
|
168
|
+
this.droppedUpdates++;
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
this.updates++;
|
|
172
|
+
this.runtime.notify("updated", this);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=tracing-span.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tracing-span.js","sourceRoot":"","sources":["../src/tracing-span.ts"],"names":[],"mappings":"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"}
|
package/dist/validation.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAiC,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,KAAK,EACV,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAG3D,wBAAsB,SAAS,CAC7B,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,OAAO,GAAG,QAAQ,GACxB,OAAO,CAAC,OAAO,CAAC,CASlB;AAED,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,GAAG,SAAS,EACzC,KAAK,EAAE,CAAC,GACP,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAM7E;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,gBAAgB,CAAC,EACvD,MAAM,EAAE,gBAAgB,GACvB,IAAI,CAQN;AAED,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,SAAS,yBAAyB,EAAE,GAAG,SAAS,EAC7D,KAAK,EAAE,yBAAyB,GAAG,iBAAiB,GACnD,OAAO,CAAC,yBAAyB,GAAG,iBAAiB,CAAC,CAexD;AAED,eAAO,MAAM,eAAe,EAAE,kBAO7B,CAAC;AAEF,eAAO,MAAM,aAAa;UAClB,CAAC,EAAE,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,YAAY;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE;CAE5F,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,gBAM1B,CAAC"}
|