@uselemma/tracing 2.5.0 → 2.6.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 +3 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/run-batch-span-processor.d.ts +2 -0
- package/dist/run-batch-span-processor.d.ts.map +1 -1
- package/dist/run-batch-span-processor.js +13 -1
- package/dist/run-batch-span-processor.js.map +1 -1
- package/dist/trace-wrapper.d.ts +19 -23
- package/dist/trace-wrapper.d.ts.map +1 -1
- package/dist/trace-wrapper.js +13 -30
- package/dist/trace-wrapper.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -41,12 +41,12 @@ import { wrapAgent } from "@uselemma/tracing";
|
|
|
41
41
|
|
|
42
42
|
const wrappedFn = wrapAgent(
|
|
43
43
|
"my-agent",
|
|
44
|
-
|
|
45
|
-
async ({ recordGenerationResults }) => {
|
|
44
|
+
async ({ complete }) => {
|
|
46
45
|
const result = await doWork(userMessage);
|
|
47
|
-
|
|
46
|
+
complete(result);
|
|
48
47
|
return result;
|
|
49
48
|
},
|
|
49
|
+
{ autoEndRoot: true },
|
|
50
50
|
);
|
|
51
51
|
|
|
52
52
|
const { result, runId } = await wrappedFn();
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { registerOTel, createLemmaSpanProcessor, type LemmaOTelOptions, type RegisterOTelOptions, type CreateLemmaSpanProcessorOptions, } from "./register";
|
|
2
2
|
export { enableExperimentMode, disableExperimentMode, isExperimentModeEnabled, } from "./experiment-mode";
|
|
3
|
-
export { wrapAgent, type TraceContext } from "./trace-wrapper";
|
|
3
|
+
export { wrapAgent, type TraceContext, type WrapAgentOptions } from "./trace-wrapper";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,+BAA+B,GACrC,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,wBAAwB,EACxB,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,+BAA+B,GACrC,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAMoB;AALlB,wGAAA,YAAY,OAAA;AACZ,oHAAA,wBAAwB,OAAA;AAK1B,qDAI2B;AAHzB,uHAAA,oBAAoB,OAAA;AACpB,wHAAA,qBAAqB,OAAA;AACrB,0HAAA,uBAAuB,OAAA;AAEzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAMoB;AALlB,wGAAA,YAAY,OAAA;AACZ,oHAAA,wBAAwB,OAAA;AAK1B,qDAI2B;AAHzB,uHAAA,oBAAoB,OAAA;AACpB,wHAAA,qBAAqB,OAAA;AACrB,0HAAA,uBAAuB,OAAA;AAEzB,iDAAsF;AAA7E,0GAAA,SAAS,OAAA"}
|
|
@@ -5,6 +5,7 @@ export declare class RunBatchSpanProcessor implements SpanProcessor {
|
|
|
5
5
|
private spanIdToRunId;
|
|
6
6
|
private topLevelSpanByRunId;
|
|
7
7
|
private topLevelSpanIdByRunId;
|
|
8
|
+
private autoEndEnabledRuns;
|
|
8
9
|
private directChildCountByRunId;
|
|
9
10
|
private directChildSpanIdToRunId;
|
|
10
11
|
private batches;
|
|
@@ -17,6 +18,7 @@ export declare class RunBatchSpanProcessor implements SpanProcessor {
|
|
|
17
18
|
shutdown(): Promise<void>;
|
|
18
19
|
private isTopLevelRun;
|
|
19
20
|
private getRunIdFromSpan;
|
|
21
|
+
private isAutoEndEnabled;
|
|
20
22
|
private getInstrumentationScopeName;
|
|
21
23
|
private shouldSkipExport;
|
|
22
24
|
private exportRunBatch;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-batch-span-processor.d.ts","sourceRoot":"","sources":["../src/run-batch-span-processor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,+BAA+B,CAAC;AAKvC,qBAAa,qBAAsB,YAAW,aAAa;IACzD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,qBAAqB,CAA4B;IACzD,OAAO,CAAC,uBAAuB,CAA4B;IAC3D,OAAO,CAAC,wBAAwB,CAA4B;IAC5D,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;gBAE5B,QAAQ,EAAE,YAAY;IAIlC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"run-batch-span-processor.d.ts","sourceRoot":"","sources":["../src/run-batch-span-processor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,IAAI,EACT,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,+BAA+B,CAAC;AAKvC,qBAAa,qBAAsB,YAAW,aAAa;IACzD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,mBAAmB,CAA0B;IACrD,OAAO,CAAC,qBAAqB,CAA4B;IACzD,OAAO,CAAC,kBAAkB,CAAoB;IAC9C,OAAO,CAAC,uBAAuB,CAA4B;IAC3D,OAAO,CAAC,wBAAwB,CAA4B;IAC5D,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;gBAE5B,QAAQ,EAAE,YAAY;IAIlC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,GAAG,IAAI;IA+BlD,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAiDzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ3B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ/B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,2BAA2B;IAQnC,OAAO,CAAC,gBAAgB;YAIV,cAAc;IAkB5B,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,eAAe;CAgBxB"}
|
|
@@ -7,6 +7,7 @@ class RunBatchSpanProcessor {
|
|
|
7
7
|
spanIdToRunId = new Map();
|
|
8
8
|
topLevelSpanByRunId = new Map();
|
|
9
9
|
topLevelSpanIdByRunId = new Map();
|
|
10
|
+
autoEndEnabledRuns = new Set();
|
|
10
11
|
directChildCountByRunId = new Map();
|
|
11
12
|
directChildSpanIdToRunId = new Map();
|
|
12
13
|
batches = new Map();
|
|
@@ -23,6 +24,9 @@ class RunBatchSpanProcessor {
|
|
|
23
24
|
this.spanIdToRunId.set(spanId, runId);
|
|
24
25
|
this.topLevelSpanByRunId.set(runId, span);
|
|
25
26
|
this.topLevelSpanIdByRunId.set(runId, spanId);
|
|
27
|
+
if (this.isAutoEndEnabled(span)) {
|
|
28
|
+
this.autoEndEnabledRuns.add(runId);
|
|
29
|
+
}
|
|
26
30
|
this.directChildCountByRunId.set(runId, 0);
|
|
27
31
|
return;
|
|
28
32
|
}
|
|
@@ -56,7 +60,9 @@ class RunBatchSpanProcessor {
|
|
|
56
60
|
const currentCount = this.directChildCountByRunId.get(directChildRunId) ?? 0;
|
|
57
61
|
const nextCount = Math.max(0, currentCount - 1);
|
|
58
62
|
this.directChildCountByRunId.set(directChildRunId, nextCount);
|
|
59
|
-
if (nextCount === 0 &&
|
|
63
|
+
if (nextCount === 0 &&
|
|
64
|
+
!this.endedRuns.has(directChildRunId) &&
|
|
65
|
+
this.autoEndEnabledRuns.has(directChildRunId)) {
|
|
60
66
|
topLevelSpanToAutoEnd = this.topLevelSpanByRunId.get(directChildRunId);
|
|
61
67
|
if (topLevelSpanToAutoEnd) {
|
|
62
68
|
this.topLevelSpanByRunId.delete(directChildRunId);
|
|
@@ -102,6 +108,11 @@ class RunBatchSpanProcessor {
|
|
|
102
108
|
const runId = attributes?.["lemma.run_id"];
|
|
103
109
|
return typeof runId === "string" && runId.length > 0 ? runId : undefined;
|
|
104
110
|
}
|
|
111
|
+
isAutoEndEnabled(span) {
|
|
112
|
+
const attributes = span
|
|
113
|
+
.attributes;
|
|
114
|
+
return attributes?.["lemma.auto_end_root"] === true;
|
|
115
|
+
}
|
|
105
116
|
getInstrumentationScopeName(span) {
|
|
106
117
|
return span.instrumentationScope?.name;
|
|
107
118
|
}
|
|
@@ -138,6 +149,7 @@ class RunBatchSpanProcessor {
|
|
|
138
149
|
}
|
|
139
150
|
this.topLevelSpanIdByRunId.delete(runId);
|
|
140
151
|
this.topLevelSpanByRunId.delete(runId);
|
|
152
|
+
this.autoEndEnabledRuns.delete(runId);
|
|
141
153
|
this.directChildCountByRunId.delete(runId);
|
|
142
154
|
}
|
|
143
155
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-batch-span-processor.js","sourceRoot":"","sources":["../src/run-batch-span-processor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"run-batch-span-processor.js","sourceRoot":"","sources":["../src/run-batch-span-processor.ts"],"names":[],"mappings":"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"}
|
package/dist/trace-wrapper.d.ts
CHANGED
|
@@ -4,12 +4,22 @@ export type TraceContext = {
|
|
|
4
4
|
span: Span;
|
|
5
5
|
/** Unique identifier for this agent run. */
|
|
6
6
|
runId: string;
|
|
7
|
-
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Record output and complete the run when `autoEndRoot` is disabled.
|
|
9
|
+
* Returns `true` when this call ends the top-level span.
|
|
10
|
+
*/
|
|
11
|
+
complete: (result: unknown) => boolean;
|
|
12
|
+
/** Record an error on the span. Marks the span as errored. */
|
|
13
|
+
recordError: (error: unknown) => void;
|
|
14
|
+
};
|
|
15
|
+
export type WrapAgentOptions = {
|
|
16
|
+
/** Mark this run as an experiment in Lemma. */
|
|
17
|
+
isExperiment?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* If `true`, the run processor will automatically end the top-level span
|
|
20
|
+
* when all direct child spans have ended.
|
|
21
|
+
*/
|
|
22
|
+
autoEndRoot?: boolean;
|
|
13
23
|
};
|
|
14
24
|
/**
|
|
15
25
|
* Wraps an agent function with OpenTelemetry tracing, automatically creating
|
|
@@ -24,34 +34,20 @@ export type TraceContext = {
|
|
|
24
34
|
* const myAgent = wrapAgent<{ topic: string }>(
|
|
25
35
|
* 'my-agent',
|
|
26
36
|
* async (ctx, input) => {
|
|
27
|
-
* // use ctx.span, ctx.runId, ctx.onComplete, etc.
|
|
28
37
|
* const result = await doWork(input.topic);
|
|
29
|
-
* ctx.
|
|
38
|
+
* ctx.complete(result);
|
|
30
39
|
* },
|
|
31
40
|
* );
|
|
32
41
|
* await myAgent({ topic: 'math' });
|
|
33
42
|
*
|
|
34
|
-
* @example
|
|
35
|
-
* // Keep the span open after the function exits
|
|
36
|
-
* const longRunning = wrapAgent(
|
|
37
|
-
* 'streaming-agent',
|
|
38
|
-
* async (ctx, input) => {
|
|
39
|
-
* // caller is responsible for calling ctx.onComplete / ctx.onError
|
|
40
|
-
* },
|
|
41
|
-
* { endOnExit: false },
|
|
42
|
-
* );
|
|
43
|
-
*
|
|
44
43
|
* @param agentName - Human-readable agent name recorded as `ai.agent.name`.
|
|
45
44
|
* @param fn - The agent function to wrap. Receives a {@link TraceContext} as its first argument and the call-time input as its second.
|
|
46
45
|
* @param options - Configuration for the agent trace.
|
|
47
46
|
* @param options.isExperiment - Mark this run as an experiment in Lemma.
|
|
48
|
-
* @param options.
|
|
47
|
+
* @param options.autoEndRoot - Enable processor-driven automatic ending of the top-level span after direct children have ended.
|
|
49
48
|
* @returns An async function that accepts an `input`, executes `fn` inside a traced context, and returns `{ result, runId, span }`.
|
|
50
49
|
*/
|
|
51
|
-
export declare function wrapAgent<Input = unknown>(agentName: string, fn: (traceContext: TraceContext, input: Input) => any, options?: {
|
|
52
|
-
isExperiment?: boolean;
|
|
53
|
-
endOnExit?: boolean;
|
|
54
|
-
}): (this: any, input: Input) => Promise<{
|
|
50
|
+
export declare function wrapAgent<Input = unknown>(agentName: string, fn: (traceContext: TraceContext, input: Input) => any, options?: WrapAgentOptions): (this: any, input: Input) => Promise<{
|
|
55
51
|
result: any;
|
|
56
52
|
runId: string;
|
|
57
53
|
span: Span;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-wrapper.d.ts","sourceRoot":"","sources":["../src/trace-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAIxE,MAAM,MAAM,YAAY,GAAG;IACzB,wDAAwD;IACxD,IAAI,EAAE,IAAI,CAAC;IACX,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd
|
|
1
|
+
{"version":3,"file":"trace-wrapper.d.ts","sourceRoot":"","sources":["../src/trace-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAIxE,MAAM,MAAM,YAAY,GAAG;IACzB,wDAAwD;IACxD,IAAI,EAAE,IAAI,CAAC;IACX,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IACvC,8DAA8D;IAC9D,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,+CAA+C;IAC/C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,SAAS,CAAC,KAAK,GAAG,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,KAAK,GAAG,EAAE,OAAO,CAAC,EAAE,gBAAgB,UAC/F,GAAG,SAAS,KAAK;;;;GAkDhE"}
|
package/dist/trace-wrapper.js
CHANGED
|
@@ -17,28 +17,17 @@ const experiment_mode_1 = require("./experiment-mode");
|
|
|
17
17
|
* const myAgent = wrapAgent<{ topic: string }>(
|
|
18
18
|
* 'my-agent',
|
|
19
19
|
* async (ctx, input) => {
|
|
20
|
-
* // use ctx.span, ctx.runId, ctx.onComplete, etc.
|
|
21
20
|
* const result = await doWork(input.topic);
|
|
22
|
-
* ctx.
|
|
21
|
+
* ctx.complete(result);
|
|
23
22
|
* },
|
|
24
23
|
* );
|
|
25
24
|
* await myAgent({ topic: 'math' });
|
|
26
25
|
*
|
|
27
|
-
* @example
|
|
28
|
-
* // Keep the span open after the function exits
|
|
29
|
-
* const longRunning = wrapAgent(
|
|
30
|
-
* 'streaming-agent',
|
|
31
|
-
* async (ctx, input) => {
|
|
32
|
-
* // caller is responsible for calling ctx.onComplete / ctx.onError
|
|
33
|
-
* },
|
|
34
|
-
* { endOnExit: false },
|
|
35
|
-
* );
|
|
36
|
-
*
|
|
37
26
|
* @param agentName - Human-readable agent name recorded as `ai.agent.name`.
|
|
38
27
|
* @param fn - The agent function to wrap. Receives a {@link TraceContext} as its first argument and the call-time input as its second.
|
|
39
28
|
* @param options - Configuration for the agent trace.
|
|
40
29
|
* @param options.isExperiment - Mark this run as an experiment in Lemma.
|
|
41
|
-
* @param options.
|
|
30
|
+
* @param options.autoEndRoot - Enable processor-driven automatic ending of the top-level span after direct children have ended.
|
|
42
31
|
* @returns An async function that accepts an `input`, executes `fn` inside a traced context, and returns `{ result, runId, span }`.
|
|
43
32
|
*/
|
|
44
33
|
function wrapAgent(agentName, fn, options) {
|
|
@@ -53,31 +42,28 @@ function wrapAgent(agentName, fn, options) {
|
|
|
53
42
|
"lemma.run_id": runId,
|
|
54
43
|
"ai.agent.input": JSON.stringify(input),
|
|
55
44
|
"lemma.is_experiment": (0, experiment_mode_1.isExperimentModeEnabled)() || options?.isExperiment === true,
|
|
45
|
+
"lemma.auto_end_root": options?.autoEndRoot === true,
|
|
56
46
|
},
|
|
57
47
|
}, api_1.ROOT_CONTEXT);
|
|
58
48
|
// Propagate the span as the active context so child spans are nested correctly
|
|
59
49
|
const ctx = api_1.trace.setSpan(api_1.ROOT_CONTEXT, span);
|
|
50
|
+
const autoEndRoot = options?.autoEndRoot === true;
|
|
51
|
+
let rootEnded = false;
|
|
60
52
|
try {
|
|
61
53
|
return await api_1.context.with(ctx, async () => {
|
|
62
|
-
|
|
63
|
-
// to manually signal completion, errors, or record generation results
|
|
64
|
-
const onComplete = (result) => {
|
|
54
|
+
const complete = (result) => {
|
|
65
55
|
span.setAttribute("ai.agent.output", JSON.stringify(result));
|
|
56
|
+
if (autoEndRoot || rootEnded)
|
|
57
|
+
return false;
|
|
58
|
+
rootEnded = true;
|
|
59
|
+
span.end();
|
|
60
|
+
return true;
|
|
66
61
|
};
|
|
67
|
-
const
|
|
68
|
-
// Normalise non-Error values so OTel always receives an Error instance
|
|
62
|
+
const recordError = (error) => {
|
|
69
63
|
span.recordException(error instanceof Error ? error : new Error(String(error)));
|
|
70
64
|
span.setStatus({ code: 2 }); // SpanStatusCode.ERROR
|
|
71
65
|
};
|
|
72
|
-
const
|
|
73
|
-
span.setAttribute("ai.agent.generation_results", JSON.stringify(results));
|
|
74
|
-
};
|
|
75
|
-
// Invoke the wrapped agent function with the trace context and call-time input
|
|
76
|
-
const result = await fn.call(this, { span, runId, onComplete, onError, recordGenerationResults }, input);
|
|
77
|
-
// Auto-end the span unless the caller opted out (e.g. for streaming)
|
|
78
|
-
if (options?.endOnExit !== false) {
|
|
79
|
-
span.end();
|
|
80
|
-
}
|
|
66
|
+
const result = await fn.call(this, { span, runId, complete, recordError }, input);
|
|
81
67
|
return { result, runId, span };
|
|
82
68
|
});
|
|
83
69
|
}
|
|
@@ -85,9 +71,6 @@ function wrapAgent(agentName, fn, options) {
|
|
|
85
71
|
// Record the exception on the span and mark it as errored
|
|
86
72
|
span.recordException(err);
|
|
87
73
|
span.setStatus({ code: 2 }); // SpanStatusCode.ERROR
|
|
88
|
-
if (options?.endOnExit !== false) {
|
|
89
|
-
span.end();
|
|
90
|
-
}
|
|
91
74
|
throw err;
|
|
92
75
|
}
|
|
93
76
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-wrapper.js","sourceRoot":"","sources":["../src/trace-wrapper.ts"],"names":[],"mappings":";;AAsDA,
|
|
1
|
+
{"version":3,"file":"trace-wrapper.js","sourceRoot":"","sources":["../src/trace-wrapper.ts"],"names":[],"mappings":";;AAsDA,8BAmDC;AAzGD,4CAAwE;AACxE,+BAAoC;AACpC,uDAA4D;AA0B5D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,SAAgB,SAAS,CAAkB,SAAiB,EAAE,EAAqD,EAAE,OAA0B;IAC7I,MAAM,eAAe,GAAG,KAAK,WAAsB,KAAY;QAC7D,wDAAwD;QACxD,MAAM,MAAM,GAAG,WAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAExC,yEAAyE;QACzE,MAAM,KAAK,GAAG,IAAA,SAAM,GAAE,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE;YAC5C,UAAU,EAAE;gBACV,eAAe,EAAE,SAAS;gBAC1B,cAAc,EAAE,KAAK;gBACrB,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBACvC,qBAAqB,EAAE,IAAA,yCAAuB,GAAE,IAAI,OAAO,EAAE,YAAY,KAAK,IAAI;gBAClF,qBAAqB,EAAE,OAAO,EAAE,WAAW,KAAK,IAAI;aACrD;SACF,EAAE,kBAAY,CAAC,CAAC;QAEjB,+EAA+E;QAC/E,MAAM,GAAG,GAAG,WAAK,CAAC,OAAO,CAAC,kBAAY,EAAE,IAAI,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;QAClD,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,IAAI,CAAC;YACH,OAAO,MAAM,aAAO,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;gBACxC,MAAM,QAAQ,GAAG,CAAC,MAAe,EAAW,EAAE;oBAC5C,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC7D,IAAI,WAAW,IAAI,SAAS;wBAAE,OAAO,KAAK,CAAC;oBAC3C,SAAS,GAAG,IAAI,CAAC;oBACjB,IAAI,CAAC,GAAG,EAAE,CAAC;oBACX,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC;gBAEF,MAAM,WAAW,GAAG,CAAC,KAAc,EAAE,EAAE;oBACrC,IAAI,CAAC,eAAe,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAChF,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB;gBACtD,CAAC,CAAC;gBAEF,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;gBAElF,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;YACjC,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,0DAA0D;YAC1D,IAAI,CAAC,eAAe,CAAC,GAAY,CAAC,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB;YAEpD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,eAAe,CAAC;AACzB,CAAC"}
|