bitfab 0.66.0 → 0.68.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/{autoTrace-CQw0qMBt.cjs → autoTrace-BikML0lX.cjs} +86 -4
- package/dist/autoTrace-BikML0lX.cjs.map +1 -0
- package/dist/{autoTrace-O40k8f5M.js → autoTrace-CVt9EDyo.js} +75 -5
- package/dist/autoTrace-CVt9EDyo.js.map +1 -0
- package/dist/autoTrace.cjs +3 -1
- package/dist/autoTrace.d.cts +23 -0
- package/dist/autoTrace.d.ts +23 -0
- package/dist/autoTrace.js +1 -1
- package/dist/{babelPlugin-C70OxrqA.js → babelPlugin-a7ofCoOd.js} +83 -4
- package/dist/babelPlugin-a7ofCoOd.js.map +1 -0
- package/dist/{babelPlugin-Nta4-VcL.cjs → babelPlugin-s8EFjT6e.cjs} +83 -4
- package/dist/babelPlugin-s8EFjT6e.cjs.map +1 -0
- package/dist/{http-D91qP2J-.js → http-_cgR_DM2.js} +3 -3
- package/dist/{http-D91qP2J-.js.map → http-_cgR_DM2.js.map} +1 -1
- package/dist/{http-DIz8mEMq.cjs → http-psFF1ptn.cjs} +3 -3
- package/dist/{http-DIz8mEMq.cjs.map → http-psFF1ptn.cjs.map} +1 -1
- package/dist/{index-DiYFr-KV.d.cts → index-j7SrvOqe.d.cts} +44 -2
- package/dist/{index-DiYFr-KV.d.ts → index-j7SrvOqe.d.ts} +44 -2
- package/dist/index.cjs +2 -2
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/node.cjs +3 -3
- package/dist/node.d.cts +2 -2
- package/dist/node.d.ts +2 -2
- package/dist/node.js +3 -3
- package/dist/registryCommand-Dk4Y1ZgW.js.map +1 -1
- package/dist/{src-CL5eQlNk.js → src-DyEKM7yn.js} +178 -14
- package/dist/src-DyEKM7yn.js.map +1 -0
- package/dist/{src-rJcHXJEz.cjs → src-Dze8o7iU.cjs} +178 -14
- package/dist/src-Dze8o7iU.cjs.map +1 -0
- package/dist/transform/babel.cjs +1 -1
- package/dist/transform/babel.d.cts +3 -0
- package/dist/transform/babel.d.ts +3 -0
- package/dist/transform/babel.js +1 -1
- package/dist/transform/loaderRuntime.cjs +2 -2
- package/dist/transform/loaderRuntime.js +2 -2
- package/dist/transform/nodeLoader.js +82 -3
- package/dist/transform/nodeLoader.js.map +1 -1
- package/dist/transform/swc.cjs +1 -1
- package/dist/transform/swc.js +1 -1
- package/dist/transform/unplugin.cjs +2 -2
- package/dist/transform/unplugin.js +2 -2
- package/dist/{transform-BjxHGGKc.cjs → transform-BBzrqpVH.cjs} +2 -2
- package/dist/{transform-BjxHGGKc.cjs.map → transform-BBzrqpVH.cjs.map} +1 -1
- package/dist/{transform-BcyUocwm.js → transform-DkcFn_tg.js} +2 -2
- package/dist/{transform-BcyUocwm.js.map → transform-DkcFn_tg.js.map} +1 -1
- package/package.json +2 -1
- package/dist/autoTrace-CQw0qMBt.cjs.map +0 -1
- package/dist/autoTrace-O40k8f5M.js.map +0 -1
- package/dist/babelPlugin-C70OxrqA.js.map +0 -1
- package/dist/babelPlugin-Nta4-VcL.cjs.map +0 -1
- package/dist/src-CL5eQlNk.js.map +0 -1
- package/dist/src-rJcHXJEz.cjs.map +0 -1
package/dist/transform/babel.cjs
CHANGED
|
@@ -2,5 +2,5 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_babelPlugin = require("../babelPlugin-
|
|
5
|
+
const require_babelPlugin = require("../babelPlugin-s8EFjT6e.cjs");
|
|
6
6
|
exports.default = require_babelPlugin.bitfabBabelPlugin;
|
|
@@ -9,10 +9,13 @@ interface BitfabPluginState extends PluginPass {
|
|
|
9
9
|
runtimeIdentifier?: ReturnType<BabelTypesApi["identifier"]>;
|
|
10
10
|
activeIdentifier?: ReturnType<BabelTypesApi["identifier"]>;
|
|
11
11
|
wrapperIdentifier?: ReturnType<BabelTypesApi["identifier"]>;
|
|
12
|
+
jevIdentifier?: ReturnType<BabelTypesApi["identifier"]>;
|
|
12
13
|
definitions?: Array<ReturnType<BabelTypesApi["variableDeclaration"]>>;
|
|
13
14
|
skipFile?: boolean;
|
|
15
|
+
bamlGenerated?: boolean;
|
|
14
16
|
usedRuntime?: boolean;
|
|
15
17
|
usedWrapper?: boolean;
|
|
18
|
+
usedJev?: boolean;
|
|
16
19
|
}
|
|
17
20
|
/**
|
|
18
21
|
* Babel adapter for Bitfab's experimental automatic call-span runtime.
|
|
@@ -9,10 +9,13 @@ interface BitfabPluginState extends PluginPass {
|
|
|
9
9
|
runtimeIdentifier?: ReturnType<BabelTypesApi["identifier"]>;
|
|
10
10
|
activeIdentifier?: ReturnType<BabelTypesApi["identifier"]>;
|
|
11
11
|
wrapperIdentifier?: ReturnType<BabelTypesApi["identifier"]>;
|
|
12
|
+
jevIdentifier?: ReturnType<BabelTypesApi["identifier"]>;
|
|
12
13
|
definitions?: Array<ReturnType<BabelTypesApi["variableDeclaration"]>>;
|
|
13
14
|
skipFile?: boolean;
|
|
15
|
+
bamlGenerated?: boolean;
|
|
14
16
|
usedRuntime?: boolean;
|
|
15
17
|
usedWrapper?: boolean;
|
|
18
|
+
usedJev?: boolean;
|
|
16
19
|
}
|
|
17
20
|
/**
|
|
18
21
|
* Babel adapter for Bitfab's experimental automatic call-span runtime.
|
package/dist/transform/babel.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as default } from "../babelPlugin-
|
|
1
|
+
export { t as default } from "../babelPlugin-a7ofCoOd.js";
|
|
@@ -24,8 +24,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
24
24
|
enumerable: true
|
|
25
25
|
}) : target, mod));
|
|
26
26
|
//#endregion
|
|
27
|
-
const require_babelPlugin = require("../babelPlugin-
|
|
28
|
-
const require_transform = require("../transform-
|
|
27
|
+
const require_babelPlugin = require("../babelPlugin-s8EFjT6e.cjs");
|
|
28
|
+
const require_transform = require("../transform-BBzrqpVH.cjs");
|
|
29
29
|
let _babel_core = require("@babel/core");
|
|
30
30
|
let path = require("path");
|
|
31
31
|
let _babel_plugin_proposal_decorators = require("@babel/plugin-proposal-decorators");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { i as sourceFilename, r as shouldTransformBitfabFile, t as bitfabBabelPlugin } from "../babelPlugin-
|
|
2
|
-
import { t as parserPlugins } from "../transform-
|
|
1
|
+
import { i as sourceFilename, r as shouldTransformBitfabFile, t as bitfabBabelPlugin } from "../babelPlugin-a7ofCoOd.js";
|
|
2
|
+
import { t as parserPlugins } from "../transform-DkcFn_tg.js";
|
|
3
3
|
import { transformFromAstSync, transformSync } from "@babel/core";
|
|
4
4
|
import { dirname } from "path";
|
|
5
5
|
import decoratorsPlugin from "@babel/plugin-proposal-decorators";
|
|
@@ -54,6 +54,11 @@ function functionName(path, types) {
|
|
|
54
54
|
const { line, column } = sourcePosition(path);
|
|
55
55
|
return `anonymous-${line}-${column}`;
|
|
56
56
|
}
|
|
57
|
+
const JEV_METHOD = "systemOne";
|
|
58
|
+
function isJevMethodDefinition(path, types) {
|
|
59
|
+
const parent = path.parentPath?.node;
|
|
60
|
+
return (types.isClassMethod(path.node) || types.isObjectMethod(path.node) || types.isObjectProperty(parent) || types.isClassProperty(parent)) && functionName(path, types) === JEV_METHOD;
|
|
61
|
+
}
|
|
57
62
|
function isInstrumentableFunction(node, types) {
|
|
58
63
|
if (node.generator || types.isClassPrivateMethod(node)) return false;
|
|
59
64
|
return !(types.isClassMethod(node) || types.isObjectMethod(node)) || node.kind === "method";
|
|
@@ -115,6 +120,24 @@ function withNodeFunctionName(path, types) {
|
|
|
115
120
|
if (types.isFunctionExpression(fn) && fn.id) return fn.id.name;
|
|
116
121
|
return null;
|
|
117
122
|
}
|
|
123
|
+
const BAML_GENERATED_HEADER = "This file was generated by BAML";
|
|
124
|
+
const BAML_CLIENT_CLASSES = /* @__PURE__ */ new Set(["BamlAsyncClient", "BamlSyncClient"]);
|
|
125
|
+
const BAML_OPTIONS_PARAMETER = "__baml_options__";
|
|
126
|
+
function isBamlGeneratedSource(code) {
|
|
127
|
+
return code.slice(0, 4096).includes(BAML_GENERATED_HEADER);
|
|
128
|
+
}
|
|
129
|
+
function isBamlClientMethod(path, types) {
|
|
130
|
+
const node = path.node;
|
|
131
|
+
if (!types.isClassMethod(node) || node.kind !== "method" || node.static) return false;
|
|
132
|
+
const classPath = path.parentPath?.parentPath;
|
|
133
|
+
if (!classPath || !(classPath.isClassDeclaration() || classPath.isClassExpression()) || !classPath.node.id || !BAML_CLIENT_CLASSES.has(classPath.node.id.name)) return false;
|
|
134
|
+
const parameters = runtimeParameters(node, types);
|
|
135
|
+
const last = parameters[parameters.length - 1];
|
|
136
|
+
return types.isIdentifier(last, { name: BAML_OPTIONS_PARAMETER });
|
|
137
|
+
}
|
|
138
|
+
function bamlOptionsDeclaration(callerOptions, withCollector, types) {
|
|
139
|
+
return types.variableDeclaration("const", [types.variableDeclarator(types.identifier(BAML_OPTIONS_PARAMETER), types.conditionalExpression(types.binaryExpression("===", types.cloneNode(withCollector), types.identifier("undefined")), types.cloneNode(callerOptions), types.callExpression(types.cloneNode(withCollector), [types.cloneNode(callerOptions), types.memberExpression(types.thisExpression(), types.identifier("bamlOptions"))])))]);
|
|
140
|
+
}
|
|
118
141
|
function runtimeParameters(node, types) {
|
|
119
142
|
return node.params.filter((parameter) => !types.isIdentifier(parameter, { name: "this" }));
|
|
120
143
|
}
|
|
@@ -138,6 +161,44 @@ function isRestWrapper(path, types) {
|
|
|
138
161
|
const parameters = runtimeParameters(path.node, types);
|
|
139
162
|
return parameters.length === 1 && types.isRestElement(parameters[0]);
|
|
140
163
|
}
|
|
164
|
+
function jevReceiver(node, types) {
|
|
165
|
+
const callee = node.callee;
|
|
166
|
+
if (!(types.isMemberExpression(callee) || types.isOptionalMemberExpression(callee)) || callee.computed || !types.isIdentifier(callee.property, { name: JEV_METHOD }) || types.isSuper(callee.object)) return null;
|
|
167
|
+
return callee.object;
|
|
168
|
+
}
|
|
169
|
+
function isOptionalChain(node, types) {
|
|
170
|
+
return types.isOptionalMemberExpression(node) || types.isOptionalCallExpression(node);
|
|
171
|
+
}
|
|
172
|
+
function continuesOptionalChain(path, types) {
|
|
173
|
+
const parent = path.parent;
|
|
174
|
+
return types.isOptionalMemberExpression(parent) && parent.object === path.node || types.isOptionalCallExpression(parent) && parent.callee === path.node;
|
|
175
|
+
}
|
|
176
|
+
function rewriteJevCall(path, state, types) {
|
|
177
|
+
if (state.skipFile || state.bamlGenerated || !state.jevIdentifier) return;
|
|
178
|
+
const node = path.node;
|
|
179
|
+
const receiver = jevReceiver(node, types);
|
|
180
|
+
if (receiver === null) return;
|
|
181
|
+
const optionalReceiver = types.isOptionalMemberExpression(node.callee) && node.callee.optional;
|
|
182
|
+
const optionalMethod = types.isOptionalCallExpression(node) && node.optional;
|
|
183
|
+
if (types.isOptionalCallExpression(node)) {
|
|
184
|
+
if (continuesOptionalChain(path, types) || !optionalReceiver && isOptionalChain(receiver, types)) return;
|
|
185
|
+
}
|
|
186
|
+
const guarded = optionalReceiver || optionalMethod;
|
|
187
|
+
const receiverReference = guarded && !path.scope.isStatic(receiver) ? path.scope.generateDeclaredUidIdentifier("bitfabJevReceiver") : null;
|
|
188
|
+
const receiverValue = () => receiverReference === null ? types.cloneNode(receiver) : types.cloneNode(receiverReference);
|
|
189
|
+
const call = types.callExpression(types.cloneNode(state.jevIdentifier), [receiverValue(), ...node.arguments]);
|
|
190
|
+
state.usedRuntime = true;
|
|
191
|
+
state.usedJev = true;
|
|
192
|
+
if (!guarded) {
|
|
193
|
+
path.replaceWith(call);
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
const firstReceiver = receiverReference === null ? types.cloneNode(receiver) : types.assignmentExpression("=", types.cloneNode(receiverReference), receiver);
|
|
197
|
+
const missing = (value) => types.binaryExpression("==", value, types.nullLiteral());
|
|
198
|
+
const methodOf = (value) => types.memberExpression(value, types.identifier(JEV_METHOD));
|
|
199
|
+
const test = optionalReceiver ? optionalMethod ? types.logicalExpression("||", missing(firstReceiver), missing(methodOf(receiverValue()))) : missing(firstReceiver) : missing(methodOf(firstReceiver));
|
|
200
|
+
path.replaceWith(types.conditionalExpression(test, types.unaryExpression("void", types.numericLiteral(0)), call));
|
|
201
|
+
}
|
|
141
202
|
function bitfabBabelPlugin(api) {
|
|
142
203
|
const { types } = api;
|
|
143
204
|
return {
|
|
@@ -149,9 +210,12 @@ function bitfabBabelPlugin(api) {
|
|
|
149
210
|
state.runtimeIdentifier = path.scope.generateUidIdentifier("bitfabAutoSpan");
|
|
150
211
|
state.activeIdentifier = path.scope.generateUidIdentifier("bitfabAutoTraceActive");
|
|
151
212
|
state.wrapperIdentifier = path.scope.generateUidIdentifier("bitfabAutoWrap");
|
|
213
|
+
state.jevIdentifier = path.scope.generateUidIdentifier("bitfabAutoJev");
|
|
214
|
+
state.bamlGenerated = isBamlGeneratedSource(state.file.code ?? "");
|
|
152
215
|
state.definitions = [];
|
|
153
216
|
state.usedRuntime = false;
|
|
154
217
|
state.usedWrapper = false;
|
|
218
|
+
state.usedJev = false;
|
|
155
219
|
},
|
|
156
220
|
exit(path, state) {
|
|
157
221
|
if (state.skipFile || !state.usedRuntime || !state.runtimeIdentifier || !state.activeIdentifier || !state.wrapperIdentifier) return;
|
|
@@ -160,7 +224,8 @@ function bitfabBabelPlugin(api) {
|
|
|
160
224
|
types.importDeclaration([
|
|
161
225
|
types.importSpecifier(state.runtimeIdentifier, types.identifier("__bitfabAutoSpan")),
|
|
162
226
|
types.importSpecifier(state.activeIdentifier, types.identifier("__bitfabAutoTraceActive")),
|
|
163
|
-
...state.usedWrapper ? [types.importSpecifier(state.wrapperIdentifier, types.identifier("__bitfabAutoWrap"))] : []
|
|
227
|
+
...state.usedWrapper ? [types.importSpecifier(state.wrapperIdentifier, types.identifier("__bitfabAutoWrap"))] : [],
|
|
228
|
+
...state.usedJev && state.jevIdentifier ? [types.importSpecifier(state.jevIdentifier, types.identifier("__bitfabAutoJev"))] : []
|
|
164
229
|
], types.stringLiteral(state.opts.runtimeModule ?? "bitfab/auto")),
|
|
165
230
|
types.variableDeclaration("const", [types.variableDeclarator(types.identifier(AUTO_TRACE_TRANSFORM_MARKER), types.assignmentExpression("=", types.memberExpression(types.identifier("globalThis"), types.identifier(AUTO_TRACE_TRANSFORM_MARKER)), types.booleanLiteral(true)))]),
|
|
166
231
|
...state.definitions ?? []
|
|
@@ -169,14 +234,24 @@ function bitfabBabelPlugin(api) {
|
|
|
169
234
|
},
|
|
170
235
|
CallExpression: { exit(path, state) {
|
|
171
236
|
if (state.skipFile) return;
|
|
237
|
+
if (jevReceiver(path.node, types) !== null) {
|
|
238
|
+
rewriteJevCall(path, state, types);
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
172
241
|
const configuredName = withNodeFunctionName(path, types);
|
|
173
242
|
if (configuredName === null) return;
|
|
174
243
|
if (path.node.arguments.length === 1) path.node.arguments.push(types.identifier("undefined"));
|
|
175
244
|
path.node.arguments.push(types.stringLiteral(configuredName));
|
|
176
245
|
} },
|
|
246
|
+
OptionalCallExpression: { exit(path, state) {
|
|
247
|
+
rewriteJevCall(path, state, types);
|
|
248
|
+
} },
|
|
177
249
|
Function: { exit(path, state) {
|
|
178
250
|
const node = path.node;
|
|
179
251
|
if (state.skipFile || node._bitfabInstrumented || !isInstrumentableFunction(node, types) || isTraceDecoratorRoot(path, types) || !state.runtimeIdentifier || !state.activeIdentifier || !state.wrapperIdentifier) return;
|
|
252
|
+
const bamlMethod = state.bamlGenerated === true && isBamlClientMethod(path, types);
|
|
253
|
+
if (state.bamlGenerated && !bamlMethod) return;
|
|
254
|
+
if (isJevMethodDefinition(path, types)) return;
|
|
180
255
|
const name = qualifiedFunctionName(path, types);
|
|
181
256
|
if (name.startsWith("anonymous-")) return;
|
|
182
257
|
const normalizedFilename = autoTraceFilename(state.file.opts.filename ?? "unknown", state.opts.cwd ?? state.file.opts.cwd ?? process.cwd());
|
|
@@ -188,6 +263,7 @@ function bitfabBabelPlugin(api) {
|
|
|
188
263
|
types.objectProperty(types.identifier("line"), types.numericLiteral(line)),
|
|
189
264
|
types.objectProperty(types.identifier("column"), types.numericLiteral(column)),
|
|
190
265
|
...node.async ? [types.objectProperty(types.identifier("async"), types.booleanLiteral(true))] : [],
|
|
266
|
+
...bamlMethod ? [types.objectProperty(types.identifier("baml"), types.booleanLiteral(true))] : [],
|
|
191
267
|
...isRestWrapper(path, types) ? [types.objectProperty(types.identifier("wrapper"), types.booleanLiteral(true))] : []
|
|
192
268
|
]);
|
|
193
269
|
const definitionIdentifier = path.scope.getProgramParent().generateUidIdentifier("bitfabAutoDefinition");
|
|
@@ -202,10 +278,13 @@ function bitfabBabelPlugin(api) {
|
|
|
202
278
|
const originalBody = types.isBlockStatement(node.body) ? node.body : types.blockStatement([types.returnStatement(node.body)]);
|
|
203
279
|
const directives = originalBody.directives;
|
|
204
280
|
originalBody.directives = [];
|
|
205
|
-
|
|
281
|
+
const callerOptions = bamlMethod ? path.scope.generateUidIdentifier("bitfabBamlOptions") : void 0;
|
|
282
|
+
const withCollector = bamlMethod ? path.scope.generateUidIdentifier("bitfabBamlWithCollector") : void 0;
|
|
283
|
+
const tracedBody = callerOptions && withCollector ? types.blockStatement([bamlOptionsDeclaration(callerOptions, withCollector, types), ...types.cloneNode(originalBody, true).body], []) : types.cloneNode(originalBody, true);
|
|
284
|
+
node.body = types.blockStatement([types.ifStatement(types.callExpression(types.cloneNode(state.activeIdentifier), []), types.blockStatement([...callerOptions ? [types.variableDeclaration("const", [types.variableDeclarator(callerOptions, types.identifier(BAML_OPTIONS_PARAMETER))])] : [], types.returnStatement(types.callExpression(types.cloneNode(state.runtimeIdentifier), [
|
|
206
285
|
types.cloneNode(definitionIdentifier),
|
|
207
286
|
parameterInputs(path, types),
|
|
208
|
-
types.arrowFunctionExpression([
|
|
287
|
+
types.arrowFunctionExpression(withCollector ? [types.cloneNode(withCollector)] : [], tracedBody, node.async ?? false)
|
|
209
288
|
]))])), ...originalBody.body], directives);
|
|
210
289
|
node._bitfabInstrumented = true;
|
|
211
290
|
state.usedRuntime = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeLoader.js","names":["resolvePath"],"sources":["../../../bitfab-typescript-transform/src/transformOptions.ts","../../../bitfab-typescript-transform/src/babelPlugin.ts","../../../bitfab-typescript-transform/src/transform.ts","../../../bitfab-typescript-transform/src/loaderRuntime.ts","../../../bitfab-typescript-transform/src/nodeLoader.ts"],"sourcesContent":["export interface BitfabTransformOptions {\n /** Module that exports the automatic span runtime. */\n runtimeModule?: string\n /** Working directory removed from generated function IDs. */\n cwd?: string\n /** Return false to leave a file unchanged. */\n include?: (filename: string) => boolean\n}\n\nconst AUTO_TRACE_FUNCTION_ID_VERSION = \"ts-auto-v1\"\nexport const AUTO_TRACE_TRANSFORM_MARKER =\n \"__bitfab_auto_trace_transformed_v1__\"\n\nexport function autoTraceFunctionId(file: string, name: string): string {\n return `${AUTO_TRACE_FUNCTION_ID_VERSION}:${file}#${name}`\n}\n\nexport function sourceFilename(filename: string): string {\n return filename.replace(/\\\\/g, \"/\").split(/[?#]/, 1)[0] ?? \"\"\n}\n\nexport function autoTraceFilename(filename: string, cwd: string): string {\n const normalized = sourceFilename(filename)\n const normalizedCwd = cwd.replace(/\\\\/g, \"/\").replace(/\\/$/, \"\")\n return normalized.startsWith(`${normalizedCwd}/`)\n ? normalized.slice(normalizedCwd.length + 1)\n : normalized\n}\n\nexport function shouldTransformBitfabFile(\n filename: string,\n options: BitfabTransformOptions,\n): boolean {\n if (!filename) {\n return false\n }\n if (options.include && !options.include(filename)) {\n return false\n }\n\n const normalized = sourceFilename(filename)\n const normalizedCwd = options.cwd?.replace(/\\\\/g, \"/\").replace(/\\/$/, \"\")\n const isAbsolute =\n normalized.startsWith(\"/\") || /^[A-Za-z]:\\//.test(normalized)\n if (\n normalizedCwd &&\n isAbsolute &&\n normalized !== normalizedCwd &&\n !normalized.startsWith(`${normalizedCwd}/`)\n ) {\n return false\n }\n return (\n !normalized.includes(\"/node_modules/\") &&\n !normalized.endsWith(\".d.ts\") &&\n /\\.[cm]?[jt]sx?$/.test(normalized)\n )\n}\n","import type { NodePath, PluginObject, PluginPass } from \"@babel/core\"\nimport type * as BabelTypes from \"@babel/types\"\nimport type { BitfabTransformOptions } from \"./transformOptions.js\"\nimport {\n AUTO_TRACE_TRANSFORM_MARKER,\n autoTraceFilename,\n autoTraceFunctionId,\n shouldTransformBitfabFile,\n} from \"./transformOptions.js\"\n\ntype BabelTypesApi = typeof BabelTypes\n\ntype BitfabPluginOptions = BitfabTransformOptions\n\ninterface BitfabPluginState extends PluginPass {\n opts: BitfabPluginOptions\n runtimeIdentifier?: ReturnType<BabelTypesApi[\"identifier\"]>\n activeIdentifier?: ReturnType<BabelTypesApi[\"identifier\"]>\n wrapperIdentifier?: ReturnType<BabelTypesApi[\"identifier\"]>\n definitions?: Array<ReturnType<BabelTypesApi[\"variableDeclaration\"]>>\n skipFile?: boolean\n usedRuntime?: boolean\n usedWrapper?: boolean\n}\n\ninterface InstrumentedFunction {\n _bitfabInstrumented?: boolean\n}\n\nfunction propertyName(\n node: BabelTypes.Node | null | undefined,\n types: BabelTypesApi,\n): string | null {\n if (types.isIdentifier(node)) {\n return node.name\n }\n if (types.isStringLiteral(node)) {\n return node.value\n }\n return null\n}\n\nfunction functionName(\n path: NodePath<BabelTypes.Function>,\n types: BabelTypesApi,\n): string {\n const node = path.node\n if (types.isFunctionDeclaration(node) || types.isFunctionExpression(node)) {\n if (node.id) {\n return node.id.name\n }\n }\n\n if (\n (types.isClassMethod(node) || types.isObjectMethod(node)) &&\n !node.computed &&\n types.isIdentifier(node.key)\n ) {\n return node.key.name\n }\n\n const parent = path.parentPath?.node\n if (types.isVariableDeclarator(parent)) {\n return propertyName(parent.id, types) ?? \"anonymous\"\n }\n if (types.isObjectProperty(parent) && !parent.computed) {\n return propertyName(parent.key, types) ?? \"anonymous\"\n }\n if (types.isClassProperty(parent) && !parent.computed) {\n const name = propertyName(parent.key, types)\n if (name) {\n return name\n }\n }\n\n const { line, column } = sourcePosition(path)\n return `anonymous-${line}-${column}`\n}\n\nfunction isInstrumentableFunction(\n node: BabelTypes.Function,\n types: BabelTypesApi,\n): boolean {\n if (node.generator || types.isClassPrivateMethod(node)) {\n return false\n }\n return (\n !(types.isClassMethod(node) || types.isObjectMethod(node)) ||\n node.kind === \"method\"\n )\n}\n\nfunction sourcePosition(path: NodePath<BabelTypes.Function>): {\n line: number\n column: number\n} {\n const exportDeclaration = path.parentPath?.isExportDeclaration()\n ? path.parentPath.node\n : undefined\n const start = (exportDeclaration ?? path.node).loc?.start\n return { line: start?.line ?? 0, column: start?.column ?? 0 }\n}\n\nfunction qualifiedFunctionName(\n path: NodePath<BabelTypes.Function>,\n types: BabelTypesApi,\n): string {\n const ownName = functionName(path, types)\n if (ownName.startsWith(\"anonymous-\")) {\n return ownName\n }\n const scopes: string[] = []\n let ancestor: NodePath | null = path.parentPath\n while (ancestor) {\n if (ancestor.isFunction()) {\n if (!isInstrumentableFunction(ancestor.node, types)) {\n ancestor = ancestor.parentPath\n continue\n }\n const name = functionName(\n ancestor as NodePath<BabelTypes.Function>,\n types,\n )\n if (!name.startsWith(\"anonymous-\")) {\n scopes.unshift(name)\n }\n } else if (\n (ancestor.isClassDeclaration() || ancestor.isClassExpression()) &&\n ancestor.node.id\n ) {\n scopes.unshift(ancestor.node.id.name)\n } else if (ancestor.isObjectExpression()) {\n const parent = ancestor.parentPath?.node\n if (types.isVariableDeclarator(parent)) {\n const name = propertyName(parent.id, types)\n if (name) {\n scopes.unshift(name)\n }\n } else if (types.isObjectProperty(parent) && !parent.computed) {\n const name = propertyName(parent.key, types)\n if (name) {\n scopes.unshift(name)\n }\n }\n }\n ancestor = ancestor.parentPath\n }\n return [...scopes, ownName].join(\".\")\n}\n\nfunction isTraceDecoratorRoot(\n path: NodePath<BabelTypes.Function>,\n types: BabelTypesApi,\n): boolean {\n const node = path.node\n const parent = path.parentPath?.node\n const decorated =\n types.isClassMethod(node) || types.isClassPrivateMethod(node)\n ? node\n : types.isClassProperty(parent) && parent.value === node\n ? parent\n : null\n if (!decorated) {\n return false\n }\n\n return (\n decorated.decorators?.some((decorator) => {\n const expression = decorator.expression\n if (!types.isCallExpression(expression)) {\n return false\n }\n const callee = expression.callee\n return (\n types.isMemberExpression(callee) &&\n !callee.computed &&\n types.isIdentifier(callee.property, { name: \"trace\" })\n )\n }) ?? false\n )\n}\n\nfunction withNodeFunctionName(\n path: NodePath<BabelTypes.CallExpression>,\n types: BabelTypesApi,\n): string | null {\n if (path.node.arguments.length > 2) {\n return null\n }\n const callee = path.node.callee\n if (\n !types.isMemberExpression(callee) ||\n callee.computed ||\n !types.isIdentifier(callee.property, { name: \"withNode\" })\n ) {\n return null\n }\n const fn = path.node.arguments[path.node.arguments.length - 1]\n if (types.isIdentifier(fn)) {\n return fn.name\n }\n if (types.isMemberExpression(fn) && !fn.computed) {\n return propertyName(fn.property, types)\n }\n if (types.isFunctionExpression(fn) && fn.id) {\n return fn.id.name\n }\n return null\n}\n\nfunction runtimeParameters(\n node: BabelTypes.Function,\n types: BabelTypesApi,\n): BabelTypes.Function[\"params\"] {\n return node.params.filter(\n (parameter) => !types.isIdentifier(parameter, { name: \"this\" }),\n )\n}\n\nfunction parameterInputs(\n path: NodePath<BabelTypes.Function>,\n types: BabelTypesApi,\n): ReturnType<BabelTypesApi[\"arrayExpression\"]> {\n const elements: Array<BabelTypes.Expression | BabelTypes.SpreadElement> = []\n\n for (const [index, parameter] of runtimeParameters(\n path.node,\n types,\n ).entries()) {\n if (!types.isArrowFunctionExpression(path.node)) {\n if (types.isRestElement(parameter)) {\n elements.push(\n types.spreadElement(\n types.callExpression(\n types.memberExpression(\n types.arrayExpression([\n types.spreadElement(types.identifier(\"arguments\")),\n ]),\n types.identifier(\"slice\"),\n ),\n [types.numericLiteral(index)],\n ),\n ),\n )\n } else {\n elements.push(\n types.memberExpression(\n types.identifier(\"arguments\"),\n types.numericLiteral(index),\n true,\n ),\n )\n }\n continue\n }\n\n if (types.isIdentifier(parameter)) {\n elements.push(types.identifier(parameter.name))\n } else if (\n types.isRestElement(parameter) &&\n types.isIdentifier(parameter.argument)\n ) {\n elements.push(\n types.spreadElement(types.identifier(parameter.argument.name)),\n )\n }\n }\n\n return types.arrayExpression(elements)\n}\n\nfunction needsArgumentWrapper(\n path: NodePath<BabelTypes.Function>,\n types: BabelTypesApi,\n): boolean {\n return (\n types.isArrowFunctionExpression(path.node) &&\n path.node.params.some(\n (parameter) =>\n !types.isIdentifier(parameter) &&\n !(\n types.isRestElement(parameter) &&\n types.isIdentifier(parameter.argument)\n ),\n )\n )\n}\n\nfunction isRestWrapper(\n path: NodePath<BabelTypes.Function>,\n types: BabelTypesApi,\n): boolean {\n const parameters = runtimeParameters(path.node, types)\n return parameters.length === 1 && types.isRestElement(parameters[0])\n}\n\n/**\n * Babel adapter for Bitfab's experimental automatic call-span runtime.\n *\n * @experimental The transform protocol and generated function identities may\n * change before the feature is stable.\n */\nexport default function bitfabBabelPlugin(api: {\n types: BabelTypesApi\n}): PluginObject<BitfabPluginState> {\n const { types } = api\n\n return {\n name: \"bitfab-auto-trace\",\n visitor: {\n Program: {\n enter(path: NodePath<BabelTypes.Program>, state: BitfabPluginState) {\n const filename = state.file.opts.filename ?? \"unknown\"\n state.skipFile =\n !shouldTransformBitfabFile(filename, state.opts) ||\n path.scope.hasBinding(AUTO_TRACE_TRANSFORM_MARKER) ||\n path.node.directives.some(\n (directive) => directive.value.value === \"use client\",\n )\n state.runtimeIdentifier =\n path.scope.generateUidIdentifier(\"bitfabAutoSpan\")\n state.activeIdentifier = path.scope.generateUidIdentifier(\n \"bitfabAutoTraceActive\",\n )\n state.wrapperIdentifier =\n path.scope.generateUidIdentifier(\"bitfabAutoWrap\")\n state.definitions = []\n state.usedRuntime = false\n state.usedWrapper = false\n },\n exit(path: NodePath<BabelTypes.Program>, state: BitfabPluginState) {\n if (\n state.skipFile ||\n !state.usedRuntime ||\n !state.runtimeIdentifier ||\n !state.activeIdentifier ||\n !state.wrapperIdentifier\n ) {\n return\n }\n\n state.file.metadata[AUTO_TRACE_TRANSFORM_MARKER] = true\n path.unshiftContainer(\"body\", [\n types.importDeclaration(\n [\n types.importSpecifier(\n state.runtimeIdentifier,\n types.identifier(\"__bitfabAutoSpan\"),\n ),\n types.importSpecifier(\n state.activeIdentifier,\n types.identifier(\"__bitfabAutoTraceActive\"),\n ),\n ...(state.usedWrapper\n ? [\n types.importSpecifier(\n state.wrapperIdentifier,\n types.identifier(\"__bitfabAutoWrap\"),\n ),\n ]\n : []),\n ],\n types.stringLiteral(\n state.opts.runtimeModule ?? \"bitfab/auto\",\n ),\n ),\n types.variableDeclaration(\"const\", [\n types.variableDeclarator(\n types.identifier(AUTO_TRACE_TRANSFORM_MARKER),\n types.assignmentExpression(\n \"=\",\n types.memberExpression(\n types.identifier(\"globalThis\"),\n types.identifier(AUTO_TRACE_TRANSFORM_MARKER),\n ),\n types.booleanLiteral(true),\n ),\n ),\n ]),\n ...(state.definitions ?? []),\n ])\n },\n },\n CallExpression: {\n exit(\n path: NodePath<BabelTypes.CallExpression>,\n state: BitfabPluginState,\n ) {\n if (state.skipFile) {\n return\n }\n const configuredName = withNodeFunctionName(path, types)\n if (configuredName === null) {\n return\n }\n if (path.node.arguments.length === 1) {\n path.node.arguments.push(types.identifier(\"undefined\"))\n }\n path.node.arguments.push(types.stringLiteral(configuredName))\n },\n },\n Function: {\n exit(path: NodePath<BabelTypes.Function>, state: BitfabPluginState) {\n const node = path.node as typeof path.node & InstrumentedFunction\n if (\n state.skipFile ||\n node._bitfabInstrumented ||\n !isInstrumentableFunction(node, types) ||\n isTraceDecoratorRoot(path, types) ||\n !state.runtimeIdentifier ||\n !state.activeIdentifier ||\n !state.wrapperIdentifier\n ) {\n return\n }\n const name = qualifiedFunctionName(path, types)\n if (name.startsWith(\"anonymous-\")) {\n return\n }\n const normalizedFilename = autoTraceFilename(\n state.file.opts.filename ?? \"unknown\",\n state.opts.cwd ?? state.file.opts.cwd ?? process.cwd(),\n )\n const { line, column } = sourcePosition(path)\n const definition = types.objectExpression([\n types.objectProperty(\n types.identifier(\"id\"),\n types.stringLiteral(\n autoTraceFunctionId(normalizedFilename, name),\n ),\n ),\n types.objectProperty(\n types.identifier(\"name\"),\n types.stringLiteral(name),\n ),\n types.objectProperty(\n types.identifier(\"file\"),\n types.stringLiteral(normalizedFilename),\n ),\n types.objectProperty(\n types.identifier(\"line\"),\n types.numericLiteral(line),\n ),\n types.objectProperty(\n types.identifier(\"column\"),\n types.numericLiteral(column),\n ),\n ...(node.async\n ? [\n types.objectProperty(\n types.identifier(\"async\"),\n types.booleanLiteral(true),\n ),\n ]\n : []),\n ...(isRestWrapper(path, types)\n ? [\n types.objectProperty(\n types.identifier(\"wrapper\"),\n types.booleanLiteral(true),\n ),\n ]\n : []),\n ])\n const definitionIdentifier = path.scope\n .getProgramParent()\n .generateUidIdentifier(\"bitfabAutoDefinition\")\n state.definitions?.push(\n types.variableDeclaration(\"const\", [\n types.variableDeclarator(definitionIdentifier, definition),\n ]),\n )\n\n if (needsArgumentWrapper(path, types)) {\n node._bitfabInstrumented = true\n path.replaceWith(\n types.callExpression(types.cloneNode(state.wrapperIdentifier), [\n types.cloneNode(definitionIdentifier),\n node as BabelTypes.ArrowFunctionExpression,\n ]),\n )\n state.usedRuntime = true\n state.usedWrapper = true\n return\n }\n\n const originalBody = types.isBlockStatement(node.body)\n ? node.body\n : types.blockStatement([types.returnStatement(node.body)])\n const directives = originalBody.directives\n originalBody.directives = []\n\n const body = types.blockStatement(\n [\n types.ifStatement(\n types.callExpression(\n types.cloneNode(state.activeIdentifier),\n [],\n ),\n types.blockStatement([\n types.returnStatement(\n types.callExpression(\n types.cloneNode(state.runtimeIdentifier),\n [\n types.cloneNode(definitionIdentifier),\n parameterInputs(path, types),\n types.arrowFunctionExpression(\n [],\n types.cloneNode(originalBody, true),\n node.async ?? false,\n ),\n ],\n ),\n ),\n ]),\n ),\n ...originalBody.body,\n ],\n directives,\n )\n node.body = body\n node._bitfabInstrumented = true\n state.usedRuntime = true\n },\n },\n },\n }\n}\n","import { type InputOptions, transformSync } from \"@babel/core\"\nimport bitfabBabelPlugin from \"./babelPlugin.js\"\nimport type { BitfabTransformOptions } from \"./transformOptions.js\"\nimport {\n AUTO_TRACE_TRANSFORM_MARKER,\n shouldTransformBitfabFile,\n sourceFilename,\n} from \"./transformOptions.js\"\n\nexport type { BitfabTransformOptions } from \"./transformOptions.js\"\n\ntype ParserPlugin = NonNullable<\n NonNullable<InputOptions[\"parserOpts\"]>[\"plugins\"]\n>[number]\n\nexport interface BitfabSourceMap {\n version: number\n sources: string[]\n names: string[]\n mappings: string\n file?: string\n sourceRoot?: string\n sourcesContent?: Array<string | null>\n}\n\nexport interface BitfabTransformResult {\n code: string\n map?: BitfabSourceMap\n}\n\nexport function parserPlugins(filename: string): ParserPlugin[] {\n const path = sourceFilename(filename)\n const typescript = /\\.[cm]?tsx?$/.test(path)\n const jsx = /\\.tsx$/.test(path) || /\\.[cm]?jsx?$/.test(path)\n return [\n ...(typescript ? ([\"typescript\"] as const) : []),\n ...(jsx ? ([\"jsx\"] as const) : []),\n \"decorators\",\n ]\n}\n\nexport function transformBitfabSource(\n source: string,\n filename: string,\n options: BitfabTransformOptions = {},\n): BitfabTransformResult {\n if (!shouldTransformBitfabFile(filename, options)) {\n return { code: source }\n }\n const result = transformSync(source, {\n babelrc: false,\n configFile: false,\n filename: sourceFilename(filename),\n parserOpts: { plugins: parserPlugins(filename), sourceType: \"module\" },\n plugins: [[bitfabBabelPlugin, options]],\n sourceMaps: true,\n })\n if (!result?.code || !result.metadata?.[AUTO_TRACE_TRANSFORM_MARKER]) {\n return { code: source }\n }\n return {\n code: result.code,\n ...(result.map ? { map: result.map as BitfabSourceMap } : {}),\n }\n}\n","import { dirname } from \"node:path\"\nimport {\n type PluginItem,\n transformFromAstSync,\n transformSync,\n} from \"@babel/core\"\nimport decoratorsPlugin from \"@babel/plugin-proposal-decorators\"\nimport commonJsPlugin from \"@babel/plugin-transform-modules-commonjs\"\nimport reactJsxPlugin from \"@babel/plugin-transform-react-jsx\"\nimport typeScriptPlugin from \"@babel/plugin-transform-typescript\"\nimport { getTsconfig, parseTsconfig, type TsConfigJson } from \"get-tsconfig\"\nimport bitfabBabelPlugin from \"./babelPlugin.js\"\nimport { parserPlugins } from \"./transform.js\"\nimport type { BitfabTransformOptions } from \"./transformOptions.js\"\nimport {\n shouldTransformBitfabFile,\n sourceFilename,\n} from \"./transformOptions.js\"\n\nexport interface BitfabLoaderOptions\n extends Omit<BitfabTransformOptions, \"include\"> {\n tsconfig?: string\n}\n\nexport interface BitfabJavaScriptTransformResult {\n code: string\n map?: string\n}\n\ntype CompilerOptions = NonNullable<TsConfigJson[\"compilerOptions\"]>\n\nfunction readCompilerOptions(\n filename: string,\n configuredPath: string | undefined,\n): CompilerOptions {\n const config = configuredPath\n ? parseTsconfig(configuredPath)\n : getTsconfig(dirname(filename))?.config\n return config?.compilerOptions ?? {}\n}\n\nfunction reactJsxOptions(compilerOptions: CompilerOptions): PluginItem {\n if (compilerOptions.jsx === \"react\") {\n return [\n reactJsxPlugin,\n {\n runtime: \"classic\",\n ...(compilerOptions.jsxFactory && {\n pragma: compilerOptions.jsxFactory,\n }),\n ...(compilerOptions.jsxFragmentFactory && {\n pragmaFrag: compilerOptions.jsxFragmentFactory,\n }),\n },\n ]\n }\n return [\n reactJsxPlugin,\n {\n runtime: \"automatic\",\n importSource: compilerOptions.jsxImportSource ?? \"react\",\n },\n ]\n}\n\nfunction compilePlugins(\n filename: string,\n compilerOptions: CompilerOptions,\n format: \"commonjs\" | \"module\" | undefined,\n): PluginItem[] {\n const path = sourceFilename(filename)\n const isTypeScript = /\\.[cm]?tsx?$/.test(path)\n const hasJsx = /\\.[jt]sx$/.test(path)\n const isCommonJs = format === \"commonjs\" || path.endsWith(\".cts\")\n return [\n ...(isTypeScript\n ? [\n [\n typeScriptPlugin,\n {\n onlyRemoveTypeImports:\n compilerOptions.verbatimModuleSyntax === true,\n },\n ] satisfies PluginItem,\n ]\n : []),\n [\n decoratorsPlugin,\n {\n version: compilerOptions.experimentalDecorators ? \"legacy\" : \"2023-11\",\n },\n ],\n ...(hasJsx ? [reactJsxOptions(compilerOptions)] : []),\n ...(isCommonJs ? [commonJsPlugin] : []),\n ]\n}\n\nexport function transformBitfabModuleToJavaScript(\n source: string,\n filename: string,\n options: BitfabLoaderOptions = {},\n format?: \"commonjs\" | \"module\",\n sourceMapMode: \"external\" | \"inline\" = \"external\",\n): BitfabJavaScriptTransformResult {\n const { tsconfig, ...transformOptions } = options\n if (!shouldTransformBitfabFile(filename, transformOptions)) {\n return { code: source }\n }\n const sourceFile = sourceFilename(filename)\n const instrumented = transformSync(source, {\n ast: true,\n babelrc: false,\n code: false,\n configFile: false,\n filename: sourceFile,\n parserOpts: { plugins: parserPlugins(filename), sourceType: \"module\" },\n plugins: [[bitfabBabelPlugin, transformOptions]],\n })\n if (!instrumented?.ast) {\n throw new Error(`Bitfab could not parse ${sourceFile}`)\n }\n const compiled = transformFromAstSync(instrumented.ast, source, {\n babelrc: false,\n cloneInputAst: false,\n configFile: false,\n filename: sourceFile,\n plugins: compilePlugins(\n filename,\n readCompilerOptions(filename, tsconfig),\n format,\n ),\n sourceMaps: sourceMapMode === \"inline\" ? \"inline\" : true,\n })\n if (compiled?.code === undefined || compiled.code === null) {\n throw new Error(`Bitfab could not compile ${sourceFile}`)\n }\n return {\n code: compiled.code,\n ...(compiled.map ? { map: JSON.stringify(compiled.map) } : {}),\n }\n}\n","import { readFile } from \"node:fs/promises\"\nimport { createRequire } from \"node:module\"\nimport { isAbsolute, relative, resolve as resolvePath } from \"node:path\"\nimport { fileURLToPath, pathToFileURL } from \"node:url\"\nimport { transformBitfabModuleToJavaScript } from \"./loaderRuntime.js\"\nimport { shouldTransformBitfabFile } from \"./transformOptions.js\"\n\nconst runtimeParentURL =\n process.env.BITFAB_SDK_RESOLVE_FROM === undefined\n ? import.meta.url\n : pathToFileURL(resolvePath(process.env.BITFAB_SDK_RESOLVE_FROM)).href\n\ninterface NodeResolveContext {\n parentURL?: string\n conditions?: string[]\n importAttributes?: Record<string, string>\n}\n\nexport async function resolve(\n specifier: string,\n context: NodeResolveContext,\n nextResolve: (\n specifier: string,\n context: NodeResolveContext,\n ) => Promise<{ url: string }>,\n): Promise<{ url: string }> {\n return specifier === \"bitfab:runtime/auto\"\n ? nextResolve(\"bitfab/auto\", {\n ...context,\n parentURL: runtimeParentURL,\n })\n : nextResolve(specifier, context)\n}\n\ninterface NodeLoadContext {\n format?: string\n}\n\ninterface NodeLoadResult {\n format?: string\n shortCircuit?: boolean\n source?: string | ArrayBuffer | Uint8Array\n}\n\ntype NextLoad = (\n url: string,\n context: NodeLoadContext,\n) => Promise<NodeLoadResult>\n\nfunction runtimeFormat(\n format: string | undefined,\n filename: string,\n): \"commonjs\" | \"module\" {\n return format?.startsWith(\"commonjs\") || /\\.c(?:js|ts)$/.test(filename)\n ? \"commonjs\"\n : \"module\"\n}\n\nfunction isInsideWorkingDirectory(filename: string): boolean {\n const path = relative(process.cwd(), filename)\n return (\n path !== \"..\" &&\n !path.startsWith(`..${process.platform === \"win32\" ? \"\\\\\" : \"/\"}`) &&\n !isAbsolute(path)\n )\n}\n\nexport async function load(\n url: string,\n context: NodeLoadContext,\n nextLoad: NextLoad,\n): Promise<NodeLoadResult> {\n if (!url.startsWith(\"file:\")) {\n return nextLoad(url, context)\n }\n\n const filename = fileURLToPath(url)\n if (\n !isInsideWorkingDirectory(filename) ||\n !shouldTransformBitfabFile(filename, {})\n ) {\n return nextLoad(url, context)\n }\n\n const source = await readFile(filename, \"utf8\")\n const format = runtimeFormat(context.format, filename)\n const transformed = transformBitfabModuleToJavaScript(\n source,\n filename,\n format === \"commonjs\"\n ? {\n runtimeModule:\n createRequire(runtimeParentURL).resolve(\"bitfab/auto\"),\n }\n : { runtimeModule: \"bitfab:runtime/auto\" },\n format,\n \"inline\",\n )\n return {\n format,\n shortCircuit: true,\n source: transformed.code,\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nodeLoader.js","names":["resolvePath"],"sources":["../../../bitfab-typescript-transform/src/transformOptions.ts","../../../bitfab-typescript-transform/src/babelPlugin.ts","../../../bitfab-typescript-transform/src/transform.ts","../../../bitfab-typescript-transform/src/loaderRuntime.ts","../../../bitfab-typescript-transform/src/nodeLoader.ts"],"sourcesContent":["export interface BitfabTransformOptions {\n /** Module that exports the automatic span runtime. */\n runtimeModule?: string\n /** Working directory removed from generated function IDs. */\n cwd?: string\n /** Return false to leave a file unchanged. */\n include?: (filename: string) => boolean\n}\n\nconst AUTO_TRACE_FUNCTION_ID_VERSION = \"ts-auto-v1\"\nexport const AUTO_TRACE_TRANSFORM_MARKER =\n \"__bitfab_auto_trace_transformed_v1__\"\n\nexport function autoTraceFunctionId(file: string, name: string): string {\n return `${AUTO_TRACE_FUNCTION_ID_VERSION}:${file}#${name}`\n}\n\nexport function sourceFilename(filename: string): string {\n return filename.replace(/\\\\/g, \"/\").split(/[?#]/, 1)[0] ?? \"\"\n}\n\nexport function autoTraceFilename(filename: string, cwd: string): string {\n const normalized = sourceFilename(filename)\n const normalizedCwd = cwd.replace(/\\\\/g, \"/\").replace(/\\/$/, \"\")\n return normalized.startsWith(`${normalizedCwd}/`)\n ? normalized.slice(normalizedCwd.length + 1)\n : normalized\n}\n\nexport function shouldTransformBitfabFile(\n filename: string,\n options: BitfabTransformOptions,\n): boolean {\n if (!filename) {\n return false\n }\n if (options.include && !options.include(filename)) {\n return false\n }\n\n const normalized = sourceFilename(filename)\n const normalizedCwd = options.cwd?.replace(/\\\\/g, \"/\").replace(/\\/$/, \"\")\n const isAbsolute =\n normalized.startsWith(\"/\") || /^[A-Za-z]:\\//.test(normalized)\n if (\n normalizedCwd &&\n isAbsolute &&\n normalized !== normalizedCwd &&\n !normalized.startsWith(`${normalizedCwd}/`)\n ) {\n return false\n }\n return (\n !normalized.includes(\"/node_modules/\") &&\n !normalized.endsWith(\".d.ts\") &&\n /\\.[cm]?[jt]sx?$/.test(normalized)\n )\n}\n","import type { NodePath, PluginObject, PluginPass } from \"@babel/core\"\nimport type * as BabelTypes from \"@babel/types\"\nimport type { BitfabTransformOptions } from \"./transformOptions.js\"\nimport {\n AUTO_TRACE_TRANSFORM_MARKER,\n autoTraceFilename,\n autoTraceFunctionId,\n shouldTransformBitfabFile,\n} from \"./transformOptions.js\"\n\ntype BabelTypesApi = typeof BabelTypes\n\ntype BitfabPluginOptions = BitfabTransformOptions\n\ninterface BitfabPluginState extends PluginPass {\n opts: BitfabPluginOptions\n runtimeIdentifier?: ReturnType<BabelTypesApi[\"identifier\"]>\n activeIdentifier?: ReturnType<BabelTypesApi[\"identifier\"]>\n wrapperIdentifier?: ReturnType<BabelTypesApi[\"identifier\"]>\n jevIdentifier?: ReturnType<BabelTypesApi[\"identifier\"]>\n definitions?: Array<ReturnType<BabelTypesApi[\"variableDeclaration\"]>>\n skipFile?: boolean\n bamlGenerated?: boolean\n usedRuntime?: boolean\n usedWrapper?: boolean\n usedJev?: boolean\n}\n\ninterface InstrumentedFunction {\n _bitfabInstrumented?: boolean\n}\n\nfunction propertyName(\n node: BabelTypes.Node | null | undefined,\n types: BabelTypesApi,\n): string | null {\n if (types.isIdentifier(node)) {\n return node.name\n }\n if (types.isStringLiteral(node)) {\n return node.value\n }\n return null\n}\n\nfunction functionName(\n path: NodePath<BabelTypes.Function>,\n types: BabelTypesApi,\n): string {\n const node = path.node\n if (types.isFunctionDeclaration(node) || types.isFunctionExpression(node)) {\n if (node.id) {\n return node.id.name\n }\n }\n\n if (\n (types.isClassMethod(node) || types.isObjectMethod(node)) &&\n !node.computed &&\n types.isIdentifier(node.key)\n ) {\n return node.key.name\n }\n\n const parent = path.parentPath?.node\n if (types.isVariableDeclarator(parent)) {\n return propertyName(parent.id, types) ?? \"anonymous\"\n }\n if (types.isObjectProperty(parent) && !parent.computed) {\n return propertyName(parent.key, types) ?? \"anonymous\"\n }\n if (types.isClassProperty(parent) && !parent.computed) {\n const name = propertyName(parent.key, types)\n if (name) {\n return name\n }\n }\n\n const { line, column } = sourcePosition(path)\n return `anonymous-${line}-${column}`\n}\n\nconst JEV_METHOD = \"systemOne\"\n\nfunction isJevMethodDefinition(\n path: NodePath<BabelTypes.Function>,\n types: BabelTypesApi,\n): boolean {\n const parent = path.parentPath?.node\n const isMethod =\n types.isClassMethod(path.node) ||\n types.isObjectMethod(path.node) ||\n types.isObjectProperty(parent) ||\n types.isClassProperty(parent)\n return isMethod && functionName(path, types) === JEV_METHOD\n}\n\nfunction isInstrumentableFunction(\n node: BabelTypes.Function,\n types: BabelTypesApi,\n): boolean {\n if (node.generator || types.isClassPrivateMethod(node)) {\n return false\n }\n return (\n !(types.isClassMethod(node) || types.isObjectMethod(node)) ||\n node.kind === \"method\"\n )\n}\n\nfunction sourcePosition(path: NodePath<BabelTypes.Function>): {\n line: number\n column: number\n} {\n const exportDeclaration = path.parentPath?.isExportDeclaration()\n ? path.parentPath.node\n : undefined\n const start = (exportDeclaration ?? path.node).loc?.start\n return { line: start?.line ?? 0, column: start?.column ?? 0 }\n}\n\nfunction qualifiedFunctionName(\n path: NodePath<BabelTypes.Function>,\n types: BabelTypesApi,\n): string {\n const ownName = functionName(path, types)\n if (ownName.startsWith(\"anonymous-\")) {\n return ownName\n }\n const scopes: string[] = []\n let ancestor: NodePath | null = path.parentPath\n while (ancestor) {\n if (ancestor.isFunction()) {\n if (!isInstrumentableFunction(ancestor.node, types)) {\n ancestor = ancestor.parentPath\n continue\n }\n const name = functionName(\n ancestor as NodePath<BabelTypes.Function>,\n types,\n )\n if (!name.startsWith(\"anonymous-\")) {\n scopes.unshift(name)\n }\n } else if (\n (ancestor.isClassDeclaration() || ancestor.isClassExpression()) &&\n ancestor.node.id\n ) {\n scopes.unshift(ancestor.node.id.name)\n } else if (ancestor.isObjectExpression()) {\n const parent = ancestor.parentPath?.node\n if (types.isVariableDeclarator(parent)) {\n const name = propertyName(parent.id, types)\n if (name) {\n scopes.unshift(name)\n }\n } else if (types.isObjectProperty(parent) && !parent.computed) {\n const name = propertyName(parent.key, types)\n if (name) {\n scopes.unshift(name)\n }\n }\n }\n ancestor = ancestor.parentPath\n }\n return [...scopes, ownName].join(\".\")\n}\n\nfunction isTraceDecoratorRoot(\n path: NodePath<BabelTypes.Function>,\n types: BabelTypesApi,\n): boolean {\n const node = path.node\n const parent = path.parentPath?.node\n const decorated =\n types.isClassMethod(node) || types.isClassPrivateMethod(node)\n ? node\n : types.isClassProperty(parent) && parent.value === node\n ? parent\n : null\n if (!decorated) {\n return false\n }\n\n return (\n decorated.decorators?.some((decorator) => {\n const expression = decorator.expression\n if (!types.isCallExpression(expression)) {\n return false\n }\n const callee = expression.callee\n return (\n types.isMemberExpression(callee) &&\n !callee.computed &&\n types.isIdentifier(callee.property, { name: \"trace\" })\n )\n }) ?? false\n )\n}\n\nfunction withNodeFunctionName(\n path: NodePath<BabelTypes.CallExpression>,\n types: BabelTypesApi,\n): string | null {\n if (path.node.arguments.length > 2) {\n return null\n }\n const callee = path.node.callee\n if (\n !types.isMemberExpression(callee) ||\n callee.computed ||\n !types.isIdentifier(callee.property, { name: \"withNode\" })\n ) {\n return null\n }\n const fn = path.node.arguments[path.node.arguments.length - 1]\n if (types.isIdentifier(fn)) {\n return fn.name\n }\n if (types.isMemberExpression(fn) && !fn.computed) {\n return propertyName(fn.property, types)\n }\n if (types.isFunctionExpression(fn) && fn.id) {\n return fn.id.name\n }\n return null\n}\n\nconst BAML_GENERATED_HEADER = \"This file was generated by BAML\"\nconst BAML_CLIENT_CLASSES = new Set([\"BamlAsyncClient\", \"BamlSyncClient\"])\nconst BAML_OPTIONS_PARAMETER = \"__baml_options__\"\n\nfunction isBamlGeneratedSource(code: string): boolean {\n return code.slice(0, 4096).includes(BAML_GENERATED_HEADER)\n}\n\nfunction isBamlClientMethod(\n path: NodePath<BabelTypes.Function>,\n types: BabelTypesApi,\n): boolean {\n const node = path.node\n if (!types.isClassMethod(node) || node.kind !== \"method\" || node.static) {\n return false\n }\n const classPath = path.parentPath?.parentPath\n if (\n !classPath ||\n !(classPath.isClassDeclaration() || classPath.isClassExpression()) ||\n !classPath.node.id ||\n !BAML_CLIENT_CLASSES.has(classPath.node.id.name)\n ) {\n return false\n }\n const parameters = runtimeParameters(node, types)\n const last = parameters[parameters.length - 1]\n return types.isIdentifier(last, { name: BAML_OPTIONS_PARAMETER })\n}\n\nfunction bamlOptionsDeclaration(\n callerOptions: BabelTypes.Identifier,\n withCollector: BabelTypes.Identifier,\n types: BabelTypesApi,\n): BabelTypes.VariableDeclaration {\n return types.variableDeclaration(\"const\", [\n types.variableDeclarator(\n types.identifier(BAML_OPTIONS_PARAMETER),\n types.conditionalExpression(\n types.binaryExpression(\n \"===\",\n types.cloneNode(withCollector),\n types.identifier(\"undefined\"),\n ),\n types.cloneNode(callerOptions),\n types.callExpression(types.cloneNode(withCollector), [\n types.cloneNode(callerOptions),\n types.memberExpression(\n types.thisExpression(),\n types.identifier(\"bamlOptions\"),\n ),\n ]),\n ),\n ),\n ])\n}\n\nfunction runtimeParameters(\n node: BabelTypes.Function,\n types: BabelTypesApi,\n): BabelTypes.Function[\"params\"] {\n return node.params.filter(\n (parameter) => !types.isIdentifier(parameter, { name: \"this\" }),\n )\n}\n\nfunction parameterInputs(\n path: NodePath<BabelTypes.Function>,\n types: BabelTypesApi,\n): ReturnType<BabelTypesApi[\"arrayExpression\"]> {\n const elements: Array<BabelTypes.Expression | BabelTypes.SpreadElement> = []\n\n for (const [index, parameter] of runtimeParameters(\n path.node,\n types,\n ).entries()) {\n if (!types.isArrowFunctionExpression(path.node)) {\n if (types.isRestElement(parameter)) {\n elements.push(\n types.spreadElement(\n types.callExpression(\n types.memberExpression(\n types.arrayExpression([\n types.spreadElement(types.identifier(\"arguments\")),\n ]),\n types.identifier(\"slice\"),\n ),\n [types.numericLiteral(index)],\n ),\n ),\n )\n } else {\n elements.push(\n types.memberExpression(\n types.identifier(\"arguments\"),\n types.numericLiteral(index),\n true,\n ),\n )\n }\n continue\n }\n\n if (types.isIdentifier(parameter)) {\n elements.push(types.identifier(parameter.name))\n } else if (\n types.isRestElement(parameter) &&\n types.isIdentifier(parameter.argument)\n ) {\n elements.push(\n types.spreadElement(types.identifier(parameter.argument.name)),\n )\n }\n }\n\n return types.arrayExpression(elements)\n}\n\nfunction needsArgumentWrapper(\n path: NodePath<BabelTypes.Function>,\n types: BabelTypesApi,\n): boolean {\n return (\n types.isArrowFunctionExpression(path.node) &&\n path.node.params.some(\n (parameter) =>\n !types.isIdentifier(parameter) &&\n !(\n types.isRestElement(parameter) &&\n types.isIdentifier(parameter.argument)\n ),\n )\n )\n}\n\nfunction isRestWrapper(\n path: NodePath<BabelTypes.Function>,\n types: BabelTypesApi,\n): boolean {\n const parameters = runtimeParameters(path.node, types)\n return parameters.length === 1 && types.isRestElement(parameters[0])\n}\n\ntype JevCallNode = BabelTypes.CallExpression | BabelTypes.OptionalCallExpression\n\nfunction jevReceiver(\n node: JevCallNode,\n types: BabelTypesApi,\n): BabelTypes.Expression | null {\n const callee = node.callee\n if (\n !(\n types.isMemberExpression(callee) ||\n types.isOptionalMemberExpression(callee)\n ) ||\n callee.computed ||\n !types.isIdentifier(callee.property, { name: JEV_METHOD }) ||\n types.isSuper(callee.object)\n ) {\n return null\n }\n return callee.object\n}\n\nfunction isOptionalChain(node: BabelTypes.Node, types: BabelTypesApi): boolean {\n return (\n types.isOptionalMemberExpression(node) ||\n types.isOptionalCallExpression(node)\n )\n}\n\nfunction continuesOptionalChain(\n path: NodePath<BabelTypes.OptionalCallExpression>,\n types: BabelTypesApi,\n): boolean {\n const parent = path.parent\n return (\n (types.isOptionalMemberExpression(parent) && parent.object === path.node) ||\n (types.isOptionalCallExpression(parent) && parent.callee === path.node)\n )\n}\n\nfunction rewriteJevCall(\n path: NodePath<JevCallNode>,\n state: BitfabPluginState,\n types: BabelTypesApi,\n): void {\n if (state.skipFile || state.bamlGenerated || !state.jevIdentifier) {\n return\n }\n const node = path.node\n const receiver = jevReceiver(node, types)\n if (receiver === null) {\n return\n }\n const optionalReceiver =\n types.isOptionalMemberExpression(node.callee) && node.callee.optional\n const optionalMethod = types.isOptionalCallExpression(node) && node.optional\n if (types.isOptionalCallExpression(node)) {\n if (\n continuesOptionalChain(\n path as NodePath<BabelTypes.OptionalCallExpression>,\n types,\n ) ||\n (!optionalReceiver && isOptionalChain(receiver, types))\n ) {\n return\n }\n }\n const guarded = optionalReceiver || optionalMethod\n const receiverReference =\n guarded && !path.scope.isStatic(receiver)\n ? path.scope.generateDeclaredUidIdentifier(\"bitfabJevReceiver\")\n : null\n const receiverValue = (): BabelTypes.Expression =>\n receiverReference === null\n ? types.cloneNode(receiver)\n : types.cloneNode(receiverReference)\n const call = types.callExpression(types.cloneNode(state.jevIdentifier), [\n receiverValue(),\n ...node.arguments,\n ])\n state.usedRuntime = true\n state.usedJev = true\n if (!guarded) {\n path.replaceWith(call)\n return\n }\n const firstReceiver =\n receiverReference === null\n ? types.cloneNode(receiver)\n : types.assignmentExpression(\n \"=\",\n types.cloneNode(receiverReference),\n receiver,\n )\n const missing = (value: BabelTypes.Expression): BabelTypes.BinaryExpression =>\n types.binaryExpression(\"==\", value, types.nullLiteral())\n const methodOf = (value: BabelTypes.Expression): BabelTypes.Expression =>\n types.memberExpression(value, types.identifier(JEV_METHOD))\n const test = optionalReceiver\n ? optionalMethod\n ? types.logicalExpression(\n \"||\",\n missing(firstReceiver),\n missing(methodOf(receiverValue())),\n )\n : missing(firstReceiver)\n : missing(methodOf(firstReceiver))\n path.replaceWith(\n types.conditionalExpression(\n test,\n types.unaryExpression(\"void\", types.numericLiteral(0)),\n call,\n ),\n )\n}\n\n/**\n * Babel adapter for Bitfab's experimental automatic call-span runtime.\n *\n * @experimental The transform protocol and generated function identities may\n * change before the feature is stable.\n */\nexport default function bitfabBabelPlugin(api: {\n types: BabelTypesApi\n}): PluginObject<BitfabPluginState> {\n const { types } = api\n\n return {\n name: \"bitfab-auto-trace\",\n visitor: {\n Program: {\n enter(path: NodePath<BabelTypes.Program>, state: BitfabPluginState) {\n const filename = state.file.opts.filename ?? \"unknown\"\n state.skipFile =\n !shouldTransformBitfabFile(filename, state.opts) ||\n path.scope.hasBinding(AUTO_TRACE_TRANSFORM_MARKER) ||\n path.node.directives.some(\n (directive) => directive.value.value === \"use client\",\n )\n state.runtimeIdentifier =\n path.scope.generateUidIdentifier(\"bitfabAutoSpan\")\n state.activeIdentifier = path.scope.generateUidIdentifier(\n \"bitfabAutoTraceActive\",\n )\n state.wrapperIdentifier =\n path.scope.generateUidIdentifier(\"bitfabAutoWrap\")\n state.jevIdentifier =\n path.scope.generateUidIdentifier(\"bitfabAutoJev\")\n state.bamlGenerated = isBamlGeneratedSource(state.file.code ?? \"\")\n state.definitions = []\n state.usedRuntime = false\n state.usedWrapper = false\n state.usedJev = false\n },\n exit(path: NodePath<BabelTypes.Program>, state: BitfabPluginState) {\n if (\n state.skipFile ||\n !state.usedRuntime ||\n !state.runtimeIdentifier ||\n !state.activeIdentifier ||\n !state.wrapperIdentifier\n ) {\n return\n }\n\n state.file.metadata[AUTO_TRACE_TRANSFORM_MARKER] = true\n path.unshiftContainer(\"body\", [\n types.importDeclaration(\n [\n types.importSpecifier(\n state.runtimeIdentifier,\n types.identifier(\"__bitfabAutoSpan\"),\n ),\n types.importSpecifier(\n state.activeIdentifier,\n types.identifier(\"__bitfabAutoTraceActive\"),\n ),\n ...(state.usedWrapper\n ? [\n types.importSpecifier(\n state.wrapperIdentifier,\n types.identifier(\"__bitfabAutoWrap\"),\n ),\n ]\n : []),\n ...(state.usedJev && state.jevIdentifier\n ? [\n types.importSpecifier(\n state.jevIdentifier,\n types.identifier(\"__bitfabAutoJev\"),\n ),\n ]\n : []),\n ],\n types.stringLiteral(\n state.opts.runtimeModule ?? \"bitfab/auto\",\n ),\n ),\n types.variableDeclaration(\"const\", [\n types.variableDeclarator(\n types.identifier(AUTO_TRACE_TRANSFORM_MARKER),\n types.assignmentExpression(\n \"=\",\n types.memberExpression(\n types.identifier(\"globalThis\"),\n types.identifier(AUTO_TRACE_TRANSFORM_MARKER),\n ),\n types.booleanLiteral(true),\n ),\n ),\n ]),\n ...(state.definitions ?? []),\n ])\n },\n },\n CallExpression: {\n exit(\n path: NodePath<BabelTypes.CallExpression>,\n state: BitfabPluginState,\n ) {\n if (state.skipFile) {\n return\n }\n if (jevReceiver(path.node, types) !== null) {\n rewriteJevCall(path, state, types)\n return\n }\n const configuredName = withNodeFunctionName(path, types)\n if (configuredName === null) {\n return\n }\n if (path.node.arguments.length === 1) {\n path.node.arguments.push(types.identifier(\"undefined\"))\n }\n path.node.arguments.push(types.stringLiteral(configuredName))\n },\n },\n OptionalCallExpression: {\n exit(\n path: NodePath<BabelTypes.OptionalCallExpression>,\n state: BitfabPluginState,\n ) {\n rewriteJevCall(path, state, types)\n },\n },\n Function: {\n exit(path: NodePath<BabelTypes.Function>, state: BitfabPluginState) {\n const node = path.node as typeof path.node & InstrumentedFunction\n if (\n state.skipFile ||\n node._bitfabInstrumented ||\n !isInstrumentableFunction(node, types) ||\n isTraceDecoratorRoot(path, types) ||\n !state.runtimeIdentifier ||\n !state.activeIdentifier ||\n !state.wrapperIdentifier\n ) {\n return\n }\n const bamlMethod =\n state.bamlGenerated === true && isBamlClientMethod(path, types)\n if (state.bamlGenerated && !bamlMethod) {\n return\n }\n if (isJevMethodDefinition(path, types)) {\n return\n }\n const name = qualifiedFunctionName(path, types)\n if (name.startsWith(\"anonymous-\")) {\n return\n }\n const normalizedFilename = autoTraceFilename(\n state.file.opts.filename ?? \"unknown\",\n state.opts.cwd ?? state.file.opts.cwd ?? process.cwd(),\n )\n const { line, column } = sourcePosition(path)\n const definition = types.objectExpression([\n types.objectProperty(\n types.identifier(\"id\"),\n types.stringLiteral(\n autoTraceFunctionId(normalizedFilename, name),\n ),\n ),\n types.objectProperty(\n types.identifier(\"name\"),\n types.stringLiteral(name),\n ),\n types.objectProperty(\n types.identifier(\"file\"),\n types.stringLiteral(normalizedFilename),\n ),\n types.objectProperty(\n types.identifier(\"line\"),\n types.numericLiteral(line),\n ),\n types.objectProperty(\n types.identifier(\"column\"),\n types.numericLiteral(column),\n ),\n ...(node.async\n ? [\n types.objectProperty(\n types.identifier(\"async\"),\n types.booleanLiteral(true),\n ),\n ]\n : []),\n ...(bamlMethod\n ? [\n types.objectProperty(\n types.identifier(\"baml\"),\n types.booleanLiteral(true),\n ),\n ]\n : []),\n ...(isRestWrapper(path, types)\n ? [\n types.objectProperty(\n types.identifier(\"wrapper\"),\n types.booleanLiteral(true),\n ),\n ]\n : []),\n ])\n const definitionIdentifier = path.scope\n .getProgramParent()\n .generateUidIdentifier(\"bitfabAutoDefinition\")\n state.definitions?.push(\n types.variableDeclaration(\"const\", [\n types.variableDeclarator(definitionIdentifier, definition),\n ]),\n )\n\n if (needsArgumentWrapper(path, types)) {\n node._bitfabInstrumented = true\n path.replaceWith(\n types.callExpression(types.cloneNode(state.wrapperIdentifier), [\n types.cloneNode(definitionIdentifier),\n node as BabelTypes.ArrowFunctionExpression,\n ]),\n )\n state.usedRuntime = true\n state.usedWrapper = true\n return\n }\n\n const originalBody = types.isBlockStatement(node.body)\n ? node.body\n : types.blockStatement([types.returnStatement(node.body)])\n const directives = originalBody.directives\n originalBody.directives = []\n\n const callerOptions = bamlMethod\n ? path.scope.generateUidIdentifier(\"bitfabBamlOptions\")\n : undefined\n const withCollector = bamlMethod\n ? path.scope.generateUidIdentifier(\"bitfabBamlWithCollector\")\n : undefined\n const tracedBody =\n callerOptions && withCollector\n ? types.blockStatement(\n [\n bamlOptionsDeclaration(callerOptions, withCollector, types),\n ...types.cloneNode(originalBody, true).body,\n ],\n [],\n )\n : types.cloneNode(originalBody, true)\n const body = types.blockStatement(\n [\n types.ifStatement(\n types.callExpression(\n types.cloneNode(state.activeIdentifier),\n [],\n ),\n types.blockStatement([\n ...(callerOptions\n ? [\n types.variableDeclaration(\"const\", [\n types.variableDeclarator(\n callerOptions,\n types.identifier(BAML_OPTIONS_PARAMETER),\n ),\n ]),\n ]\n : []),\n types.returnStatement(\n types.callExpression(\n types.cloneNode(state.runtimeIdentifier),\n [\n types.cloneNode(definitionIdentifier),\n parameterInputs(path, types),\n types.arrowFunctionExpression(\n withCollector ? [types.cloneNode(withCollector)] : [],\n tracedBody,\n node.async ?? false,\n ),\n ],\n ),\n ),\n ]),\n ),\n ...originalBody.body,\n ],\n directives,\n )\n node.body = body\n node._bitfabInstrumented = true\n state.usedRuntime = true\n },\n },\n },\n }\n}\n","import { type InputOptions, transformSync } from \"@babel/core\"\nimport bitfabBabelPlugin from \"./babelPlugin.js\"\nimport type { BitfabTransformOptions } from \"./transformOptions.js\"\nimport {\n AUTO_TRACE_TRANSFORM_MARKER,\n shouldTransformBitfabFile,\n sourceFilename,\n} from \"./transformOptions.js\"\n\nexport type { BitfabTransformOptions } from \"./transformOptions.js\"\n\ntype ParserPlugin = NonNullable<\n NonNullable<InputOptions[\"parserOpts\"]>[\"plugins\"]\n>[number]\n\nexport interface BitfabSourceMap {\n version: number\n sources: string[]\n names: string[]\n mappings: string\n file?: string\n sourceRoot?: string\n sourcesContent?: Array<string | null>\n}\n\nexport interface BitfabTransformResult {\n code: string\n map?: BitfabSourceMap\n}\n\nexport function parserPlugins(filename: string): ParserPlugin[] {\n const path = sourceFilename(filename)\n const typescript = /\\.[cm]?tsx?$/.test(path)\n const jsx = /\\.tsx$/.test(path) || /\\.[cm]?jsx?$/.test(path)\n return [\n ...(typescript ? ([\"typescript\"] as const) : []),\n ...(jsx ? ([\"jsx\"] as const) : []),\n \"decorators\",\n ]\n}\n\nexport function transformBitfabSource(\n source: string,\n filename: string,\n options: BitfabTransformOptions = {},\n): BitfabTransformResult {\n if (!shouldTransformBitfabFile(filename, options)) {\n return { code: source }\n }\n const result = transformSync(source, {\n babelrc: false,\n configFile: false,\n filename: sourceFilename(filename),\n parserOpts: { plugins: parserPlugins(filename), sourceType: \"module\" },\n plugins: [[bitfabBabelPlugin, options]],\n sourceMaps: true,\n })\n if (!result?.code || !result.metadata?.[AUTO_TRACE_TRANSFORM_MARKER]) {\n return { code: source }\n }\n return {\n code: result.code,\n ...(result.map ? { map: result.map as BitfabSourceMap } : {}),\n }\n}\n","import { dirname } from \"node:path\"\nimport {\n type PluginItem,\n transformFromAstSync,\n transformSync,\n} from \"@babel/core\"\nimport decoratorsPlugin from \"@babel/plugin-proposal-decorators\"\nimport commonJsPlugin from \"@babel/plugin-transform-modules-commonjs\"\nimport reactJsxPlugin from \"@babel/plugin-transform-react-jsx\"\nimport typeScriptPlugin from \"@babel/plugin-transform-typescript\"\nimport { getTsconfig, parseTsconfig, type TsConfigJson } from \"get-tsconfig\"\nimport bitfabBabelPlugin from \"./babelPlugin.js\"\nimport { parserPlugins } from \"./transform.js\"\nimport type { BitfabTransformOptions } from \"./transformOptions.js\"\nimport {\n shouldTransformBitfabFile,\n sourceFilename,\n} from \"./transformOptions.js\"\n\nexport interface BitfabLoaderOptions\n extends Omit<BitfabTransformOptions, \"include\"> {\n tsconfig?: string\n}\n\nexport interface BitfabJavaScriptTransformResult {\n code: string\n map?: string\n}\n\ntype CompilerOptions = NonNullable<TsConfigJson[\"compilerOptions\"]>\n\nfunction readCompilerOptions(\n filename: string,\n configuredPath: string | undefined,\n): CompilerOptions {\n const config = configuredPath\n ? parseTsconfig(configuredPath)\n : getTsconfig(dirname(filename))?.config\n return config?.compilerOptions ?? {}\n}\n\nfunction reactJsxOptions(compilerOptions: CompilerOptions): PluginItem {\n if (compilerOptions.jsx === \"react\") {\n return [\n reactJsxPlugin,\n {\n runtime: \"classic\",\n ...(compilerOptions.jsxFactory && {\n pragma: compilerOptions.jsxFactory,\n }),\n ...(compilerOptions.jsxFragmentFactory && {\n pragmaFrag: compilerOptions.jsxFragmentFactory,\n }),\n },\n ]\n }\n return [\n reactJsxPlugin,\n {\n runtime: \"automatic\",\n importSource: compilerOptions.jsxImportSource ?? \"react\",\n },\n ]\n}\n\nfunction compilePlugins(\n filename: string,\n compilerOptions: CompilerOptions,\n format: \"commonjs\" | \"module\" | undefined,\n): PluginItem[] {\n const path = sourceFilename(filename)\n const isTypeScript = /\\.[cm]?tsx?$/.test(path)\n const hasJsx = /\\.[jt]sx$/.test(path)\n const isCommonJs = format === \"commonjs\" || path.endsWith(\".cts\")\n return [\n ...(isTypeScript\n ? [\n [\n typeScriptPlugin,\n {\n onlyRemoveTypeImports:\n compilerOptions.verbatimModuleSyntax === true,\n },\n ] satisfies PluginItem,\n ]\n : []),\n [\n decoratorsPlugin,\n {\n version: compilerOptions.experimentalDecorators ? \"legacy\" : \"2023-11\",\n },\n ],\n ...(hasJsx ? [reactJsxOptions(compilerOptions)] : []),\n ...(isCommonJs ? [commonJsPlugin] : []),\n ]\n}\n\nexport function transformBitfabModuleToJavaScript(\n source: string,\n filename: string,\n options: BitfabLoaderOptions = {},\n format?: \"commonjs\" | \"module\",\n sourceMapMode: \"external\" | \"inline\" = \"external\",\n): BitfabJavaScriptTransformResult {\n const { tsconfig, ...transformOptions } = options\n if (!shouldTransformBitfabFile(filename, transformOptions)) {\n return { code: source }\n }\n const sourceFile = sourceFilename(filename)\n const instrumented = transformSync(source, {\n ast: true,\n babelrc: false,\n code: false,\n configFile: false,\n filename: sourceFile,\n parserOpts: { plugins: parserPlugins(filename), sourceType: \"module\" },\n plugins: [[bitfabBabelPlugin, transformOptions]],\n })\n if (!instrumented?.ast) {\n throw new Error(`Bitfab could not parse ${sourceFile}`)\n }\n const compiled = transformFromAstSync(instrumented.ast, source, {\n babelrc: false,\n cloneInputAst: false,\n configFile: false,\n filename: sourceFile,\n plugins: compilePlugins(\n filename,\n readCompilerOptions(filename, tsconfig),\n format,\n ),\n sourceMaps: sourceMapMode === \"inline\" ? \"inline\" : true,\n })\n if (compiled?.code === undefined || compiled.code === null) {\n throw new Error(`Bitfab could not compile ${sourceFile}`)\n }\n return {\n code: compiled.code,\n ...(compiled.map ? { map: JSON.stringify(compiled.map) } : {}),\n }\n}\n","import { readFile } from \"node:fs/promises\"\nimport { createRequire } from \"node:module\"\nimport { isAbsolute, relative, resolve as resolvePath } from \"node:path\"\nimport { fileURLToPath, pathToFileURL } from \"node:url\"\nimport { transformBitfabModuleToJavaScript } from \"./loaderRuntime.js\"\nimport { shouldTransformBitfabFile } from \"./transformOptions.js\"\n\nconst runtimeParentURL =\n process.env.BITFAB_SDK_RESOLVE_FROM === undefined\n ? import.meta.url\n : pathToFileURL(resolvePath(process.env.BITFAB_SDK_RESOLVE_FROM)).href\n\ninterface NodeResolveContext {\n parentURL?: string\n conditions?: string[]\n importAttributes?: Record<string, string>\n}\n\nexport async function resolve(\n specifier: string,\n context: NodeResolveContext,\n nextResolve: (\n specifier: string,\n context: NodeResolveContext,\n ) => Promise<{ url: string }>,\n): Promise<{ url: string }> {\n return specifier === \"bitfab:runtime/auto\"\n ? nextResolve(\"bitfab/auto\", {\n ...context,\n parentURL: runtimeParentURL,\n })\n : nextResolve(specifier, context)\n}\n\ninterface NodeLoadContext {\n format?: string\n}\n\ninterface NodeLoadResult {\n format?: string\n shortCircuit?: boolean\n source?: string | ArrayBuffer | Uint8Array\n}\n\ntype NextLoad = (\n url: string,\n context: NodeLoadContext,\n) => Promise<NodeLoadResult>\n\nfunction runtimeFormat(\n format: string | undefined,\n filename: string,\n): \"commonjs\" | \"module\" {\n return format?.startsWith(\"commonjs\") || /\\.c(?:js|ts)$/.test(filename)\n ? \"commonjs\"\n : \"module\"\n}\n\nfunction isInsideWorkingDirectory(filename: string): boolean {\n const path = relative(process.cwd(), filename)\n return (\n path !== \"..\" &&\n !path.startsWith(`..${process.platform === \"win32\" ? \"\\\\\" : \"/\"}`) &&\n !isAbsolute(path)\n )\n}\n\nexport async function load(\n url: string,\n context: NodeLoadContext,\n nextLoad: NextLoad,\n): Promise<NodeLoadResult> {\n if (!url.startsWith(\"file:\")) {\n return nextLoad(url, context)\n }\n\n const filename = fileURLToPath(url)\n if (\n !isInsideWorkingDirectory(filename) ||\n !shouldTransformBitfabFile(filename, {})\n ) {\n return nextLoad(url, context)\n }\n\n const source = await readFile(filename, \"utf8\")\n const format = runtimeFormat(context.format, filename)\n const transformed = transformBitfabModuleToJavaScript(\n source,\n filename,\n format === \"commonjs\"\n ? {\n runtimeModule:\n createRequire(runtimeParentURL).resolve(\"bitfab/auto\"),\n }\n : { runtimeModule: \"bitfab:runtime/auto\" },\n format,\n \"inline\",\n )\n return {\n format,\n shortCircuit: true,\n source: transformed.code,\n }\n}\n"],"mappings":"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"}
|
package/dist/transform/swc.cjs
CHANGED
|
@@ -2,7 +2,7 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_transform = require("../transform-
|
|
5
|
+
const require_transform = require("../transform-BBzrqpVH.cjs");
|
|
6
6
|
//#region ../bitfab-typescript-transform/src/swcAdapter.ts
|
|
7
7
|
function swcOptions(transformed, options) {
|
|
8
8
|
return {
|
package/dist/transform/swc.js
CHANGED
|
@@ -2,8 +2,8 @@ Object.defineProperties(exports, {
|
|
|
2
2
|
__esModule: { value: true },
|
|
3
3
|
[Symbol.toStringTag]: { value: "Module" }
|
|
4
4
|
});
|
|
5
|
-
const require_babelPlugin = require("../babelPlugin-
|
|
6
|
-
const require_transform = require("../transform-
|
|
5
|
+
const require_babelPlugin = require("../babelPlugin-s8EFjT6e.cjs");
|
|
6
|
+
const require_transform = require("../transform-BBzrqpVH.cjs");
|
|
7
7
|
//#region ../bitfab-typescript-transform/src/unplugin.ts
|
|
8
8
|
const bitfabTraceUnplugin = (0, require("unplugin").createUnplugin)((options) => {
|
|
9
9
|
const resolvedOptions = options ?? {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as shouldTransformBitfabFile } from "../babelPlugin-
|
|
2
|
-
import { n as transformBitfabSource } from "../transform-
|
|
1
|
+
import { r as shouldTransformBitfabFile } from "../babelPlugin-a7ofCoOd.js";
|
|
2
|
+
import { n as transformBitfabSource } from "../transform-DkcFn_tg.js";
|
|
3
3
|
import { createUnplugin } from "unplugin";
|
|
4
4
|
//#region ../bitfab-typescript-transform/src/unplugin.ts
|
|
5
5
|
const bitfabTraceUnplugin = createUnplugin((options) => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_babelPlugin = require("./babelPlugin-
|
|
1
|
+
const require_babelPlugin = require("./babelPlugin-s8EFjT6e.cjs");
|
|
2
2
|
let _babel_core = require("@babel/core");
|
|
3
3
|
//#region ../bitfab-typescript-transform/src/transform.ts
|
|
4
4
|
function parserPlugins(filename) {
|
|
@@ -44,4 +44,4 @@ Object.defineProperty(exports, "transformBitfabSource", {
|
|
|
44
44
|
}
|
|
45
45
|
});
|
|
46
46
|
|
|
47
|
-
//# sourceMappingURL=transform-
|
|
47
|
+
//# sourceMappingURL=transform-BBzrqpVH.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform-
|
|
1
|
+
{"version":3,"file":"transform-BBzrqpVH.cjs","names":["sourceFilename","shouldTransformBitfabFile","transformSync","bitfabBabelPlugin"],"sources":["../../bitfab-typescript-transform/src/transform.ts"],"sourcesContent":["import { type InputOptions, transformSync } from \"@babel/core\"\nimport bitfabBabelPlugin from \"./babelPlugin.js\"\nimport type { BitfabTransformOptions } from \"./transformOptions.js\"\nimport {\n AUTO_TRACE_TRANSFORM_MARKER,\n shouldTransformBitfabFile,\n sourceFilename,\n} from \"./transformOptions.js\"\n\nexport type { BitfabTransformOptions } from \"./transformOptions.js\"\n\ntype ParserPlugin = NonNullable<\n NonNullable<InputOptions[\"parserOpts\"]>[\"plugins\"]\n>[number]\n\nexport interface BitfabSourceMap {\n version: number\n sources: string[]\n names: string[]\n mappings: string\n file?: string\n sourceRoot?: string\n sourcesContent?: Array<string | null>\n}\n\nexport interface BitfabTransformResult {\n code: string\n map?: BitfabSourceMap\n}\n\nexport function parserPlugins(filename: string): ParserPlugin[] {\n const path = sourceFilename(filename)\n const typescript = /\\.[cm]?tsx?$/.test(path)\n const jsx = /\\.tsx$/.test(path) || /\\.[cm]?jsx?$/.test(path)\n return [\n ...(typescript ? ([\"typescript\"] as const) : []),\n ...(jsx ? ([\"jsx\"] as const) : []),\n \"decorators\",\n ]\n}\n\nexport function transformBitfabSource(\n source: string,\n filename: string,\n options: BitfabTransformOptions = {},\n): BitfabTransformResult {\n if (!shouldTransformBitfabFile(filename, options)) {\n return { code: source }\n }\n const result = transformSync(source, {\n babelrc: false,\n configFile: false,\n filename: sourceFilename(filename),\n parserOpts: { plugins: parserPlugins(filename), sourceType: \"module\" },\n plugins: [[bitfabBabelPlugin, options]],\n sourceMaps: true,\n })\n if (!result?.code || !result.metadata?.[AUTO_TRACE_TRANSFORM_MARKER]) {\n return { code: source }\n }\n return {\n code: result.code,\n ...(result.map ? { map: result.map as BitfabSourceMap } : {}),\n }\n}\n"],"mappings":";;;AA8BA,SAAgB,cAAc,UAAkC;CAC9D,MAAM,OAAOA,oBAAAA,eAAe,QAAQ;CACpC,MAAM,aAAa,eAAe,KAAK,IAAI;CAC3C,MAAM,MAAM,SAAS,KAAK,IAAI,KAAK,eAAe,KAAK,IAAI;CAC3D,OAAO;EACL,GAAI,aAAc,CAAC,YAAY,IAAc,CAAC;EAC9C,GAAI,MAAO,CAAC,KAAK,IAAc,CAAC;EAChC;CACF;AACF;AAEA,SAAgB,sBACd,QACA,UACA,UAAkC,CAAC,GACZ;CACvB,IAAI,CAACC,oBAAAA,0BAA0B,UAAU,OAAO,GAC9C,OAAO,EAAE,MAAM,OAAO;CAExB,MAAM,UAAA,GAASC,YAAAA,cAAAA,CAAc,QAAQ;EACnC,SAAS;EACT,YAAY;EACZ,UAAUF,oBAAAA,eAAe,QAAQ;EACjC,YAAY;GAAE,SAAS,cAAc,QAAQ;GAAG,YAAY;EAAS;EACrE,SAAS,CAAC,CAACG,oBAAAA,mBAAmB,OAAO,CAAC;EACtC,YAAY;CACd,CAAC;CACD,IAAI,CAAC,QAAQ,QAAQ,CAAC,OAAO,WAAA,yCAC3B,OAAO,EAAE,MAAM,OAAO;CAExB,OAAO;EACL,MAAM,OAAO;EACb,GAAI,OAAO,MAAM,EAAE,KAAK,OAAO,IAAuB,IAAI,CAAC;CAC7D;AACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as sourceFilename, r as shouldTransformBitfabFile, t as bitfabBabelPlugin } from "./babelPlugin-
|
|
1
|
+
import { i as sourceFilename, r as shouldTransformBitfabFile, t as bitfabBabelPlugin } from "./babelPlugin-a7ofCoOd.js";
|
|
2
2
|
import { transformSync } from "@babel/core";
|
|
3
3
|
//#region ../bitfab-typescript-transform/src/transform.ts
|
|
4
4
|
function parserPlugins(filename) {
|
|
@@ -33,4 +33,4 @@ function transformBitfabSource(source, filename, options = {}) {
|
|
|
33
33
|
//#endregion
|
|
34
34
|
export { transformBitfabSource as n, parserPlugins as t };
|
|
35
35
|
|
|
36
|
-
//# sourceMappingURL=transform-
|
|
36
|
+
//# sourceMappingURL=transform-DkcFn_tg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform-
|
|
1
|
+
{"version":3,"file":"transform-DkcFn_tg.js","names":[],"sources":["../../bitfab-typescript-transform/src/transform.ts"],"sourcesContent":["import { type InputOptions, transformSync } from \"@babel/core\"\nimport bitfabBabelPlugin from \"./babelPlugin.js\"\nimport type { BitfabTransformOptions } from \"./transformOptions.js\"\nimport {\n AUTO_TRACE_TRANSFORM_MARKER,\n shouldTransformBitfabFile,\n sourceFilename,\n} from \"./transformOptions.js\"\n\nexport type { BitfabTransformOptions } from \"./transformOptions.js\"\n\ntype ParserPlugin = NonNullable<\n NonNullable<InputOptions[\"parserOpts\"]>[\"plugins\"]\n>[number]\n\nexport interface BitfabSourceMap {\n version: number\n sources: string[]\n names: string[]\n mappings: string\n file?: string\n sourceRoot?: string\n sourcesContent?: Array<string | null>\n}\n\nexport interface BitfabTransformResult {\n code: string\n map?: BitfabSourceMap\n}\n\nexport function parserPlugins(filename: string): ParserPlugin[] {\n const path = sourceFilename(filename)\n const typescript = /\\.[cm]?tsx?$/.test(path)\n const jsx = /\\.tsx$/.test(path) || /\\.[cm]?jsx?$/.test(path)\n return [\n ...(typescript ? ([\"typescript\"] as const) : []),\n ...(jsx ? ([\"jsx\"] as const) : []),\n \"decorators\",\n ]\n}\n\nexport function transformBitfabSource(\n source: string,\n filename: string,\n options: BitfabTransformOptions = {},\n): BitfabTransformResult {\n if (!shouldTransformBitfabFile(filename, options)) {\n return { code: source }\n }\n const result = transformSync(source, {\n babelrc: false,\n configFile: false,\n filename: sourceFilename(filename),\n parserOpts: { plugins: parserPlugins(filename), sourceType: \"module\" },\n plugins: [[bitfabBabelPlugin, options]],\n sourceMaps: true,\n })\n if (!result?.code || !result.metadata?.[AUTO_TRACE_TRANSFORM_MARKER]) {\n return { code: source }\n }\n return {\n code: result.code,\n ...(result.map ? { map: result.map as BitfabSourceMap } : {}),\n }\n}\n"],"mappings":";;;AA8BA,SAAgB,cAAc,UAAkC;CAC9D,MAAM,OAAO,eAAe,QAAQ;CACpC,MAAM,aAAa,eAAe,KAAK,IAAI;CAC3C,MAAM,MAAM,SAAS,KAAK,IAAI,KAAK,eAAe,KAAK,IAAI;CAC3D,OAAO;EACL,GAAI,aAAc,CAAC,YAAY,IAAc,CAAC;EAC9C,GAAI,MAAO,CAAC,KAAK,IAAc,CAAC;EAChC;CACF;AACF;AAEA,SAAgB,sBACd,QACA,UACA,UAAkC,CAAC,GACZ;CACvB,IAAI,CAAC,0BAA0B,UAAU,OAAO,GAC9C,OAAO,EAAE,MAAM,OAAO;CAExB,MAAM,SAAS,cAAc,QAAQ;EACnC,SAAS;EACT,YAAY;EACZ,UAAU,eAAe,QAAQ;EACjC,YAAY;GAAE,SAAS,cAAc,QAAQ;GAAG,YAAY;EAAS;EACrE,SAAS,CAAC,CAAC,mBAAmB,OAAO,CAAC;EACtC,YAAY;CACd,CAAC;CACD,IAAI,CAAC,QAAQ,QAAQ,CAAC,OAAO,WAAA,yCAC3B,OAAO,EAAE,MAAM,OAAO;CAExB,OAAO;EACL,MAAM,OAAO;EACb,GAAI,OAAO,MAAM,EAAE,KAAK,OAAO,IAAuB,IAAI,CAAC;CAC7D;AACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bitfab",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.68.0",
|
|
4
4
|
"description": "Bitfab client for provider-based API calls with local BAML execution",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -277,6 +277,7 @@
|
|
|
277
277
|
"@langchain/core": "^1.2.17",
|
|
278
278
|
"@langchain/langgraph": "^1.5.0",
|
|
279
279
|
"@openai/agents": "^0.20.0",
|
|
280
|
+
"@typesafe-ai/sdk": "^0.7.0",
|
|
280
281
|
"ai": "^7.0.138",
|
|
281
282
|
"tsdown": "^0.23.1",
|
|
282
283
|
"typescript": "^7.0.2"
|