braintrust 3.6.0 → 3.7.1
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/dev/dist/index.js +2692 -1472
- package/dev/dist/index.mjs +2616 -1396
- package/dist/auto-instrumentations/bundler/esbuild.cjs +46 -21
- package/dist/auto-instrumentations/bundler/esbuild.mjs +2 -2
- package/dist/auto-instrumentations/bundler/rollup.cjs +46 -21
- package/dist/auto-instrumentations/bundler/rollup.mjs +2 -2
- package/dist/auto-instrumentations/bundler/vite.cjs +46 -21
- package/dist/auto-instrumentations/bundler/vite.mjs +2 -2
- package/dist/auto-instrumentations/bundler/webpack-loader.cjs +952 -0
- package/dist/auto-instrumentations/bundler/webpack-loader.d.ts +53 -0
- package/dist/auto-instrumentations/bundler/webpack.cjs +46 -21
- package/dist/auto-instrumentations/bundler/webpack.mjs +2 -2
- package/dist/auto-instrumentations/{chunk-WOUC73KB.mjs → chunk-NY4CGTN6.mjs} +1 -1
- package/dist/auto-instrumentations/{chunk-F7WAXFNM.mjs → chunk-YCKND42U.mjs} +46 -21
- package/dist/auto-instrumentations/hook.mjs +77 -26
- package/dist/auto-instrumentations/index.cjs +46 -21
- package/dist/auto-instrumentations/index.mjs +1 -1
- package/dist/browser.d.mts +8 -30
- package/dist/browser.d.ts +8 -30
- package/dist/browser.js +5051 -6344
- package/dist/browser.mjs +5051 -6344
- package/dist/cli.js +2622 -1398
- package/dist/edge-light.js +9456 -10773
- package/dist/edge-light.mjs +9456 -10773
- package/dist/index.d.mts +8 -30
- package/dist/index.d.ts +8 -30
- package/dist/index.js +5078 -6371
- package/dist/index.mjs +4870 -6163
- package/dist/instrumentation/index.js +2491 -1319
- package/dist/instrumentation/index.mjs +2491 -1319
- package/dist/workerd.js +9456 -10773
- package/dist/workerd.mjs +9456 -10773
- package/package.json +6 -2
|
@@ -0,0 +1,952 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
|
+
for (let key of __getOwnPropNames(from))
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
12
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
13
|
+
}
|
|
14
|
+
return to;
|
|
15
|
+
};
|
|
16
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
17
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
18
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
19
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
20
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
21
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
+
mod
|
|
23
|
+
));
|
|
24
|
+
|
|
25
|
+
// src/auto-instrumentations/bundler/webpack-loader.ts
|
|
26
|
+
var import_code_transformer = require("@apm-js-collab/code-transformer");
|
|
27
|
+
var import_path = require("path");
|
|
28
|
+
var import_fs = require("fs");
|
|
29
|
+
var import_module_details_from_path = __toESM(require("module-details-from-path"));
|
|
30
|
+
|
|
31
|
+
// src/isomorph.ts
|
|
32
|
+
var DefaultAsyncLocalStorage = class {
|
|
33
|
+
constructor() {
|
|
34
|
+
}
|
|
35
|
+
enterWith(_) {
|
|
36
|
+
}
|
|
37
|
+
run(_, callback) {
|
|
38
|
+
return callback();
|
|
39
|
+
}
|
|
40
|
+
getStore() {
|
|
41
|
+
return void 0;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
var DefaultChannel = class {
|
|
45
|
+
constructor(name) {
|
|
46
|
+
this.name = name;
|
|
47
|
+
}
|
|
48
|
+
hasSubscribers = false;
|
|
49
|
+
subscribe(_subscription) {
|
|
50
|
+
}
|
|
51
|
+
unsubscribe(_subscription) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
bindStore(_store, _transform) {
|
|
55
|
+
}
|
|
56
|
+
unbindStore(_store) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
publish(_message) {
|
|
60
|
+
}
|
|
61
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
62
|
+
runStores(_message, fn, thisArg, ...args) {
|
|
63
|
+
return fn.apply(thisArg, args);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
var DefaultTracingChannel = class {
|
|
67
|
+
start;
|
|
68
|
+
end;
|
|
69
|
+
asyncStart;
|
|
70
|
+
asyncEnd;
|
|
71
|
+
error;
|
|
72
|
+
constructor(nameOrChannels) {
|
|
73
|
+
if (typeof nameOrChannels === "string") {
|
|
74
|
+
this.start = new DefaultChannel(`tracing:${nameOrChannels}:start`);
|
|
75
|
+
this.end = new DefaultChannel(`tracing:${nameOrChannels}:end`);
|
|
76
|
+
this.asyncStart = new DefaultChannel(
|
|
77
|
+
`tracing:${nameOrChannels}:asyncStart`
|
|
78
|
+
);
|
|
79
|
+
this.asyncEnd = new DefaultChannel(`tracing:${nameOrChannels}:asyncEnd`);
|
|
80
|
+
this.error = new DefaultChannel(`tracing:${nameOrChannels}:error`);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
this.start = nameOrChannels.start ?? new DefaultChannel("tracing:start");
|
|
84
|
+
this.end = nameOrChannels.end ?? new DefaultChannel("tracing:end");
|
|
85
|
+
this.asyncStart = nameOrChannels.asyncStart ?? new DefaultChannel("tracing:asyncStart");
|
|
86
|
+
this.asyncEnd = nameOrChannels.asyncEnd ?? new DefaultChannel("tracing:asyncEnd");
|
|
87
|
+
this.error = nameOrChannels.error ?? new DefaultChannel("tracing:error");
|
|
88
|
+
}
|
|
89
|
+
get hasSubscribers() {
|
|
90
|
+
return this.start.hasSubscribers || this.end.hasSubscribers || this.asyncStart.hasSubscribers || this.asyncEnd.hasSubscribers || this.error.hasSubscribers;
|
|
91
|
+
}
|
|
92
|
+
subscribe(_handlers) {
|
|
93
|
+
}
|
|
94
|
+
unsubscribe(_handlers) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
98
|
+
traceSync(fn, _message, thisArg, ...args) {
|
|
99
|
+
return fn.apply(thisArg, args);
|
|
100
|
+
}
|
|
101
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
102
|
+
tracePromise(fn, _message, thisArg, ...args) {
|
|
103
|
+
return fn.apply(thisArg, args);
|
|
104
|
+
}
|
|
105
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
106
|
+
traceCallback(fn, _position, _message, thisArg, ...args) {
|
|
107
|
+
return fn.apply(thisArg, args);
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
var iso = {
|
|
111
|
+
buildType: "unknown",
|
|
112
|
+
// Will be set by configureBrowser() or configureNode()
|
|
113
|
+
getRepoInfo: async (_settings) => void 0,
|
|
114
|
+
getPastNAncestors: async () => [],
|
|
115
|
+
getEnv: (_name) => void 0,
|
|
116
|
+
getCallerLocation: () => void 0,
|
|
117
|
+
newAsyncLocalStorage: () => new DefaultAsyncLocalStorage(),
|
|
118
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
119
|
+
newTracingChannel: (nameOrChannels) => new DefaultTracingChannel(nameOrChannels),
|
|
120
|
+
processOn: (_0, _1) => {
|
|
121
|
+
},
|
|
122
|
+
basename: (filepath) => filepath.split(/[\\/]/).pop() || filepath,
|
|
123
|
+
// eslint-disable-next-line no-restricted-properties -- preserving intentional console usage.
|
|
124
|
+
writeln: (text) => console.log(text)
|
|
125
|
+
};
|
|
126
|
+
var isomorph_default = iso;
|
|
127
|
+
|
|
128
|
+
// src/instrumentation/core/channel-definitions.ts
|
|
129
|
+
function channel(spec) {
|
|
130
|
+
return spec;
|
|
131
|
+
}
|
|
132
|
+
function defineChannels(pkg, channels) {
|
|
133
|
+
return Object.fromEntries(
|
|
134
|
+
Object.entries(channels).map(([key, spec]) => {
|
|
135
|
+
const fullChannelName = `orchestrion:${pkg}:${spec.channelName}`;
|
|
136
|
+
if (spec.kind === "async") {
|
|
137
|
+
const asyncSpec = spec;
|
|
138
|
+
const tracingChannel2 = () => isomorph_default.newTracingChannel(
|
|
139
|
+
fullChannelName
|
|
140
|
+
);
|
|
141
|
+
return [
|
|
142
|
+
key,
|
|
143
|
+
{
|
|
144
|
+
...asyncSpec,
|
|
145
|
+
tracingChannel: tracingChannel2,
|
|
146
|
+
tracePromise: (fn, context) => tracingChannel2().tracePromise(
|
|
147
|
+
fn,
|
|
148
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
149
|
+
context
|
|
150
|
+
)
|
|
151
|
+
}
|
|
152
|
+
];
|
|
153
|
+
}
|
|
154
|
+
const syncSpec = spec;
|
|
155
|
+
const tracingChannel = () => isomorph_default.newTracingChannel(
|
|
156
|
+
fullChannelName
|
|
157
|
+
);
|
|
158
|
+
return [
|
|
159
|
+
key,
|
|
160
|
+
{
|
|
161
|
+
...syncSpec,
|
|
162
|
+
tracingChannel,
|
|
163
|
+
traceSync: (fn, context) => tracingChannel().traceSync(
|
|
164
|
+
fn,
|
|
165
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
166
|
+
context
|
|
167
|
+
)
|
|
168
|
+
}
|
|
169
|
+
];
|
|
170
|
+
})
|
|
171
|
+
);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// src/instrumentation/plugins/openai-channels.ts
|
|
175
|
+
var openAIChannels = defineChannels("openai", {
|
|
176
|
+
chatCompletionsCreate: channel({
|
|
177
|
+
channelName: "chat.completions.create",
|
|
178
|
+
kind: "async"
|
|
179
|
+
}),
|
|
180
|
+
embeddingsCreate: channel({
|
|
181
|
+
channelName: "embeddings.create",
|
|
182
|
+
kind: "async"
|
|
183
|
+
}),
|
|
184
|
+
betaChatCompletionsParse: channel({
|
|
185
|
+
channelName: "beta.chat.completions.parse",
|
|
186
|
+
kind: "async"
|
|
187
|
+
}),
|
|
188
|
+
betaChatCompletionsStream: channel({
|
|
189
|
+
channelName: "beta.chat.completions.stream",
|
|
190
|
+
kind: "sync-stream"
|
|
191
|
+
}),
|
|
192
|
+
moderationsCreate: channel({
|
|
193
|
+
channelName: "moderations.create",
|
|
194
|
+
kind: "async"
|
|
195
|
+
}),
|
|
196
|
+
responsesCreate: channel({
|
|
197
|
+
channelName: "responses.create",
|
|
198
|
+
kind: "async"
|
|
199
|
+
}),
|
|
200
|
+
responsesStream: channel({
|
|
201
|
+
channelName: "responses.stream",
|
|
202
|
+
kind: "sync-stream"
|
|
203
|
+
}),
|
|
204
|
+
responsesParse: channel({
|
|
205
|
+
channelName: "responses.parse",
|
|
206
|
+
kind: "async"
|
|
207
|
+
})
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
// src/auto-instrumentations/configs/openai.ts
|
|
211
|
+
var openaiConfigs = [
|
|
212
|
+
// Chat Completions
|
|
213
|
+
{
|
|
214
|
+
channelName: openAIChannels.chatCompletionsCreate.channelName,
|
|
215
|
+
module: {
|
|
216
|
+
name: "openai",
|
|
217
|
+
versionRange: ">=4.0.0 <5.0.0",
|
|
218
|
+
filePath: "resources/chat/completions.mjs"
|
|
219
|
+
},
|
|
220
|
+
functionQuery: {
|
|
221
|
+
className: "Completions",
|
|
222
|
+
methodName: "create",
|
|
223
|
+
kind: "Async"
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
channelName: openAIChannels.chatCompletionsCreate.channelName,
|
|
228
|
+
module: {
|
|
229
|
+
name: "openai",
|
|
230
|
+
versionRange: ">=4.0.0 <5.0.0",
|
|
231
|
+
filePath: "resources/chat/completions/completions.mjs"
|
|
232
|
+
},
|
|
233
|
+
functionQuery: {
|
|
234
|
+
className: "Completions",
|
|
235
|
+
methodName: "create",
|
|
236
|
+
kind: "Async"
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
channelName: openAIChannels.chatCompletionsCreate.channelName,
|
|
241
|
+
module: {
|
|
242
|
+
name: "openai",
|
|
243
|
+
versionRange: ">=5.0.0",
|
|
244
|
+
filePath: "resources/chat/completions/completions.mjs"
|
|
245
|
+
},
|
|
246
|
+
functionQuery: {
|
|
247
|
+
className: "Completions",
|
|
248
|
+
methodName: "create",
|
|
249
|
+
kind: "Async"
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
// Embeddings
|
|
253
|
+
{
|
|
254
|
+
channelName: openAIChannels.embeddingsCreate.channelName,
|
|
255
|
+
module: {
|
|
256
|
+
name: "openai",
|
|
257
|
+
versionRange: ">=4.0.0",
|
|
258
|
+
filePath: "resources/embeddings.mjs"
|
|
259
|
+
},
|
|
260
|
+
functionQuery: {
|
|
261
|
+
className: "Embeddings",
|
|
262
|
+
methodName: "create",
|
|
263
|
+
kind: "Async"
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
// Beta Chat Completions Parse
|
|
267
|
+
{
|
|
268
|
+
channelName: openAIChannels.betaChatCompletionsParse.channelName,
|
|
269
|
+
module: {
|
|
270
|
+
name: "openai",
|
|
271
|
+
versionRange: ">=4.0.0 <5.0.0",
|
|
272
|
+
filePath: "resources/beta/chat/completions.mjs"
|
|
273
|
+
},
|
|
274
|
+
functionQuery: {
|
|
275
|
+
className: "Completions",
|
|
276
|
+
methodName: "parse",
|
|
277
|
+
kind: "Async"
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
channelName: openAIChannels.betaChatCompletionsParse.channelName,
|
|
282
|
+
module: {
|
|
283
|
+
name: "openai",
|
|
284
|
+
versionRange: ">=5.0.0",
|
|
285
|
+
filePath: "resources/chat/completions/completions.mjs"
|
|
286
|
+
},
|
|
287
|
+
functionQuery: {
|
|
288
|
+
className: "Completions",
|
|
289
|
+
methodName: "parse",
|
|
290
|
+
kind: "Async"
|
|
291
|
+
}
|
|
292
|
+
},
|
|
293
|
+
// Moderations
|
|
294
|
+
{
|
|
295
|
+
channelName: openAIChannels.moderationsCreate.channelName,
|
|
296
|
+
module: {
|
|
297
|
+
name: "openai",
|
|
298
|
+
versionRange: ">=4.0.0",
|
|
299
|
+
filePath: "resources/moderations.mjs"
|
|
300
|
+
},
|
|
301
|
+
functionQuery: {
|
|
302
|
+
className: "Moderations",
|
|
303
|
+
methodName: "create",
|
|
304
|
+
kind: "Async"
|
|
305
|
+
}
|
|
306
|
+
},
|
|
307
|
+
// Beta Chat Completions Stream
|
|
308
|
+
{
|
|
309
|
+
channelName: openAIChannels.betaChatCompletionsStream.channelName,
|
|
310
|
+
module: {
|
|
311
|
+
name: "openai",
|
|
312
|
+
versionRange: ">=4.0.0 <5.0.0",
|
|
313
|
+
filePath: "resources/beta/chat/completions.mjs"
|
|
314
|
+
},
|
|
315
|
+
functionQuery: {
|
|
316
|
+
className: "Completions",
|
|
317
|
+
methodName: "stream",
|
|
318
|
+
kind: "Sync"
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
channelName: openAIChannels.betaChatCompletionsStream.channelName,
|
|
323
|
+
module: {
|
|
324
|
+
name: "openai",
|
|
325
|
+
versionRange: ">=5.0.0",
|
|
326
|
+
filePath: "resources/chat/completions/completions.mjs"
|
|
327
|
+
},
|
|
328
|
+
functionQuery: {
|
|
329
|
+
className: "Completions",
|
|
330
|
+
methodName: "stream",
|
|
331
|
+
kind: "Sync"
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
// Responses API (v4.87.0+)
|
|
335
|
+
{
|
|
336
|
+
channelName: openAIChannels.responsesCreate.channelName,
|
|
337
|
+
module: {
|
|
338
|
+
name: "openai",
|
|
339
|
+
versionRange: ">=4.87.0",
|
|
340
|
+
filePath: "resources/responses/responses.mjs"
|
|
341
|
+
},
|
|
342
|
+
functionQuery: {
|
|
343
|
+
className: "Responses",
|
|
344
|
+
methodName: "create",
|
|
345
|
+
kind: "Async"
|
|
346
|
+
}
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
channelName: openAIChannels.responsesStream.channelName,
|
|
350
|
+
module: {
|
|
351
|
+
name: "openai",
|
|
352
|
+
versionRange: ">=4.87.0",
|
|
353
|
+
filePath: "resources/responses/responses.mjs"
|
|
354
|
+
},
|
|
355
|
+
functionQuery: {
|
|
356
|
+
className: "Responses",
|
|
357
|
+
methodName: "stream",
|
|
358
|
+
kind: "Sync"
|
|
359
|
+
}
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
channelName: openAIChannels.responsesParse.channelName,
|
|
363
|
+
module: {
|
|
364
|
+
name: "openai",
|
|
365
|
+
versionRange: ">=4.87.0",
|
|
366
|
+
filePath: "resources/responses/responses.mjs"
|
|
367
|
+
},
|
|
368
|
+
functionQuery: {
|
|
369
|
+
className: "Responses",
|
|
370
|
+
methodName: "parse",
|
|
371
|
+
kind: "Async"
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
];
|
|
375
|
+
|
|
376
|
+
// src/instrumentation/plugins/anthropic-channels.ts
|
|
377
|
+
var anthropicChannels = defineChannels("@anthropic-ai/sdk", {
|
|
378
|
+
messagesCreate: channel({
|
|
379
|
+
channelName: "messages.create",
|
|
380
|
+
kind: "async"
|
|
381
|
+
}),
|
|
382
|
+
betaMessagesCreate: channel({
|
|
383
|
+
channelName: "beta.messages.create",
|
|
384
|
+
kind: "async"
|
|
385
|
+
})
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
// src/auto-instrumentations/configs/anthropic.ts
|
|
389
|
+
var anthropicConfigs = [
|
|
390
|
+
// Messages API - create in older SDK layouts (supports streaming via stream=true parameter)
|
|
391
|
+
{
|
|
392
|
+
channelName: anthropicChannels.messagesCreate.channelName,
|
|
393
|
+
module: {
|
|
394
|
+
name: "@anthropic-ai/sdk",
|
|
395
|
+
versionRange: ">=0.27.0 <0.39.0",
|
|
396
|
+
filePath: "resources/messages.mjs"
|
|
397
|
+
},
|
|
398
|
+
functionQuery: {
|
|
399
|
+
className: "Messages",
|
|
400
|
+
methodName: "create",
|
|
401
|
+
kind: "Async"
|
|
402
|
+
}
|
|
403
|
+
},
|
|
404
|
+
// Messages API - create (supports streaming via stream=true parameter)
|
|
405
|
+
{
|
|
406
|
+
channelName: anthropicChannels.messagesCreate.channelName,
|
|
407
|
+
module: {
|
|
408
|
+
name: "@anthropic-ai/sdk",
|
|
409
|
+
versionRange: ">=0.39.0",
|
|
410
|
+
filePath: "resources/messages/messages.mjs"
|
|
411
|
+
},
|
|
412
|
+
functionQuery: {
|
|
413
|
+
className: "Messages",
|
|
414
|
+
methodName: "create",
|
|
415
|
+
kind: "Async"
|
|
416
|
+
}
|
|
417
|
+
},
|
|
418
|
+
// Beta Messages API - create (supports streaming via stream=true parameter)
|
|
419
|
+
{
|
|
420
|
+
channelName: anthropicChannels.betaMessagesCreate.channelName,
|
|
421
|
+
module: {
|
|
422
|
+
name: "@anthropic-ai/sdk",
|
|
423
|
+
versionRange: ">=0.39.0",
|
|
424
|
+
filePath: "resources/beta/messages/messages.mjs"
|
|
425
|
+
},
|
|
426
|
+
functionQuery: {
|
|
427
|
+
className: "Messages",
|
|
428
|
+
methodName: "create",
|
|
429
|
+
kind: "Async"
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
];
|
|
433
|
+
|
|
434
|
+
// src/instrumentation/plugins/ai-sdk-channels.ts
|
|
435
|
+
var aiSDKChannels = defineChannels("ai", {
|
|
436
|
+
generateText: channel({
|
|
437
|
+
channelName: "generateText",
|
|
438
|
+
kind: "async"
|
|
439
|
+
}),
|
|
440
|
+
streamText: channel({
|
|
441
|
+
channelName: "streamText",
|
|
442
|
+
kind: "async"
|
|
443
|
+
}),
|
|
444
|
+
generateObject: channel({
|
|
445
|
+
channelName: "generateObject",
|
|
446
|
+
kind: "async"
|
|
447
|
+
}),
|
|
448
|
+
streamObject: channel({
|
|
449
|
+
channelName: "streamObject",
|
|
450
|
+
kind: "async"
|
|
451
|
+
}),
|
|
452
|
+
agentGenerate: channel({
|
|
453
|
+
channelName: "Agent.generate",
|
|
454
|
+
kind: "async"
|
|
455
|
+
}),
|
|
456
|
+
agentStream: channel({
|
|
457
|
+
channelName: "Agent.stream",
|
|
458
|
+
kind: "async"
|
|
459
|
+
}),
|
|
460
|
+
toolLoopAgentGenerate: channel({
|
|
461
|
+
channelName: "ToolLoopAgent.generate",
|
|
462
|
+
kind: "async"
|
|
463
|
+
}),
|
|
464
|
+
toolLoopAgentStream: channel({
|
|
465
|
+
channelName: "ToolLoopAgent.stream",
|
|
466
|
+
kind: "async"
|
|
467
|
+
})
|
|
468
|
+
});
|
|
469
|
+
|
|
470
|
+
// src/auto-instrumentations/configs/ai-sdk.ts
|
|
471
|
+
var aiSDKConfigs = [
|
|
472
|
+
// generateText - async function
|
|
473
|
+
{
|
|
474
|
+
channelName: aiSDKChannels.generateText.channelName,
|
|
475
|
+
module: {
|
|
476
|
+
name: "ai",
|
|
477
|
+
versionRange: ">=3.0.0",
|
|
478
|
+
filePath: "dist/index.mjs"
|
|
479
|
+
},
|
|
480
|
+
functionQuery: {
|
|
481
|
+
functionName: "generateText",
|
|
482
|
+
kind: "Async"
|
|
483
|
+
}
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
channelName: aiSDKChannels.generateText.channelName,
|
|
487
|
+
module: {
|
|
488
|
+
name: "ai",
|
|
489
|
+
versionRange: ">=3.0.0",
|
|
490
|
+
filePath: "dist/index.js"
|
|
491
|
+
},
|
|
492
|
+
functionQuery: {
|
|
493
|
+
functionName: "generateText",
|
|
494
|
+
kind: "Async"
|
|
495
|
+
}
|
|
496
|
+
},
|
|
497
|
+
// streamText - function returning stream
|
|
498
|
+
{
|
|
499
|
+
channelName: aiSDKChannels.streamText.channelName,
|
|
500
|
+
module: {
|
|
501
|
+
name: "ai",
|
|
502
|
+
versionRange: ">=3.0.0",
|
|
503
|
+
filePath: "dist/index.mjs"
|
|
504
|
+
},
|
|
505
|
+
functionQuery: {
|
|
506
|
+
functionName: "streamText",
|
|
507
|
+
kind: "Async"
|
|
508
|
+
}
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
channelName: aiSDKChannels.streamText.channelName,
|
|
512
|
+
module: {
|
|
513
|
+
name: "ai",
|
|
514
|
+
versionRange: ">=3.0.0",
|
|
515
|
+
filePath: "dist/index.js"
|
|
516
|
+
},
|
|
517
|
+
functionQuery: {
|
|
518
|
+
functionName: "streamText",
|
|
519
|
+
kind: "Async"
|
|
520
|
+
}
|
|
521
|
+
},
|
|
522
|
+
// generateObject - async function
|
|
523
|
+
{
|
|
524
|
+
channelName: aiSDKChannels.generateObject.channelName,
|
|
525
|
+
module: {
|
|
526
|
+
name: "ai",
|
|
527
|
+
versionRange: ">=3.0.0",
|
|
528
|
+
filePath: "dist/index.mjs"
|
|
529
|
+
},
|
|
530
|
+
functionQuery: {
|
|
531
|
+
functionName: "generateObject",
|
|
532
|
+
kind: "Async"
|
|
533
|
+
}
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
channelName: aiSDKChannels.generateObject.channelName,
|
|
537
|
+
module: {
|
|
538
|
+
name: "ai",
|
|
539
|
+
versionRange: ">=3.0.0",
|
|
540
|
+
filePath: "dist/index.js"
|
|
541
|
+
},
|
|
542
|
+
functionQuery: {
|
|
543
|
+
functionName: "generateObject",
|
|
544
|
+
kind: "Async"
|
|
545
|
+
}
|
|
546
|
+
},
|
|
547
|
+
// streamObject - function returning stream
|
|
548
|
+
{
|
|
549
|
+
channelName: aiSDKChannels.streamObject.channelName,
|
|
550
|
+
module: {
|
|
551
|
+
name: "ai",
|
|
552
|
+
versionRange: ">=3.0.0",
|
|
553
|
+
filePath: "dist/index.mjs"
|
|
554
|
+
},
|
|
555
|
+
functionQuery: {
|
|
556
|
+
functionName: "streamObject",
|
|
557
|
+
kind: "Async"
|
|
558
|
+
}
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
channelName: aiSDKChannels.streamObject.channelName,
|
|
562
|
+
module: {
|
|
563
|
+
name: "ai",
|
|
564
|
+
versionRange: ">=3.0.0",
|
|
565
|
+
filePath: "dist/index.js"
|
|
566
|
+
},
|
|
567
|
+
functionQuery: {
|
|
568
|
+
functionName: "streamObject",
|
|
569
|
+
kind: "Async"
|
|
570
|
+
}
|
|
571
|
+
},
|
|
572
|
+
// Agent.generate - async method (v5 only)
|
|
573
|
+
// The compiled AI SDK bundle emits this as an anonymous class method, so we
|
|
574
|
+
// target the first async `generate` method in the file instead of a class name.
|
|
575
|
+
{
|
|
576
|
+
channelName: aiSDKChannels.agentGenerate.channelName,
|
|
577
|
+
module: {
|
|
578
|
+
name: "ai",
|
|
579
|
+
versionRange: ">=5.0.0 <6.0.0",
|
|
580
|
+
filePath: "dist/index.mjs"
|
|
581
|
+
},
|
|
582
|
+
functionQuery: {
|
|
583
|
+
methodName: "generate",
|
|
584
|
+
kind: "Async",
|
|
585
|
+
index: 0
|
|
586
|
+
}
|
|
587
|
+
},
|
|
588
|
+
{
|
|
589
|
+
channelName: aiSDKChannels.agentGenerate.channelName,
|
|
590
|
+
module: {
|
|
591
|
+
name: "ai",
|
|
592
|
+
versionRange: ">=5.0.0 <6.0.0",
|
|
593
|
+
filePath: "dist/index.js"
|
|
594
|
+
},
|
|
595
|
+
functionQuery: {
|
|
596
|
+
methodName: "generate",
|
|
597
|
+
kind: "Async",
|
|
598
|
+
index: 0
|
|
599
|
+
}
|
|
600
|
+
},
|
|
601
|
+
// Agent.stream - async method (v5 only)
|
|
602
|
+
// The compiled AI SDK bundle emits this as an anonymous class method, so we
|
|
603
|
+
// target the first async `stream` method in the file instead of a class name.
|
|
604
|
+
{
|
|
605
|
+
channelName: aiSDKChannels.agentStream.channelName,
|
|
606
|
+
module: {
|
|
607
|
+
name: "ai",
|
|
608
|
+
versionRange: ">=5.0.0 <6.0.0",
|
|
609
|
+
filePath: "dist/index.mjs"
|
|
610
|
+
},
|
|
611
|
+
functionQuery: {
|
|
612
|
+
methodName: "stream",
|
|
613
|
+
kind: "Async",
|
|
614
|
+
index: 0
|
|
615
|
+
}
|
|
616
|
+
},
|
|
617
|
+
{
|
|
618
|
+
channelName: aiSDKChannels.agentStream.channelName,
|
|
619
|
+
module: {
|
|
620
|
+
name: "ai",
|
|
621
|
+
versionRange: ">=5.0.0 <6.0.0",
|
|
622
|
+
filePath: "dist/index.js"
|
|
623
|
+
},
|
|
624
|
+
functionQuery: {
|
|
625
|
+
methodName: "stream",
|
|
626
|
+
kind: "Async",
|
|
627
|
+
index: 0
|
|
628
|
+
}
|
|
629
|
+
},
|
|
630
|
+
// ToolLoopAgent.generate - async method (v6 only, Experimental_Agent is an alias)
|
|
631
|
+
// The compiled AI SDK bundle emits this as an anonymous class method, so we
|
|
632
|
+
// target the first async `generate` method in the file instead of a class name.
|
|
633
|
+
{
|
|
634
|
+
channelName: aiSDKChannels.toolLoopAgentGenerate.channelName,
|
|
635
|
+
module: {
|
|
636
|
+
name: "ai",
|
|
637
|
+
versionRange: ">=6.0.0 <7.0.0",
|
|
638
|
+
filePath: "dist/index.mjs"
|
|
639
|
+
},
|
|
640
|
+
functionQuery: {
|
|
641
|
+
methodName: "generate",
|
|
642
|
+
kind: "Async",
|
|
643
|
+
index: 0
|
|
644
|
+
}
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
channelName: aiSDKChannels.toolLoopAgentGenerate.channelName,
|
|
648
|
+
module: {
|
|
649
|
+
name: "ai",
|
|
650
|
+
versionRange: ">=6.0.0 <7.0.0",
|
|
651
|
+
filePath: "dist/index.js"
|
|
652
|
+
},
|
|
653
|
+
functionQuery: {
|
|
654
|
+
methodName: "generate",
|
|
655
|
+
kind: "Async",
|
|
656
|
+
index: 0
|
|
657
|
+
}
|
|
658
|
+
},
|
|
659
|
+
// ToolLoopAgent.stream - async method (v6 only, Experimental_Agent is an alias)
|
|
660
|
+
// The compiled AI SDK bundle emits this as an anonymous class method, so we
|
|
661
|
+
// target the first async `stream` method in the file instead of a class name.
|
|
662
|
+
{
|
|
663
|
+
channelName: aiSDKChannels.toolLoopAgentStream.channelName,
|
|
664
|
+
module: {
|
|
665
|
+
name: "ai",
|
|
666
|
+
versionRange: ">=6.0.0 <7.0.0",
|
|
667
|
+
filePath: "dist/index.mjs"
|
|
668
|
+
},
|
|
669
|
+
functionQuery: {
|
|
670
|
+
methodName: "stream",
|
|
671
|
+
kind: "Async",
|
|
672
|
+
index: 0
|
|
673
|
+
}
|
|
674
|
+
},
|
|
675
|
+
{
|
|
676
|
+
channelName: aiSDKChannels.toolLoopAgentStream.channelName,
|
|
677
|
+
module: {
|
|
678
|
+
name: "ai",
|
|
679
|
+
versionRange: ">=6.0.0 <7.0.0",
|
|
680
|
+
filePath: "dist/index.js"
|
|
681
|
+
},
|
|
682
|
+
functionQuery: {
|
|
683
|
+
methodName: "stream",
|
|
684
|
+
kind: "Async",
|
|
685
|
+
index: 0
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
];
|
|
689
|
+
|
|
690
|
+
// src/instrumentation/plugins/claude-agent-sdk-channels.ts
|
|
691
|
+
var claudeAgentSDKChannels = defineChannels(
|
|
692
|
+
"@anthropic-ai/claude-agent-sdk",
|
|
693
|
+
{
|
|
694
|
+
query: channel({
|
|
695
|
+
channelName: "query",
|
|
696
|
+
kind: "sync-stream"
|
|
697
|
+
})
|
|
698
|
+
}
|
|
699
|
+
);
|
|
700
|
+
|
|
701
|
+
// src/auto-instrumentations/configs/claude-agent-sdk.ts
|
|
702
|
+
var claudeAgentSDKConfigs = [
|
|
703
|
+
// query - Main entry point for agent interactions. The SDK returns an async
|
|
704
|
+
// iterable, but the exported query function itself is synchronous.
|
|
705
|
+
{
|
|
706
|
+
channelName: claudeAgentSDKChannels.query.channelName,
|
|
707
|
+
module: {
|
|
708
|
+
name: "@anthropic-ai/claude-agent-sdk",
|
|
709
|
+
versionRange: ">=0.1.0 <0.2.0",
|
|
710
|
+
filePath: "sdk.mjs"
|
|
711
|
+
},
|
|
712
|
+
functionQuery: {
|
|
713
|
+
functionName: "query",
|
|
714
|
+
kind: "Sync"
|
|
715
|
+
}
|
|
716
|
+
},
|
|
717
|
+
{
|
|
718
|
+
channelName: claudeAgentSDKChannels.query.channelName,
|
|
719
|
+
module: {
|
|
720
|
+
name: "@anthropic-ai/claude-agent-sdk",
|
|
721
|
+
versionRange: ">=0.2.0",
|
|
722
|
+
filePath: "sdk.mjs"
|
|
723
|
+
},
|
|
724
|
+
functionQuery: {
|
|
725
|
+
functionName: "query",
|
|
726
|
+
kind: "Sync",
|
|
727
|
+
isExportAlias: true
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
];
|
|
731
|
+
|
|
732
|
+
// src/instrumentation/plugins/google-genai-channels.ts
|
|
733
|
+
var googleGenAIChannels = defineChannels("@google/genai", {
|
|
734
|
+
generateContent: channel({
|
|
735
|
+
channelName: "models.generateContent",
|
|
736
|
+
kind: "async"
|
|
737
|
+
}),
|
|
738
|
+
generateContentStream: channel({
|
|
739
|
+
channelName: "models.generateContentStream",
|
|
740
|
+
kind: "async"
|
|
741
|
+
})
|
|
742
|
+
});
|
|
743
|
+
|
|
744
|
+
// src/auto-instrumentations/configs/google-genai.ts
|
|
745
|
+
var googleGenAIConfigs = [
|
|
746
|
+
// Models.generateContentInternal - The actual class method (Node.js entry point)
|
|
747
|
+
// Note: generateContent is an arrow function property that calls this internal method
|
|
748
|
+
{
|
|
749
|
+
channelName: googleGenAIChannels.generateContent.channelName,
|
|
750
|
+
module: {
|
|
751
|
+
name: "@google/genai",
|
|
752
|
+
versionRange: ">=1.0.0",
|
|
753
|
+
filePath: "dist/node/index.mjs"
|
|
754
|
+
},
|
|
755
|
+
functionQuery: {
|
|
756
|
+
className: "Models",
|
|
757
|
+
methodName: "generateContentInternal",
|
|
758
|
+
kind: "Async"
|
|
759
|
+
}
|
|
760
|
+
},
|
|
761
|
+
// Models.generateContentStreamInternal - The actual class method (Node.js entry point)
|
|
762
|
+
// Note: generateContentStream is an arrow function property that calls this internal method
|
|
763
|
+
{
|
|
764
|
+
channelName: googleGenAIChannels.generateContentStream.channelName,
|
|
765
|
+
module: {
|
|
766
|
+
name: "@google/genai",
|
|
767
|
+
versionRange: ">=1.0.0",
|
|
768
|
+
filePath: "dist/node/index.mjs"
|
|
769
|
+
},
|
|
770
|
+
functionQuery: {
|
|
771
|
+
className: "Models",
|
|
772
|
+
methodName: "generateContentStreamInternal",
|
|
773
|
+
kind: "Async"
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
];
|
|
777
|
+
|
|
778
|
+
// src/instrumentation/plugins/openrouter-channels.ts
|
|
779
|
+
var openRouterChannels = defineChannels("@openrouter/sdk", {
|
|
780
|
+
chatSend: channel({
|
|
781
|
+
channelName: "chat.send",
|
|
782
|
+
kind: "async"
|
|
783
|
+
}),
|
|
784
|
+
embeddingsGenerate: channel({
|
|
785
|
+
channelName: "embeddings.generate",
|
|
786
|
+
kind: "async"
|
|
787
|
+
}),
|
|
788
|
+
betaResponsesSend: channel({
|
|
789
|
+
channelName: "beta.responses.send",
|
|
790
|
+
kind: "async"
|
|
791
|
+
}),
|
|
792
|
+
callModel: channel({
|
|
793
|
+
channelName: "callModel",
|
|
794
|
+
kind: "sync-stream"
|
|
795
|
+
}),
|
|
796
|
+
callModelTurn: channel({
|
|
797
|
+
channelName: "callModel.turn",
|
|
798
|
+
kind: "async"
|
|
799
|
+
}),
|
|
800
|
+
toolExecute: channel({
|
|
801
|
+
channelName: "tool.execute",
|
|
802
|
+
kind: "async"
|
|
803
|
+
})
|
|
804
|
+
});
|
|
805
|
+
|
|
806
|
+
// src/auto-instrumentations/configs/openrouter.ts
|
|
807
|
+
var openRouterConfigs = [
|
|
808
|
+
{
|
|
809
|
+
channelName: openRouterChannels.chatSend.channelName,
|
|
810
|
+
module: {
|
|
811
|
+
name: "@openrouter/sdk",
|
|
812
|
+
versionRange: ">=0.9.11 <1.0.0",
|
|
813
|
+
filePath: "esm/sdk/chat.js"
|
|
814
|
+
},
|
|
815
|
+
functionQuery: {
|
|
816
|
+
className: "Chat",
|
|
817
|
+
methodName: "send",
|
|
818
|
+
kind: "Async"
|
|
819
|
+
}
|
|
820
|
+
},
|
|
821
|
+
{
|
|
822
|
+
channelName: openRouterChannels.embeddingsGenerate.channelName,
|
|
823
|
+
module: {
|
|
824
|
+
name: "@openrouter/sdk",
|
|
825
|
+
versionRange: ">=0.9.11 <1.0.0",
|
|
826
|
+
filePath: "esm/sdk/embeddings.js"
|
|
827
|
+
},
|
|
828
|
+
functionQuery: {
|
|
829
|
+
className: "Embeddings",
|
|
830
|
+
methodName: "generate",
|
|
831
|
+
kind: "Async"
|
|
832
|
+
}
|
|
833
|
+
},
|
|
834
|
+
{
|
|
835
|
+
channelName: openRouterChannels.betaResponsesSend.channelName,
|
|
836
|
+
module: {
|
|
837
|
+
name: "@openrouter/sdk",
|
|
838
|
+
versionRange: ">=0.9.11 <1.0.0",
|
|
839
|
+
filePath: "esm/sdk/responses.js"
|
|
840
|
+
},
|
|
841
|
+
functionQuery: {
|
|
842
|
+
className: "Responses",
|
|
843
|
+
methodName: "send",
|
|
844
|
+
kind: "Async"
|
|
845
|
+
}
|
|
846
|
+
},
|
|
847
|
+
{
|
|
848
|
+
channelName: openRouterChannels.callModel.channelName,
|
|
849
|
+
module: {
|
|
850
|
+
name: "@openrouter/sdk",
|
|
851
|
+
versionRange: ">=0.9.11 <1.0.0",
|
|
852
|
+
filePath: "esm/sdk/sdk.js"
|
|
853
|
+
},
|
|
854
|
+
functionQuery: {
|
|
855
|
+
className: "OpenRouter",
|
|
856
|
+
methodName: "callModel",
|
|
857
|
+
kind: "Sync"
|
|
858
|
+
}
|
|
859
|
+
}
|
|
860
|
+
];
|
|
861
|
+
|
|
862
|
+
// src/auto-instrumentations/bundler/webpack-loader.ts
|
|
863
|
+
function getModuleVersion(basedir) {
|
|
864
|
+
try {
|
|
865
|
+
const packageJsonPath = (0, import_path.join)(basedir, "package.json");
|
|
866
|
+
const packageJson = JSON.parse((0, import_fs.readFileSync)(packageJsonPath, "utf8"));
|
|
867
|
+
if (packageJson.version) {
|
|
868
|
+
return packageJson.version;
|
|
869
|
+
}
|
|
870
|
+
} catch (error) {
|
|
871
|
+
}
|
|
872
|
+
return void 0;
|
|
873
|
+
}
|
|
874
|
+
var matcherCache = /* @__PURE__ */ new Map();
|
|
875
|
+
function getMatcher(options) {
|
|
876
|
+
const allInstrumentations = [
|
|
877
|
+
...openaiConfigs,
|
|
878
|
+
...anthropicConfigs,
|
|
879
|
+
...aiSDKConfigs,
|
|
880
|
+
...claudeAgentSDKConfigs,
|
|
881
|
+
...googleGenAIConfigs,
|
|
882
|
+
...openRouterConfigs,
|
|
883
|
+
...options.instrumentations ?? []
|
|
884
|
+
];
|
|
885
|
+
const dcModule = options.browser ? "dc-browser" : void 0;
|
|
886
|
+
const configHash = JSON.stringify({ allInstrumentations, dcModule });
|
|
887
|
+
if (matcherCache.has(configHash)) {
|
|
888
|
+
return matcherCache.get(configHash);
|
|
889
|
+
}
|
|
890
|
+
for (const [hash, matcher2] of matcherCache.entries()) {
|
|
891
|
+
if (hash !== configHash) {
|
|
892
|
+
matcher2.free();
|
|
893
|
+
matcherCache.delete(hash);
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
const matcher = (0, import_code_transformer.create)(allInstrumentations, dcModule ?? null);
|
|
897
|
+
matcherCache.set(configHash, matcher);
|
|
898
|
+
return matcher;
|
|
899
|
+
}
|
|
900
|
+
process.on("exit", () => {
|
|
901
|
+
for (const matcher of matcherCache.values()) {
|
|
902
|
+
matcher.free();
|
|
903
|
+
}
|
|
904
|
+
matcherCache.clear();
|
|
905
|
+
});
|
|
906
|
+
function codeTransformerLoader(code, inputSourceMap) {
|
|
907
|
+
const callback = this.async();
|
|
908
|
+
const options = this.getOptions() ?? {};
|
|
909
|
+
const resourcePath = this.resourcePath;
|
|
910
|
+
if (!resourcePath) {
|
|
911
|
+
return callback(null, code, inputSourceMap);
|
|
912
|
+
}
|
|
913
|
+
const ext = (0, import_path.extname)(resourcePath);
|
|
914
|
+
let isModule = ext === ".mjs" || ext === ".ts" || ext === ".tsx";
|
|
915
|
+
if (ext === ".js") {
|
|
916
|
+
isModule = code.includes("export ") || code.includes("import ");
|
|
917
|
+
}
|
|
918
|
+
const normalizedForPlatform = resourcePath.split("/").join(import_path.sep);
|
|
919
|
+
const moduleDetails = (0, import_module_details_from_path.default)(normalizedForPlatform);
|
|
920
|
+
if (!moduleDetails) {
|
|
921
|
+
return callback(null, code, inputSourceMap);
|
|
922
|
+
}
|
|
923
|
+
const moduleName = moduleDetails.name;
|
|
924
|
+
const moduleVersion = getModuleVersion(moduleDetails.basedir);
|
|
925
|
+
if (!moduleVersion) {
|
|
926
|
+
return callback(null, code, inputSourceMap);
|
|
927
|
+
}
|
|
928
|
+
const normalizedModulePath = moduleDetails.path.replace(/\\/g, "/");
|
|
929
|
+
const matcher = getMatcher(options);
|
|
930
|
+
const transformer = matcher.getTransformer(
|
|
931
|
+
moduleName,
|
|
932
|
+
moduleVersion,
|
|
933
|
+
normalizedModulePath
|
|
934
|
+
);
|
|
935
|
+
if (!transformer) {
|
|
936
|
+
return callback(null, code, inputSourceMap);
|
|
937
|
+
}
|
|
938
|
+
try {
|
|
939
|
+
const moduleType = isModule ? "esm" : "cjs";
|
|
940
|
+
const result = transformer.transform(code, moduleType);
|
|
941
|
+
callback(null, result.code, result.map ?? void 0);
|
|
942
|
+
} catch (error) {
|
|
943
|
+
console.warn(
|
|
944
|
+
`[code-transformer-loader] Error transforming ${resourcePath}:`,
|
|
945
|
+
error
|
|
946
|
+
);
|
|
947
|
+
callback(null, code, inputSourceMap);
|
|
948
|
+
} finally {
|
|
949
|
+
transformer.free();
|
|
950
|
+
}
|
|
951
|
+
}
|
|
952
|
+
module.exports = codeTransformerLoader;
|