@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.
Files changed (37) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/{MainDatabaseWrapper.d.ts → SynchronousDatabaseWrapper.d.ts} +4 -4
  3. package/dist/SynchronousDatabaseWrapper.d.ts.map +1 -0
  4. package/dist/{MainDatabaseWrapper.js → SynchronousDatabaseWrapper.js} +2 -2
  5. package/dist/SynchronousDatabaseWrapper.js.map +1 -0
  6. package/dist/effect/LiveStore.d.ts +2 -2
  7. package/dist/effect/LiveStore.d.ts.map +1 -1
  8. package/dist/effect/LiveStore.js.map +1 -1
  9. package/dist/index.d.ts +2 -2
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/react/LiveStoreProvider.d.ts +4 -2
  14. package/dist/react/LiveStoreProvider.d.ts.map +1 -1
  15. package/dist/react/LiveStoreProvider.js +20 -5
  16. package/dist/react/LiveStoreProvider.js.map +1 -1
  17. package/dist/reactiveQueries/sql.js +2 -2
  18. package/dist/row-query.js +1 -1
  19. package/dist/store-devtools.d.ts +7 -6
  20. package/dist/store-devtools.d.ts.map +1 -1
  21. package/dist/store-devtools.js +10 -15
  22. package/dist/store-devtools.js.map +1 -1
  23. package/dist/store.d.ts +3 -3
  24. package/dist/store.d.ts.map +1 -1
  25. package/dist/store.js +18 -18
  26. package/dist/store.js.map +1 -1
  27. package/package.json +5 -9
  28. package/src/{MainDatabaseWrapper.ts → SynchronousDatabaseWrapper.ts} +5 -5
  29. package/src/effect/LiveStore.ts +2 -2
  30. package/src/index.ts +2 -2
  31. package/src/react/LiveStoreProvider.tsx +28 -7
  32. package/src/reactiveQueries/sql.ts +2 -2
  33. package/src/row-query.ts +1 -1
  34. package/src/store-devtools.ts +19 -18
  35. package/src/store.ts +20 -19
  36. package/dist/MainDatabaseWrapper.d.ts.map +0 -1
  37. 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: MainDatabaseWrapper, tracer: otel.Tracer) => TContext
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
- mainDbWrapper: MainDatabaseWrapper
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.mainDbWrapper = new MainDatabaseWrapper({ otel: otelOptions, db: adapter.mainDb })
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.mainDbWrapper, this.otel.tracer)
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.mainDbWrapper.txn(applyMutations)
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.mainDbWrapper.getTablesUsed(statementSql),
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.mainDbWrapper.execute(statementSql, bindValues, writeTables, { otelContext })
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.mainDbWrapper.execute(query, prepareBindValues(params, query), writeTables, { otelContext })
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.mainDbWrapper.select(query, { bindValues: prepareBindValues(params, query) })
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.mainDbWrapper.export()
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_ = ({ storeMessagePort }: { storeMessagePort: MessagePort }) =>
692
+ const connectDevtoolsToStore_ = (storeDevtoolsChannel: StoreDevtoolsChannel) =>
692
693
  Effect.gen(function* () {
693
694
  const store = yield* Deferred.await(storeDeferred)
694
- yield* connectDevtoolsToStore({ storeMessagePort, store })
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.mainDb.prepare(queryStr)
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.mainDb.execute(statementSql, bindValues)
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.mainDb.prepare(queryStr)
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.mainDb.execute('BEGIN', undefined)
778
+ adapter.syncDb.execute('BEGIN', undefined)
778
779
 
779
780
  callback()
780
781
 
781
- adapter.mainDb.execute('COMMIT', undefined)
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.mainDb.execute('ROLLBACK', undefined)
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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"}