@smoothbricks/lmao 0.3.1 → 0.3.3

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.
@@ -2,7 +2,8 @@
2
2
  * Bun test tracing preload.
3
3
  *
4
4
  * Registers LMAO SQLite-backed test tracing after the Typia preload has already
5
- * been registered in bunfig.
5
+ * been registered in bunfig. Wiring-only: consumer resolution lives in
6
+ * `../lib/testing/consumer-package.js`.
6
7
  */
7
8
  export {};
8
9
  //# sourceMappingURL=trace-preload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trace-preload.d.ts","sourceRoot":"","sources":["../../../src/bun/trace-preload.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
1
+ {"version":3,"file":"trace-preload.d.ts","sourceRoot":"","sources":["../../../src/bun/trace-preload.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -2,26 +2,23 @@
2
2
  * Bun test tracing preload.
3
3
  *
4
4
  * Registers LMAO SQLite-backed test tracing after the Typia preload has already
5
- * been registered in bunfig.
5
+ * been registered in bunfig. Wiring-only: consumer resolution lives in
6
+ * `../lib/testing/consumer-package.js`.
6
7
  */
7
- import { existsSync } from 'node:fs';
8
- import { dirname, join, resolve } from 'node:path';
9
8
  import { autoSetupBunTestTracing } from '../lib/testing/bun-harness.js';
10
- function findWorkspacePackagesDir(start) {
11
- let directory = resolve(start);
12
- while (true) {
13
- const packagesDir = join(directory, 'packages');
14
- if (existsSync(join(packagesDir, 'lmao', 'package.json'))) {
15
- return packagesDir;
16
- }
17
- const parent = dirname(directory);
18
- if (parent === directory) {
19
- return null;
20
- }
21
- directory = parent;
22
- }
9
+ import { resolveConsumerTarget } from '../lib/testing/consumer-package.js';
10
+ const target = resolveConsumerTarget(process.cwd());
11
+ if (target.kind === 'package') {
12
+ await autoSetupBunTestTracing({ packageRoot: target.packageRoot });
23
13
  }
24
- const packagesDir = findWorkspacePackagesDir(process.cwd());
25
- if (packagesDir) {
26
- await autoSetupBunTestTracing({ packagesDir });
14
+ else if (target.kind === 'workspace-root') {
15
+ await autoSetupBunTestTracing({ workspaceRoot: target.workspaceRoot, packageRoots: target.packageRoots });
16
+ }
17
+ else {
18
+ // WHY loud: this preload is only ever loaded on purpose (bunfig `preload`),
19
+ // so failing to install tracing must never be a silent no-op — that is how
20
+ // stale .trace-results.db databases go unnoticed for months.
21
+ console.error(`[lmao] trace-preload: no package.json found above ${process.cwd()} ` +
22
+ `(searched: ${target.searched.join(', ')}). Test tracing is DISABLED for this run — ` +
23
+ 'run bun test from inside a package.');
27
24
  }
@@ -178,8 +178,21 @@ export type SpanFn<Ctx extends OpContext> = {
178
178
  *
179
179
  * Use when the callback is guaranteed sync and should return immediately
180
180
  * with a Result envelope.
181
+ *
182
+ * WHY: mirrors SpanFn's dual dispatch. An Op carries its own frozen callsite
183
+ * plan; an inline closure borrows the enclosing span's plan, so a sync callback
184
+ * that captures locals does not need a module-level Op just to be traced.
185
+ *
186
+ * @example
187
+ * const result = ctx.spanSync('validate', (childCtx) => {
188
+ * childCtx.tag.step('validation');
189
+ * return childCtx.ok({ valid: true });
190
+ * });
181
191
  */
182
- export type SpanSyncFn<Ctx extends OpContext> = <S, E>(name: string, op: Op<Ctx, [], S, E>) => Result<S, E>;
192
+ export type SpanSyncFn<Ctx extends OpContext> = {
193
+ <S, E>(name: string, op: Op<Ctx, [], S, E>): Result<S, E>;
194
+ <S, E>(name: string, fn: (ctx: SpanContext<Ctx>) => Result<S, E>): Result<S, E>;
195
+ };
183
196
  /**
184
197
  * SpanContext - what op functions receive.
185
198
  *
@@ -1 +1 @@
1
- {"version":3,"file":"spanContextTypes.d.ts","sourceRoot":"","sources":["../../../../src/lib/opContext/spanContextTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spanContextTypes.d.ts","sourceRoot":"","sources":["../../../../src/lib/opContext/spanContextTypes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"spanContext.d.ts","sourceRoot":"","sources":["../../../src/lib/spanContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spanContext.d.ts","sourceRoot":"","sources":["../../../src/lib/spanContext.ts"],"names":[],"mappings":"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"}
@@ -506,10 +506,13 @@ export function createSpanContextClass(_schemaOnly, logBinding, capabilities = R
506
506
  }
507
507
  };
508
508
  this.span = span;
509
- this.spanSync = function spanSync(name, op) {
510
- const callsitePlan = op.callsitePlan;
511
- const childCtx = asSpanContextInstance(callsitePlan.newCtx0(self));
512
- return self.spanSync0(0, name, childCtx, callsitePlan, op.fn);
509
+ this.spanSync = function spanSync(name, opOrFn) {
510
+ // WHY: spanSync mirrors span()'s dual dispatch. resolveSpanTarget yields the Op's own
511
+ // frozen callsite plan, or the enclosing span's plan when the target is an inline
512
+ // closure, so a sync callback that captures locals needs no module-level Op.
513
+ const target = resolveSpanTarget(opOrFn, self._physicalLayoutPlan, self._spanBuffer._opMetadata);
514
+ const childCtx = asSpanContextInstance(target.callsitePlan.newCtx0(self));
515
+ return self.spanSync0(0, name, childCtx, target.callsitePlan, target.fn);
513
516
  };
514
517
  }
515
518
  //#endregion smoo/lmao!n/context-flow-span-promise
@@ -127,18 +127,23 @@ export declare namespace it {
127
127
  var todo: bunTest.Test<[]>;
128
128
  }
129
129
  export { _afterAll as afterAll, _afterEach as afterEach, _beforeAll as beforeAll, _beforeEach as beforeEach, _expect as expect, };
130
- export type AutoSetupOptions = {
131
- /** Absolute path to the packages directory to scan for test-suite-tracer.ts files. */
132
- packagesDir: string;
130
+ export type AutoSetupTarget = {
131
+ /** Root of the single consumer package whose tests are running. */
132
+ readonly packageRoot: string;
133
+ } | {
134
+ /** Workspace root for a cross-package run, with its member package roots. */
135
+ readonly workspaceRoot: string;
136
+ readonly packageRoots: readonly string[];
133
137
  };
134
138
  /**
135
- * Auto-discover package test-suite-tracers and create the root tracer for the
136
- * current bun test run.
139
+ * Create the root tracer for the current bun test run from a resolved consumer
140
+ * target (see `resolveConsumerTarget` in `./consumer-package.js`).
137
141
  *
138
- * When Bun is running from inside `packages/<name>`, prefer that package's own
139
- * `src/test-suite-tracer.ts` and avoid importing unrelated packages. Repo-root
140
- * runs still fall back to the full scan so cross-package test runs keep the
141
- * merged-schema behavior.
142
+ * A package target imports that package's own `src/test-suite-tracer.ts` (if
143
+ * present) and writes `.trace-results.db` at the package root. A
144
+ * workspace-root target scans the member packages' tracer modules so
145
+ * cross-package runs keep the merged-schema behavior, writing the DB at the
146
+ * workspace root.
142
147
  *
143
148
  * Per-package `useTestSpan()` delegates to the global `useTestSpan()` from this
144
149
  * module which checks `_activeSuiteTracer` — set by the root preload via
@@ -146,10 +151,10 @@ export type AutoSetupOptions = {
146
151
  *
147
152
  * @example
148
153
  * ```ts
149
- * // test-trace-preload.ts (monorepo root)
150
- * import { autoSetupBunTestTracing } from './packages/lmao/src/lib/testing/bun-harness.js';
151
- * await autoSetupBunTestTracing({ packagesDir: './packages' });
154
+ * // bun trace preload
155
+ * const target = resolveConsumerTarget(process.cwd());
156
+ * if (target.kind === 'package') await autoSetupBunTestTracing({ packageRoot: target.packageRoot });
152
157
  * ```
153
158
  */
154
- export declare function autoSetupBunTestTracing(options: AutoSetupOptions): Promise<boolean>;
159
+ export declare function autoSetupBunTestTracing(target: AutoSetupTarget): Promise<boolean>;
155
160
  //# sourceMappingURL=bun-harness.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bun-harness.d.ts","sourceRoot":"","sources":["../../../../src/lib/testing/bun-harness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bun-harness.d.ts","sourceRoot":"","sources":["../../../../src/lib/testing/bun-harness.ts"],"names":[],"mappings":"AA4CA,OAAO,KAAK,OAAO,MAAM,UAAU,CAAC;AACpC,OAAO,EACL,QAAQ,IAAI,SAAS,EACrB,SAAS,IAAI,UAAU,EACvB,SAAS,IAAI,UAAU,EACvB,UAAU,IAAI,WAAW,EACzB,QAAQ,IAAI,SAAS,EACrB,MAAM,IAAI,OAAO,EACjB,EAAE,IAAI,GAAG,EAEV,MAAM,UAAU,CAAC;AAKlB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAA4C,gBAAgB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACrH,OAAO,EAAE,CAAC,EAAE,MAAM,sBAAsB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AA8B3C,KAAK,kBAAkB,CAAC,CAAC,SAAS,gBAAgB,IAAI,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAClF,KAAK,sBAAsB,GAAG;IAAE,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAA;CAAE,CAAC;AAC1E,KAAK,aAAa,CAAC,IAAI,SAAS,YAAY,IAAI,sBAAsB,GAAG,IAAI,CAAC;AAC9E,KAAK,WAAW,GAAG,OAAO,SAAS,CAAC;AACpC,KAAK,KAAK,GAAG,OAAO,GAAG,CAAC;AAOxB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,WAAW,CAAC;IACtB,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,KAAK,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AASD,KAAK,sBAAsB,CAAC,CAAC,SAAS,gBAAgB,EAAE,IAAI,SAAS,YAAY,IAC/E,CAAC,SAAS,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,IAAI,EAAE,MAAM,OAAO,CAAC,GACpE,gBAAgB,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,GACzG,KAAK,CAAC;AAEZ,MAAM,MAAM,mBAAmB,CAAC,IAAI,SAAS,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI;IAClF;;;;OAIG;IACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,uEAAuE;IACvE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,IAAI,CAAC;CACzB,CAAC;AAsLF,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,gBAAgB;IAC/D,KAAK,IAAI,IAAI,CAAC;IACd,WAAW,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACrC,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,iBAAiB,CAAC,OAAO,SAAS,kBAAkB,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC;CACxF;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,gBAAgB;IAC5D,aAAa,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACxC,WAAW,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACrC,wBAAwB,IAAI,IAAI,CAAC;CAClC;AAED,MAAM,MAAM,yBAAyB,CACnC,CAAC,SAAS,gBAAgB,EAC1B,IAAI,SAAS,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAC9C,qBAAqB,CAAC,sBAAsB,CAAC,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAE1E,MAAM,MAAM,UAAU,CACpB,CAAC,SAAS,gBAAgB,EAC1B,IAAI,SAAS,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAC9C,yBAAyB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAEvC,MAAM,WAAW,mBAAmB;IAClC,KAAK,IAAI,IAAI,CAAC;IACd,WAAW,IAAI,OAAO,CAAC;IACvB,SAAS,IAAI,OAAO,CAAC;IACrB,iBAAiB,CAAC,OAAO,SAAS,kBAAkB,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC;CACxF;AAID,iGAAiG;AACjG,wBAAgB,oBAAoB,IAAI,mBAAmB,GAAG,IAAI,CAEjE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAIvE;AAED,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,gBAAgB,EAC/D,OAAO,EAAE,CAAC,EACV,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,GACtD,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC;AACzE,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,gBAAgB,EAAE,IAAI,SAAS,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACjH,OAAO,EAAE,CAAC,EACV,OAAO,CAAC,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAClC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAatE;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,EACzD,OAAO,EAAE,CAAC,EACV,OAAO,CAAC,EAAE;IAAE,gBAAgB,CAAC,EAAE,YAAY,CAAA;CAAE,GAC5C;IACD,WAAW,EAAE,MAAM,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,SAAS,EAAE,CAAC,CAAC;IACb,gBAAgB,EAAE,YAAY,GAAG,SAAS,CAAC;CAC5C,CAMA;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,gBAAgB,EACvD,OAAO,EAAE,CAAC,EACV,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,kBAAkB,CAAC,GACtD,qBAAqB,CAAC,sBAAsB,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC;AAC5E,wBAAgB,cAAc,CAAC,CAAC,SAAS,gBAAgB,EAAE,IAAI,SAAS,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACzG,OAAO,EAAE,CAAC,EACV,OAAO,CAAC,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAClC,qBAAqB,CAAC,sBAAsB,CAAC,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AA6OzE,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAoE9G;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,kBAAkB,EAAE,aAAa,EAAE,OAAO,GAAG,OAAO,CAwErG;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,gBAAgB,KAAK,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAevF;;;;;;GAMG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAWpD;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,QASpD;yBATe,QAAQ;;;;AA6ExB,4EAA4E;AAC5E,wBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAerE;yBAfe,EAAE;;;;AAyBlB,OAAO,EACL,SAAS,IAAI,QAAQ,EACrB,UAAU,IAAI,SAAS,EACvB,UAAU,IAAI,SAAS,EACvB,WAAW,IAAI,UAAU,EACzB,OAAO,IAAI,MAAM,GAClB,CAAC;AAMF,MAAM,MAAM,eAAe,GACvB;IACE,mEAAmE;IACnE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,GACD;IACE,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C,CAAC;AAEN;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAkDvF"}
@@ -690,13 +690,14 @@ assignOptionalBoundTestFunction(it, 'if', _it, _it);
690
690
  // Re-export everything else unchanged
691
691
  export { _afterAll as afterAll, _afterEach as afterEach, _beforeAll as beforeAll, _beforeEach as beforeEach, _expect as expect, };
692
692
  /**
693
- * Auto-discover package test-suite-tracers and create the root tracer for the
694
- * current bun test run.
693
+ * Create the root tracer for the current bun test run from a resolved consumer
694
+ * target (see `resolveConsumerTarget` in `./consumer-package.js`).
695
695
  *
696
- * When Bun is running from inside `packages/<name>`, prefer that package's own
697
- * `src/test-suite-tracer.ts` and avoid importing unrelated packages. Repo-root
698
- * runs still fall back to the full scan so cross-package test runs keep the
699
- * merged-schema behavior.
696
+ * A package target imports that package's own `src/test-suite-tracer.ts` (if
697
+ * present) and writes `.trace-results.db` at the package root. A
698
+ * workspace-root target scans the member packages' tracer modules so
699
+ * cross-package runs keep the merged-schema behavior, writing the DB at the
700
+ * workspace root.
700
701
  *
701
702
  * Per-package `useTestSpan()` delegates to the global `useTestSpan()` from this
702
703
  * module which checks `_activeSuiteTracer` — set by the root preload via
@@ -704,48 +705,37 @@ export { _afterAll as afterAll, _afterEach as afterEach, _beforeAll as beforeAll
704
705
  *
705
706
  * @example
706
707
  * ```ts
707
- * // test-trace-preload.ts (monorepo root)
708
- * import { autoSetupBunTestTracing } from './packages/lmao/src/lib/testing/bun-harness.js';
709
- * await autoSetupBunTestTracing({ packagesDir: './packages' });
708
+ * // bun trace preload
709
+ * const target = resolveConsumerTarget(process.cwd());
710
+ * if (target.kind === 'package') await autoSetupBunTestTracing({ packageRoot: target.packageRoot });
710
711
  * ```
711
712
  */
712
- export async function autoSetupBunTestTracing(options) {
713
- const { join, relative, resolve, sep } = await import('node:path');
714
- const { existsSync, readdirSync } = await import('node:fs');
715
- const packagesDir = resolve(options.packagesDir);
716
- if (!existsSync(packagesDir))
717
- return false;
718
- const installSuite = (opContext, mergedSchema) => {
713
+ export async function autoSetupBunTestTracing(target) {
714
+ const { join } = await import('node:path');
715
+ const { existsSync } = await import('node:fs');
716
+ const installSuite = (opContext, mergedSchema, dbDir) => {
719
717
  const hasCustomSchema = Object.keys(mergedSchema).length > 0;
720
718
  const suite = makeBunTestSuiteTracer(opContext, {
721
- sqlite: { dbPath: '.trace-results.db' },
719
+ sqlite: { dbPath: join(dbDir, '.trace-results.db') },
722
720
  extraTestColumns: hasCustomSchema && isSchemaFieldsRecord(mergedSchema) ? mergedSchema : undefined,
723
721
  });
724
722
  suite.setupBunTestSuiteTracing();
725
723
  return true;
726
724
  };
727
- const cwd = resolve(process.cwd());
728
- const relativeToPackagesDir = relative(packagesDir, cwd);
729
- const isPackageLocalRun = relativeToPackagesDir !== '' &&
730
- !relativeToPackagesDir.startsWith('..') &&
731
- !relativeToPackagesDir.startsWith(`.${sep}`);
732
- if (isPackageLocalRun) {
733
- const [packageName] = relativeToPackagesDir.split(sep);
734
- const tracerPath = join(packagesDir, packageName, 'src', 'test-suite-tracer.ts');
725
+ if ('packageRoot' in target) {
726
+ const tracerPath = join(target.packageRoot, 'src', 'test-suite-tracer.ts');
735
727
  if (!existsSync(tracerPath)) {
736
- return installSuite(defaultAutoSetupOpContext, {});
728
+ return installSuite(defaultAutoSetupOpContext, {}, target.packageRoot);
737
729
  }
738
730
  const mod = await import(tracerPath);
739
731
  const mergedSchema = isSchemaFieldsRecord(mod.extraTestColumns) ? mod.extraTestColumns : {};
740
732
  const opContext = isOpContextBindingLike(mod.opContext) ? mod.opContext : defaultAutoSetupOpContext;
741
- return installSuite(opContext, mergedSchema);
733
+ return installSuite(opContext, mergedSchema, target.packageRoot);
742
734
  }
743
735
  const mergedSchema = {};
744
736
  let opContext = null;
745
- for (const entry of readdirSync(packagesDir, { withFileTypes: true })) {
746
- if (!entry.isDirectory())
747
- continue;
748
- const tracerPath = join(packagesDir, entry.name, 'src', 'test-suite-tracer.ts');
737
+ for (const packageRoot of target.packageRoots) {
738
+ const tracerPath = join(packageRoot, 'src', 'test-suite-tracer.ts');
749
739
  if (!existsSync(tracerPath))
750
740
  continue;
751
741
  const mod = await import(tracerPath);
@@ -758,5 +748,5 @@ export async function autoSetupBunTestTracing(options) {
758
748
  opContext = mod.opContext;
759
749
  }
760
750
  }
761
- return installSuite(opContext ?? defaultAutoSetupOpContext, mergedSchema);
751
+ return installSuite(opContext ?? defaultAutoSetupOpContext, mergedSchema, target.workspaceRoot);
762
752
  }
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Resolve the consumer package whose tests are running.
3
+ *
4
+ * WHY nearest-package.json, anchored on cwd: standard resolution semantics
5
+ * identify "the package whose tests are running" identically in every layout —
6
+ * a monorepo checkout, a consumer of the Bun isolated store
7
+ * (`node_modules/.bun/…`), or plain node_modules. This module ships inside an
8
+ * installed dependency, so nothing may ever be derived from its own file
9
+ * location; the test process cwd is the only truthful anchor.
10
+ */
11
+ export type ConsumerTarget = {
12
+ readonly kind: 'package';
13
+ readonly packageRoot: string;
14
+ } | {
15
+ readonly kind: 'workspace-root';
16
+ readonly workspaceRoot: string;
17
+ readonly packageRoots: readonly string[];
18
+ } | {
19
+ readonly kind: 'not-found';
20
+ readonly searched: readonly string[];
21
+ };
22
+ /**
23
+ * Walk up from `startDir` to the nearest directory holding a `package.json`.
24
+ * A nearest package.json that declares `workspaces` is a workspace-root run
25
+ * (cwd sits at or under the root but inside no member package — a member's own
26
+ * package.json would have been nearer); its members are expanded for the
27
+ * cross-package tracer scan.
28
+ */
29
+ export declare function resolveConsumerTarget(startDir: string): ConsumerTarget;
30
+ //# sourceMappingURL=consumer-package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consumer-package.d.ts","sourceRoot":"","sources":["../../../../src/lib/testing/consumer-package.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAC7G;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AA6CzE;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAuBtE"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Resolve the consumer package whose tests are running.
3
+ *
4
+ * WHY nearest-package.json, anchored on cwd: standard resolution semantics
5
+ * identify "the package whose tests are running" identically in every layout —
6
+ * a monorepo checkout, a consumer of the Bun isolated store
7
+ * (`node_modules/.bun/…`), or plain node_modules. This module ships inside an
8
+ * installed dependency, so nothing may ever be derived from its own file
9
+ * location; the test process cwd is the only truthful anchor.
10
+ */
11
+ import { existsSync, readdirSync, readFileSync } from 'node:fs';
12
+ import { dirname, join, resolve } from 'node:path';
13
+ /**
14
+ * WHY a hand-rolled structural probe instead of Typia: this runs on the
15
+ * preload bootstrap path, before the validation toolchain is guaranteed to be
16
+ * registered, and a malformed package.json must degrade to "plain package
17
+ * root", never to a crash that disables tracing.
18
+ */
19
+ function readWorkspacePatterns(packageJsonPath) {
20
+ try {
21
+ const parsed = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
22
+ if (typeof parsed !== 'object' || parsed === null)
23
+ return null;
24
+ const workspaces = Reflect.get(parsed, 'workspaces');
25
+ const patterns = Array.isArray(workspaces) ? workspaces : null;
26
+ if (!patterns)
27
+ return null;
28
+ return patterns.filter((entry) => typeof entry === 'string');
29
+ }
30
+ catch {
31
+ return null;
32
+ }
33
+ }
34
+ /**
35
+ * Expand workspace member patterns to existing package roots. Supports the
36
+ * forms Bun workspaces support in practice: a literal directory and a single
37
+ * trailing `/*` glob.
38
+ */
39
+ function expandWorkspaceMembers(workspaceRoot, patterns) {
40
+ const roots = [];
41
+ for (const pattern of patterns) {
42
+ if (pattern.endsWith('/*')) {
43
+ const parent = join(workspaceRoot, pattern.slice(0, -2));
44
+ if (!existsSync(parent))
45
+ continue;
46
+ for (const entry of readdirSync(parent, { withFileTypes: true })) {
47
+ if (!entry.isDirectory())
48
+ continue;
49
+ const candidate = join(parent, entry.name);
50
+ if (existsSync(join(candidate, 'package.json')))
51
+ roots.push(candidate);
52
+ }
53
+ }
54
+ else {
55
+ const candidate = join(workspaceRoot, pattern);
56
+ if (existsSync(join(candidate, 'package.json')))
57
+ roots.push(candidate);
58
+ }
59
+ }
60
+ return roots;
61
+ }
62
+ /**
63
+ * Walk up from `startDir` to the nearest directory holding a `package.json`.
64
+ * A nearest package.json that declares `workspaces` is a workspace-root run
65
+ * (cwd sits at or under the root but inside no member package — a member's own
66
+ * package.json would have been nearer); its members are expanded for the
67
+ * cross-package tracer scan.
68
+ */
69
+ export function resolveConsumerTarget(startDir) {
70
+ const searched = [];
71
+ let directory = resolve(startDir);
72
+ while (true) {
73
+ const packageJsonPath = join(directory, 'package.json');
74
+ searched.push(packageJsonPath);
75
+ if (existsSync(packageJsonPath)) {
76
+ const workspacePatterns = readWorkspacePatterns(packageJsonPath);
77
+ if (workspacePatterns !== null) {
78
+ return {
79
+ kind: 'workspace-root',
80
+ workspaceRoot: directory,
81
+ packageRoots: expandWorkspaceMembers(directory, workspacePatterns),
82
+ };
83
+ }
84
+ return { kind: 'package', packageRoot: directory };
85
+ }
86
+ const parent = dirname(directory);
87
+ if (parent === directory) {
88
+ return { kind: 'not-found', searched };
89
+ }
90
+ directory = parent;
91
+ }
92
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smoothbricks/lmao",
3
- "version": "0.3.1",
3
+ "version": "0.3.3",
4
4
  "type": "module",
5
5
  "sideEffects": [
6
6
  "./dist/vocabulary/register/v1.js",
@@ -2,29 +2,25 @@
2
2
  * Bun test tracing preload.
3
3
  *
4
4
  * Registers LMAO SQLite-backed test tracing after the Typia preload has already
5
- * been registered in bunfig.
5
+ * been registered in bunfig. Wiring-only: consumer resolution lives in
6
+ * `../lib/testing/consumer-package.js`.
6
7
  */
7
8
 
8
- import { existsSync } from 'node:fs';
9
- import { dirname, join, resolve } from 'node:path';
10
9
  import { autoSetupBunTestTracing } from '../lib/testing/bun-harness.js';
10
+ import { resolveConsumerTarget } from '../lib/testing/consumer-package.js';
11
11
 
12
- function findWorkspacePackagesDir(start: string): string | null {
13
- let directory = resolve(start);
14
- while (true) {
15
- const packagesDir = join(directory, 'packages');
16
- if (existsSync(join(packagesDir, 'lmao', 'package.json'))) {
17
- return packagesDir;
18
- }
19
- const parent = dirname(directory);
20
- if (parent === directory) {
21
- return null;
22
- }
23
- directory = parent;
24
- }
25
- }
26
-
27
- const packagesDir = findWorkspacePackagesDir(process.cwd());
28
- if (packagesDir) {
29
- await autoSetupBunTestTracing({ packagesDir });
12
+ const target = resolveConsumerTarget(process.cwd());
13
+ if (target.kind === 'package') {
14
+ await autoSetupBunTestTracing({ packageRoot: target.packageRoot });
15
+ } else if (target.kind === 'workspace-root') {
16
+ await autoSetupBunTestTracing({ workspaceRoot: target.workspaceRoot, packageRoots: target.packageRoots });
17
+ } else {
18
+ // WHY loud: this preload is only ever loaded on purpose (bunfig `preload`),
19
+ // so failing to install tracing must never be a silent no-op — that is how
20
+ // stale .trace-results.db databases go unnoticed for months.
21
+ console.error(
22
+ `[lmao] trace-preload: no package.json found above ${process.cwd()} ` +
23
+ `(searched: ${target.searched.join(', ')}). Test tracing is DISABLED for this run — ` +
24
+ 'run bun test from inside a package.',
25
+ );
30
26
  }
@@ -20,6 +20,7 @@ import {
20
20
  } from '../schema/systemSchema.js';
21
21
  import { createSpanBuffer } from '../spanBuffer.js';
22
22
  import { TestTracer } from '../tracers/TestTracer.js';
23
+ import { iterateSpanChildren } from '../traceTopology.js';
23
24
  import type { AnySpanBuffer, SpanBuffer } from '../types.js';
24
25
  import { createTestOpMetadata, createTestTraceRoot, createTestTracerOptions } from './test-helpers.js';
25
26
 
@@ -151,6 +152,84 @@ describe('Span Lifecycle', () => {
151
152
 
152
153
  expect(result.success).toBe(true);
153
154
  });
155
+
156
+ it('should support spanSync with an inline sync closure', async () => {
157
+ const tracer = new TestTracer(ctx, { ...createTestTracerOptions() });
158
+ const captured = 'closure-local';
159
+
160
+ const result = await tracer.trace('root-task', async (rootCtx) => {
161
+ const childResult = rootCtx.spanSync('sync-closure', (childCtx) => {
162
+ childCtx.tag.spanName('sync-closure');
163
+ return childCtx.ok(captured);
164
+ });
165
+
166
+ expect(childResult).not.toBeInstanceOf(Promise);
167
+ expect(childResult.success).toBe(true);
168
+ if (!childResult.success) throw new Error('expected closure child to succeed');
169
+ expect(childResult.value).toBe(captured);
170
+ return rootCtx.ok('root-ok');
171
+ });
172
+
173
+ expect(result.success).toBe(true);
174
+
175
+ const rootBuffer = tracer.rootBuffers[0];
176
+ if (!rootBuffer) throw new Error('expected a root buffer');
177
+ expect(Array.from(iterateSpanChildren(rootBuffer))).toHaveLength(1);
178
+ });
179
+
180
+ it('should return Err synchronously from a spanSync closure', async () => {
181
+ const tracer = new TestTracer(ctx, { ...createTestTracerOptions() });
182
+
183
+ const result = await tracer.trace('root-task', async (rootCtx) => {
184
+ const childResult = rootCtx.spanSync('sync-closure-err', (childCtx) =>
185
+ childCtx.err(VALIDATION_ERROR({ field: 'email', message: 'Invalid email' })),
186
+ );
187
+
188
+ expect(childResult).not.toBeInstanceOf(Promise);
189
+ expect(childResult.success).toBe(false);
190
+ if (childResult.success) throw new Error('expected closure child to fail');
191
+ expect(childResult.error.code).toBe('VALIDATION_ERROR');
192
+ expect(childResult.error.field).toBe('email');
193
+ return rootCtx.ok('root-ok');
194
+ });
195
+
196
+ expect(result.success).toBe(true);
197
+ });
198
+
199
+ it('should give a spanSync closure its own child context and nest further spans under it', async () => {
200
+ const tracer = new TestTracer(ctx, { ...createTestTracerOptions() });
201
+
202
+ const result = await tracer.trace('root-task', async (rootCtx) => {
203
+ const childResult = rootCtx.spanSync('sync-parent', (childCtx) => {
204
+ // WHY: a closure target must still receive a fresh child span context, not the
205
+ // enclosing one, otherwise nested spans would attach to the wrong parent.
206
+ expect(childCtx).not.toBe(rootCtx);
207
+
208
+ const grandchildResult = childCtx.spanSync('sync-grandchild', (grandchildCtx) => {
209
+ expect(grandchildCtx).not.toBe(childCtx);
210
+ expect(grandchildCtx).not.toBe(rootCtx);
211
+ return grandchildCtx.ok('grandchild-ok');
212
+ });
213
+
214
+ if (!grandchildResult.success) throw new Error('expected grandchild to succeed');
215
+ return childCtx.ok(grandchildResult.value);
216
+ });
217
+
218
+ if (!childResult.success) throw new Error('expected child to succeed');
219
+ expect(childResult.value).toBe('grandchild-ok');
220
+ return rootCtx.ok('root-ok');
221
+ });
222
+
223
+ expect(result.success).toBe(true);
224
+
225
+ const rootBuffer = tracer.rootBuffers[0];
226
+ if (!rootBuffer) throw new Error('expected a root buffer');
227
+ const children = Array.from(iterateSpanChildren(rootBuffer));
228
+ expect(children).toHaveLength(1);
229
+ const childBuffer = children[0];
230
+ if (!childBuffer) throw new Error('expected a child buffer');
231
+ expect(Array.from(iterateSpanChildren(childBuffer))).toHaveLength(1);
232
+ });
154
233
  });
155
234
 
156
235
  describe('Fluent Result API', () => {
@@ -229,8 +229,21 @@ export type SpanFn<Ctx extends OpContext> = {
229
229
  *
230
230
  * Use when the callback is guaranteed sync and should return immediately
231
231
  * with a Result envelope.
232
+ *
233
+ * WHY: mirrors SpanFn's dual dispatch. An Op carries its own frozen callsite
234
+ * plan; an inline closure borrows the enclosing span's plan, so a sync callback
235
+ * that captures locals does not need a module-level Op just to be traced.
236
+ *
237
+ * @example
238
+ * const result = ctx.spanSync('validate', (childCtx) => {
239
+ * childCtx.tag.step('validation');
240
+ * return childCtx.ok({ valid: true });
241
+ * });
232
242
  */
233
- export type SpanSyncFn<Ctx extends OpContext> = <S, E>(name: string, op: Op<Ctx, [], S, E>) => Result<S, E>;
243
+ export type SpanSyncFn<Ctx extends OpContext> = {
244
+ <S, E>(name: string, op: Op<Ctx, [], S, E>): Result<S, E>;
245
+ <S, E>(name: string, fn: (ctx: SpanContext<Ctx>) => Result<S, E>): Result<S, E>;
246
+ };
234
247
 
235
248
  // =============================================================================
236
249
  // SPAN CONTEXT TYPE
@@ -103,10 +103,10 @@ type SpanDispatchFn<Ctx extends OpContext, Args extends unknown[] = unknown[], S
103
103
  ...args: Args
104
104
  ) => Result<S, E> | Promise<Result<S, E>>;
105
105
 
106
- type SpanDispatchTarget<Ctx extends OpContext> = {
106
+ type SpanDispatchTarget<Ctx extends OpContext, S = unknown, E = unknown> = {
107
107
  readonly callsitePlan: CallsitePlan<Ctx['logSchema'], Ctx>;
108
108
  readonly opMetadata: OpMetadata;
109
- readonly fn: SpanDispatchFn<Ctx>;
109
+ readonly fn: SpanDispatchFn<Ctx, unknown[], S, E>;
110
110
  };
111
111
 
112
112
  function isOpLike(value: unknown): value is Op<OpContext, unknown[], unknown, unknown> {
@@ -119,14 +119,18 @@ function isOpLike(value: unknown): value is Op<OpContext, unknown[], unknown, un
119
119
  );
120
120
  }
121
121
 
122
- function isOpInstance<Ctx extends OpContext>(value: unknown): value is Op<Ctx, unknown[], unknown, unknown> {
122
+ function isOpInstance<Ctx extends OpContext, S = unknown, E = unknown>(
123
+ value: unknown,
124
+ ): value is Op<Ctx, unknown[], S, E> {
123
125
  return isOpLike(value);
124
126
  }
125
127
 
126
128
  // WHY: resolveSpanTarget() accepts either an Op instance or a raw span
127
129
  // function. TypeScript needs an explicit predicate here to preserve the call
128
130
  // signature when the non-Op branch passes `value` through as `fn`.
129
- function isSpanDispatchFn<Ctx extends OpContext>(value: unknown): value is SpanDispatchFn<Ctx> {
131
+ function isSpanDispatchFn<Ctx extends OpContext, S = unknown, E = unknown>(
132
+ value: unknown,
133
+ ): value is SpanDispatchFn<Ctx, unknown[], S, E> {
130
134
  return typeof value === 'function';
131
135
  }
132
136
 
@@ -156,12 +160,12 @@ function readStringArgument(args: IArguments, index: number, label: string): str
156
160
  return value;
157
161
  }
158
162
 
159
- function resolveSpanTarget<Ctx extends OpContext>(
163
+ function resolveSpanTarget<Ctx extends OpContext, S = unknown, E = unknown>(
160
164
  value: unknown,
161
165
  fallbackPlan: CallsitePlan<Ctx['logSchema'], Ctx>,
162
166
  fallbackMetadata: OpMetadata,
163
- ): SpanDispatchTarget<Ctx> {
164
- if (isOpInstance<Ctx>(value)) {
167
+ ): SpanDispatchTarget<Ctx, S, E> {
168
+ if (isOpInstance<Ctx, S, E>(value)) {
165
169
  return {
166
170
  callsitePlan: value.callsitePlan,
167
171
  opMetadata: value.metadata,
@@ -169,7 +173,7 @@ function resolveSpanTarget<Ctx extends OpContext>(
169
173
  };
170
174
  }
171
175
 
172
- if (!isSpanDispatchFn<Ctx>(value)) {
176
+ if (!isSpanDispatchFn<Ctx, S, E>(value)) {
173
177
  throw new TypeError('span() expects an Op or function');
174
178
  }
175
179
 
@@ -1042,10 +1046,16 @@ export function createSpanContextClass<Ctx extends OpContext>(
1042
1046
  };
1043
1047
  this.span = span;
1044
1048
 
1045
- this.spanSync = function spanSync<S, E>(name: string, op: Op<Ctx, [], S, E>): Result<S, E> {
1046
- const callsitePlan = op.callsitePlan;
1047
- const childCtx = asSpanContextInstance<Ctx>(callsitePlan.newCtx0(self));
1048
- return self.spanSync0(0, name, childCtx, callsitePlan, op.fn);
1049
+ this.spanSync = function spanSync<S, E>(
1050
+ name: string,
1051
+ opOrFn: Op<Ctx, [], S, E> | ((ctx: SpanContext<Ctx>) => Result<S, E>),
1052
+ ): Result<S, E> {
1053
+ // WHY: spanSync mirrors span()'s dual dispatch. resolveSpanTarget yields the Op's own
1054
+ // frozen callsite plan, or the enclosing span's plan when the target is an inline
1055
+ // closure, so a sync callback that captures locals needs no module-level Op.
1056
+ const target = resolveSpanTarget<Ctx, S, E>(opOrFn, self._physicalLayoutPlan, self._spanBuffer._opMetadata);
1057
+ const childCtx = asSpanContextInstance<Ctx>(target.callsitePlan.newCtx0(self));
1058
+ return self.spanSync0(0, name, childCtx, target.callsitePlan, target.fn);
1049
1059
  };
1050
1060
  }
1051
1061
  //#endregion smoo/lmao!n/context-flow-span-promise
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Tests for consumer-package resolution.
3
+ *
4
+ * The resolver must identify "the package whose tests are running" by standard
5
+ * resolution semantics — nearest package.json above cwd — identically in every
6
+ * layout: a monorepo checkout, a consumer of the Bun isolated store, or plain
7
+ * node_modules. The regression this guards: resolution anchored on the
8
+ * library's own file location left consumer repos' .trace-results.db silently
9
+ * stale.
10
+ */
11
+
12
+ import { afterEach, describe, expect, it } from 'bun:test';
13
+ import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
14
+ import { tmpdir } from 'node:os';
15
+ import { join } from 'node:path';
16
+ import { resolveConsumerTarget } from '../consumer-package.js';
17
+
18
+ const roots: string[] = [];
19
+
20
+ function makeTree(dirs: readonly string[], files: Readonly<Record<string, string>>): string {
21
+ const root = mkdtempSync(join(tmpdir(), 'lmao-consumer-'));
22
+ roots.push(root);
23
+ for (const dir of dirs) mkdirSync(join(root, dir), { recursive: true });
24
+ for (const [path, content] of Object.entries(files)) writeFileSync(join(root, path), content);
25
+ return root;
26
+ }
27
+
28
+ afterEach(() => {
29
+ for (const root of roots.splice(0)) rmSync(root, { recursive: true, force: true });
30
+ });
31
+
32
+ describe('resolveConsumerTarget', () => {
33
+ it('resolves the nearest package.json as the consumer package root', () => {
34
+ const root = makeTree(['repo/packages/some-app/src/deep'], {
35
+ 'repo/package.json': '{"workspaces":["packages/*"]}',
36
+ 'repo/packages/some-app/package.json': '{}',
37
+ });
38
+ const target = resolveConsumerTarget(join(root, 'repo', 'packages', 'some-app', 'src', 'deep'));
39
+ expect(target.kind).toBe('package');
40
+ if (target.kind === 'package') expect(target.packageRoot).toBe(join(root, 'repo', 'packages', 'some-app'));
41
+ });
42
+
43
+ it('resolves in a foreign consumer workspace regardless of where the library is installed', () => {
44
+ // Consumer repo whose lmao copy lives under the Bun isolated store — the
45
+ // resolver must anchor on cwd, never on any path related to the store.
46
+ const root = makeTree(
47
+ [
48
+ 'repo/packages/consumer-pkg',
49
+ 'repo/node_modules/.bun/@smoothbricks+lmao@0.0.0+cafebabe/node_modules/@smoothbricks/lmao',
50
+ ],
51
+ {
52
+ 'repo/package.json': '{"workspaces":["packages/*"]}',
53
+ 'repo/packages/consumer-pkg/package.json': '{}',
54
+ },
55
+ );
56
+ const target = resolveConsumerTarget(join(root, 'repo', 'packages', 'consumer-pkg'));
57
+ expect(target.kind).toBe('package');
58
+ if (target.kind === 'package') expect(target.packageRoot).toBe(join(root, 'repo', 'packages', 'consumer-pkg'));
59
+ });
60
+
61
+ it('treats a nearest package.json with workspaces as a workspace-root run and expands members', () => {
62
+ const root = makeTree(['repo/packages/a', 'repo/packages/b', 'repo/packages/not-a-pkg', 'repo/tools/standalone'], {
63
+ 'repo/package.json': '{"workspaces":["packages/*","tools/standalone"]}',
64
+ 'repo/packages/a/package.json': '{}',
65
+ 'repo/packages/b/package.json': '{}',
66
+ 'repo/tools/standalone/package.json': '{}',
67
+ });
68
+ const target = resolveConsumerTarget(join(root, 'repo'));
69
+ expect(target.kind).toBe('workspace-root');
70
+ if (target.kind === 'workspace-root') {
71
+ expect(target.workspaceRoot).toBe(join(root, 'repo'));
72
+ expect([...target.packageRoots].sort()).toEqual([
73
+ join(root, 'repo', 'packages', 'a'),
74
+ join(root, 'repo', 'packages', 'b'),
75
+ join(root, 'repo', 'tools', 'standalone'),
76
+ ]);
77
+ }
78
+ });
79
+
80
+ it('prefers a member package over the workspace root when cwd is inside the member', () => {
81
+ const root = makeTree(['repo/packages/member'], {
82
+ 'repo/package.json': '{"workspaces":["packages/*"]}',
83
+ 'repo/packages/member/package.json': '{}',
84
+ });
85
+ const target = resolveConsumerTarget(join(root, 'repo', 'packages', 'member'));
86
+ expect(target.kind).toBe('package');
87
+ });
88
+
89
+ it('classifies a workspace-root run from a non-member subdirectory', () => {
90
+ const root = makeTree(['repo/scripts', 'repo/packages/a'], {
91
+ 'repo/package.json': '{"workspaces":["packages/*"]}',
92
+ 'repo/packages/a/package.json': '{}',
93
+ });
94
+ const target = resolveConsumerTarget(join(root, 'repo', 'scripts'));
95
+ expect(target.kind).toBe('workspace-root');
96
+ });
97
+
98
+ it('degrades malformed package.json to a plain package root instead of crashing', () => {
99
+ const root = makeTree(['repo/pkg'], {
100
+ 'repo/pkg/package.json': '{not json',
101
+ });
102
+ const target = resolveConsumerTarget(join(root, 'repo', 'pkg'));
103
+ expect(target.kind).toBe('package');
104
+ if (target.kind === 'package') expect(target.packageRoot).toBe(join(root, 'repo', 'pkg'));
105
+ });
106
+ });
@@ -972,19 +972,26 @@ export {
972
972
  // Auto-discovery preload
973
973
  // =============================================================================
974
974
 
975
- export type AutoSetupOptions = {
976
- /** Absolute path to the packages directory to scan for test-suite-tracer.ts files. */
977
- packagesDir: string;
978
- };
975
+ export type AutoSetupTarget =
976
+ | {
977
+ /** Root of the single consumer package whose tests are running. */
978
+ readonly packageRoot: string;
979
+ }
980
+ | {
981
+ /** Workspace root for a cross-package run, with its member package roots. */
982
+ readonly workspaceRoot: string;
983
+ readonly packageRoots: readonly string[];
984
+ };
979
985
 
980
986
  /**
981
- * Auto-discover package test-suite-tracers and create the root tracer for the
982
- * current bun test run.
987
+ * Create the root tracer for the current bun test run from a resolved consumer
988
+ * target (see `resolveConsumerTarget` in `./consumer-package.js`).
983
989
  *
984
- * When Bun is running from inside `packages/<name>`, prefer that package's own
985
- * `src/test-suite-tracer.ts` and avoid importing unrelated packages. Repo-root
986
- * runs still fall back to the full scan so cross-package test runs keep the
987
- * merged-schema behavior.
990
+ * A package target imports that package's own `src/test-suite-tracer.ts` (if
991
+ * present) and writes `.trace-results.db` at the package root. A
992
+ * workspace-root target scans the member packages' tracer modules so
993
+ * cross-package runs keep the merged-schema behavior, writing the DB at the
994
+ * workspace root.
988
995
  *
989
996
  * Per-package `useTestSpan()` delegates to the global `useTestSpan()` from this
990
997
  * module which checks `_activeSuiteTracer` — set by the root preload via
@@ -992,22 +999,19 @@ export type AutoSetupOptions = {
992
999
  *
993
1000
  * @example
994
1001
  * ```ts
995
- * // test-trace-preload.ts (monorepo root)
996
- * import { autoSetupBunTestTracing } from './packages/lmao/src/lib/testing/bun-harness.js';
997
- * await autoSetupBunTestTracing({ packagesDir: './packages' });
1002
+ * // bun trace preload
1003
+ * const target = resolveConsumerTarget(process.cwd());
1004
+ * if (target.kind === 'package') await autoSetupBunTestTracing({ packageRoot: target.packageRoot });
998
1005
  * ```
999
1006
  */
1000
- export async function autoSetupBunTestTracing(options: AutoSetupOptions): Promise<boolean> {
1001
- const { join, relative, resolve, sep } = await import('node:path');
1002
- const { existsSync, readdirSync } = await import('node:fs');
1007
+ export async function autoSetupBunTestTracing(target: AutoSetupTarget): Promise<boolean> {
1008
+ const { join } = await import('node:path');
1009
+ const { existsSync } = await import('node:fs');
1003
1010
 
1004
- const packagesDir = resolve(options.packagesDir);
1005
- if (!existsSync(packagesDir)) return false;
1006
-
1007
- const installSuite = (opContext: OpContextBinding, mergedSchema: Record<string, unknown>): boolean => {
1011
+ const installSuite = (opContext: OpContextBinding, mergedSchema: Record<string, unknown>, dbDir: string): boolean => {
1008
1012
  const hasCustomSchema = Object.keys(mergedSchema).length > 0;
1009
1013
  const suite = makeBunTestSuiteTracer(opContext, {
1010
- sqlite: { dbPath: '.trace-results.db' },
1014
+ sqlite: { dbPath: join(dbDir, '.trace-results.db') },
1011
1015
  extraTestColumns: hasCustomSchema && isSchemaFieldsRecord(mergedSchema) ? mergedSchema : undefined,
1012
1016
  });
1013
1017
 
@@ -1015,34 +1019,25 @@ export async function autoSetupBunTestTracing(options: AutoSetupOptions): Promis
1015
1019
  return true;
1016
1020
  };
1017
1021
 
1018
- const cwd = resolve(process.cwd());
1019
- const relativeToPackagesDir = relative(packagesDir, cwd);
1020
- const isPackageLocalRun =
1021
- relativeToPackagesDir !== '' &&
1022
- !relativeToPackagesDir.startsWith('..') &&
1023
- !relativeToPackagesDir.startsWith(`.${sep}`);
1024
-
1025
- if (isPackageLocalRun) {
1026
- const [packageName] = relativeToPackagesDir.split(sep);
1027
- const tracerPath = join(packagesDir, packageName, 'src', 'test-suite-tracer.ts');
1022
+ if ('packageRoot' in target) {
1023
+ const tracerPath = join(target.packageRoot, 'src', 'test-suite-tracer.ts');
1028
1024
 
1029
1025
  if (!existsSync(tracerPath)) {
1030
- return installSuite(defaultAutoSetupOpContext, {});
1026
+ return installSuite(defaultAutoSetupOpContext, {}, target.packageRoot);
1031
1027
  }
1032
1028
 
1033
1029
  const mod = await import(tracerPath);
1034
1030
  const mergedSchema = isSchemaFieldsRecord(mod.extraTestColumns) ? mod.extraTestColumns : {};
1035
1031
  const opContext = isOpContextBindingLike(mod.opContext) ? mod.opContext : defaultAutoSetupOpContext;
1036
1032
 
1037
- return installSuite(opContext, mergedSchema);
1033
+ return installSuite(opContext, mergedSchema, target.packageRoot);
1038
1034
  }
1039
1035
 
1040
1036
  const mergedSchema: Record<string, unknown> = {};
1041
1037
  let opContext: OpContextBinding | null = null;
1042
1038
 
1043
- for (const entry of readdirSync(packagesDir, { withFileTypes: true })) {
1044
- if (!entry.isDirectory()) continue;
1045
- const tracerPath = join(packagesDir, entry.name, 'src', 'test-suite-tracer.ts');
1039
+ for (const packageRoot of target.packageRoots) {
1040
+ const tracerPath = join(packageRoot, 'src', 'test-suite-tracer.ts');
1046
1041
  if (!existsSync(tracerPath)) continue;
1047
1042
 
1048
1043
  const mod = await import(tracerPath);
@@ -1058,5 +1053,5 @@ export async function autoSetupBunTestTracing(options: AutoSetupOptions): Promis
1058
1053
  }
1059
1054
  }
1060
1055
 
1061
- return installSuite(opContext ?? defaultAutoSetupOpContext, mergedSchema);
1056
+ return installSuite(opContext ?? defaultAutoSetupOpContext, mergedSchema, target.workspaceRoot);
1062
1057
  }
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Resolve the consumer package whose tests are running.
3
+ *
4
+ * WHY nearest-package.json, anchored on cwd: standard resolution semantics
5
+ * identify "the package whose tests are running" identically in every layout —
6
+ * a monorepo checkout, a consumer of the Bun isolated store
7
+ * (`node_modules/.bun/…`), or plain node_modules. This module ships inside an
8
+ * installed dependency, so nothing may ever be derived from its own file
9
+ * location; the test process cwd is the only truthful anchor.
10
+ */
11
+
12
+ import { existsSync, readdirSync, readFileSync } from 'node:fs';
13
+ import { dirname, join, resolve } from 'node:path';
14
+
15
+ export type ConsumerTarget =
16
+ | { readonly kind: 'package'; readonly packageRoot: string }
17
+ | { readonly kind: 'workspace-root'; readonly workspaceRoot: string; readonly packageRoots: readonly string[] }
18
+ | { readonly kind: 'not-found'; readonly searched: readonly string[] };
19
+
20
+ /**
21
+ * WHY a hand-rolled structural probe instead of Typia: this runs on the
22
+ * preload bootstrap path, before the validation toolchain is guaranteed to be
23
+ * registered, and a malformed package.json must degrade to "plain package
24
+ * root", never to a crash that disables tracing.
25
+ */
26
+ function readWorkspacePatterns(packageJsonPath: string): readonly string[] | null {
27
+ try {
28
+ const parsed: unknown = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
29
+ if (typeof parsed !== 'object' || parsed === null) return null;
30
+ const workspaces: unknown = Reflect.get(parsed, 'workspaces');
31
+ const patterns = Array.isArray(workspaces) ? workspaces : null;
32
+ if (!patterns) return null;
33
+ return patterns.filter((entry): entry is string => typeof entry === 'string');
34
+ } catch {
35
+ return null;
36
+ }
37
+ }
38
+
39
+ /**
40
+ * Expand workspace member patterns to existing package roots. Supports the
41
+ * forms Bun workspaces support in practice: a literal directory and a single
42
+ * trailing `/*` glob.
43
+ */
44
+ function expandWorkspaceMembers(workspaceRoot: string, patterns: readonly string[]): readonly string[] {
45
+ const roots: string[] = [];
46
+ for (const pattern of patterns) {
47
+ if (pattern.endsWith('/*')) {
48
+ const parent = join(workspaceRoot, pattern.slice(0, -2));
49
+ if (!existsSync(parent)) continue;
50
+ for (const entry of readdirSync(parent, { withFileTypes: true })) {
51
+ if (!entry.isDirectory()) continue;
52
+ const candidate = join(parent, entry.name);
53
+ if (existsSync(join(candidate, 'package.json'))) roots.push(candidate);
54
+ }
55
+ } else {
56
+ const candidate = join(workspaceRoot, pattern);
57
+ if (existsSync(join(candidate, 'package.json'))) roots.push(candidate);
58
+ }
59
+ }
60
+ return roots;
61
+ }
62
+
63
+ /**
64
+ * Walk up from `startDir` to the nearest directory holding a `package.json`.
65
+ * A nearest package.json that declares `workspaces` is a workspace-root run
66
+ * (cwd sits at or under the root but inside no member package — a member's own
67
+ * package.json would have been nearer); its members are expanded for the
68
+ * cross-package tracer scan.
69
+ */
70
+ export function resolveConsumerTarget(startDir: string): ConsumerTarget {
71
+ const searched: string[] = [];
72
+ let directory = resolve(startDir);
73
+ while (true) {
74
+ const packageJsonPath = join(directory, 'package.json');
75
+ searched.push(packageJsonPath);
76
+ if (existsSync(packageJsonPath)) {
77
+ const workspacePatterns = readWorkspacePatterns(packageJsonPath);
78
+ if (workspacePatterns !== null) {
79
+ return {
80
+ kind: 'workspace-root',
81
+ workspaceRoot: directory,
82
+ packageRoots: expandWorkspaceMembers(directory, workspacePatterns),
83
+ };
84
+ }
85
+ return { kind: 'package', packageRoot: directory };
86
+ }
87
+ const parent = dirname(directory);
88
+ if (parent === directory) {
89
+ return { kind: 'not-found', searched };
90
+ }
91
+ directory = parent;
92
+ }
93
+ }