@bitfab/sdk 0.65.1 → 0.65.4

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.
Files changed (84) hide show
  1. package/cloudReplay.py +207 -30
  2. package/dist/{chunk-4RU4RZSM.js → chunk-27B3UBSS.js} +2 -2
  3. package/dist/{chunk-4RU4RZSM.js.map → chunk-27B3UBSS.js.map} +1 -1
  4. package/dist/{chunk-7OR34NXC.js → chunk-B2M4KELA.js} +2 -2
  5. package/dist/{chunk-SXNYSDXU.js → chunk-I233ERUH.js} +2 -2
  6. package/dist/{chunk-SXNYSDXU.js.map → chunk-I233ERUH.js.map} +1 -1
  7. package/dist/{chunk-4O5APMS4.js → chunk-ISU6FQKY.js} +33 -30
  8. package/dist/chunk-ISU6FQKY.js.map +1 -0
  9. package/dist/{chunk-VS36LW4L.js → chunk-PTCLRG4E.js} +3 -3
  10. package/dist/{chunk-VYIIDV2D.js → chunk-R6M54SPO.js} +4 -4
  11. package/dist/{chunk-S2EYDTUH.js → chunk-SOP5AFMH.js} +2 -2
  12. package/dist/{chunk-P7JUVRYZ.js → chunk-YVJAOGHE.js} +2 -2
  13. package/dist/{chunk-LXBV37XY.js → chunk-ZG6SHKEF.js} +11 -3
  14. package/dist/chunk-ZG6SHKEF.js.map +1 -0
  15. package/dist/{http-NWJPWZF5.js → http-LL3JD2JE.js} +2 -2
  16. package/dist/{http-2R2LUIGH.js → http-QZDTQC3C.js} +2 -2
  17. package/dist/index.cjs +28 -25
  18. package/dist/index.cjs.map +1 -1
  19. package/dist/index.d.cts +18 -1
  20. package/dist/index.d.ts +18 -1
  21. package/dist/index.js +3 -3
  22. package/dist/node.cjs +28 -25
  23. package/dist/node.cjs.map +1 -1
  24. package/dist/node.js +3 -3
  25. package/dist/{replay-Z5ND6EVB.js → replay-636XZIS2.js} +3 -3
  26. package/dist/{replay-3GJHADDC.js → replay-S4DNF4VR.js} +3 -3
  27. package/dist/replayCli.js +3 -3
  28. package/dist/seedCli.js +3 -3
  29. package/dist/transform/babel.cjs +10 -2
  30. package/dist/transform/babel.cjs.map +1 -1
  31. package/dist/transform/babel.js +1 -1
  32. package/dist/transform/bun.cjs +10 -2
  33. package/dist/transform/bun.cjs.map +1 -1
  34. package/dist/transform/bun.js +3 -3
  35. package/dist/transform/esbuild.cjs +10 -2
  36. package/dist/transform/esbuild.cjs.map +1 -1
  37. package/dist/transform/esbuild.js +3 -3
  38. package/dist/transform/loaderRuntime.cjs +10 -2
  39. package/dist/transform/loaderRuntime.cjs.map +1 -1
  40. package/dist/transform/loaderRuntime.js +2 -2
  41. package/dist/transform/nest.cjs +10 -2
  42. package/dist/transform/nest.cjs.map +1 -1
  43. package/dist/transform/nest.js +3 -3
  44. package/dist/transform/next.cjs +10 -2
  45. package/dist/transform/next.cjs.map +1 -1
  46. package/dist/transform/next.js +3 -3
  47. package/dist/transform/nodeLoader.js +10 -2
  48. package/dist/transform/nodeLoader.js.map +1 -1
  49. package/dist/transform/rolldown.cjs +10 -2
  50. package/dist/transform/rolldown.cjs.map +1 -1
  51. package/dist/transform/rolldown.js +3 -3
  52. package/dist/transform/rollup.cjs +10 -2
  53. package/dist/transform/rollup.cjs.map +1 -1
  54. package/dist/transform/rollup.js +3 -3
  55. package/dist/transform/rsbuild.cjs +10 -2
  56. package/dist/transform/rsbuild.cjs.map +1 -1
  57. package/dist/transform/rsbuild.js +3 -3
  58. package/dist/transform/rspack.cjs +10 -2
  59. package/dist/transform/rspack.cjs.map +1 -1
  60. package/dist/transform/rspack.js +3 -3
  61. package/dist/transform/swc.cjs +10 -2
  62. package/dist/transform/swc.cjs.map +1 -1
  63. package/dist/transform/swc.js +2 -2
  64. package/dist/transform/unplugin.cjs +10 -2
  65. package/dist/transform/unplugin.cjs.map +1 -1
  66. package/dist/transform/unplugin.js +3 -3
  67. package/dist/transform/vite.cjs +10 -2
  68. package/dist/transform/vite.cjs.map +1 -1
  69. package/dist/transform/vite.js +3 -3
  70. package/dist/transform/webpack.cjs +10 -2
  71. package/dist/transform/webpack.cjs.map +1 -1
  72. package/dist/transform/webpack.js +3 -3
  73. package/package.json +11 -11
  74. package/dist/chunk-4O5APMS4.js.map +0 -1
  75. package/dist/chunk-LXBV37XY.js.map +0 -1
  76. /package/dist/{chunk-7OR34NXC.js.map → chunk-B2M4KELA.js.map} +0 -0
  77. /package/dist/{chunk-VS36LW4L.js.map → chunk-PTCLRG4E.js.map} +0 -0
  78. /package/dist/{chunk-VYIIDV2D.js.map → chunk-R6M54SPO.js.map} +0 -0
  79. /package/dist/{chunk-S2EYDTUH.js.map → chunk-SOP5AFMH.js.map} +0 -0
  80. /package/dist/{chunk-P7JUVRYZ.js.map → chunk-YVJAOGHE.js.map} +0 -0
  81. /package/dist/{http-2R2LUIGH.js.map → http-LL3JD2JE.js.map} +0 -0
  82. /package/dist/{http-NWJPWZF5.js.map → http-QZDTQC3C.js.map} +0 -0
  83. /package/dist/{replay-3GJHADDC.js.map → replay-636XZIS2.js.map} +0 -0
  84. /package/dist/{replay-Z5ND6EVB.js.map → replay-S4DNF4VR.js.map} +0 -0
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  transformBitfabSource
3
- } from "./chunk-P7JUVRYZ.js";
3
+ } from "./chunk-YVJAOGHE.js";
4
4
  import {
5
5
  shouldTransformBitfabFile
6
- } from "./chunk-LXBV37XY.js";
6
+ } from "./chunk-ZG6SHKEF.js";
7
7
 
8
8
  // ../bitfab-typescript-transform/src/unplugin.ts
9
9
  import { createUnplugin } from "unplugin";
@@ -25,4 +25,4 @@ var bitfabTraceUnplugin = createUnplugin((options) => {
25
25
  export {
26
26
  bitfabTraceUnplugin
27
27
  };
28
- //# sourceMappingURL=chunk-VS36LW4L.js.map
28
+ //# sourceMappingURL=chunk-PTCLRG4E.js.map
@@ -6,13 +6,13 @@ import {
6
6
  serializeReplayResult,
7
7
  warnJudgeAssertionsDeprecated,
8
8
  withCliFlags
9
- } from "./chunk-7OR34NXC.js";
9
+ } from "./chunk-B2M4KELA.js";
10
10
  import {
11
11
  BitfabError,
12
12
  asyncStorageReady,
13
13
  createAsyncLocalStorage,
14
14
  warnOnce
15
- } from "./chunk-4RU4RZSM.js";
15
+ } from "./chunk-27B3UBSS.js";
16
16
 
17
17
  // src/autoTrace.ts
18
18
  var autoTraceGlobal = globalThis;
@@ -458,7 +458,7 @@ async function seedFromRegistry(registry, pipeline, cases, options = {}) {
458
458
  sessionId: seedCase.sessionId
459
459
  })
460
460
  );
461
- const { flushTraces } = await import("./http-2R2LUIGH.js");
461
+ const { flushTraces } = await import("./http-QZDTQC3C.js");
462
462
  await flushTraces(3e4);
463
463
  return { pipeline, traceFunctionKey, traceIds };
464
464
  }
@@ -1173,4 +1173,4 @@ export {
1173
1173
  runRegistryMain,
1174
1174
  runIfEntrypoint
1175
1175
  };
1176
- //# sourceMappingURL=chunk-VYIIDV2D.js.map
1176
+ //# sourceMappingURL=chunk-R6M54SPO.js.map
@@ -8,7 +8,7 @@ import {
8
8
  replayContextReady,
9
9
  runWithReplayContext,
10
10
  unrefTimer
11
- } from "./chunk-SXNYSDXU.js";
11
+ } from "./chunk-I233ERUH.js";
12
12
  import {
13
13
  runWithCaptureSuppressed,
14
14
  warnOnce,
@@ -2057,4 +2057,4 @@ export {
2057
2057
  warnJudgeAssertionsDeprecated,
2058
2058
  replay
2059
2059
  };
2060
- //# sourceMappingURL=chunk-S2EYDTUH.js.map
2060
+ //# sourceMappingURL=chunk-SOP5AFMH.js.map
@@ -3,7 +3,7 @@ import {
3
3
  bitfabBabelPlugin,
4
4
  shouldTransformBitfabFile,
5
5
  sourceFilename
6
- } from "./chunk-LXBV37XY.js";
6
+ } from "./chunk-ZG6SHKEF.js";
7
7
 
8
8
  // ../bitfab-typescript-transform/src/transform.ts
9
9
  import { transformSync } from "@babel/core";
@@ -42,4 +42,4 @@ export {
42
42
  parserPlugins,
43
43
  transformBitfabSource
44
44
  };
45
- //# sourceMappingURL=chunk-P7JUVRYZ.js.map
45
+ //# sourceMappingURL=chunk-YVJAOGHE.js.map
@@ -55,6 +55,12 @@ function functionName(path, types) {
55
55
  if (types.isObjectProperty(parent) && !parent.computed) {
56
56
  return propertyName(parent.key, types) ?? "anonymous";
57
57
  }
58
+ if (types.isClassProperty(parent) && !parent.computed) {
59
+ const name = propertyName(parent.key, types);
60
+ if (name) {
61
+ return name;
62
+ }
63
+ }
58
64
  const { line, column } = sourcePosition(path);
59
65
  return `anonymous-${line}-${column}`;
60
66
  }
@@ -111,10 +117,12 @@ function qualifiedFunctionName(path, types) {
111
117
  }
112
118
  function isTraceDecoratorRoot(path, types) {
113
119
  const node = path.node;
114
- if (!types.isClassMethod(node) && !types.isClassPrivateMethod(node)) {
120
+ const parent = path.parentPath?.node;
121
+ const decorated = types.isClassMethod(node) || types.isClassPrivateMethod(node) ? node : types.isClassProperty(parent) && parent.value === node ? parent : null;
122
+ if (!decorated) {
115
123
  return false;
116
124
  }
117
- return node.decorators?.some((decorator) => {
125
+ return decorated.decorators?.some((decorator) => {
118
126
  const expression = decorator.expression;
119
127
  if (!types.isCallExpression(expression)) {
120
128
  return false;
@@ -393,4 +401,4 @@ export {
393
401
  shouldTransformBitfabFile,
394
402
  bitfabBabelPlugin
395
403
  };
396
- //# sourceMappingURL=chunk-LXBV37XY.js.map
404
+ //# sourceMappingURL=chunk-ZG6SHKEF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../bitfab-typescript-transform/src/transformOptions.ts","../../bitfab-typescript-transform/src/babelPlugin.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/sdk/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"],"mappings":"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","names":[]}
@@ -8,7 +8,7 @@ import {
8
8
  flushTraces,
9
9
  parseRetryAfterMs,
10
10
  serializePayloadBody
11
- } from "./chunk-SXNYSDXU.js";
11
+ } from "./chunk-I233ERUH.js";
12
12
  import "./chunk-MT36GJMW.js";
13
13
  export {
14
14
  BitfabError,
@@ -21,4 +21,4 @@ export {
21
21
  parseRetryAfterMs,
22
22
  serializePayloadBody
23
23
  };
24
- //# sourceMappingURL=http-NWJPWZF5.js.map
24
+ //# sourceMappingURL=http-LL3JD2JE.js.map
@@ -8,7 +8,7 @@ import {
8
8
  flushTraces,
9
9
  parseRetryAfterMs,
10
10
  serializePayloadBody
11
- } from "./chunk-4RU4RZSM.js";
11
+ } from "./chunk-27B3UBSS.js";
12
12
  export {
13
13
  BitfabError,
14
14
  HttpClient,
@@ -20,4 +20,4 @@ export {
20
20
  parseRetryAfterMs,
21
21
  serializePayloadBody
22
22
  };
23
- //# sourceMappingURL=http-2R2LUIGH.js.map
23
+ //# sourceMappingURL=http-QZDTQC3C.js.map
package/dist/index.cjs CHANGED
@@ -42,7 +42,7 @@ var __version__, __packageName__;
42
42
  var init_version_generated = __esm({
43
43
  "src/version.generated.ts"() {
44
44
  "use strict";
45
- __version__ = "0.65.1";
45
+ __version__ = "0.65.4";
46
46
  __packageName__ = "@bitfab/sdk";
47
47
  }
48
48
  });
@@ -6866,6 +6866,12 @@ function finishedRerun(datasetId, run, joinedExisting) {
6866
6866
  }
6867
6867
  return { run, joinedExisting };
6868
6868
  }
6869
+ function normalizeDataset(dataset) {
6870
+ return { ...dataset, golden: dataset.golden ?? false };
6871
+ }
6872
+ function normalizeDatasetResult(response) {
6873
+ return { ...response, dataset: normalizeDataset(response.dataset) };
6874
+ }
6869
6875
  function sleep(ms) {
6870
6876
  return new Promise((resolve) => setTimeout(resolve, ms));
6871
6877
  }
@@ -6882,11 +6888,13 @@ var DatasetsClient = class {
6882
6888
  * leaves an existing one untouched.
6883
6889
  */
6884
6890
  async save(params) {
6885
- return this.httpClient.request("/api/sdk/datasets", {
6891
+ const response = await this.httpClient.request("/api/sdk/datasets", {
6886
6892
  traceFunctionKey: params.traceFunctionKey,
6887
6893
  name: params.name,
6888
- ...params.description === void 0 ? {} : { description: params.description }
6894
+ ...params.description === void 0 ? {} : { description: params.description },
6895
+ ...typeof params.golden === "boolean" ? { golden: params.golden } : {}
6889
6896
  });
6897
+ return normalizeDatasetResult(response);
6890
6898
  }
6891
6899
  /**
6892
6900
  * Rename a dataset or change its description in place. The dataset keeps its
@@ -6896,18 +6904,21 @@ var DatasetsClient = class {
6896
6904
  * organization.
6897
6905
  */
6898
6906
  async update(datasetId, params) {
6899
- if (params.name === void 0 && params.description === void 0) {
6900
- throw new BitfabError("Provide name and/or description to update.");
6907
+ if (params.name === void 0 && params.description === void 0 && params.golden === void 0) {
6908
+ throw new BitfabError(
6909
+ "Provide name, description, and/or golden to update."
6910
+ );
6901
6911
  }
6902
6912
  const response = await this.httpClient.request(
6903
6913
  datasetPath(datasetId),
6904
6914
  {
6905
6915
  ...params.name === void 0 ? {} : { name: params.name },
6906
- ...params.description === void 0 ? {} : { description: params.description }
6916
+ ...params.description === void 0 ? {} : { description: params.description },
6917
+ ...typeof params.golden === "boolean" ? { golden: params.golden } : {}
6907
6918
  },
6908
6919
  { method: "PATCH" }
6909
6920
  );
6910
- return response.dataset;
6921
+ return normalizeDataset(response.dataset);
6911
6922
  }
6912
6923
  /**
6913
6924
  * List datasets, scoped to one trace function when `traceFunctionKey` is
@@ -6925,7 +6936,7 @@ var DatasetsClient = class {
6925
6936
  query.set("cursor", cursor);
6926
6937
  }
6927
6938
  const response = await this.httpClient.get(`/api/sdk/datasets?${query}`);
6928
- datasets.push(...response.datasets);
6939
+ datasets.push(...response.datasets.map(normalizeDataset));
6929
6940
  cursor = response.nextCursor ?? void 0;
6930
6941
  } while (cursor !== void 0);
6931
6942
  return datasets;
@@ -6935,7 +6946,7 @@ var DatasetsClient = class {
6935
6946
  const response = await this.httpClient.get(
6936
6947
  datasetPath(datasetId)
6937
6948
  );
6938
- return response.dataset;
6949
+ return normalizeDataset(response.dataset);
6939
6950
  }
6940
6951
  /** Fetches all trace-ID pages, the same membership a replay with `datasetId` selects. */
6941
6952
  async listTraces(datasetId) {
@@ -6956,17 +6967,13 @@ var DatasetsClient = class {
6956
6967
  * `skippedTraceIds` rather than failing the call.
6957
6968
  */
6958
6969
  async addTraces(datasetId, traceIds) {
6959
- return this.httpClient.request(
6960
- datasetPath(datasetId, "/traces"),
6961
- { traceIds }
6962
- );
6970
+ const response = await this.httpClient.request(datasetPath(datasetId, "/traces"), { traceIds });
6971
+ return normalizeDatasetResult(response);
6963
6972
  }
6964
6973
  /** Remove traces from the dataset. The traces themselves are never deleted. */
6965
6974
  async removeTraces(datasetId, traceIds) {
6966
- return this.httpClient.request(
6967
- datasetPath(datasetId, "/removeTraces"),
6968
- { traceIds }
6969
- );
6975
+ const response = await this.httpClient.request(datasetPath(datasetId, "/removeTraces"), { traceIds });
6976
+ return normalizeDatasetResult(response);
6970
6977
  }
6971
6978
  /**
6972
6979
  * Assign graders to the dataset (1 to 100 ids per call). Graders outside the
@@ -6974,17 +6981,13 @@ var DatasetsClient = class {
6974
6981
  * `skippedGraderIds` rather than failing the call.
6975
6982
  */
6976
6983
  async addGraders(datasetId, graderIds) {
6977
- return this.httpClient.request(
6978
- datasetPath(datasetId, "/graders"),
6979
- { graderIds }
6980
- );
6984
+ const response = await this.httpClient.request(datasetPath(datasetId, "/graders"), { graderIds });
6985
+ return normalizeDatasetResult(response);
6981
6986
  }
6982
6987
  /** Unassign graders from the dataset. */
6983
6988
  async removeGraders(datasetId, graderIds) {
6984
- return this.httpClient.request(
6985
- datasetPath(datasetId, "/removeGraders"),
6986
- { graderIds }
6987
- );
6989
+ const response = await this.httpClient.request(datasetPath(datasetId, "/removeGraders"), { graderIds });
6990
+ return normalizeDatasetResult(response);
6988
6991
  }
6989
6992
  async rerunGraders(datasetId, options = {}) {
6990
6993
  const started = await this.httpClient.request(