@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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/SqliteDbWrapper.d.ts +54 -0
- package/dist/SqliteDbWrapper.d.ts.map +1 -0
- package/dist/SqliteDbWrapper.js +212 -0
- package/dist/SqliteDbWrapper.js.map +1 -0
- package/dist/SynchronousDatabaseWrapper.d.ts +20 -6
- package/dist/SynchronousDatabaseWrapper.d.ts.map +1 -1
- package/dist/SynchronousDatabaseWrapper.js +38 -6
- package/dist/SynchronousDatabaseWrapper.js.map +1 -1
- package/dist/__tests__/fixture.d.ts +252 -0
- package/dist/__tests__/fixture.d.ts.map +1 -0
- package/dist/__tests__/fixture.js +18 -0
- package/dist/__tests__/fixture.js.map +1 -0
- package/dist/effect/LiveStore.d.ts +16 -12
- package/dist/effect/LiveStore.d.ts.map +1 -1
- package/dist/effect/LiveStore.js +14 -14
- package/dist/effect/LiveStore.js.map +1 -1
- package/dist/index.d.ts +6 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/live-queries/base-class.d.ts +64 -21
- package/dist/live-queries/base-class.d.ts.map +1 -1
- package/dist/live-queries/base-class.js +56 -13
- package/dist/live-queries/base-class.js.map +1 -1
- package/dist/live-queries/computed.d.ts +7 -7
- package/dist/live-queries/computed.d.ts.map +1 -1
- package/dist/live-queries/computed.js +35 -11
- package/dist/live-queries/computed.js.map +1 -1
- package/dist/live-queries/{sql.d.ts → db-query.d.ts} +19 -14
- package/dist/live-queries/db-query.d.ts.map +1 -0
- package/dist/live-queries/db-query.js +244 -0
- package/dist/live-queries/db-query.js.map +1 -0
- package/dist/live-queries/db-query.test.d.ts +2 -0
- package/dist/live-queries/db-query.test.d.ts.map +1 -0
- package/dist/live-queries/db-query.test.js +123 -0
- package/dist/live-queries/db-query.test.js.map +1 -0
- package/dist/live-queries/db.d.ts +12 -15
- package/dist/live-queries/db.d.ts.map +1 -1
- package/dist/live-queries/db.js +72 -48
- package/dist/live-queries/db.js.map +1 -1
- package/dist/live-queries/db.test.js +18 -15
- package/dist/live-queries/db.test.js.map +1 -1
- package/dist/live-queries/graphql.d.ts +8 -8
- package/dist/live-queries/graphql.d.ts.map +1 -1
- package/dist/live-queries/graphql.js +35 -9
- package/dist/live-queries/graphql.js.map +1 -1
- package/dist/live-queries/make-ref.d.ts +20 -0
- package/dist/live-queries/make-ref.d.ts.map +1 -0
- package/dist/live-queries/make-ref.js +33 -0
- package/dist/live-queries/make-ref.js.map +1 -0
- package/dist/reactive.d.ts +15 -13
- package/dist/reactive.d.ts.map +1 -1
- package/dist/reactive.js +15 -9
- package/dist/reactive.js.map +1 -1
- package/dist/row-query-utils.d.ts +4 -4
- package/dist/row-query-utils.d.ts.map +1 -1
- package/dist/row-query-utils.js +14 -10
- package/dist/row-query-utils.js.map +1 -1
- package/dist/store/create-store.d.ts +13 -12
- package/dist/store/create-store.d.ts.map +1 -1
- package/dist/store/create-store.js +27 -33
- package/dist/store/create-store.js.map +1 -1
- package/dist/store/devtools.d.ts +3 -3
- package/dist/store/devtools.d.ts.map +1 -1
- package/dist/store/devtools.js +56 -34
- package/dist/store/devtools.js.map +1 -1
- package/dist/store/store-types.d.ts +18 -18
- package/dist/store/store-types.d.ts.map +1 -1
- package/dist/store/store-types.js.map +1 -1
- package/dist/store/store.d.ts +57 -38
- package/dist/store/store.d.ts.map +1 -1
- package/dist/store/store.js +225 -188
- package/dist/store/store.js.map +1 -1
- package/dist/store/store.test.d.ts +2 -0
- package/dist/store/store.test.d.ts.map +1 -0
- package/dist/store/store.test.js +27 -0
- package/dist/store/store.test.js.map +1 -0
- package/dist/utils/dev.d.ts.map +1 -1
- package/dist/utils/dev.js +3 -2
- package/dist/utils/dev.js.map +1 -1
- package/dist/utils/expo.d.ts +2 -0
- package/dist/utils/expo.d.ts.map +1 -0
- package/dist/utils/expo.js +8 -0
- package/dist/utils/expo.js.map +1 -0
- package/dist/utils/function-string.d.ts +7 -0
- package/dist/utils/function-string.d.ts.map +1 -0
- package/dist/utils/function-string.js +9 -0
- package/dist/utils/function-string.js.map +1 -0
- package/dist/utils/stack-info.d.ts.map +1 -1
- package/dist/utils/stack-info.js +6 -1
- package/dist/utils/stack-info.js.map +1 -1
- package/dist/utils/stack-info.test.js +54 -1
- package/dist/utils/stack-info.test.js.map +1 -1
- package/dist/utils/tests/fixture.d.ts +2 -6
- package/dist/utils/tests/fixture.d.ts.map +1 -1
- package/dist/utils/tests/fixture.js +7 -13
- package/dist/utils/tests/fixture.js.map +1 -1
- package/dist/utils/tests/mod.d.ts +1 -0
- package/dist/utils/tests/mod.d.ts.map +1 -1
- package/dist/utils/tests/mod.js +1 -0
- package/dist/utils/tests/mod.js.map +1 -1
- package/dist/utils/tests/otel.d.ts +60 -1
- package/dist/utils/tests/otel.d.ts.map +1 -1
- package/dist/utils/tests/otel.js +65 -4
- package/dist/utils/tests/otel.js.map +1 -1
- package/package.json +12 -12
- package/src/{SynchronousDatabaseWrapper.ts → SqliteDbWrapper.ts} +59 -13
- package/src/ambient.d.ts +1 -1
- package/src/effect/LiveStore.ts +32 -33
- package/src/index.ts +14 -7
- package/src/live-queries/__snapshots__/{db.test.ts.snap → db-query.test.ts.snap} +220 -69
- package/src/live-queries/base-class.ts +160 -40
- package/src/live-queries/computed.ts +45 -19
- package/src/live-queries/{db.test.ts → db-query.test.ts} +23 -12
- package/src/live-queries/{db.ts → db-query.ts} +124 -61
- package/src/live-queries/graphql.ts +47 -21
- package/src/live-queries/make-ref.ts +47 -0
- package/src/reactive.ts +52 -27
- package/src/row-query-utils.ts +29 -18
- package/src/store/create-store.ts +106 -113
- package/src/store/devtools.ts +65 -39
- package/src/store/store-types.ts +20 -18
- package/src/store/store.ts +361 -290
- package/src/utils/dev.ts +4 -2
- package/src/utils/function-string.ts +12 -0
- package/src/utils/stack-info.test.ts +58 -1
- package/src/utils/stack-info.ts +6 -1
- package/src/utils/tests/fixture.ts +6 -16
- package/src/utils/tests/mod.ts +1 -0
- package/src/utils/tests/otel.ts +71 -5
- package/dist/live-queries/sql.d.ts.map +0 -1
- package/dist/live-queries/sql.js +0 -175
- package/dist/live-queries/sql.js.map +0 -1
- package/dist/live-queries/sql.test.d.ts +0 -2
- package/dist/live-queries/sql.test.d.ts.map +0 -1
- package/dist/live-queries/sql.test.js +0 -285
- package/dist/live-queries/sql.test.js.map +0 -1
- package/dist/reactiveQueries/base-class.d.ts +0 -64
- package/dist/reactiveQueries/base-class.d.ts.map +0 -1
- package/dist/reactiveQueries/base-class.js +0 -31
- package/dist/reactiveQueries/base-class.js.map +0 -1
- package/dist/reactiveQueries/computed.d.ts +0 -26
- package/dist/reactiveQueries/computed.d.ts.map +0 -1
- package/dist/reactiveQueries/computed.js +0 -38
- package/dist/reactiveQueries/computed.js.map +0 -1
- package/dist/reactiveQueries/graphql.d.ts +0 -49
- package/dist/reactiveQueries/graphql.d.ts.map +0 -1
- package/dist/reactiveQueries/graphql.js +0 -122
- package/dist/reactiveQueries/graphql.js.map +0 -1
- package/dist/reactiveQueries/sql.d.ts +0 -62
- package/dist/reactiveQueries/sql.d.ts.map +0 -1
- package/dist/reactiveQueries/sql.js +0 -175
- package/dist/reactiveQueries/sql.js.map +0 -1
- package/dist/reactiveQueries/sql.test.d.ts +0 -2
- package/dist/reactiveQueries/sql.test.d.ts.map +0 -1
- package/dist/reactiveQueries/sql.test.js +0 -285
- package/dist/reactiveQueries/sql.test.js.map +0 -1
- package/dist/row-query.d.ts +0 -16
- package/dist/row-query.d.ts.map +0 -1
- package/dist/row-query.js +0 -30
- package/dist/row-query.js.map +0 -1
- package/src/global-state.ts +0 -20
|
@@ -5,9 +5,12 @@ import type {
|
|
|
5
5
|
MutableDebugInfo,
|
|
6
6
|
PreparedBindValues,
|
|
7
7
|
PreparedStatement,
|
|
8
|
-
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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
|
-
|
|
110
|
-
|
|
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 &&
|
|
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,
|
|
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 &&
|
|
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:
|
|
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
package/src/effect/LiveStore.ts
CHANGED
|
@@ -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,
|
|
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
|
|
14
|
-
|
|
15
|
-
|
|
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
|
|
19
|
-
|
|
20
|
-
'
|
|
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,
|
|
36
|
-
makeContext: (db:
|
|
41
|
+
schema: Effect.Effect<GraphQLSchema, never, OtelTracer.OtelTracer>
|
|
42
|
+
makeContext: (db: SqliteDbWrapper, tracer: otel.Tracer, sessionId: string) => GraphQLContext
|
|
37
43
|
}
|
|
38
|
-
boot?: (
|
|
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,
|
|
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 |
|
|
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
|
-
|
|
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
|
|
12
|
-
|
|
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 {
|
|
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
|
|
56
|
+
type SqliteDb,
|
|
50
57
|
type DebugInfo,
|
|
51
58
|
type MutableDebugInfo,
|
|
52
59
|
prepareBindValues,
|