@livestore/livestore 0.2.0 → 0.3.0-dev.11

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 (163) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/SqliteDbWrapper.d.ts +54 -0
  3. package/dist/SqliteDbWrapper.d.ts.map +1 -0
  4. package/dist/SqliteDbWrapper.js +212 -0
  5. package/dist/SqliteDbWrapper.js.map +1 -0
  6. package/dist/SynchronousDatabaseWrapper.d.ts +20 -6
  7. package/dist/SynchronousDatabaseWrapper.d.ts.map +1 -1
  8. package/dist/SynchronousDatabaseWrapper.js +38 -6
  9. package/dist/SynchronousDatabaseWrapper.js.map +1 -1
  10. package/dist/__tests__/fixture.d.ts +252 -0
  11. package/dist/__tests__/fixture.d.ts.map +1 -0
  12. package/dist/__tests__/fixture.js +18 -0
  13. package/dist/__tests__/fixture.js.map +1 -0
  14. package/dist/effect/LiveStore.d.ts +16 -12
  15. package/dist/effect/LiveStore.d.ts.map +1 -1
  16. package/dist/effect/LiveStore.js +14 -14
  17. package/dist/effect/LiveStore.js.map +1 -1
  18. package/dist/index.d.ts +6 -7
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +4 -4
  21. package/dist/index.js.map +1 -1
  22. package/dist/live-queries/base-class.d.ts +64 -21
  23. package/dist/live-queries/base-class.d.ts.map +1 -1
  24. package/dist/live-queries/base-class.js +56 -13
  25. package/dist/live-queries/base-class.js.map +1 -1
  26. package/dist/live-queries/computed.d.ts +7 -7
  27. package/dist/live-queries/computed.d.ts.map +1 -1
  28. package/dist/live-queries/computed.js +35 -11
  29. package/dist/live-queries/computed.js.map +1 -1
  30. package/dist/live-queries/{sql.d.ts → db-query.d.ts} +19 -14
  31. package/dist/live-queries/db-query.d.ts.map +1 -0
  32. package/dist/live-queries/db-query.js +244 -0
  33. package/dist/live-queries/db-query.js.map +1 -0
  34. package/dist/live-queries/db-query.test.d.ts +2 -0
  35. package/dist/live-queries/db-query.test.d.ts.map +1 -0
  36. package/dist/live-queries/db-query.test.js +123 -0
  37. package/dist/live-queries/db-query.test.js.map +1 -0
  38. package/dist/live-queries/db.d.ts +12 -15
  39. package/dist/live-queries/db.d.ts.map +1 -1
  40. package/dist/live-queries/db.js +72 -48
  41. package/dist/live-queries/db.js.map +1 -1
  42. package/dist/live-queries/db.test.js +18 -15
  43. package/dist/live-queries/db.test.js.map +1 -1
  44. package/dist/live-queries/graphql.d.ts +8 -8
  45. package/dist/live-queries/graphql.d.ts.map +1 -1
  46. package/dist/live-queries/graphql.js +35 -9
  47. package/dist/live-queries/graphql.js.map +1 -1
  48. package/dist/live-queries/make-ref.d.ts +20 -0
  49. package/dist/live-queries/make-ref.d.ts.map +1 -0
  50. package/dist/live-queries/make-ref.js +33 -0
  51. package/dist/live-queries/make-ref.js.map +1 -0
  52. package/dist/reactive.d.ts +15 -13
  53. package/dist/reactive.d.ts.map +1 -1
  54. package/dist/reactive.js +15 -9
  55. package/dist/reactive.js.map +1 -1
  56. package/dist/row-query-utils.d.ts +4 -4
  57. package/dist/row-query-utils.d.ts.map +1 -1
  58. package/dist/row-query-utils.js +14 -10
  59. package/dist/row-query-utils.js.map +1 -1
  60. package/dist/store/create-store.d.ts +13 -12
  61. package/dist/store/create-store.d.ts.map +1 -1
  62. package/dist/store/create-store.js +27 -33
  63. package/dist/store/create-store.js.map +1 -1
  64. package/dist/store/devtools.d.ts +3 -3
  65. package/dist/store/devtools.d.ts.map +1 -1
  66. package/dist/store/devtools.js +56 -34
  67. package/dist/store/devtools.js.map +1 -1
  68. package/dist/store/store-types.d.ts +18 -18
  69. package/dist/store/store-types.d.ts.map +1 -1
  70. package/dist/store/store-types.js.map +1 -1
  71. package/dist/store/store.d.ts +57 -38
  72. package/dist/store/store.d.ts.map +1 -1
  73. package/dist/store/store.js +225 -188
  74. package/dist/store/store.js.map +1 -1
  75. package/dist/store/store.test.d.ts +2 -0
  76. package/dist/store/store.test.d.ts.map +1 -0
  77. package/dist/store/store.test.js +27 -0
  78. package/dist/store/store.test.js.map +1 -0
  79. package/dist/utils/dev.d.ts.map +1 -1
  80. package/dist/utils/dev.js +3 -2
  81. package/dist/utils/dev.js.map +1 -1
  82. package/dist/utils/expo.d.ts +2 -0
  83. package/dist/utils/expo.d.ts.map +1 -0
  84. package/dist/utils/expo.js +8 -0
  85. package/dist/utils/expo.js.map +1 -0
  86. package/dist/utils/function-string.d.ts +7 -0
  87. package/dist/utils/function-string.d.ts.map +1 -0
  88. package/dist/utils/function-string.js +9 -0
  89. package/dist/utils/function-string.js.map +1 -0
  90. package/dist/utils/stack-info.d.ts.map +1 -1
  91. package/dist/utils/stack-info.js +6 -1
  92. package/dist/utils/stack-info.js.map +1 -1
  93. package/dist/utils/stack-info.test.js +54 -1
  94. package/dist/utils/stack-info.test.js.map +1 -1
  95. package/dist/utils/tests/fixture.d.ts +2 -6
  96. package/dist/utils/tests/fixture.d.ts.map +1 -1
  97. package/dist/utils/tests/fixture.js +7 -13
  98. package/dist/utils/tests/fixture.js.map +1 -1
  99. package/dist/utils/tests/mod.d.ts +1 -0
  100. package/dist/utils/tests/mod.d.ts.map +1 -1
  101. package/dist/utils/tests/mod.js +1 -0
  102. package/dist/utils/tests/mod.js.map +1 -1
  103. package/dist/utils/tests/otel.d.ts +60 -1
  104. package/dist/utils/tests/otel.d.ts.map +1 -1
  105. package/dist/utils/tests/otel.js +65 -4
  106. package/dist/utils/tests/otel.js.map +1 -1
  107. package/package.json +12 -12
  108. package/src/{SynchronousDatabaseWrapper.ts → SqliteDbWrapper.ts} +59 -13
  109. package/src/ambient.d.ts +1 -1
  110. package/src/effect/LiveStore.ts +32 -33
  111. package/src/index.ts +14 -7
  112. package/src/live-queries/__snapshots__/{db.test.ts.snap → db-query.test.ts.snap} +220 -69
  113. package/src/live-queries/base-class.ts +160 -40
  114. package/src/live-queries/computed.ts +45 -19
  115. package/src/live-queries/{db.test.ts → db-query.test.ts} +23 -12
  116. package/src/live-queries/{db.ts → db-query.ts} +124 -61
  117. package/src/live-queries/graphql.ts +47 -21
  118. package/src/live-queries/make-ref.ts +47 -0
  119. package/src/reactive.ts +52 -27
  120. package/src/row-query-utils.ts +29 -18
  121. package/src/store/create-store.ts +106 -113
  122. package/src/store/devtools.ts +65 -39
  123. package/src/store/store-types.ts +20 -18
  124. package/src/store/store.ts +361 -290
  125. package/src/utils/dev.ts +4 -2
  126. package/src/utils/function-string.ts +12 -0
  127. package/src/utils/stack-info.test.ts +58 -1
  128. package/src/utils/stack-info.ts +6 -1
  129. package/src/utils/tests/fixture.ts +6 -16
  130. package/src/utils/tests/mod.ts +1 -0
  131. package/src/utils/tests/otel.ts +71 -5
  132. package/dist/live-queries/sql.d.ts.map +0 -1
  133. package/dist/live-queries/sql.js +0 -175
  134. package/dist/live-queries/sql.js.map +0 -1
  135. package/dist/live-queries/sql.test.d.ts +0 -2
  136. package/dist/live-queries/sql.test.d.ts.map +0 -1
  137. package/dist/live-queries/sql.test.js +0 -285
  138. package/dist/live-queries/sql.test.js.map +0 -1
  139. package/dist/reactiveQueries/base-class.d.ts +0 -64
  140. package/dist/reactiveQueries/base-class.d.ts.map +0 -1
  141. package/dist/reactiveQueries/base-class.js +0 -31
  142. package/dist/reactiveQueries/base-class.js.map +0 -1
  143. package/dist/reactiveQueries/computed.d.ts +0 -26
  144. package/dist/reactiveQueries/computed.d.ts.map +0 -1
  145. package/dist/reactiveQueries/computed.js +0 -38
  146. package/dist/reactiveQueries/computed.js.map +0 -1
  147. package/dist/reactiveQueries/graphql.d.ts +0 -49
  148. package/dist/reactiveQueries/graphql.d.ts.map +0 -1
  149. package/dist/reactiveQueries/graphql.js +0 -122
  150. package/dist/reactiveQueries/graphql.js.map +0 -1
  151. package/dist/reactiveQueries/sql.d.ts +0 -62
  152. package/dist/reactiveQueries/sql.d.ts.map +0 -1
  153. package/dist/reactiveQueries/sql.js +0 -175
  154. package/dist/reactiveQueries/sql.js.map +0 -1
  155. package/dist/reactiveQueries/sql.test.d.ts +0 -2
  156. package/dist/reactiveQueries/sql.test.d.ts.map +0 -1
  157. package/dist/reactiveQueries/sql.test.js +0 -285
  158. package/dist/reactiveQueries/sql.test.js.map +0 -1
  159. package/dist/row-query.d.ts +0 -16
  160. package/dist/row-query.d.ts.map +0 -1
  161. package/dist/row-query.js +0 -30
  162. package/dist/row-query.js.map +0 -1
  163. package/src/global-state.ts +0 -20
@@ -5,9 +5,12 @@ import type {
5
5
  MutableDebugInfo,
6
6
  PreparedBindValues,
7
7
  PreparedStatement,
8
- SynchronousDatabase,
8
+ SqliteDb,
9
+ SqliteDbChangeset,
10
+ SqliteDbSession,
9
11
  } from '@livestore/common'
10
12
  import { BoundArray, BoundMap, sql } from '@livestore/common'
13
+ import { isDevEnv } from '@livestore/utils'
11
14
  import type * as otel from '@opentelemetry/api'
12
15
 
13
16
  import QueryCache from './QueryCache.js'
@@ -20,12 +23,17 @@ export const emptyDebugInfo = (): DebugInfo => ({
20
23
  events: new BoundArray(1000),
21
24
  })
22
25
 
23
- export class SynchronousDatabaseWrapper {
26
+ /**
27
+ * This class is mostly adding result caching around a SqliteDb which is used to speed up
28
+ * SQLite queries when used through the reactivity graph.
29
+ */
30
+ export class SqliteDbWrapper implements SqliteDb {
31
+ _tag = 'SqliteDb' as const
24
32
  // TODO: how many unique active statements are expected?
25
33
  private cachedStmts = new BoundMap<string, PreparedStatement>(200)
26
34
  private tablesUsedCache = new BoundMap<string, Set<string>>(200)
27
35
  private resultCache = new QueryCache()
28
- private db: SynchronousDatabase
36
+ private db: SqliteDb
29
37
  private otelTracer: otel.Tracer
30
38
  private otelRootSpanContext: otel.Context
31
39
  private tablesUsedStmt
@@ -35,7 +43,7 @@ export class SynchronousDatabaseWrapper {
35
43
  db,
36
44
  otel,
37
45
  }: {
38
- db: SynchronousDatabase
46
+ db: SqliteDb
39
47
  otel: {
40
48
  tracer: otel.Tracer
41
49
  rootSpanContext: otel.Context
@@ -53,6 +61,25 @@ export class SynchronousDatabaseWrapper {
53
61
 
54
62
  configureSQLite(this)
55
63
  }
64
+ metadata: any
65
+ prepare(queryStr: string): PreparedStatement {
66
+ return this.db.prepare(queryStr)
67
+ }
68
+ import(data: Uint8Array<ArrayBufferLike> | SqliteDb<any, any>) {
69
+ return this.db.import(data)
70
+ }
71
+ close(): void {
72
+ return this.db.close()
73
+ }
74
+ destroy(): void {
75
+ return this.db.destroy()
76
+ }
77
+ session(): SqliteDbSession {
78
+ return this.db.session()
79
+ }
80
+ makeChangeset(data: Uint8Array): SqliteDbChangeset {
81
+ return this.db.makeChangeset(data)
82
+ }
56
83
 
57
84
  txn<TRes>(callback: () => TRes): TRes {
58
85
  this.execute(sql`begin transaction;`)
@@ -75,6 +102,21 @@ export class SynchronousDatabaseWrapper {
75
102
  return result
76
103
  }
77
104
 
105
+ withChangeset<TRes>(callback: () => TRes): { result: TRes; changeset: Uint8Array | undefined } {
106
+ const session = this.db.session()
107
+ const result = callback()
108
+ const changeset = session.changeset()
109
+
110
+ session.finish()
111
+
112
+ return { result, changeset }
113
+ }
114
+
115
+ rollback(changeset: Uint8Array) {
116
+ const invertedChangeset = this.db.makeChangeset(changeset).invert()
117
+ invertedChangeset.apply()
118
+ }
119
+
78
120
  getTablesUsed(query: string) {
79
121
  // It seems that SQLite doesn't properly handle `DELETE FROM SOME_TABLE` queries without a WHERE clause
80
122
  // So we need to handle these queries separately
@@ -105,9 +147,13 @@ export class SynchronousDatabaseWrapper {
105
147
 
106
148
  execute(
107
149
  queryStr: string,
108
- bindValues?: PreparedBindValues,
109
- writeTables?: ReadonlySet<string>,
110
- options?: { hasNoEffects?: boolean; otelContext?: otel.Context },
150
+ bindValues?: PreparedBindValues | undefined,
151
+ options?: {
152
+ hasNoEffects?: boolean
153
+ otelContext?: otel.Context
154
+ writeTables?: ReadonlySet<string>
155
+ onRowsChanged?: (rowsChanged: number) => void
156
+ },
111
157
  ): { durationMs: number } {
112
158
  // console.debug('in-memory-db:execute', query, bindValues)
113
159
 
@@ -128,7 +174,7 @@ export class SynchronousDatabaseWrapper {
128
174
  if (options?.hasNoEffects !== true && !this.resultCache.ignoreQuery(queryStr)) {
129
175
  // TODO use write tables instead
130
176
  // check what queries actually end up here.
131
- this.resultCache.invalidate(writeTables ?? this.getTablesUsed(queryStr))
177
+ this.resultCache.invalidate(options?.writeTables ?? this.getTablesUsed(queryStr))
132
178
  }
133
179
 
134
180
  span.end()
@@ -138,7 +184,7 @@ export class SynchronousDatabaseWrapper {
138
184
  this.debugInfo.queryFrameDuration += durationMs
139
185
  this.debugInfo.queryFrameCount++
140
186
 
141
- if (durationMs > 5 && import.meta.env.DEV) {
187
+ if (durationMs > 5 && isDevEnv()) {
142
188
  this.debugInfo.slowQueries.push({
143
189
  queryStr,
144
190
  bindValues,
@@ -156,14 +202,14 @@ export class SynchronousDatabaseWrapper {
156
202
 
157
203
  select<T = any>(
158
204
  queryStr: string,
205
+ bindValues?: PreparedBindValues | undefined,
159
206
  options?: {
160
207
  queriedTables?: ReadonlySet<string>
161
- bindValues?: PreparedBindValues
162
208
  skipCache?: boolean
163
209
  otelContext?: otel.Context
164
210
  },
165
211
  ): ReadonlyArray<T> {
166
- const { queriedTables, bindValues, skipCache = false, otelContext } = options ?? {}
212
+ const { queriedTables, skipCache = false, otelContext } = options ?? {}
167
213
 
168
214
  // console.debug('in-memory-db:select', query, bindValues)
169
215
 
@@ -206,7 +252,7 @@ export class SynchronousDatabaseWrapper {
206
252
  this.debugInfo.queryFrameCount++
207
253
 
208
254
  // TODO also enable in non-dev mode
209
- if (durationMs > 5 && import.meta.env.DEV) {
255
+ if (durationMs > 5 && isDevEnv()) {
210
256
  this.debugInfo.slowQueries.push({
211
257
  queryStr,
212
258
  bindValues,
@@ -236,7 +282,7 @@ export class SynchronousDatabaseWrapper {
236
282
  }
237
283
 
238
284
  /** Set up SQLite performance; hasn't been super carefully optimized yet. */
239
- const configureSQLite = (db: SynchronousDatabaseWrapper) => {
285
+ const configureSQLite = (db: SqliteDbWrapper) => {
240
286
  db.execute(
241
287
  // TODO: revisit these tuning parameters for max performance
242
288
  sql`
package/src/ambient.d.ts CHANGED
@@ -5,7 +5,7 @@ interface Window {
5
5
  }
6
6
 
7
7
  var __debugLiveStore: any
8
- var __debugDownloadBlob: any
8
+ var __debugLiveStoreUtils: any
9
9
 
10
10
  interface ImportMeta {
11
11
  readonly env: ImportMetaEnv
@@ -1,24 +1,30 @@
1
1
  import type { Adapter, BootStatus, UnexpectedError } from '@livestore/common'
2
2
  import type { LiveStoreSchema } from '@livestore/common/schema'
3
- import type { Cause, Scope } from '@livestore/utils/effect'
4
- import { Context, Deferred, Duration, Effect, FiberSet, Layer, OtelTracer, pipe } from '@livestore/utils/effect'
5
- import * as otel from '@opentelemetry/api'
3
+ import type { Cause, OtelTracer, Scope } from '@livestore/utils/effect'
4
+ import { Context, Deferred, Duration, Effect, Layer, pipe } from '@livestore/utils/effect'
5
+ import type * as otel from '@opentelemetry/api'
6
6
  import type { GraphQLSchema } from 'graphql'
7
7
 
8
+ import type { SqliteDbWrapper } from '../SqliteDbWrapper.js'
8
9
  import { createStore } from '../store/create-store.js'
9
10
  import type { Store } from '../store/store.js'
10
11
  import type { BaseGraphQLContext, LiveStoreContextRunning as LiveStoreContextRunning_ } from '../store/store-types.js'
11
- import type { SynchronousDatabaseWrapper } from '../SynchronousDatabaseWrapper.js'
12
12
 
13
- export type LiveStoreContextRunning = LiveStoreContextRunning_
14
- export const LiveStoreContextRunning = Context.GenericTag<LiveStoreContextRunning>(
15
- '@livestore/livestore/effect/LiveStoreContextRunning',
16
- )
13
+ export class LiveStoreContextRunning extends Context.Tag('@livestore/livestore/effect/LiveStoreContextRunning')<
14
+ LiveStoreContextRunning,
15
+ LiveStoreContextRunning_
16
+ >() {
17
+ static fromDeferred = Effect.gen(function* () {
18
+ const deferred = yield* DeferredStoreContext
19
+ const ctx = yield* deferred
20
+ return Layer.succeed(LiveStoreContextRunning, ctx)
21
+ }).pipe(Layer.unwrapScoped)
22
+ }
17
23
 
18
- export type DeferredStoreContext = Deferred.Deferred<LiveStoreContextRunning, UnexpectedError>
19
- export const DeferredStoreContext = Context.GenericTag<DeferredStoreContext>(
20
- '@livestore/livestore/effect/DeferredStoreContext',
21
- )
24
+ export class DeferredStoreContext extends Context.Tag('@livestore/livestore/effect/DeferredStoreContext')<
25
+ DeferredStoreContext,
26
+ Deferred.Deferred<LiveStoreContextRunning['Type'], UnexpectedError>
27
+ >() {}
22
28
 
23
29
  export type LiveStoreContextProps<GraphQLContext extends BaseGraphQLContext> = {
24
30
  schema: LiveStoreSchema
@@ -32,10 +38,12 @@ export type LiveStoreContextProps<GraphQLContext extends BaseGraphQLContext> = {
32
38
  */
33
39
  storeId?: string
34
40
  graphQLOptions?: {
35
- schema: Effect.Effect<GraphQLSchema, never, otel.Tracer>
36
- makeContext: (db: SynchronousDatabaseWrapper, tracer: otel.Tracer, sessionId: string) => GraphQLContext
41
+ schema: Effect.Effect<GraphQLSchema, never, OtelTracer.OtelTracer>
42
+ makeContext: (db: SqliteDbWrapper, tracer: otel.Tracer, sessionId: string) => GraphQLContext
37
43
  }
38
- boot?: (store: Store<GraphQLContext, LiveStoreSchema>) => Effect.Effect<void, unknown, otel.Tracer>
44
+ boot?: (
45
+ store: Store<GraphQLContext, LiveStoreSchema>,
46
+ ) => Effect.Effect<void, unknown, OtelTracer.OtelTracer | LiveStoreContextRunning>
39
47
  adapter: Adapter
40
48
  disableDevtools?: boolean
41
49
  onBootStatus?: (status: BootStatus) => void
@@ -44,7 +52,7 @@ export type LiveStoreContextProps<GraphQLContext extends BaseGraphQLContext> = {
44
52
 
45
53
  export const LiveStoreContextLayer = <GraphQLContext extends BaseGraphQLContext>(
46
54
  props: LiveStoreContextProps<GraphQLContext>,
47
- ): Layer.Layer<LiveStoreContextRunning, UnexpectedError | Cause.TimeoutException, otel.Tracer> =>
55
+ ): Layer.Layer<LiveStoreContextRunning, UnexpectedError | Cause.TimeoutException, OtelTracer.OtelTracer> =>
48
56
  Layer.scoped(LiveStoreContextRunning, makeLiveStoreContext(props)).pipe(
49
57
  Layer.withSpan('LiveStore'),
50
58
  Layer.provide(LiveStoreContextDeferred),
@@ -52,7 +60,7 @@ export const LiveStoreContextLayer = <GraphQLContext extends BaseGraphQLContext>
52
60
 
53
61
  export const LiveStoreContextDeferred = Layer.effect(
54
62
  DeferredStoreContext,
55
- Deferred.make<LiveStoreContextRunning, UnexpectedError>(),
63
+ Deferred.make<LiveStoreContextRunning['Type'], UnexpectedError>(),
56
64
  )
57
65
 
58
66
  export const makeLiveStoreContext = <GraphQLContext extends BaseGraphQLContext>({
@@ -65,43 +73,34 @@ export const makeLiveStoreContext = <GraphQLContext extends BaseGraphQLContext>(
65
73
  onBootStatus,
66
74
  batchUpdates,
67
75
  }: LiveStoreContextProps<GraphQLContext>): Effect.Effect<
68
- LiveStoreContextRunning,
76
+ LiveStoreContextRunning['Type'],
69
77
  UnexpectedError | Cause.TimeoutException,
70
- DeferredStoreContext | Scope.Scope | otel.Tracer
78
+ DeferredStoreContext | Scope.Scope | OtelTracer.OtelTracer
71
79
  > =>
72
80
  pipe(
73
81
  Effect.gen(function* () {
74
- const otelRootSpanContext = otel.context.active()
75
-
76
- const otelTracer = yield* OtelTracer.Tracer
77
-
78
82
  const graphQLOptions = yield* graphQLOptions_
79
83
  ? Effect.all({ schema: graphQLOptions_.schema, makeContext: Effect.succeed(graphQLOptions_.makeContext) })
80
84
  : Effect.succeed(undefined)
81
85
 
82
- // TODO join fiber set and close tear down parent scope in case of error (Needs refactor with Mike A)
83
- const fiberSet = yield* FiberSet.make()
84
-
85
86
  const store = yield* createStore({
86
87
  schema,
87
88
  storeId,
88
89
  graphQLOptions,
89
- otelOptions: {
90
- tracer: otelTracer,
91
- rootSpanContext: otelRootSpanContext,
92
- },
93
90
  boot,
94
91
  adapter,
95
92
  disableDevtools,
96
- fiberSet,
97
93
  onBootStatus,
98
94
  batchUpdates,
99
95
  })
100
96
 
101
97
  globalThis.__debugLiveStore ??= {}
102
- // window.__debugLiveStore[schema.key] = store
98
+ if (Object.keys(globalThis.__debugLiveStore).length === 0) {
99
+ globalThis.__debugLiveStore['_'] = store
100
+ }
101
+ globalThis.__debugLiveStore[storeId] = store
103
102
 
104
- return { stage: 'running', store } satisfies LiveStoreContextRunning
103
+ return { stage: 'running', store } satisfies LiveStoreContextRunning['Type']
105
104
  }),
106
105
  Effect.tapErrorCause((cause) => Effect.flatMap(DeferredStoreContext, (def) => Deferred.failCause(def, cause))),
107
106
  Effect.tap((storeCtx) => Effect.flatMap(DeferredStoreContext, (def) => Deferred.succeed(def, storeCtx))),
package/src/index.ts CHANGED
@@ -8,10 +8,15 @@ export type {
8
8
  OtelOptions,
9
9
  } from './store/store-types.js'
10
10
 
11
- export type { LiveStoreContextRunning } from './effect/LiveStore.js'
12
- export { StoreAbort, StoreInterrupted, type LiveStoreContext } from './store/store-types.js'
11
+ export {
12
+ StoreAbort,
13
+ StoreInterrupted,
14
+ type LiveStoreContext,
15
+ type ShutdownDeferred,
16
+ type LiveStoreContextRunning,
17
+ } from './store/store-types.js'
13
18
 
14
- export { SynchronousDatabaseWrapper, emptyDebugInfo } from './SynchronousDatabaseWrapper.js'
19
+ export { SqliteDbWrapper, emptyDebugInfo } from './SqliteDbWrapper.js'
15
20
 
16
21
  export type {
17
22
  GetAtom,
@@ -26,8 +31,9 @@ export type {
26
31
  Effect,
27
32
  } from './reactive.js'
28
33
  export { LiveStoreComputedQuery, computed } from './live-queries/computed.js'
29
- export { LiveStoreDbQuery, queryDb } from './live-queries/db.js'
34
+ export { LiveStoreDbQuery, queryDb } from './live-queries/db-query.js'
30
35
  export { LiveStoreGraphQLQuery, queryGraphQL } from './live-queries/graphql.js'
36
+ export { makeRef, type LiveQueryRef } from './live-queries/make-ref.js'
31
37
  export {
32
38
  type GetAtomResult,
33
39
  type ReactivityGraph,
@@ -35,10 +41,11 @@ export {
35
41
  type LiveQuery,
36
42
  type GetResult,
37
43
  type LiveQueryAny,
44
+ type LiveQueryDef,
45
+ type LiveQueryDefAny,
46
+ type RcRef,
38
47
  } from './live-queries/base-class.js'
39
48
 
40
- export { globalReactivityGraph } from './global-state.js'
41
-
42
49
  export { deriveColQuery } from './row-query-utils.js'
43
50
 
44
51
  export * from '@livestore/common/schema'
@@ -46,7 +53,7 @@ export {
46
53
  sql,
47
54
  SessionIdSymbol,
48
55
  type BootStatus,
49
- type SynchronousDatabase,
56
+ type SqliteDb,
50
57
  type DebugInfo,
51
58
  type MutableDebugInfo,
52
59
  prepareBindValues,