@livestore/livestore 0.0.55 → 0.0.56-dev.1
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/{MainDatabaseWrapper.d.ts → SynchronousDatabaseWrapper.d.ts} +4 -4
- package/dist/SynchronousDatabaseWrapper.d.ts.map +1 -0
- package/dist/{MainDatabaseWrapper.js → SynchronousDatabaseWrapper.js} +2 -2
- package/dist/SynchronousDatabaseWrapper.js.map +1 -0
- package/dist/effect/LiveStore.d.ts +2 -2
- package/dist/effect/LiveStore.d.ts.map +1 -1
- package/dist/effect/LiveStore.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/react/LiveStoreProvider.d.ts +4 -2
- package/dist/react/LiveStoreProvider.d.ts.map +1 -1
- package/dist/react/LiveStoreProvider.js +20 -5
- package/dist/react/LiveStoreProvider.js.map +1 -1
- package/dist/reactiveQueries/sql.js +2 -2
- package/dist/row-query.js +1 -1
- package/dist/store-devtools.d.ts +7 -6
- package/dist/store-devtools.d.ts.map +1 -1
- package/dist/store-devtools.js +10 -15
- package/dist/store-devtools.js.map +1 -1
- package/dist/store.d.ts +3 -3
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +18 -18
- package/dist/store.js.map +1 -1
- package/package.json +5 -9
- package/src/{MainDatabaseWrapper.ts → SynchronousDatabaseWrapper.ts} +5 -5
- package/src/effect/LiveStore.ts +2 -2
- package/src/index.ts +2 -2
- package/src/react/LiveStoreProvider.tsx +28 -7
- package/src/reactiveQueries/sql.ts +2 -2
- package/src/row-query.ts +1 -1
- package/src/store-devtools.ts +19 -18
- package/src/store.ts +20 -19
- package/dist/MainDatabaseWrapper.d.ts.map +0 -1
- package/dist/MainDatabaseWrapper.js.map +0 -1
package/src/store.ts
CHANGED
|
@@ -6,6 +6,7 @@ import type {
|
|
|
6
6
|
ResetMode,
|
|
7
7
|
StoreAdapter,
|
|
8
8
|
StoreAdapterFactory,
|
|
9
|
+
StoreDevtoolsChannel,
|
|
9
10
|
} from '@livestore/common'
|
|
10
11
|
import { getExecArgsFromMutation, prepareBindValues, UnexpectedError } from '@livestore/common'
|
|
11
12
|
import type { LiveStoreSchema, MutationEvent } from '@livestore/common/schema'
|
|
@@ -33,11 +34,11 @@ import * as otel from '@opentelemetry/api'
|
|
|
33
34
|
import type { GraphQLSchema } from 'graphql'
|
|
34
35
|
|
|
35
36
|
import { globalReactivityGraph } from './global-state.js'
|
|
36
|
-
import { MainDatabaseWrapper } from './MainDatabaseWrapper.js'
|
|
37
37
|
import type { StackInfo } from './react/utils/stack-info.js'
|
|
38
38
|
import type { DebugRefreshReasonBase, Ref } from './reactive.js'
|
|
39
39
|
import type { LiveQuery, QueryContext, ReactivityGraph } from './reactiveQueries/base-class.js'
|
|
40
40
|
import { connectDevtoolsToStore } from './store-devtools.js'
|
|
41
|
+
import { SynchronousDatabaseWrapper } from './SynchronousDatabaseWrapper.js'
|
|
41
42
|
import { ReferenceCountedSet } from './utils/data-structures.js'
|
|
42
43
|
import { downloadBlob } from './utils/dev.js'
|
|
43
44
|
import { getDurationMsFromSpan } from './utils/otel.js'
|
|
@@ -50,7 +51,7 @@ export type BaseGraphQLContext = {
|
|
|
50
51
|
|
|
51
52
|
export type GraphQLOptions<TContext> = {
|
|
52
53
|
schema: GraphQLSchema
|
|
53
|
-
makeContext: (db:
|
|
54
|
+
makeContext: (db: SynchronousDatabaseWrapper, tracer: otel.Tracer) => TContext
|
|
54
55
|
}
|
|
55
56
|
|
|
56
57
|
export type OtelOptions = {
|
|
@@ -131,7 +132,7 @@ export class Store<
|
|
|
131
132
|
id = uniqueStoreId()
|
|
132
133
|
private fiberSet: FiberSet.FiberSet
|
|
133
134
|
reactivityGraph: ReactivityGraph
|
|
134
|
-
|
|
135
|
+
syncDbWrapper: SynchronousDatabaseWrapper
|
|
135
136
|
adapter: StoreAdapter
|
|
136
137
|
schema: LiveStoreSchema
|
|
137
138
|
graphQLSchema?: GraphQLSchema
|
|
@@ -165,7 +166,7 @@ export class Store<
|
|
|
165
166
|
}: StoreOptions<TGraphQLContext, TSchema>) {
|
|
166
167
|
super()
|
|
167
168
|
|
|
168
|
-
this.
|
|
169
|
+
this.syncDbWrapper = new SynchronousDatabaseWrapper({ otel: otelOptions, db: adapter.syncDb })
|
|
169
170
|
this.adapter = adapter
|
|
170
171
|
this.schema = schema
|
|
171
172
|
|
|
@@ -225,7 +226,7 @@ export class Store<
|
|
|
225
226
|
|
|
226
227
|
if (graphQLOptions) {
|
|
227
228
|
this.graphQLSchema = graphQLOptions.schema
|
|
228
|
-
this.graphQLContext = graphQLOptions.makeContext(this.
|
|
229
|
+
this.graphQLContext = graphQLOptions.makeContext(this.syncDbWrapper, this.otel.tracer)
|
|
229
230
|
}
|
|
230
231
|
|
|
231
232
|
Effect.gen(this, function* () {
|
|
@@ -421,7 +422,7 @@ export class Store<
|
|
|
421
422
|
|
|
422
423
|
if (mutationsEvents.length > 1) {
|
|
423
424
|
// TODO: what to do about coordinator transaction here?
|
|
424
|
-
this.
|
|
425
|
+
this.syncDbWrapper.txn(applyMutations)
|
|
425
426
|
} else {
|
|
426
427
|
applyMutations()
|
|
427
428
|
}
|
|
@@ -531,11 +532,11 @@ export class Store<
|
|
|
531
532
|
for (const {
|
|
532
533
|
statementSql,
|
|
533
534
|
bindValues,
|
|
534
|
-
writeTables = this.
|
|
535
|
+
writeTables = this.syncDbWrapper.getTablesUsed(statementSql),
|
|
535
536
|
} of execArgsArr) {
|
|
536
537
|
// TODO when the store doesn't have the lock, we need wait for the coordinator to confirm the mutation
|
|
537
538
|
// before executing the mutation on the main db
|
|
538
|
-
const { durationMs } = this.
|
|
539
|
+
const { durationMs } = this.syncDbWrapper.execute(statementSql, bindValues, writeTables, { otelContext })
|
|
539
540
|
|
|
540
541
|
durationMsTotal += durationMs
|
|
541
542
|
writeTables.forEach((table) => allWriteTables.add(table))
|
|
@@ -572,13 +573,13 @@ export class Store<
|
|
|
572
573
|
writeTables?: ReadonlySet<string>,
|
|
573
574
|
otelContext?: otel.Context,
|
|
574
575
|
) => {
|
|
575
|
-
this.
|
|
576
|
+
this.syncDbWrapper.execute(query, prepareBindValues(params, query), writeTables, { otelContext })
|
|
576
577
|
|
|
577
578
|
this.adapter.coordinator.execute(query, prepareBindValues(params, query)).pipe(runEffectFork)
|
|
578
579
|
}
|
|
579
580
|
|
|
580
581
|
select = (query: string, params: ParamsObject = {}) => {
|
|
581
|
-
return this.
|
|
582
|
+
return this.syncDbWrapper.select(query, { bindValues: prepareBindValues(params, query) })
|
|
582
583
|
}
|
|
583
584
|
|
|
584
585
|
makeTableRef = (tableName: string) =>
|
|
@@ -589,7 +590,7 @@ export class Store<
|
|
|
589
590
|
})
|
|
590
591
|
|
|
591
592
|
__devDownloadDb = () => {
|
|
592
|
-
const data = this.
|
|
593
|
+
const data = this.syncDbWrapper.export()
|
|
593
594
|
downloadBlob(data, `livestore-${Date.now()}.db`)
|
|
594
595
|
}
|
|
595
596
|
|
|
@@ -688,10 +689,10 @@ export const createStore = <
|
|
|
688
689
|
|
|
689
690
|
const storeDeferred = yield* Deferred.make<Store>()
|
|
690
691
|
|
|
691
|
-
const connectDevtoolsToStore_ = (
|
|
692
|
+
const connectDevtoolsToStore_ = (storeDevtoolsChannel: StoreDevtoolsChannel) =>
|
|
692
693
|
Effect.gen(function* () {
|
|
693
694
|
const store = yield* Deferred.await(storeDeferred)
|
|
694
|
-
yield* connectDevtoolsToStore({
|
|
695
|
+
yield* connectDevtoolsToStore({ storeDevtoolsChannel, store })
|
|
695
696
|
})
|
|
696
697
|
|
|
697
698
|
// TODO close parent scope? (Needs refactor with Mike A)
|
|
@@ -736,7 +737,7 @@ export const createStore = <
|
|
|
736
737
|
const bootDbImpl: BootDb = {
|
|
737
738
|
_tag: 'BootDb',
|
|
738
739
|
execute: (queryStr, bindValues) => {
|
|
739
|
-
const stmt = adapter.
|
|
740
|
+
const stmt = adapter.syncDb.prepare(queryStr)
|
|
740
741
|
stmt.execute(bindValues)
|
|
741
742
|
|
|
742
743
|
if (isInTxn === true) {
|
|
@@ -757,7 +758,7 @@ export const createStore = <
|
|
|
757
758
|
// const { bindValues, statementSql } = getExecArgsFromMutation({ mutationDef, mutationEventDecoded })
|
|
758
759
|
|
|
759
760
|
for (const { statementSql, bindValues } of execArgsArr) {
|
|
760
|
-
adapter.
|
|
761
|
+
adapter.syncDb.execute(statementSql, bindValues)
|
|
761
762
|
}
|
|
762
763
|
|
|
763
764
|
const mutationEventEncoded = Schema.encodeUnknownSync(mutationEventSchema)(mutationEventDecoded)
|
|
@@ -768,17 +769,17 @@ export const createStore = <
|
|
|
768
769
|
}
|
|
769
770
|
},
|
|
770
771
|
select: (queryStr, bindValues) => {
|
|
771
|
-
const stmt = adapter.
|
|
772
|
+
const stmt = adapter.syncDb.prepare(queryStr)
|
|
772
773
|
return stmt.select(bindValues)
|
|
773
774
|
},
|
|
774
775
|
txn: (callback) => {
|
|
775
776
|
try {
|
|
776
777
|
isInTxn = true
|
|
777
|
-
adapter.
|
|
778
|
+
adapter.syncDb.execute('BEGIN', undefined)
|
|
778
779
|
|
|
779
780
|
callback()
|
|
780
781
|
|
|
781
|
-
adapter.
|
|
782
|
+
adapter.syncDb.execute('COMMIT', undefined)
|
|
782
783
|
|
|
783
784
|
// adapter.coordinator.execute('BEGIN', undefined, undefined)
|
|
784
785
|
for (const [queryStr, bindValues] of txnExecuteStmnts) {
|
|
@@ -786,7 +787,7 @@ export const createStore = <
|
|
|
786
787
|
}
|
|
787
788
|
// adapter.coordinator.execute('COMMIT', undefined, undefined)
|
|
788
789
|
} catch (e: any) {
|
|
789
|
-
adapter.
|
|
790
|
+
adapter.syncDb.execute('ROLLBACK', undefined)
|
|
790
791
|
throw e
|
|
791
792
|
} finally {
|
|
792
793
|
isInTxn = false
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MainDatabaseWrapper.d.ts","sourceRoot":"","sources":["../src/MainDatabaseWrapper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAEnB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,KAAK,KAAK,IAAI,MAAM,oBAAoB,CAAA;AAK/C,eAAO,MAAM,cAAc,QAAO,SAKhC,CAAA;AAEF,qBAAa,mBAAmB;IAE9B,OAAO,CAAC,WAAW,CAA+C;IAClE,OAAO,CAAC,eAAe,CAAyC;IAChE,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,EAAE,CAAkB;IAC5B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,mBAAmB,CAAc;IACzC,OAAO,CAAC,cAAc,CAAA;IACf,SAAS,EAAE,gBAAgB,CAAmB;gBAEzC,EACV,EAAE,EACF,IAAI,GACL,EAAE;QACD,EAAE,EAAE,gBAAgB,CAAA;QACpB,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;YACnB,eAAe,EAAE,IAAI,CAAC,OAAO,CAAA;SAC9B,CAAA;KACF;IAcD,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAqBrC,aAAa,CAAC,KAAK,EAAE,MAAM;IA4B3B,OAAO,CACL,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,kBAAkB,EAC/B,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,EACjC,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAA;KAAE,GAC/D;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE;IAkDzB,MAAM,CAAC,CAAC,GAAG,GAAG,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;QACnC,UAAU,CAAC,EAAE,kBAAkB,CAAA;QAC/B,SAAS,CAAC,EAAE,OAAO,CAAA;QACnB,WAAW,CAAC,EAAE,IAAI,CAAC,OAAO,CAAA;KAC3B,GACA,aAAa,CAAC,CAAC,CAAC;IAkEnB,MAAM;CAQP"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MainDatabaseWrapper.js","sourceRoot":"","sources":["../src/MainDatabaseWrapper.ts"],"names":[],"mappings":"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"}
|