@livestore/utils-dev 0.4.0-dev.9 → 0.5.0-dev.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.
Files changed (82) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/node/DockerCompose/DockerCompose.d.ts +52 -0
  3. package/dist/node/DockerCompose/DockerCompose.d.ts.map +1 -0
  4. package/dist/node/DockerCompose/DockerCompose.js +158 -0
  5. package/dist/node/DockerCompose/DockerCompose.js.map +1 -0
  6. package/dist/node/DockerCompose/DockerCompose.test.d.ts +2 -0
  7. package/dist/node/DockerCompose/DockerCompose.test.d.ts.map +1 -0
  8. package/dist/node/{DockerComposeService/DockerComposeService.test.js → DockerCompose/DockerCompose.test.js} +18 -18
  9. package/dist/node/DockerCompose/DockerCompose.test.js.map +1 -0
  10. package/dist/node/DockerCompose/mod.d.ts +2 -0
  11. package/dist/node/DockerCompose/mod.d.ts.map +1 -0
  12. package/dist/node/DockerCompose/mod.js +2 -0
  13. package/dist/node/DockerCompose/mod.js.map +1 -0
  14. package/dist/node/FileLogger.d.ts +15 -8
  15. package/dist/node/FileLogger.d.ts.map +1 -1
  16. package/dist/node/FileLogger.js +64 -80
  17. package/dist/node/FileLogger.js.map +1 -1
  18. package/dist/node/cmd-log.d.ts +21 -0
  19. package/dist/node/cmd-log.d.ts.map +1 -0
  20. package/dist/node/cmd-log.js +58 -0
  21. package/dist/node/cmd-log.js.map +1 -0
  22. package/dist/node/cmd.d.ts +20 -14
  23. package/dist/node/cmd.d.ts.map +1 -1
  24. package/dist/node/cmd.js +248 -33
  25. package/dist/node/cmd.js.map +1 -1
  26. package/dist/node/cmd.test.d.ts +2 -0
  27. package/dist/node/cmd.test.d.ts.map +1 -0
  28. package/dist/node/cmd.test.js +103 -0
  29. package/dist/node/cmd.test.js.map +1 -0
  30. package/dist/node/mod.d.ts +5 -5
  31. package/dist/node/mod.d.ts.map +1 -1
  32. package/dist/node/mod.js +114 -66
  33. package/dist/node/mod.js.map +1 -1
  34. package/dist/node/workspace.d.ts +22 -0
  35. package/dist/node/workspace.d.ts.map +1 -0
  36. package/dist/node/workspace.js +26 -0
  37. package/dist/node/workspace.js.map +1 -0
  38. package/dist/node-vitest/Vitest.d.ts +17 -8
  39. package/dist/node-vitest/Vitest.d.ts.map +1 -1
  40. package/dist/node-vitest/Vitest.js +16 -16
  41. package/dist/node-vitest/Vitest.js.map +1 -1
  42. package/dist/node-vitest/Vitest.test.d.ts +6 -0
  43. package/dist/node-vitest/Vitest.test.d.ts.map +1 -1
  44. package/dist/node-vitest/Vitest.test.js +25 -10
  45. package/dist/node-vitest/Vitest.test.js.map +1 -1
  46. package/dist/wrangler/WranglerDevServer.d.ts +32 -20
  47. package/dist/wrangler/WranglerDevServer.d.ts.map +1 -1
  48. package/dist/wrangler/WranglerDevServer.js +79 -60
  49. package/dist/wrangler/WranglerDevServer.js.map +1 -1
  50. package/dist/wrangler/WranglerDevServer.test.js +31 -31
  51. package/dist/wrangler/WranglerDevServer.test.js.map +1 -1
  52. package/dist/wrangler/mod.d.ts +1 -1
  53. package/dist/wrangler/mod.d.ts.map +1 -1
  54. package/dist/wrangler/mod.js +1 -1
  55. package/dist/wrangler/mod.js.map +1 -1
  56. package/package.json +56 -21
  57. package/src/node/{DockerComposeService/DockerComposeService.test.ts → DockerCompose/DockerCompose.test.ts} +23 -20
  58. package/src/node/DockerCompose/DockerCompose.ts +328 -0
  59. package/src/node/DockerCompose/mod.ts +1 -0
  60. package/src/node/DockerCompose/test-fixtures/docker-compose.yml +4 -0
  61. package/src/node/FileLogger.ts +91 -115
  62. package/src/node/cmd-log.ts +95 -0
  63. package/src/node/cmd.test.ts +136 -0
  64. package/src/node/cmd.ts +431 -82
  65. package/src/node/mod.ts +152 -96
  66. package/src/node/workspace.ts +45 -0
  67. package/src/node-vitest/Vitest.test.ts +34 -10
  68. package/src/node-vitest/Vitest.ts +60 -66
  69. package/src/wrangler/WranglerDevServer.test.ts +38 -40
  70. package/src/wrangler/WranglerDevServer.ts +165 -108
  71. package/src/wrangler/fixtures/wrangler.toml +1 -1
  72. package/src/wrangler/mod.ts +1 -6
  73. package/dist/.tsbuildinfo.json +0 -1
  74. package/dist/node/DockerComposeService/DockerComposeService.d.ts +0 -58
  75. package/dist/node/DockerComposeService/DockerComposeService.d.ts.map +0 -1
  76. package/dist/node/DockerComposeService/DockerComposeService.js +0 -144
  77. package/dist/node/DockerComposeService/DockerComposeService.js.map +0 -1
  78. package/dist/node/DockerComposeService/DockerComposeService.test.d.ts +0 -2
  79. package/dist/node/DockerComposeService/DockerComposeService.test.d.ts.map +0 -1
  80. package/dist/node/DockerComposeService/DockerComposeService.test.js.map +0 -1
  81. package/src/node/DockerComposeService/DockerComposeService.ts +0 -328
  82. package/src/node/DockerComposeService/test-fixtures/docker-compose.yml +0 -4
package/dist/node/mod.js CHANGED
@@ -1,91 +1,87 @@
1
1
  import { performance } from 'node:perf_hooks';
2
- import * as OtelNodeSdk from '@effect/opentelemetry/NodeSdk';
3
- import { IS_BUN, isNonEmptyString } from '@livestore/utils';
4
- import { Config, Effect, FiberRef, Layer, LogLevel, OtelTracer } from '@livestore/utils/effect';
5
- import { OtelLiveDummy } from '@livestore/utils/node';
6
2
  import * as otel from '@opentelemetry/api';
7
- import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
8
- import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
9
- import { PeriodicExportingMetricReader } from '@opentelemetry/sdk-metrics';
10
- import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';
3
+ import { IS_BUN } from '@livestore/utils';
4
+ import { Config, Context, Effect, Exit, FetchHttpClient, Layer, Option, OtelTracer, Otlp, Schema, } from '@livestore/utils/effect';
5
+ import { OtelLiveDummy } from '@livestore/utils/node';
11
6
  export { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-http';
12
7
  export { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
13
8
  export * from "./cmd.js";
14
- export { DockerComposeError, DockerComposeService, startDockerComposeServicesScoped, } from "./DockerComposeService/DockerComposeService.js";
9
+ export * from "./DockerCompose/mod.js";
15
10
  export * as FileLogger from "./FileLogger.js";
11
+ export * from "./workspace.js";
16
12
  export const OtelLiveHttp = ({ serviceName, rootSpanName, rootSpanAttributes, parentSpan, skipLogUrl, traceNodeBootstrap, } = {}) => Effect.gen(function* () {
17
13
  const configRes = yield* Config.all({
18
- exporterUrl: Config.string('OTEL_EXPORTER_OTLP_ENDPOINT').pipe(Config.validate({ message: 'OTEL_EXPORTER_OTLP_ENDPOINT must be set', validation: isNonEmptyString })),
19
- serviceName: serviceName
14
+ exporterUrl: Config.nonEmptyString('OTEL_EXPORTER_OTLP_ENDPOINT'),
15
+ serviceName: serviceName !== undefined
20
16
  ? Config.succeed(serviceName)
21
17
  : Config.string('OTEL_SERVICE_NAME').pipe(Config.withDefault('livestore-utils-dev')),
22
- rootSpanName: rootSpanName
18
+ rootSpanName: rootSpanName !== undefined
23
19
  ? Config.succeed(rootSpanName)
24
20
  : Config.string('OTEL_ROOT_SPAN_NAME').pipe(Config.withDefault('RootSpan')),
25
21
  }).pipe(Effect.option);
26
22
  if (configRes._tag === 'None') {
27
23
  const RootSpanLive = Layer.span('DummyRoot', {});
28
- return RootSpanLive.pipe(Layer.provideMerge(OtelLiveDummy));
24
+ return withTracerReference(RootSpanLive.pipe(Layer.provideMerge(OtelLiveDummy)));
29
25
  }
30
26
  const config = configRes.value;
31
- const resource = { serviceName: config.serviceName };
32
- const metricReader = new PeriodicExportingMetricReader({
33
- exporter: new OTLPMetricExporter({ url: `${config.exporterUrl}/v1/metrics` }),
34
- exportIntervalMillis: 1000,
35
- });
36
- const OtelLive = OtelNodeSdk.layer(() => ({
37
- resource,
38
- metricReader,
39
- spanProcessor: new BatchSpanProcessor(new OTLPTraceExporter({ url: `${config.exporterUrl}/v1/traces`, headers: {} }), { scheduledDelayMillis: 50 }),
40
- })).pipe(
41
- // If an OpenTelemetry backend is not available, the `OtelNodeSdk` layer
42
- // will ignore the error when attempting to connect and emit a debug log
43
- // stating the reason for the error (in this case `ECONNREFUSED`). This
44
- // can cause problems for programs which rely on clean `stdout` (e.g.
45
- // command-line applications). To remedy this, the below code sets the
46
- // minimum log level `FiberRef` to `"None"` for the duration of the
47
- // `OtelNodeSdk`'s layer constructor.
48
- //
49
- // This can likely be removed when Livestore is migrated to the Effect
50
- // native Otlp exporters.
51
- Layer.locally(FiberRef.currentMinimumLogLevel, LogLevel.None));
27
+ const OtelLive = Otlp.layerJson({
28
+ baseUrl: config.exporterUrl,
29
+ metricsExportInterval: 1000,
30
+ tracerExportInterval: 50,
31
+ resource: { serviceName: config.serviceName },
32
+ }).pipe(Layer.provide(FetchHttpClient.layer));
33
+ const OtelTracerLive = Layer.succeed(OtelTracer.OtelTracer, otel.trace.getTracer(config.serviceName));
52
34
  const RootSpanLive = Layer.span(config.rootSpanName, {
53
35
  attributes: { config, ...rootSpanAttributes },
54
- onEnd: skipLogUrl ? undefined : (span) => logTraceUiUrlForSpan()(span.span),
36
+ onEnd: skipLogUrl === true ? undefined : (span) => logTraceUiUrlForTraceId()(span.traceId),
55
37
  parent: parentSpan,
56
38
  });
57
- const layer = yield* Layer.memoize(RootSpanLive.pipe(Layer.provideMerge(OtelLive)));
58
- if (traceNodeBootstrap) {
39
+ const baseLayer = RootSpanLive.pipe(Layer.provideMerge(Layer.mergeAll(OtelLive, OtelTracerLive)));
40
+ const memoMap = yield* Layer.makeMemoMap;
41
+ const layer = Layer.fromBuild((_, scope) => Layer.buildWithMemoMap(baseLayer, memoMap, scope));
42
+ if (traceNodeBootstrap === true && IS_BUN === false) {
59
43
  /**
60
44
  * Create a span representing the Node.js bootstrap duration.
45
+ * Note: Skipped in Bun since performance.nodeTiming is not properly supported.
61
46
  */
62
47
  yield* Effect.gen(function* () {
63
- const tracer = yield* OtelTracer.OtelTracer;
64
- const currentSpan = yield* OtelTracer.currentOtelSpan;
65
- const nodeTiming = performance.nodeTiming;
66
- // TODO get rid of this workaround for Bun once Bun properly supports performance.nodeTiming
67
- const startTime = IS_BUN ? nodeTiming.startTime : performance.timeOrigin + nodeTiming.nodeStart;
68
- const bootSpan = tracer.startSpan('node-bootstrap', {
69
- startTime: nodeTiming.nodeStart,
70
- attributes: {
71
- 'node.timing.nodeStart': nodeTiming.nodeStart,
72
- 'node.timing.environment': nodeTiming.environment,
73
- 'node.timing.bootstrapComplete': nodeTiming.bootstrapComplete,
74
- 'node.timing.loopStart': nodeTiming.loopStart,
75
- 'node.timing.duration': nodeTiming.duration,
76
- },
77
- }, otel.trace.setSpanContext(otel.context.active(), currentSpan.spanContext()));
78
- bootSpan.end(startTime + nodeTiming.duration);
48
+ const tracer = yield* Effect.tracer;
49
+ const currentSpan = yield* Effect.currentSpan;
50
+ const { nodeTiming, endAbs, durationAttr } = computeBootstrapTiming();
51
+ const bootSpan = tracer.span({
52
+ name: 'node-bootstrap',
53
+ parent: Option.some(currentSpan),
54
+ annotations: Context.empty(),
55
+ links: [],
56
+ startTime: millisToNanos(IS_BUN === true && typeof nodeTiming.nodeStart === 'number'
57
+ ? nodeTiming.nodeStart
58
+ : performance.timeOrigin + nodeTiming.nodeStart),
59
+ kind: 'internal',
60
+ root: false,
61
+ sampled: true,
62
+ });
63
+ for (const [key, value] of Object.entries({
64
+ 'node.timing.nodeStart': nodeTiming.nodeStart,
65
+ 'node.timing.environment': nodeTiming.environment,
66
+ 'node.timing.bootstrapComplete': nodeTiming.bootstrapComplete,
67
+ 'node.timing.loopStart': nodeTiming.loopStart,
68
+ 'node.timing.duration': durationAttr,
69
+ })) {
70
+ if (value !== undefined)
71
+ bootSpan.attribute(key, value);
72
+ }
73
+ bootSpan.end(millisToNanos(endAbs), Exit.void);
79
74
  }).pipe(Effect.provide(layer), Effect.orDie);
80
75
  }
81
- return layer;
82
- }).pipe(Layer.unwrapScoped);
83
- export const logTraceUiUrlForSpan = (printMsg) => (span) => getTracingBackendUrl(span).pipe(Effect.tap((url) => {
76
+ return withTracerReference(layer);
77
+ }).pipe(Layer.unwrap);
78
+ export const logTraceUiUrlForSpan = (printMsg) => (span) => logTraceUiUrlForTraceId(printMsg)(span.spanContext().traceId);
79
+ const logTraceUiUrlForTraceId = (printMsg) => (traceId) => getTracingBackendUrl(traceId).pipe(Effect.tap((url) => {
84
80
  if (url === undefined) {
85
81
  return Effect.logWarning('No tracing backend url found');
86
82
  }
87
83
  else {
88
- if (printMsg) {
84
+ if (printMsg !== undefined) {
89
85
  return Effect.log(printMsg(url));
90
86
  }
91
87
  else {
@@ -93,22 +89,74 @@ export const logTraceUiUrlForSpan = (printMsg) => (span) => getTracingBackendUrl
93
89
  }
94
90
  }
95
91
  }));
96
- export const getTracingBackendUrl = (span) => Effect.gen(function* () {
97
- const endpoint = yield* Config.string('GRAFANA_ENDPOINT').pipe(Config.option, Effect.orDie);
92
+ export const getTracingBackendUrl = (traceIdOrSpan) => Effect.gen(function* () {
93
+ const endpoint = yield* Config.string('GRAFANA_ENDPOINT').pipe(Config.option);
98
94
  if (endpoint._tag === 'None')
99
95
  return;
100
- const traceId = span.spanContext().traceId;
96
+ const traceId = typeof traceIdOrSpan === 'string' ? traceIdOrSpan : traceIdOrSpan.spanContext().traceId;
101
97
  // Grafana + Tempo
102
98
  const grafanaEndpoint = endpoint.value;
99
+ const left = yield* Schema.encodeEffect(Schema.fromJsonString(Schema.Unknown))({
100
+ datasource: 'tempo',
101
+ queries: [{ query: traceId, queryType: 'traceql', refId: 'A' }],
102
+ range: { from: 'now-1h', to: 'now' },
103
+ });
103
104
  const searchParams = new URLSearchParams({
104
105
  orgId: '1',
105
- left: JSON.stringify({
106
- datasource: 'tempo',
107
- queries: [{ query: traceId, queryType: 'traceql', refId: 'A' }],
108
- range: { from: 'now-1h', to: 'now' },
109
- }),
106
+ left,
110
107
  });
111
108
  // TODO make dynamic via env var
112
109
  return `${grafanaEndpoint}/explore?${searchParams.toString()}`;
113
- });
110
+ }).pipe(Effect.orDie);
111
+ /**
112
+ * Compute absolute start/end timestamps for the Node.js bootstrap span in a
113
+ * way that works in both Node and Bun.
114
+ *
115
+ * Context: Bun's perf_hooks PerformanceNodeTiming currently throws when
116
+ * accessing standard PerformanceEntry getters like `startTime` and
117
+ * `duration`, and some fields differ in semantics (e.g. `nodeStart` appears
118
+ * as an epoch timestamp rather than an offset). See:
119
+ * https://github.com/oven-sh/bun/issues/23041
120
+ *
121
+ * We therefore avoid the problematic getters and derive absolute timestamps
122
+ * using fields that exist in both runtimes.
123
+ *
124
+ * TODO: Simplify to a single, non-branching computation once the Bun issue
125
+ * above is fixed and Bun matches Node's semantics for PerformanceNodeTiming.
126
+ */
127
+ const computeBootstrapTiming = () => {
128
+ const nodeTiming = performance.nodeTiming;
129
+ // Absolute start time in ms since epoch.
130
+ const startAbs = IS_BUN === true
131
+ ? typeof nodeTiming.nodeStart === 'number'
132
+ ? nodeTiming.nodeStart
133
+ : performance.timeOrigin
134
+ : performance.timeOrigin + nodeTiming.nodeStart;
135
+ // Absolute end time.
136
+ const endAbs = IS_BUN === true
137
+ ? (() => {
138
+ const { loopStart, bootstrapComplete } = nodeTiming;
139
+ if (typeof loopStart === 'number' && loopStart > 0)
140
+ return startAbs + loopStart;
141
+ if (typeof bootstrapComplete === 'number' && bootstrapComplete >= startAbs)
142
+ return bootstrapComplete;
143
+ return startAbs + 1;
144
+ })()
145
+ : startAbs + nodeTiming.duration;
146
+ // Duration attribute value for the span.
147
+ const durationAttr = IS_BUN === true
148
+ ? (() => {
149
+ const { loopStart } = nodeTiming;
150
+ return typeof loopStart === 'number' && loopStart > 0 ? loopStart : 0;
151
+ })()
152
+ : nodeTiming.duration;
153
+ return { nodeTiming, startAbs, endAbs, durationAttr };
154
+ };
155
+ const millisToNanos = (millis) => BigInt(Math.round(millis * 1_000_000));
156
+ /**
157
+ * Effect v4 installs `Tracer.Tracer` through a `Context.Reference` fiber ref.
158
+ * The OTEL layers set that reference at runtime, but their layer output type is
159
+ * `never`, so we localize the public compatibility assertion here.
160
+ */
161
+ const withTracerReference = (layer) => layer;
114
162
  //# sourceMappingURL=mod.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/node/mod.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Context, Layer } from '@livestore/utils/effect';
2
+ export type WorkspaceInfo = string;
3
+ declare const CurrentWorkingDirectory_base: Context.ServiceClass<CurrentWorkingDirectory, "CurrentWorkingDirectory", string>;
4
+ /** Current working directory. */
5
+ export declare class CurrentWorkingDirectory extends CurrentWorkingDirectory_base {
6
+ /** Layer that captures the process cwd once. */
7
+ static live: Layer.Layer<CurrentWorkingDirectory, never, never>;
8
+ /** Override CWD for tests or nested invocations. */
9
+ static fromPath: (cwd: string) => Layer.Layer<CurrentWorkingDirectory, never, never>;
10
+ }
11
+ declare const LivestoreWorkspace_base: Context.ServiceClass<LivestoreWorkspace, "LivestoreWorkspace", string>;
12
+ /** Livestore workspace root (env required). */
13
+ export declare class LivestoreWorkspace extends LivestoreWorkspace_base {
14
+ /** Resolve from WORKSPACE_ROOT env. */
15
+ static live: Layer.Layer<LivestoreWorkspace, never, never>;
16
+ /** Provide a fixed Livestore root. */
17
+ static fromPath: (root: string) => Layer.Layer<LivestoreWorkspace, never, never>;
18
+ /** Derive a CurrentWorkingDirectory layer from the Livestore workspace root (with optional subpath) */
19
+ static toCwd: (/** Relative path to the Livestore workspace root */ subPath?: string) => Layer.Layer<CurrentWorkingDirectory, never, LivestoreWorkspace>;
20
+ }
21
+ export {};
22
+ //# sourceMappingURL=workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/node/workspace.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAU,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAEhE,MAAM,MAAM,aAAa,GAAG,MAAM,CAAA;;AAElC,iCAAiC;AACjC,qBAAa,uBAAwB,SAAQ,4BAE5C;IACC,gDAAgD;IAChD,MAAM,CAAC,IAAI,qDAGV;IAED,oDAAoD;IACpD,MAAM,CAAC,QAAQ,GAAI,KAAK,MAAM,wDAA4E;CAC3G;;AAED,+CAA+C;AAC/C,qBAAa,kBAAmB,SAAQ,uBAA0E;IAChH,uCAAuC;IACvC,MAAM,CAAC,IAAI,gDAMV;IAED,sCAAsC;IACtC,MAAM,CAAC,QAAQ,GAAI,MAAM,MAAM,mDAAmE;IAElG,uGAAuG;IACvG,MAAM,CAAC,KAAK,GAAI,oDAAoD,CAAC,UAAU,MAAM,qEAOlF;CACJ"}
@@ -0,0 +1,26 @@
1
+ import path from 'node:path';
2
+ import { shouldNeverHappen } from '@livestore/utils';
3
+ import { Context, Effect, Layer } from '@livestore/utils/effect';
4
+ /** Current working directory. */
5
+ export class CurrentWorkingDirectory extends Context.Service()('CurrentWorkingDirectory') {
6
+ /** Layer that captures the process cwd once. */
7
+ static live = Layer.effect(CurrentWorkingDirectory, Effect.sync(() => CurrentWorkingDirectory.of(process.cwd())));
8
+ /** Override CWD for tests or nested invocations. */
9
+ static fromPath = (cwd) => Layer.succeed(CurrentWorkingDirectory, CurrentWorkingDirectory.of(cwd));
10
+ }
11
+ /** Livestore workspace root (env required). */
12
+ export class LivestoreWorkspace extends Context.Service()('LivestoreWorkspace') {
13
+ /** Resolve from WORKSPACE_ROOT env. */
14
+ static live = Layer.effect(LivestoreWorkspace, Effect.sync(() => {
15
+ const root = process.env.WORKSPACE_ROOT ?? shouldNeverHappen('WORKSPACE_ROOT is not set');
16
+ return LivestoreWorkspace.of(root);
17
+ }));
18
+ /** Provide a fixed Livestore root. */
19
+ static fromPath = (root) => Layer.succeed(LivestoreWorkspace, LivestoreWorkspace.of(root));
20
+ /** Derive a CurrentWorkingDirectory layer from the Livestore workspace root (with optional subpath) */
21
+ static toCwd = (/** Relative path to the Livestore workspace root */ subPath) => Layer.effect(CurrentWorkingDirectory, Effect.gen(function* () {
22
+ const root = yield* LivestoreWorkspace;
23
+ return CurrentWorkingDirectory.of(path.join(root, subPath ?? ''));
24
+ }));
25
+ }
26
+ //# sourceMappingURL=workspace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/node/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAIhE,iCAAiC;AACjC,MAAM,OAAO,uBAAwB,SAAQ,OAAO,CAAC,OAAO,EAA0C,CACpG,yBAAyB,CAC1B;IACC,gDAAgD;IAChD,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CACxB,uBAAuB,EACvB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAC7D,CAAA;IAED,oDAAoD;IACpD,MAAM,CAAC,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,uBAAuB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;;AAG5G,+CAA+C;AAC/C,MAAM,OAAO,kBAAmB,SAAQ,OAAO,CAAC,OAAO,EAAqC,CAAC,oBAAoB,CAAC;IAChH,uCAAuC;IACvC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CACxB,kBAAkB,EAClB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACf,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,iBAAiB,CAAC,2BAA2B,CAAC,CAAA;QACzF,OAAO,kBAAkB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC,CAAC,CACH,CAAA;IAED,sCAAsC;IACtC,MAAM,CAAC,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAElG,uGAAuG;IACvG,MAAM,CAAC,KAAK,GAAG,CAAC,oDAAoD,CAAC,OAAgB,EAAE,EAAE,CACvF,KAAK,CAAC,MAAM,CACV,uBAAuB,EACvB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,kBAAkB,CAAA;QACtC,OAAO,uBAAuB,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAA;IACnE,CAAC,CAAC,CACH,CAAA"}
@@ -2,19 +2,21 @@ import type * as Vitest from '@effect/vitest';
2
2
  import { type Cause, Duration, Effect, type FastCheck as FC, Layer, type OtelTracer, type Schema, type Scope } from '@livestore/utils/effect';
3
3
  export * from '@effect/vitest';
4
4
  export declare const DEBUGGER_ACTIVE: boolean;
5
- export declare const makeWithTestCtx: <ROut = never, E1 = never, RIn = never>(ctxParams: WithTestCtxParams<ROut, E1, RIn>) => (testContext: Vitest.TestContext) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E1 | Cause.TimeoutException, Exclude<RIn, OtelTracer.OtelTracer | Scope.Scope> | Exclude<R, ROut | OtelTracer.OtelTracer | Scope.Scope>>;
5
+ type WithoutTestCtxServices<R> = Exclude<Exclude<R, OtelTracer.OtelTracer>, Scope.Scope>;
6
+ type WithoutLayerAndTestCtxServices<R, ROut> = Exclude<Exclude<R, ROut | OtelTracer.OtelTracer>, Scope.Scope>;
7
+ export declare const makeWithTestCtx: <ROut = never, E1 = never, RIn = never>(ctxParams: WithTestCtxParams<ROut, E1, RIn>) => (testContext: Vitest.TestContext) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E1 | Cause.TimeoutError, WithoutTestCtxServices<RIn> | WithoutLayerAndTestCtxServices<R, ROut>>;
6
8
  export type WithTestCtxParams<ROut, E1, RIn> = {
7
9
  suffix?: string;
8
10
  makeLayer?: (testContext: Vitest.TestContext) => Layer.Layer<ROut, E1, RIn | Scope.Scope>;
9
- timeout?: Duration.DurationInput;
11
+ timeout?: Duration.Input;
10
12
  forceOtel?: boolean;
11
13
  };
12
14
  export declare const withTestCtx: <ROut = never, E1 = never, RIn = never>(testContext: Vitest.TestContext, { suffix, makeLayer, timeout, forceOtel, }?: {
13
15
  suffix?: string;
14
- makeLayer?: (testContext: Vitest.TestContext) => Layer.Layer<ROut, E1, RIn>;
15
- timeout?: Duration.DurationInput;
16
+ makeLayer?: (testContext: Vitest.TestContext) => Layer.Layer<ROut, E1, RIn | Scope.Scope>;
17
+ timeout?: Duration.Input;
16
18
  forceOtel?: boolean;
17
- }) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E1 | Cause.TimeoutException, Exclude<RIn, OtelTracer.OtelTracer | Scope.Scope> | Exclude<R, ROut | OtelTracer.OtelTracer | Scope.Scope>>;
19
+ }) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E | E1 | Cause.TimeoutError, WithoutTestCtxServices<RIn> | WithoutLayerAndTestCtxServices<R, ROut>>;
18
20
  /**
19
21
  * Shared properties for all enhanced test context phases
20
22
  */
@@ -35,6 +37,15 @@ export type EnhancedTestContext = (EnhancedTestContextBase & {
35
37
  /** Number of shrinking attempts */
36
38
  shrinkAttempt: number;
37
39
  });
40
+ /**
41
+ * Normalizes propOptions to ensure @effect/vitest receives correct fastCheck structure
42
+ */
43
+ type ArbitraryValues<Arbs extends Vitest.Vitest.Arbitraries> = {
44
+ [K in keyof Arbs]: Arbs[K] extends FC.Arbitrary<infer T> ? T : Arbs[K] extends Schema.Schema<infer T> ? T : never;
45
+ };
46
+ type PropOptions<Arbs extends Vitest.Vitest.Arbitraries> = Omit<Vitest.TestOptions, 'fastCheck'> & {
47
+ fastCheck?: FC.Parameters<ArbitraryValues<Arbs>>;
48
+ };
38
49
  /**
39
50
  * Equivalent to Vitest.prop but provides enhanced context including shrinking progress visibility
40
51
  *
@@ -46,7 +57,5 @@ export type EnhancedTestContext = (EnhancedTestContextBase & {
46
57
  *
47
58
  * TODO: Upstream to Effect
48
59
  */
49
- export declare const asProp: <Arbs extends Vitest.Vitest.Arbitraries, A, E, R>(api: Vitest.Vitest.Tester<R>, name: string, arbitraries: Arbs, test: Vitest.Vitest.TestFunction<A, E, R, [{ [K in keyof Arbs]: Arbs[K] extends FC.Arbitrary<infer T> ? T : Schema.Schema.Type<Arbs[K]>; }, Vitest.TestContext, EnhancedTestContext]>, propOptions: number | (Vitest.TestOptions & {
50
- fastCheck?: FC.Parameters<{ [K in keyof Arbs]: Arbs[K] extends FC.Arbitrary<infer T> ? T : Schema.Schema.Type<Arbs[K]>; }>;
51
- })) => void;
60
+ export declare const asProp: <Arbs extends Vitest.Vitest.Arbitraries, A, E, R>(api: Vitest.Vitest.Tester<R>, name: string, arbitraries: Arbs, test: Vitest.Vitest.TestFunction<A, E, R, [ArbitraryValues<Arbs>, Vitest.TestContext, EnhancedTestContext]>, propOptions: number | PropOptions<Arbs>) => void;
52
61
  //# sourceMappingURL=Vitest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Vitest.d.ts","sourceRoot":"","sources":["../../src/node-vitest/Vitest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Vitest.d.ts","sourceRoot":"","sources":["../../src/node-vitest/Vitest.ts"],"names":[],"mappings":"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"}
@@ -6,41 +6,41 @@ import { OtelLiveHttp } from "../node/mod.js";
6
6
  export * from '@effect/vitest';
7
7
  export const DEBUGGER_ACTIVE = Boolean(process.env.DEBUGGER_ACTIVE ?? inspector.url() !== undefined);
8
8
  export const makeWithTestCtx = (ctxParams) => (testContext) => withTestCtx(testContext, ctxParams);
9
- export const withTestCtx = (testContext, { suffix, makeLayer, timeout = IS_CI ? 60_000 : 10_000, forceOtel = false, } = {}) => (self) => {
10
- const spanName = `${testContext.task.suite?.name}:${testContext.task.name}${suffix ? `:${suffix}` : ''}`;
9
+ export const withTestCtx = (testContext, { suffix, makeLayer, timeout = IS_CI === true ? 60_000 : 10_000, forceOtel = false, } = {}) => (self) => {
10
+ const spanName = `${testContext.task.suite?.name}:${testContext.task.name}${suffix !== undefined ? `:${suffix}` : ''}`;
11
+ // `Layer.empty` provides `never`, which is narrower than an arbitrary generic
12
+ // `ROut`; widen it for the no-layer branch so `Effect.provide` can typecheck.
11
13
  const layer = makeLayer?.(testContext) ?? Layer.empty;
12
- const otelLayer = DEBUGGER_ACTIVE || forceOtel
14
+ const timeoutDuration = Duration.fromInputUnsafe(timeout);
15
+ const otelLayer = DEBUGGER_ACTIVE === true || forceOtel === true
13
16
  ? OtelLiveHttp({ rootSpanName: spanName, serviceName: 'vitest-runner', skipLogUrl: false })
14
17
  : OtelLiveDummy;
15
18
  const combinedLayer = layer.pipe(Layer.provideMerge(otelLayer));
16
- return self.pipe(DEBUGGER_ACTIVE
19
+ return self.pipe(DEBUGGER_ACTIVE === true
17
20
  ? identity
18
21
  : Effect.logWarnIfTakesLongerThan({
19
- duration: Duration.toMillis(timeout) * 0.8,
20
- label: `${spanName} approaching timeout (timeout: ${Duration.format(timeout)})`,
21
- }), DEBUGGER_ACTIVE ? identity : Effect.timeout(timeout), Effect.provide(combinedLayer), Effect.scoped, // We need to scope the effect manually here because otherwise the span is not closed
22
+ duration: Duration.toMillis(timeoutDuration) * 0.8,
23
+ label: `${spanName} approaching timeout (timeout: ${Duration.format(timeoutDuration)})`,
24
+ }), DEBUGGER_ACTIVE === true ? identity : Effect.timeout(timeout), Effect.provide(combinedLayer), Effect.scoped, // We need to scope the effect manually here because otherwise the span is not closed
22
25
  Effect.annotateLogs({ suffix }));
23
26
  };
24
- /**
25
- * Normalizes propOptions to ensure @effect/vitest receives correct fastCheck structure
26
- */
27
27
  const normalizePropOptions = (propOptions) => {
28
28
  // If it's a number, treat as timeout and add our default fastCheck
29
- if (!Predicate.isObject(propOptions)) {
29
+ if (Predicate.isObject(propOptions) === false) {
30
30
  return {
31
31
  timeout: propOptions,
32
32
  fastCheck: { numRuns: 100 },
33
33
  };
34
34
  }
35
35
  // If no fastCheck property, add it with our default numRuns
36
- if (!propOptions.fastCheck) {
36
+ if (propOptions.fastCheck == null) {
37
37
  return {
38
38
  ...propOptions,
39
39
  fastCheck: { numRuns: 100 },
40
40
  };
41
41
  }
42
42
  // If fastCheck exists but no numRuns, add our default
43
- if (propOptions.fastCheck && !propOptions.fastCheck.numRuns) {
43
+ if (propOptions.fastCheck !== undefined && propOptions.fastCheck.numRuns == null) {
44
44
  return {
45
45
  ...propOptions,
46
46
  fastCheck: {
@@ -70,15 +70,15 @@ export const asProp = (api, name, arbitraries, test, propOptions) => {
70
70
  let shrinkAttempts = 0;
71
71
  let totalExecutions = 0;
72
72
  return api.prop(name, arbitraries, (properties, ctx) => {
73
- if (ctx.signal.aborted) {
73
+ if (ctx.signal.aborted === true) {
74
74
  return ctx.skip('Test aborted');
75
75
  }
76
76
  totalExecutions++;
77
77
  const isInShrinkingPhase = runIndex >= numRuns;
78
- if (isInShrinkingPhase) {
78
+ if (isInShrinkingPhase === true) {
79
79
  shrinkAttempts++;
80
80
  }
81
- const enhancedContext = isInShrinkingPhase
81
+ const enhancedContext = isInShrinkingPhase === true
82
82
  ? {
83
83
  _tag: 'shrinking',
84
84
  numRuns,
@@ -1 +1 @@
1
- {"version":3,"file":"Vitest.js","sourceRoot":"","sources":["../../src/node-vitest/Vitest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAEL,QAAQ,EACR,MAAM,EAEN,QAAQ,EACR,KAAK,EAEL,SAAS,GAGV,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,cAAc,gBAAgB,CAAA;AAE9B,MAAM,CAAC,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,SAAS,CAAC,GAAG,EAAE,KAAK,SAAS,CAAC,CAAA;AAEpG,MAAM,CAAC,MAAM,eAAe,GAYxB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,WAA+B,EAAE,EAAE,CAAC,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;AAS3F,MAAM,CAAC,MAAM,WAAW,GACtB,CACE,WAA+B,EAC/B,EACE,MAAM,EACN,SAAS,EACT,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EACjC,SAAS,GAAG,KAAK,MAMf,EAAE,EACN,EAAE,CACJ,CACE,IAA4B,EAS5B,EAAE;IACF,MAAM,QAAQ,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;IACxG,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,KAAK,CAAA;IAErD,MAAM,SAAS,GACb,eAAe,IAAI,SAAS;QAC1B,CAAC,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;QAC3F,CAAC,CAAC,aAAa,CAAA;IAEnB,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAA;IAE/D,OAAO,IAAI,CAAC,IAAI,CACd,eAAe;QACb,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC;YAC9B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,GAAG;YAC1C,KAAK,EAAE,GAAG,QAAQ,kCAAkC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG;SAChF,CAAC,EACN,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EACpD,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAC7B,MAAM,CAAC,MAAM,EAAE,qFAAqF;IACpG,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC,CACzB,CAAA;AACV,CAAC,CAAA;AA0BH;;GAEG;AACH,MAAM,oBAAoB,GAAG,CAC3B,WAMM,EAKN,EAAE;IACF,mEAAmE;IACnE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,OAAO;YACL,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;SAC5B,CAAA;IACH,CAAC;IAED,4DAA4D;IAC5D,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAC3B,OAAO;YACL,GAAG,WAAW;YACd,SAAS,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;SAC5B,CAAA;IACH,CAAC;IAED,sDAAsD;IACtD,IAAI,WAAW,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC5D,OAAO;YACL,GAAG,WAAW;YACd,SAAS,EAAE;gBACT,GAAG,WAAW,CAAC,SAAS;gBACxB,OAAO,EAAE,GAAG;aACb;SACF,CAAA;IACH,CAAC;IAED,qDAAqD;IACrD,OAAO,WAAW,CAAA;AACpB,CAAC,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,GAA4B,EAC5B,IAAY,EACZ,WAAiB,EACjB,IASC,EACD,WAMM,EACN,EAAE;IACF,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAA;IAC/D,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,EAAE,OAAO,IAAI,GAAG,CAAA;IAC/D,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,cAAc,GAAG,CAAC,CAAA;IACtB,IAAI,eAAe,GAAG,CAAC,CAAA;IAEvB,OAAO,GAAG,CAAC,IAAI,CACb,IAAI,EACJ,WAAW,EACX,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE;QAClB,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACjC,CAAC;QAED,eAAe,EAAE,CAAA;QACjB,MAAM,kBAAkB,GAAG,QAAQ,IAAI,OAAO,CAAA;QAE9C,IAAI,kBAAkB,EAAE,CAAC;YACvB,cAAc,EAAE,CAAA;QAClB,CAAC;QAED,MAAM,eAAe,GAAwB,kBAAkB;YAC7D,CAAC,CAAC;gBACE,IAAI,EAAE,WAAW;gBACjB,OAAO;gBACP,QAAQ,EAAE,QAAQ,EAAE;gBACpB,aAAa,EAAE,cAAc;gBAC7B,eAAe;aAChB;YACH,CAAC,CAAC;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO;gBACP,QAAQ,EAAE,QAAQ,EAAE;gBACpB,eAAe;aAChB,CAAA;QAEL,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,eAAe,CAAC,CAAA;IAC/C,CAAC,EACD,qBAAqB,CACtB,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"Vitest.js","sourceRoot":"","sources":["../../src/node-vitest/Vitest.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,8 @@
1
+ import { Schema } from '@livestore/utils/effect';
2
+ declare const TestError_base: Schema.Class<TestError, Schema.TaggedStruct<"TestError", {
3
+ readonly message: Schema.String;
4
+ }>, import("effect/Cause").YieldableError>;
5
+ export declare class TestError extends TestError_base {
6
+ }
1
7
  export {};
2
8
  //# sourceMappingURL=Vitest.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Vitest.test.d.ts","sourceRoot":"","sources":["../../src/node-vitest/Vitest.test.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"Vitest.test.d.ts","sourceRoot":"","sources":["../../src/node-vitest/Vitest.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,MAAM,EAAE,MAAM,yBAAyB,CAAA;;;;AAInE,qBAAa,SAAU,SAAQ,cAE7B;CAAG"}
@@ -1,14 +1,18 @@
1
- import { Effect, FastCheck } from '@livestore/utils/effect';
1
+ import { Effect, FastCheck, Schema } from '@livestore/utils/effect';
2
2
  import * as Vitest from "./Vitest.js";
3
+ export class TestError extends Schema.TaggedError()('TestError', {
4
+ message: Schema.String,
5
+ }) {
6
+ }
3
7
  // Demonstrate enhanced asProp functionality with clear shrinking progress
4
8
  // This showcases the fix for the "Run 26/6" bug and accurate shrinking detection
5
9
  Vitest.describe('Vitest.asProp', () => {
6
10
  const IntArbitrary = FastCheck.integer({ min: 1, max: 100 });
7
11
  // Always-passing test - should only show initial phase
8
- Vitest.asProp(Vitest.scopedLive, 'always-pass test (shows only initial runs)', [IntArbitrary], (properties, _ctx, enhanced) => Effect.gen(function* () {
12
+ Vitest.asProp(Vitest.live, 'always-pass test (shows only initial runs)', [IntArbitrary], (properties, _ctx, enhanced) => Effect.gen(function* () {
9
13
  const [value] = properties;
10
14
  if (value === undefined) {
11
- return yield* Effect.fail(new Error('Value is undefined'));
15
+ return yield* new TestError({ message: 'Value is undefined' });
12
16
  }
13
17
  console.log(`✅ ALWAYS-PASS [${enhanced._tag.toUpperCase()}]: ` +
14
18
  (enhanced._tag === 'initial'
@@ -18,12 +22,23 @@ Vitest.describe('Vitest.asProp', () => {
18
22
  // This test always passes, so no shrinking will occur
19
23
  return;
20
24
  }), { fastCheck: { numRuns: 4 } });
25
+ Vitest.asProp(Vitest.live, 'converts record-form schemas to arbitraries', {
26
+ count: Schema.Int,
27
+ payload: Schema.Struct({
28
+ label: Schema.String,
29
+ note: Schema.optional(Schema.String),
30
+ }),
31
+ }, ({ count, payload }) => Effect.sync(() => {
32
+ Vitest.expect(Number.isInteger(count)).toBe(true);
33
+ Vitest.expect(typeof payload.label).toBe('string');
34
+ Vitest.expect(payload.note === undefined || typeof payload.note === 'string').toBe(true);
35
+ }), { fastCheck: { numRuns: 10 } });
21
36
  // Failing test - should show initial + shrinking phases
22
37
  let alreadyFailed = false;
23
- Vitest.asProp(Vitest.scopedLive, 'failing test (shows initial runs + shrinking)', [IntArbitrary], (properties, ctx, enhanced) => Effect.gen(function* () {
38
+ Vitest.asProp(Vitest.live, 'failing test (shows initial runs + shrinking)', [IntArbitrary], (properties, ctx, enhanced) => Effect.gen(function* () {
24
39
  const [value] = properties;
25
40
  if (value === undefined) {
26
- return yield* Effect.fail(new Error('Value is undefined'));
41
+ return yield* new TestError({ message: 'Value is undefined' });
27
42
  }
28
43
  const displayInfo = enhanced._tag === 'initial'
29
44
  ? `Run ${enhanced.runIndex + 1}/${enhanced.numRuns}`
@@ -33,25 +48,25 @@ Vitest.describe('Vitest.asProp', () => {
33
48
  // Fail when value is greater than 80 to trigger shrinking
34
49
  if (value > 80) {
35
50
  alreadyFailed = true;
36
- return yield* Effect.fail(new Error(`Value ${value} is too large (> 80)`));
51
+ return yield* new TestError({ message: `Value ${value} is too large (> 80)` });
37
52
  }
38
- if (alreadyFailed && enhanced._tag === 'shrinking') {
53
+ if (alreadyFailed === true && enhanced._tag === 'shrinking') {
39
54
  ctx.skip("For the sake of this test, we don't want to fail but want to skip");
40
55
  return;
41
56
  }
42
57
  return;
43
58
  }), { fastCheck: { numRuns: 3 } });
44
59
  // Test with endOnFailure: true - should not show shrinking
45
- Vitest.asProp(Vitest.scopedLive, 'failing test with endOnFailure (no shrinking)', [IntArbitrary], (properties, _ctx, enhanced) => Effect.gen(function* () {
60
+ Vitest.asProp(Vitest.live, 'failing test with endOnFailure (no shrinking)', [IntArbitrary], (properties, _ctx, enhanced) => Effect.gen(function* () {
46
61
  const [value] = properties;
47
62
  if (value === undefined) {
48
- return yield* Effect.fail(new Error('Value is undefined'));
63
+ return yield* new TestError({ message: 'Value is undefined' });
49
64
  }
50
65
  console.log(`🚫 END-ON-FAILURE [${enhanced._tag.toUpperCase()}]: ` +
51
66
  `Run ${enhanced.runIndex + 1}/${enhanced.numRuns}, value=${value}, total=${enhanced.totalExecutions}`);
52
67
  // This will fail but shrinking is disabled
53
68
  if (value > 50) {
54
- yield* Effect.fail(new Error(`Value ${value} is too large (> 50) - but no shrinking!`));
69
+ return yield* new TestError({ message: `Value ${value} is too large (> 50) - but no shrinking!` });
55
70
  }
56
71
  return;
57
72
  }), {
@@ -1 +1 @@
1
- {"version":3,"file":"Vitest.test.js","sourceRoot":"","sources":["../../src/node-vitest/Vitest.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Vitest.test.js","sourceRoot":"","sources":["../../src/node-vitest/Vitest.test.ts"],"names":[],"mappings":"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"}