@livestore/livestore 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 (132) hide show
  1. package/README.md +0 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/QueryCache.js +1 -1
  4. package/dist/QueryCache.js.map +1 -1
  5. package/dist/SqliteDbWrapper.d.ts +5 -5
  6. package/dist/SqliteDbWrapper.d.ts.map +1 -1
  7. package/dist/SqliteDbWrapper.js +15 -13
  8. package/dist/SqliteDbWrapper.js.map +1 -1
  9. package/dist/SqliteDbWrapper.test.js +24 -6
  10. package/dist/SqliteDbWrapper.test.js.map +1 -1
  11. package/dist/effect/LiveStore.d.ts +134 -6
  12. package/dist/effect/LiveStore.d.ts.map +1 -1
  13. package/dist/effect/LiveStore.js +190 -11
  14. package/dist/effect/LiveStore.js.map +1 -1
  15. package/dist/effect/LiveStore.test.d.ts +2 -0
  16. package/dist/effect/LiveStore.test.d.ts.map +1 -0
  17. package/dist/effect/LiveStore.test.js +41 -0
  18. package/dist/effect/LiveStore.test.js.map +1 -0
  19. package/dist/effect/mod.d.ts +1 -1
  20. package/dist/effect/mod.d.ts.map +1 -1
  21. package/dist/effect/mod.js +3 -1
  22. package/dist/effect/mod.js.map +1 -1
  23. package/dist/live-queries/base-class.d.ts +129 -9
  24. package/dist/live-queries/base-class.d.ts.map +1 -1
  25. package/dist/live-queries/base-class.js +30 -4
  26. package/dist/live-queries/base-class.js.map +1 -1
  27. package/dist/live-queries/client-document-get-query.d.ts +1 -1
  28. package/dist/live-queries/client-document-get-query.d.ts.map +1 -1
  29. package/dist/live-queries/client-document-get-query.js +4 -3
  30. package/dist/live-queries/client-document-get-query.js.map +1 -1
  31. package/dist/live-queries/computed.d.ts +56 -0
  32. package/dist/live-queries/computed.d.ts.map +1 -1
  33. package/dist/live-queries/computed.js +62 -6
  34. package/dist/live-queries/computed.js.map +1 -1
  35. package/dist/live-queries/db-query.d.ts +2 -2
  36. package/dist/live-queries/db-query.d.ts.map +1 -1
  37. package/dist/live-queries/db-query.js +41 -30
  38. package/dist/live-queries/db-query.js.map +1 -1
  39. package/dist/live-queries/db-query.test.js +112 -29
  40. package/dist/live-queries/db-query.test.js.map +1 -1
  41. package/dist/live-queries/signal.d.ts +49 -0
  42. package/dist/live-queries/signal.d.ts.map +1 -1
  43. package/dist/live-queries/signal.js +51 -2
  44. package/dist/live-queries/signal.js.map +1 -1
  45. package/dist/live-queries/signal.test.js +4 -4
  46. package/dist/live-queries/signal.test.js.map +1 -1
  47. package/dist/mod.d.ts +3 -3
  48. package/dist/mod.d.ts.map +1 -1
  49. package/dist/mod.js +3 -2
  50. package/dist/mod.js.map +1 -1
  51. package/dist/reactive.d.ts +10 -10
  52. package/dist/reactive.d.ts.map +1 -1
  53. package/dist/reactive.js +29 -27
  54. package/dist/reactive.js.map +1 -1
  55. package/dist/reactive.test.js +2 -2
  56. package/dist/reactive.test.js.map +1 -1
  57. package/dist/store/StoreRegistry.d.ts +215 -0
  58. package/dist/store/StoreRegistry.d.ts.map +1 -0
  59. package/dist/store/StoreRegistry.js +267 -0
  60. package/dist/store/StoreRegistry.js.map +1 -0
  61. package/dist/store/StoreRegistry.test.d.ts +2 -0
  62. package/dist/store/StoreRegistry.test.d.ts.map +1 -0
  63. package/dist/store/StoreRegistry.test.js +384 -0
  64. package/dist/store/StoreRegistry.test.js.map +1 -0
  65. package/dist/store/create-store.d.ts +99 -22
  66. package/dist/store/create-store.d.ts.map +1 -1
  67. package/dist/store/create-store.js +85 -37
  68. package/dist/store/create-store.js.map +1 -1
  69. package/dist/store/devtools.d.ts +6 -18
  70. package/dist/store/devtools.d.ts.map +1 -1
  71. package/dist/store/devtools.js +61 -19
  72. package/dist/store/devtools.js.map +1 -1
  73. package/dist/store/store-eventstream.test.d.ts +2 -0
  74. package/dist/store/store-eventstream.test.d.ts.map +1 -0
  75. package/dist/store/store-eventstream.test.js +65 -0
  76. package/dist/store/store-eventstream.test.js.map +1 -0
  77. package/dist/store/store-types.d.ts +271 -31
  78. package/dist/store/store-types.d.ts.map +1 -1
  79. package/dist/store/store-types.js +41 -1
  80. package/dist/store/store-types.js.map +1 -1
  81. package/dist/store/store-types.test.d.ts +2 -0
  82. package/dist/store/store-types.test.d.ts.map +1 -0
  83. package/dist/store/store-types.test.js +39 -0
  84. package/dist/store/store-types.test.js.map +1 -0
  85. package/dist/store/store.d.ts +255 -68
  86. package/dist/store/store.d.ts.map +1 -1
  87. package/dist/store/store.js +533 -186
  88. package/dist/store/store.js.map +1 -1
  89. package/dist/utils/dev.d.ts.map +1 -1
  90. package/dist/utils/dev.js +1 -1
  91. package/dist/utils/dev.js.map +1 -1
  92. package/dist/utils/stack-info.d.ts.map +1 -1
  93. package/dist/utils/stack-info.js +3 -2
  94. package/dist/utils/stack-info.js.map +1 -1
  95. package/dist/utils/tests/fixture.d.ts +46 -39
  96. package/dist/utils/tests/fixture.d.ts.map +1 -1
  97. package/dist/utils/tests/fixture.js +7 -0
  98. package/dist/utils/tests/fixture.js.map +1 -1
  99. package/dist/utils/tests/otel.d.ts.map +1 -1
  100. package/dist/utils/tests/otel.js +5 -5
  101. package/dist/utils/tests/otel.js.map +1 -1
  102. package/package.json +50 -18
  103. package/src/QueryCache.ts +1 -1
  104. package/src/SqliteDbWrapper.test.ts +30 -6
  105. package/src/SqliteDbWrapper.ts +21 -17
  106. package/src/ambient.d.ts +0 -7
  107. package/src/effect/LiveStore.test.ts +61 -0
  108. package/src/effect/LiveStore.ts +426 -22
  109. package/src/effect/mod.ts +13 -1
  110. package/src/live-queries/__snapshots__/db-query.test.ts.snap +814 -178
  111. package/src/live-queries/base-class.ts +162 -32
  112. package/src/live-queries/client-document-get-query.ts +6 -4
  113. package/src/live-queries/computed.ts +65 -8
  114. package/src/live-queries/db-query.test.ts +168 -30
  115. package/src/live-queries/db-query.ts +58 -43
  116. package/src/live-queries/signal.test.ts +5 -4
  117. package/src/live-queries/signal.ts +52 -3
  118. package/src/mod.ts +19 -2
  119. package/src/reactive.test.ts +3 -2
  120. package/src/reactive.ts +58 -49
  121. package/src/store/StoreRegistry.test.ts +543 -0
  122. package/src/store/StoreRegistry.ts +429 -0
  123. package/src/store/create-store.ts +227 -74
  124. package/src/store/devtools.ts +305 -261
  125. package/src/store/store-eventstream.test.ts +123 -0
  126. package/src/store/store-types.test.ts +52 -0
  127. package/src/store/store-types.ts +318 -44
  128. package/src/store/store.ts +695 -283
  129. package/src/utils/dev.ts +3 -4
  130. package/src/utils/stack-info.ts +5 -2
  131. package/src/utils/tests/fixture.ts +9 -1
  132. package/src/utils/tests/otel.ts +8 -7
@@ -1,24 +1,203 @@
1
1
  import { omitUndefineds } from '@livestore/utils';
2
- import { Deferred, Duration, Effect, Layer, pipe } from '@livestore/utils/effect';
2
+ import { Context, Deferred, Duration, Effect, Layer, pipe, } from '@livestore/utils/effect';
3
3
  import { createStore, DeferredStoreContext, LiveStoreContextRunning } from "../store/create-store.js";
4
- export const makeLiveStoreContext = ({ schema, storeId = 'default', context, boot, adapter, disableDevtools, onBootStatus, batchUpdates, }) => pipe(Effect.gen(function* () {
4
+ export const makeLiveStoreContext = ({ schema, storeId = 'default', context, boot, adapter, disableDevtools, onBootStatus, batchUpdates, syncPayload, syncPayloadSchema, }) => pipe(Effect.gen(function* () {
5
5
  const store = yield* createStore({
6
6
  schema,
7
7
  storeId,
8
8
  adapter,
9
9
  batchUpdates,
10
- ...omitUndefineds({ context, boot, disableDevtools, onBootStatus }),
10
+ ...omitUndefineds({ context, boot, disableDevtools, onBootStatus, syncPayload, syncPayloadSchema }),
11
11
  });
12
- globalThis.__debugLiveStore ??= {};
13
- if (Object.keys(globalThis.__debugLiveStore).length === 0) {
14
- globalThis.__debugLiveStore._ = store;
15
- }
16
- globalThis.__debugLiveStore[storeId] = store;
17
- return { stage: 'running', store };
18
- }), Effect.tapErrorCause((cause) => Effect.flatMap(DeferredStoreContext, (def) => Deferred.failCause(def, cause))), Effect.tap((storeCtx) => Effect.flatMap(DeferredStoreContext, (def) => Deferred.succeed(def, storeCtx))),
12
+ return LiveStoreContextRunning.of({ stage: 'running', store });
13
+ }), Effect.tapCause((cause) => Effect.flatMap(DeferredStoreContext, (def) => Deferred.failCause(def, cause))), Effect.tap((storeCtx) => Effect.flatMap(DeferredStoreContext, (def) => Deferred.succeed(def, storeCtx))),
19
14
  // This can take quite a while.
20
15
  // TODO make this configurable
21
16
  Effect.timeout(Duration.minutes(5)), Effect.withSpan('@livestore/livestore/effect:makeLiveStoreContext'));
22
- export const LiveStoreContextLayer = (props) => Layer.scoped(LiveStoreContextRunning, makeLiveStoreContext(props)).pipe(Layer.withSpan('LiveStore'), Layer.provide(LiveStoreContextDeferred));
17
+ /**
18
+ * @deprecated Use `Store.Tag(schema, storeId)` instead for type-safe store contexts.
19
+ *
20
+ * @example Migration
21
+ * ```ts
22
+ * // Before
23
+ * const layer = LiveStoreContextLayer({ schema, adapter, ... })
24
+ *
25
+ * // After
26
+ * class MainStore extends Store.Tag(schema, 'main') {}
27
+ * const layer = MainStore.layer({ adapter, ... })
28
+ * ```
29
+ */
30
+ export const LiveStoreContextLayer = (props) => Layer.effect(LiveStoreContextRunning, makeLiveStoreContext(props)).pipe(Layer.withSpan('LiveStore'), Layer.provide(LiveStoreContextDeferred));
31
+ /**
32
+ * @deprecated Use `Store.Tag(schema, storeId)` and `MainStore.DeferredLayer` instead.
33
+ */
23
34
  export const LiveStoreContextDeferred = Layer.effect(DeferredStoreContext, Deferred.make());
35
+ /**
36
+ * Create a typed store context class for use with Effect.
37
+ *
38
+ * Returns a class that extends `Context.Service`, making it directly yieldable in Effect code.
39
+ * The class includes static methods for creating layers and accessors for common operations.
40
+ *
41
+ * @param schema - The LiveStore schema (used for type inference and runtime)
42
+ * @param storeId - Unique identifier for this store
43
+ *
44
+ * @example Basic usage
45
+ * ```ts
46
+ * import { Store } from '@livestore/livestore/effect'
47
+ * import { schema } from './schema.ts'
48
+ *
49
+ * // Define your store (once per store)
50
+ * export class MainStore extends Store.Tag(schema, 'main') {}
51
+ *
52
+ * // Create the layer
53
+ * const storeLayer = MainStore.layer({
54
+ * adapter: myAdapter,
55
+ * batchUpdates: ReactDOM.unstable_batchedUpdates,
56
+ * })
57
+ *
58
+ * // Use in Effect code
59
+ * Effect.gen(function* () {
60
+ * const { store } = yield* MainStore
61
+ * // ^? Store<typeof schema> - fully typed!
62
+ *
63
+ * // Or use accessors
64
+ * const users = yield* MainStore.query(tables.users.all())
65
+ * yield* MainStore.commit(events.createUser({ id: '1', name: 'Alice' }))
66
+ * })
67
+ * ```
68
+ *
69
+ * @example Multiple stores
70
+ * ```ts
71
+ * class MainStore extends Store.Tag(mainSchema, 'main') {}
72
+ * class SettingsStore extends Store.Tag(settingsSchema, 'settings') {}
73
+ *
74
+ * // Both available in same Effect context
75
+ * Effect.gen(function* () {
76
+ * const main = yield* MainStore
77
+ * const settings = yield* SettingsStore
78
+ * })
79
+ *
80
+ * const layer = Layer.mergeAll(
81
+ * MainStore.layer({ adapter: mainAdapter }),
82
+ * SettingsStore.layer({ adapter: settingsAdapter }),
83
+ * )
84
+ * ```
85
+ */
86
+ const makeStoreTag = (schema, storeId) => {
87
+ // Create the deferred tag and layers upfront
88
+ const _DeferredTag = Context.Service(`@livestore/store-deferred/${storeId}`);
89
+ const _DeferredLayer = Layer.effect(_DeferredTag, Deferred.make());
90
+ class Tag extends Context.Service()(`@livestore/store/${storeId}`) {
91
+ static schema = schema;
92
+ static storeId = storeId;
93
+ static layer(props) {
94
+ return pipe(Effect.gen(function* () {
95
+ const store = yield* createStore({
96
+ schema,
97
+ storeId,
98
+ adapter: props.adapter,
99
+ batchUpdates: props.batchUpdates,
100
+ ...omitUndefineds({
101
+ context: props.context,
102
+ boot: props.boot,
103
+ disableDevtools: props.disableDevtools,
104
+ onBootStatus: props.onBootStatus,
105
+ syncPayload: props.syncPayload,
106
+ syncPayloadSchema: props.syncPayloadSchema,
107
+ }),
108
+ });
109
+ const ctx = { stage: 'running', store: store };
110
+ // Also fulfill the deferred if it exists in context
111
+ yield* Effect.flatMap(Effect.serviceOption(_DeferredTag), (optDeferred) => optDeferred._tag === 'Some' ? Deferred.succeed(optDeferred.value, ctx) : Effect.void);
112
+ return Tag.of(ctx);
113
+ }), Effect.timeout(Duration.minutes(5)), Effect.withSpan(`@livestore/effect:Store.Tag:${storeId}`), Layer.effect(Tag), Layer.withSpan(`LiveStore:${storeId}`), Layer.provide(_DeferredLayer));
114
+ }
115
+ static Deferred = _DeferredTag;
116
+ static DeferredLayer = _DeferredLayer;
117
+ static fromDeferred = pipe(Effect.gen(function* () {
118
+ const deferred = yield* _DeferredTag;
119
+ const ctx = yield* Deferred.await(deferred);
120
+ return Layer.succeed(Tag, Tag.of(ctx));
121
+ }), Layer.unwrap);
122
+ static query(query) {
123
+ return Effect.map(Tag, ({ store }) => store.query(query));
124
+ }
125
+ static commit(...eventInputs) {
126
+ return Effect.map(Tag, ({ store }) => {
127
+ store.commit(...eventInputs);
128
+ });
129
+ }
130
+ static use(f) {
131
+ return Effect.flatMap(Tag, f);
132
+ }
133
+ }
134
+ return Tag;
135
+ };
136
+ /**
137
+ * Store utilities for Effect integration.
138
+ *
139
+ * @example
140
+ * ```ts
141
+ * import { Store } from '@livestore/livestore/effect'
142
+ *
143
+ * export class MainStore extends Store.Tag(schema, 'main') {}
144
+ * ```
145
+ */
146
+ export const Store = {
147
+ /**
148
+ * Create a typed store context class for use with Effect.
149
+ * @see {@link makeStoreTag} for full documentation
150
+ */
151
+ Tag: makeStoreTag,
152
+ };
153
+ /**
154
+ * @deprecated Use `Store.Tag(schema, storeId)` instead.
155
+ *
156
+ * @example Migration
157
+ * ```ts
158
+ * // Before
159
+ * const MainStoreContext = makeStoreContext<typeof schema>()('main')
160
+ *
161
+ * // After
162
+ * class MainStore extends Store.Tag(schema, 'main') {}
163
+ * ```
164
+ */
165
+ export const makeStoreContext = () => (storeId) => {
166
+ const Tag = Context.Service(`@livestore/store/${storeId}`);
167
+ const DeferredTag = Context.Service(`@livestore/store-deferred/${storeId}`);
168
+ const DeferredLayer = Layer.effect(DeferredTag, Deferred.make());
169
+ const makeLayer = (props) => pipe(Effect.gen(function* () {
170
+ const store = yield* createStore({
171
+ schema: props.schema,
172
+ storeId,
173
+ adapter: props.adapter,
174
+ batchUpdates: props.batchUpdates,
175
+ ...omitUndefineds({
176
+ context: props.context,
177
+ boot: props.boot,
178
+ disableDevtools: props.disableDevtools,
179
+ onBootStatus: props.onBootStatus,
180
+ syncPayload: props.syncPayload,
181
+ syncPayloadSchema: props.syncPayloadSchema,
182
+ }),
183
+ });
184
+ const ctx = { stage: 'running', store: store };
185
+ // Also fulfill the deferred if it exists in context
186
+ yield* Effect.flatMap(Effect.serviceOption(DeferredTag), (optDeferred) => optDeferred._tag === 'Some' ? Deferred.succeed(optDeferred.value, ctx) : Effect.void);
187
+ return ctx;
188
+ }), Effect.timeout(Duration.minutes(5)), Effect.withSpan(`@livestore/effect:makeStoreContext:${storeId}`), Layer.effect(Tag), Layer.withSpan(`LiveStore:${storeId}`), Layer.provide(DeferredLayer));
189
+ const fromDeferred = pipe(Effect.gen(function* () {
190
+ const deferred = yield* DeferredTag;
191
+ const ctx = yield* Deferred.await(deferred);
192
+ return Layer.succeed(Tag, ctx);
193
+ }), Layer.unwrap);
194
+ return {
195
+ storeId,
196
+ Tag,
197
+ DeferredTag,
198
+ Layer: makeLayer,
199
+ DeferredLayer,
200
+ fromDeferred,
201
+ };
202
+ };
24
203
  //# sourceMappingURL=LiveStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LiveStore.js","sourceRoot":"","sources":["../../src/effect/LiveStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAA;AAGjF,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAErG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAiD,EACnF,MAAM,EACN,OAAO,GAAG,SAAS,EACnB,OAAO,EACP,IAAI,EACJ,OAAO,EACP,eAAe,EACf,YAAY,EACZ,YAAY,GAC6B,EAIzC,EAAE,CACF,IAAI,CACF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;QAC/B,MAAM;QACN,OAAO;QACP,OAAO;QACP,YAAY;QACZ,GAAG,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;KACpE,CAAC,CAAA;IAEF,UAAU,CAAC,gBAAgB,KAAK,EAAE,CAAA;IAClC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1D,UAAU,CAAC,gBAAgB,CAAC,CAAC,GAAG,KAAK,CAAA;IACvC,CAAC;IACD,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,GAAG,KAAK,CAAA;IAE5C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAA4C,CAAA;AAC9E,CAAC,CAAC,EACF,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAC9G,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxG,+BAA+B;AAC/B,8BAA8B;AAC9B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EACnC,MAAM,CAAC,QAAQ,CAAC,kDAAkD,CAAC,CACpE,CAAA;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAA+C,EACwD,EAAE,CACzG,KAAK,CAAC,MAAM,CAAC,uBAAuB,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CACrE,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC3B,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,CACxC,CAAA;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC,MAAM,CAClD,oBAAoB,EACpB,QAAQ,CAAC,IAAI,EAAoD,CAClE,CAAA"}
1
+ {"version":3,"file":"LiveStore.js","sourceRoot":"","sources":["../../src/effect/LiveStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=LiveStore.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiveStore.test.d.ts","sourceRoot":"","sources":["../../src/effect/LiveStore.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ import { describe, it } from 'vitest';
2
+ import { Effect, Layer } from '@livestore/utils/effect';
3
+ import { schema } from "../utils/tests/fixture.js";
4
+ import { Store } from "./LiveStore.js";
5
+ /**
6
+ * Regression test for https://github.com/livestorejs/livestore/issues/1103
7
+ *
8
+ * `yield* MyStore` and `MyStore.query(...)` must produce the same R channel type
9
+ * so that a single layer provision satisfies both.
10
+ */
11
+ describe('Store.Tag R channel consistency', () => {
12
+ class MainStore extends Store.Tag(schema, 'main') {
13
+ }
14
+ const storeLayer = MainStore.layer({ adapter: {}, batchUpdates: (_) => { } });
15
+ it('yield* and method R channels unify so layer provision eliminates all requirements', () => {
16
+ const prog = Effect.gen(function* () {
17
+ const { store } = yield* MainStore;
18
+ void store;
19
+ const _queryResult = yield* MainStore.query({ get: () => 42 });
20
+ void _queryResult;
21
+ yield* MainStore.commit();
22
+ });
23
+ const _provided = prog.pipe(Effect.provide(storeLayer));
24
+ const _check = true;
25
+ void _check;
26
+ });
27
+ it('use() helper R channel is satisfied by the same layer', () => {
28
+ const prog = MainStore.use(({ store }) => Effect.succeed(store));
29
+ const _provided = prog.pipe(Effect.provide(storeLayer));
30
+ const _check = true;
31
+ void _check;
32
+ });
33
+ it('fromDeferred layer output satisfies the same R channel', () => {
34
+ const prog = MainStore;
35
+ /** fromDeferred + DeferredLayer should satisfy MainStore in R */
36
+ const _provided = prog.pipe(Effect.provide(Layer.merge(MainStore.fromDeferred, MainStore.DeferredLayer)));
37
+ const _check = true;
38
+ void _check;
39
+ });
40
+ });
41
+ //# sourceMappingURL=LiveStore.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiveStore.test.js","sourceRoot":"","sources":["../../src/effect/LiveStore.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAErC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EAAE,KAAK,EAAsB,MAAM,gBAAgB,CAAA;AAE1D;;;;;GAKG;AACH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,MAAM,SAAU,SAAQ,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;KAAG;IAEpD,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAS,EAAE,YAAY,EAAE,CAAC,CAAa,EAAE,EAAE,GAAE,CAAC,EAAE,CAAC,CAAA;IAE/F,EAAE,CAAC,mFAAmF,EAAE,GAAG,EAAE;QAC3F,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC,SAAS,CAAA;YAClC,KAAK,KAAK,CAAA;YAEV,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAS,CAAC,CAAA;YACrE,KAAK,YAAY,CAAA;YAEjB,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,EAAE,CAAA;QAC3B,CAAC,CAAC,CAAA;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;QAIvD,MAAM,MAAM,GAAqB,IAAI,CAAA;QACrC,KAAK,MAAM,CAAA;IACb,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QAEhE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAA;QAIvD,MAAM,MAAM,GAAqB,IAAI,CAAA;QACrC,KAAK,MAAM,CAAA;IACb,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,IAAI,GAAG,SAAS,CAAA;QAEtB,iEAAiE;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAA;QAKzG,MAAM,MAAM,GAAqB,IAAI,CAAA;QACrC,KAAK,MAAM,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,3 +1,3 @@
1
1
  export { DeferredStoreContext, type LiveStoreContextProps, LiveStoreContextRunning as LiveStoreContext, LiveStoreContextRunning, } from '../store/create-store.ts';
2
- export { LiveStoreContextDeferred, LiveStoreContextLayer } from './LiveStore.ts';
2
+ export { type DeferredContextId, LiveStoreContextDeferred, LiveStoreContextLayer, makeStoreContext, Store, type StoreContext, type StoreContextId, type StoreLayerProps, type StoreTagClass, } from './LiveStore.ts';
3
3
  //# sourceMappingURL=mod.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/effect/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,KAAK,qBAAqB,EAC1B,uBAAuB,IAAI,gBAAgB,EAC3C,uBAAuB,GACxB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../src/effect/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,KAAK,qBAAqB,EAC1B,uBAAuB,IAAI,gBAAgB,EAC3C,uBAAuB,GACxB,MAAM,0BAA0B,CAAA;AAGjC,OAAO,EACL,KAAK,iBAAiB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,EACL,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAA"}
@@ -1,3 +1,5 @@
1
1
  export { DeferredStoreContext, LiveStoreContextRunning as LiveStoreContext, LiveStoreContextRunning, } from "../store/create-store.js";
2
- export { LiveStoreContextDeferred, LiveStoreContextLayer } from "./LiveStore.js";
2
+ // Store.Tag - Idiomatic Effect API
3
+ // Legacy API (deprecated)
4
+ export { LiveStoreContextDeferred, LiveStoreContextLayer, makeStoreContext, Store, } from "./LiveStore.js";
3
5
  //# sourceMappingURL=mod.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/effect/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EAEpB,uBAAuB,IAAI,gBAAgB,EAC3C,uBAAuB,GACxB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"mod.js","sourceRoot":"","sources":["../../src/effect/mod.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EAEpB,uBAAuB,IAAI,gBAAgB,EAC3C,uBAAuB,GACxB,MAAM,0BAA0B,CAAA;AACjC,mCAAmC;AACnC,0BAA0B;AAC1B,OAAO,EAEL,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,GAKN,MAAM,gBAAgB,CAAA"}
@@ -1,8 +1,8 @@
1
- import { Equal, Hash } from '@livestore/utils/effect';
2
1
  import type * as otel from '@opentelemetry/api';
2
+ import { Equal, Hash } from '@livestore/utils/effect';
3
3
  import * as RG from '../reactive.ts';
4
- import type { Store } from '../store/store.ts';
5
4
  import type { QueryDebugInfo, RefreshReason } from '../store/store-types.ts';
5
+ import type { Store } from '../store/store.ts';
6
6
  import type { StackInfo } from '../utils/stack-info.ts';
7
7
  export type ReactivityGraph = RG.ReactiveGraph<RefreshReason, QueryDebugInfo, ReactivityGraphContext>;
8
8
  export declare const makeReactivityGraph: () => ReactivityGraph;
@@ -17,65 +17,169 @@ export type ReactivityGraphContext = {
17
17
  effectsWrapper: (run: () => void) => void;
18
18
  };
19
19
  export type GetResult<TQuery extends LiveQueryDef.Any | LiveQuery.Any | SignalDef<any>> = TQuery extends LiveQuery<infer TResult> ? TResult : TQuery extends LiveQueryDef<infer TResult> ? TResult : TQuery extends SignalDef<infer TResult> ? TResult : unknown;
20
+ /**
21
+ * A signal definition representing ephemeral, local-only reactive state.
22
+ *
23
+ * `SignalDef` is the type returned by {@link signal}. It's a blueprint for creating
24
+ * signal instances—the actual instance is created when you use the definition with
25
+ * a Store via `store.query()` or `store.setSignal()`.
26
+ *
27
+ * @typeParam T - The type of value the signal holds
28
+ */
20
29
  export interface SignalDef<T> extends LiveQueryDef<T, 'signal-def'> {
21
30
  _tag: 'signal-def';
31
+ /** The initial value used when the signal is first created */
22
32
  defaultValue: T;
33
+ /** Unique identifier for caching and deduplication */
23
34
  hash: string;
35
+ /** Human-readable label for debugging and devtools */
24
36
  label: string;
37
+ /** Creates a reference-counted signal instance bound to a Store's reactivity graph */
25
38
  make: (ctx: ReactivityGraphContext) => RcRef<ISignal<T>>;
26
- [Equal.symbol](that: SignalDef<T>): boolean;
39
+ [Equal.symbol](that: Equal.Equal): boolean;
27
40
  [Hash.symbol](): number;
28
41
  }
42
+ /**
43
+ * Interface for a live signal instance.
44
+ *
45
+ * This represents an active signal bound to a Store's reactivity graph.
46
+ * Use `store.setSignal()` to update values and `store.query()` to read them.
47
+ *
48
+ * @typeParam T - The type of value the signal holds
49
+ */
29
50
  export interface ISignal<T> extends LiveQuery<T> {
30
51
  _tag: 'signal';
31
52
  reactivityGraph: ReactivityGraph;
53
+ /** The underlying reactive reference in the graph */
32
54
  ref: RG.Ref<T, ReactivityGraphContext, RefreshReason>;
55
+ /** Sets the signal's value (prefer using `store.setSignal()` instead) */
33
56
  set: (value: T) => void;
57
+ /** Gets the signal's current value (prefer using `store.query()` instead) */
34
58
  get: () => T;
59
+ /** Removes the signal from the reactivity graph */
35
60
  destroy: () => void;
36
61
  }
37
62
  export declare const TypeId: unique symbol;
38
63
  export type TypeId = typeof TypeId;
64
+ /**
65
+ * A reference-counted wrapper around a LiveQuery or Signal instance.
66
+ *
67
+ * LiveStore uses reference counting to manage query lifecycle. When multiple
68
+ * components or subscriptions use the same query definition, they share a single
69
+ * instance. The instance is destroyed when the last reference is released.
70
+ *
71
+ * You typically don't interact with `RcRef` directly—it's used internally by
72
+ * hooks like `useQuery` and `useQueryRef`.
73
+ */
39
74
  export interface RcRef<T> {
75
+ /** Current reference count */
40
76
  rc: number;
77
+ /** The wrapped query or signal instance */
41
78
  value: T;
79
+ /** Decrements the reference count; destroys the instance when it reaches zero */
42
80
  deref: () => void;
43
81
  }
82
+ /**
83
+ * Dependency key used to identify queries on platforms where `fn.toString()` isn't reliable.
84
+ *
85
+ * On Expo/React Native, Hermes compiles functions to bytecode, so `fn.toString()` returns
86
+ * `[native code]`. To uniquely identify contextual queries, you must provide explicit `deps`.
87
+ *
88
+ * @example
89
+ * ```ts
90
+ * // On Expo, this would fail without deps:
91
+ * const filtered$ = queryDb(
92
+ * (get) => tables.todos.where({ userId: get(userId$) }),
93
+ * { deps: [userId] } // Required on Expo/React Native
94
+ * )
95
+ * ```
96
+ */
44
97
  export type DepKey = string | number | ReadonlyArray<string | number | undefined | null>;
45
98
  export declare const depsToString: (deps: DepKey) => string;
99
+ /**
100
+ * A query definition representing a blueprint for a reactive query.
101
+ *
102
+ * Query definitions are created by {@link queryDb}, {@link computed}, and {@link signal}.
103
+ * They're lightweight and can be defined at module scope. The actual query instance
104
+ * (which holds state) is created lazily when you use the definition with a Store.
105
+ *
106
+ * Multiple uses of the same definition share a single instance via reference counting.
107
+ *
108
+ * @typeParam TResult - The type of value the query returns
109
+ * @typeParam TTag - Internal discriminator tag ('def' for queries, 'signal-def' for signals)
110
+ */
46
111
  export interface LiveQueryDef<TResult, TTag extends string = 'def'> {
47
112
  _tag: TTag;
48
- /** Creates a new LiveQuery instance bound to a specific store/reactivityGraph */
113
+ /** Creates a reference-counted query instance bound to a Store's reactivity graph */
49
114
  make: (ctx: ReactivityGraphContext, otelContext?: otel.Context) => RcRef<LiveQuery<TResult> | ISignal<TResult>>;
115
+ /** Human-readable label for debugging and devtools */
50
116
  label: string;
117
+ /** Unique identifier derived from the query string or explicit deps; used for caching */
51
118
  hash: string;
52
- [Equal.symbol](that: LiveQueryDef<TResult, TTag>): boolean;
119
+ [Equal.symbol](that: Equal.Equal): boolean;
53
120
  [Hash.symbol](): number;
54
121
  }
55
122
  export declare namespace LiveQueryDef {
56
123
  type Any = LiveQueryDef<any, 'def' | 'signal-def'>;
57
124
  }
58
125
  /**
59
- * A LiveQuery is stateful
126
+ * Type guard that checks if a value is a query or signal definition.
127
+ *
128
+ * Use this to distinguish between definitions (blueprints) and instances (live queries).
129
+ * Definitions are created by `queryDb()`, `computed()`, and `signal()`.
130
+ *
131
+ * @example
132
+ * ```ts
133
+ * const todos$ = queryDb(tables.todos.all())
134
+ *
135
+ * if (isLiveQueryDef(todos$)) {
136
+ * console.log('This is a definition:', todos$.label)
137
+ * }
138
+ * ```
139
+ */
140
+ export declare const isLiveQueryDef: (value: unknown) => value is LiveQueryDef<any> | SignalDef<any>;
141
+ export declare const isSignalDef: (value: unknown) => value is SignalDef<any>;
142
+ /**
143
+ * A live query instance bound to a specific Store.
144
+ *
145
+ * `LiveQuery` represents an active, stateful query in the reactivity graph. Unlike
146
+ * query definitions (`LiveQueryDef`), instances maintain state like execution counts,
147
+ * timing data, and active subscriptions.
148
+ *
149
+ * You typically don't work with `LiveQuery` directly—use `store.query()` for one-shot
150
+ * reads or `store.subscribe()` for reactive subscriptions. The instance is managed
151
+ * automatically via reference counting.
152
+ *
153
+ * @typeParam TResult - The type of value the query returns
60
154
  */
61
155
  export interface LiveQuery<TResult> {
156
+ /** Unique identifier for this query instance */
62
157
  id: number;
158
+ /** Discriminator for the query type */
63
159
  _tag: 'computed' | 'db' | 'graphql' | 'signal';
64
160
  [TypeId]: TypeId;
65
- /** This should only be used on a type-level and doesn't hold any value during runtime */
161
+ /** Type-level only—extracts the result type from a LiveQuery */
66
162
  '__result!': TResult;
67
- /** A reactive thunk representing the query results */
163
+ /** The underlying reactive atom in the graph that holds the query result */
68
164
  results$: RG.Atom<TResult, ReactivityGraphContext, RefreshReason>;
165
+ /** Human-readable label for debugging and devtools */
69
166
  label: string;
167
+ /** Executes the query and returns the result */
70
168
  run: (args: {
71
169
  otelContext?: otel.Context;
72
170
  debugRefreshReason?: RefreshReason;
73
171
  }) => TResult;
172
+ /** Removes the query from the reactivity graph */
74
173
  destroy: () => void;
174
+ /** Whether this query instance has been destroyed */
75
175
  isDestroyed: boolean;
176
+ /** Stack traces of active subscriptions (for debugging) */
76
177
  activeSubscriptions: Set<StackInfo>;
178
+ /** Number of times this query has been executed */
77
179
  runs: number;
180
+ /** Execution times in milliseconds (for performance monitoring) */
78
181
  executionTimes: number[];
182
+ /** The definition that created this instance */
79
183
  def: LiveQueryDef<TResult> | SignalDef<TResult>;
80
184
  }
81
185
  export declare namespace LiveQuery {
@@ -102,7 +206,23 @@ export declare abstract class LiveStoreQueryBase<TResult> implements LiveQuery<T
102
206
  }) => TResult;
103
207
  protected dependencyQueriesRef: DependencyQueriesRef;
104
208
  }
105
- export type GetAtomResult = <T>(atom: RG.Atom<T, any, RefreshReason> | LiveQueryDef<T> | LiveQuery<T> | ISignal<T> | SignalDef<T>, otelContext?: otel.Context | undefined, debugRefreshReason?: RefreshReason | undefined) => T;
209
+ /**
210
+ * Function signature for the `get` parameter in `computed()` and `queryDb()` callbacks.
211
+ *
212
+ * Call `get()` with a query definition, signal, or live query instance to:
213
+ * 1. Read its current value
214
+ * 2. Establish a reactive dependency (the caller re-runs when the dependency changes)
215
+ *
216
+ * @example
217
+ * ```ts
218
+ * const filtered$ = computed((get) => {
219
+ * const todos = get(todos$) // Depends on todos$
220
+ * const filter = get(filterText$) // Depends on filterText$
221
+ * return todos.filter((t) => t.text.includes(filter))
222
+ * })
223
+ * ```
224
+ */
225
+ export type GetAtomResult = <T>(atom: RG.Atom<T, any, RefreshReason> | LiveQueryDef<T> | LiveQuery<T> | ISignal<T> | SignalDef<T>, otelContext?: otel.Context, debugRefreshReason?: RefreshReason) => T;
106
226
  export type DependencyQueriesRef = Set<RcRef<LiveQuery.Any | ISignal<any>>>;
107
227
  export declare const makeGetAtomResult: (get: RG.GetAtom, ctx: ReactivityGraphContext, otelContext: otel.Context, dependencyQueriesRef: DependencyQueriesRef) => GetAtomResult;
108
228
  export declare const withRCMap: <T extends LiveQuery.Any | ISignal<any>>(id: string, make: (ctx: ReactivityGraphContext, otelContext?: otel.Context) => T) => ((ctx: ReactivityGraphContext, otelContext?: otel.Context) => RcRef<T>);
@@ -1 +1 @@
1
- {"version":3,"file":"base-class.d.ts","sourceRoot":"","sources":["../../src/live-queries/base-class.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-class.d.ts","sourceRoot":"","sources":["../../src/live-queries/base-class.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { isNotNil } from '@livestore/utils';
2
1
  import { Equal, Hash, Predicate } from '@livestore/utils/effect';
3
2
  import * as RG from "../reactive.js";
4
3
  export const makeReactivityGraph = () => new RG.ReactiveGraph();
@@ -8,8 +7,35 @@ export const depsToString = (deps) => {
8
7
  if (typeof deps === 'string' || typeof deps === 'number') {
9
8
  return deps.toString();
10
9
  }
11
- return deps.filter(isNotNil).join(',');
10
+ return deps.filter(Predicate.isNotNullish).join(',');
12
11
  };
12
+ /**
13
+ * Type guard that checks if a value is a query or signal definition.
14
+ *
15
+ * Use this to distinguish between definitions (blueprints) and instances (live queries).
16
+ * Definitions are created by `queryDb()`, `computed()`, and `signal()`.
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const todos$ = queryDb(tables.todos.all())
21
+ *
22
+ * if (isLiveQueryDef(todos$)) {
23
+ * console.log('This is a definition:', todos$.label)
24
+ * }
25
+ * ```
26
+ */
27
+ export const isLiveQueryDef = (value) => {
28
+ if (Predicate.isTagged(value, 'def') === false && Predicate.isTagged(value, 'signal-def') === false) {
29
+ return false;
30
+ }
31
+ return (Predicate.hasProperty(value, 'make') &&
32
+ Predicate.isFunction(value.make) &&
33
+ Predicate.hasProperty(value, 'hash') &&
34
+ Predicate.isString(value.hash) &&
35
+ Predicate.hasProperty(value, 'label') &&
36
+ Predicate.isString(value.label));
37
+ };
38
+ export const isSignalDef = (value) => isLiveQueryDef(value) && Predicate.isTagged(value, 'signal-def');
13
39
  export class LiveStoreQueryBase {
14
40
  '__result!';
15
41
  id = queryIdCounter++;
@@ -43,7 +69,7 @@ export const makeGetAtomResult = (get, ctx, otelContext, dependencyQueriesRef) =
43
69
  return getAtom(query.value, _otelContext, debugRefreshReason);
44
70
  }
45
71
  // Signal case
46
- if (atom._tag === 'signal' && Predicate.hasProperty(atom, 'ref')) {
72
+ if (atom._tag === 'signal' && Predicate.hasProperty(atom, 'ref') === true) {
47
73
  return get(atom.ref, otelContext, debugRefreshReason);
48
74
  }
49
75
  // LiveQuery case
@@ -54,7 +80,7 @@ export const makeGetAtomResult = (get, ctx, otelContext, dependencyQueriesRef) =
54
80
  export const withRCMap = (id, make) => {
55
81
  return (ctx, otelContext) => {
56
82
  let item = ctx.defRcMap.get(id);
57
- if (item) {
83
+ if (item !== undefined) {
58
84
  item.rc++;
59
85
  return item;
60
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base-class.js","sourceRoot":"","sources":["../../src/live-queries/base-class.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"base-class.js","sourceRoot":"","sources":["../../src/live-queries/base-class.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
+ import type * as otel from '@opentelemetry/api';
1
2
  import { SessionIdSymbol } from '@livestore/common';
2
3
  import { State } from '@livestore/common/schema';
3
- import type * as otel from '@opentelemetry/api';
4
4
  import type { ReactivityGraphContext } from './base-class.ts';
5
5
  export declare const rowQueryLabel: (table: State.SQLite.ClientDocumentTableDef.Any, id: string | SessionIdSymbol | undefined) => string;
6
6
  export declare const makeExecBeforeFirstRun: ({ id, explicitDefaultValues, table, otelContext: otelContext_, }: {