@livestore/livestore 0.3.0-dev.5 → 0.3.0-dev.50

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 (170) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/QueryCache.d.ts.map +1 -1
  3. package/dist/SqliteDbWrapper.d.ts +60 -0
  4. package/dist/SqliteDbWrapper.d.ts.map +1 -0
  5. package/dist/{SynchronousDatabaseWrapper.js → SqliteDbWrapper.js} +69 -34
  6. package/dist/SqliteDbWrapper.js.map +1 -0
  7. package/dist/effect/LiveStore.d.ts +6 -34
  8. package/dist/effect/LiveStore.d.ts.map +1 -1
  9. package/dist/effect/LiveStore.js +10 -12
  10. package/dist/effect/LiveStore.js.map +1 -1
  11. package/dist/effect/mod.d.ts +3 -0
  12. package/dist/effect/mod.d.ts.map +1 -0
  13. package/dist/effect/mod.js +3 -0
  14. package/dist/effect/mod.js.map +1 -0
  15. package/dist/internal/mod.d.ts +3 -0
  16. package/dist/internal/mod.d.ts.map +1 -0
  17. package/dist/internal/mod.js +3 -0
  18. package/dist/internal/mod.js.map +1 -0
  19. package/dist/live-queries/base-class.d.ts +65 -27
  20. package/dist/live-queries/base-class.d.ts.map +1 -1
  21. package/dist/live-queries/base-class.js +54 -13
  22. package/dist/live-queries/base-class.js.map +1 -1
  23. package/dist/live-queries/client-document-get-query.d.ts +12 -0
  24. package/dist/live-queries/client-document-get-query.d.ts.map +1 -0
  25. package/dist/live-queries/client-document-get-query.js +18 -0
  26. package/dist/live-queries/client-document-get-query.js.map +1 -0
  27. package/dist/live-queries/computed.d.ts +12 -14
  28. package/dist/live-queries/computed.d.ts.map +1 -1
  29. package/dist/live-queries/computed.js +37 -15
  30. package/dist/live-queries/computed.js.map +1 -1
  31. package/dist/live-queries/db-query.d.ts +93 -0
  32. package/dist/live-queries/db-query.d.ts.map +1 -0
  33. package/dist/live-queries/{db.js → db-query.js} +111 -40
  34. package/dist/live-queries/db-query.js.map +1 -0
  35. package/dist/live-queries/db-query.test.d.ts +2 -0
  36. package/dist/live-queries/db-query.test.d.ts.map +1 -0
  37. package/dist/live-queries/db-query.test.js +133 -0
  38. package/dist/live-queries/db-query.test.js.map +1 -0
  39. package/dist/live-queries/mod.d.ts +5 -0
  40. package/dist/live-queries/mod.d.ts.map +1 -0
  41. package/dist/live-queries/mod.js +5 -0
  42. package/dist/live-queries/mod.js.map +1 -0
  43. package/dist/live-queries/signal.d.ts +20 -0
  44. package/dist/live-queries/signal.d.ts.map +1 -0
  45. package/dist/live-queries/signal.js +33 -0
  46. package/dist/live-queries/signal.js.map +1 -0
  47. package/dist/live-queries/signal.test.d.ts +2 -0
  48. package/dist/live-queries/signal.test.d.ts.map +1 -0
  49. package/dist/live-queries/signal.test.js +25 -0
  50. package/dist/live-queries/signal.test.js.map +1 -0
  51. package/dist/mod.d.ts +14 -0
  52. package/dist/mod.d.ts.map +1 -0
  53. package/dist/mod.js +13 -0
  54. package/dist/mod.js.map +1 -0
  55. package/dist/reactive.d.ts +23 -17
  56. package/dist/reactive.d.ts.map +1 -1
  57. package/dist/reactive.js +23 -19
  58. package/dist/reactive.js.map +1 -1
  59. package/dist/reactive.test.js +1 -1
  60. package/dist/reactive.test.js.map +1 -1
  61. package/dist/store/create-store.d.ts +70 -12
  62. package/dist/store/create-store.d.ts.map +1 -1
  63. package/dist/store/create-store.js +68 -19
  64. package/dist/store/create-store.js.map +1 -1
  65. package/dist/store/devtools.d.ts +5 -4
  66. package/dist/store/devtools.d.ts.map +1 -1
  67. package/dist/store/devtools.js +92 -40
  68. package/dist/store/devtools.js.map +1 -1
  69. package/dist/store/store-types.d.ts +54 -42
  70. package/dist/store/store-types.d.ts.map +1 -1
  71. package/dist/store/store-types.js +2 -5
  72. package/dist/store/store-types.js.map +1 -1
  73. package/dist/store/store.d.ts +141 -35
  74. package/dist/store/store.d.ts.map +1 -1
  75. package/dist/store/store.js +319 -153
  76. package/dist/store/store.js.map +1 -1
  77. package/dist/utils/data-structures.d.ts.map +1 -1
  78. package/dist/utils/dev.d.ts.map +1 -1
  79. package/dist/utils/dev.js +6 -1
  80. package/dist/utils/dev.js.map +1 -1
  81. package/dist/utils/function-string.d.ts +7 -0
  82. package/dist/utils/function-string.d.ts.map +1 -0
  83. package/dist/utils/function-string.js +9 -0
  84. package/dist/utils/function-string.js.map +1 -0
  85. package/dist/utils/stack-info.d.ts.map +1 -1
  86. package/dist/utils/stack-info.js +6 -1
  87. package/dist/utils/stack-info.js.map +1 -1
  88. package/dist/utils/stack-info.test.js +54 -1
  89. package/dist/utils/stack-info.test.js.map +1 -1
  90. package/dist/utils/tests/fixture.d.ts +59 -216
  91. package/dist/utils/tests/fixture.d.ts.map +1 -1
  92. package/dist/utils/tests/fixture.js +23 -18
  93. package/dist/utils/tests/fixture.js.map +1 -1
  94. package/dist/utils/tests/mod.d.ts +1 -0
  95. package/dist/utils/tests/mod.d.ts.map +1 -1
  96. package/dist/utils/tests/mod.js +1 -0
  97. package/dist/utils/tests/mod.js.map +1 -1
  98. package/dist/utils/tests/otel.d.ts.map +1 -1
  99. package/dist/utils/tests/otel.js +8 -3
  100. package/dist/utils/tests/otel.js.map +1 -1
  101. package/package.json +29 -26
  102. package/src/{SynchronousDatabaseWrapper.ts → SqliteDbWrapper.ts} +92 -42
  103. package/src/effect/LiveStore.ts +27 -64
  104. package/src/effect/{index.ts → mod.ts} +2 -3
  105. package/src/internal/mod.ts +2 -0
  106. package/src/live-queries/__snapshots__/{db.test.ts.snap → db-query.test.ts.snap} +241 -45
  107. package/src/live-queries/base-class.ts +152 -50
  108. package/src/live-queries/client-document-get-query.ts +52 -0
  109. package/src/live-queries/computed.ts +51 -33
  110. package/src/live-queries/db-query.test.ts +192 -0
  111. package/src/live-queries/{db.ts → db-query.ts} +168 -81
  112. package/src/live-queries/mod.ts +4 -0
  113. package/src/live-queries/signal.test.ts +40 -0
  114. package/src/live-queries/signal.ts +47 -0
  115. package/src/mod.ts +42 -0
  116. package/src/reactive.test.ts +1 -1
  117. package/src/reactive.ts +66 -43
  118. package/src/store/create-store.ts +188 -62
  119. package/src/store/devtools.ts +124 -46
  120. package/src/store/store-types.ts +54 -43
  121. package/src/store/store.ts +454 -236
  122. package/src/utils/dev.ts +6 -1
  123. package/src/utils/function-string.ts +12 -0
  124. package/src/utils/stack-info.test.ts +58 -1
  125. package/src/utils/stack-info.ts +6 -1
  126. package/src/utils/tests/fixture.ts +22 -31
  127. package/src/utils/tests/mod.ts +1 -0
  128. package/src/utils/tests/otel.ts +10 -3
  129. package/dist/SynchronousDatabaseWrapper.d.ts +0 -41
  130. package/dist/SynchronousDatabaseWrapper.d.ts.map +0 -1
  131. package/dist/SynchronousDatabaseWrapper.js.map +0 -1
  132. package/dist/effect/index.d.ts +0 -2
  133. package/dist/effect/index.d.ts.map +0 -1
  134. package/dist/effect/index.js +0 -2
  135. package/dist/effect/index.js.map +0 -1
  136. package/dist/global-state.d.ts +0 -14
  137. package/dist/global-state.d.ts.map +0 -1
  138. package/dist/global-state.js +0 -16
  139. package/dist/global-state.js.map +0 -1
  140. package/dist/index.d.ts +0 -20
  141. package/dist/index.d.ts.map +0 -1
  142. package/dist/index.js +0 -16
  143. package/dist/index.js.map +0 -1
  144. package/dist/live-queries/db.d.ts +0 -66
  145. package/dist/live-queries/db.d.ts.map +0 -1
  146. package/dist/live-queries/db.js.map +0 -1
  147. package/dist/live-queries/db.test.d.ts +0 -2
  148. package/dist/live-queries/db.test.d.ts.map +0 -1
  149. package/dist/live-queries/db.test.js +0 -118
  150. package/dist/live-queries/db.test.js.map +0 -1
  151. package/dist/live-queries/graphql.d.ts +0 -49
  152. package/dist/live-queries/graphql.d.ts.map +0 -1
  153. package/dist/live-queries/graphql.js +0 -122
  154. package/dist/live-queries/graphql.js.map +0 -1
  155. package/dist/row-query-utils.d.ts +0 -17
  156. package/dist/row-query-utils.d.ts.map +0 -1
  157. package/dist/row-query-utils.js +0 -30
  158. package/dist/row-query-utils.js.map +0 -1
  159. package/dist/utils/otel.d.ts +0 -4
  160. package/dist/utils/otel.d.ts.map +0 -1
  161. package/dist/utils/otel.js +0 -6
  162. package/dist/utils/otel.js.map +0 -1
  163. package/src/global-state.ts +0 -20
  164. package/src/index.ts +0 -66
  165. package/src/live-queries/db.test.ts +0 -154
  166. package/src/live-queries/graphql.ts +0 -219
  167. package/src/row-query-utils.ts +0 -65
  168. package/src/utils/otel.ts +0 -9
  169. package/tsconfig.json +0 -18
  170. package/vitest.config.js +0 -9
@@ -1,13 +1,10 @@
1
- import type { ClientSession, IntentionalShutdownCause, UnexpectedError } from '@livestore/common'
2
- import type { EventId, LiveStoreSchema, MutationEvent } from '@livestore/common/schema'
3
- import type { Deferred, MutableHashMap, Runtime, Scope } from '@livestore/utils/effect'
4
- import { Schema } from '@livestore/utils/effect'
1
+ import type { ClientSession, IntentionalShutdownCause, StoreInterrupted, UnexpectedError } from '@livestore/common'
2
+ import type { EventSequenceNumber, LiveStoreEvent, LiveStoreSchema } from '@livestore/common/schema'
3
+ import type { Effect, Runtime, Scope } from '@livestore/utils/effect'
4
+ import { Deferred } from '@livestore/utils/effect'
5
5
  import type * as otel from '@opentelemetry/api'
6
- import type { GraphQLSchema } from 'graphql'
7
6
 
8
- import type { ReactivityGraph } from '../live-queries/base-class.js'
9
7
  import type { DebugRefreshReasonBase } from '../reactive.js'
10
- import type { SynchronousDatabaseWrapper } from '../SynchronousDatabaseWrapper.js'
11
8
  import type { StackInfo } from '../utils/stack-info.js'
12
9
  import type { Store } from './store.js'
13
10
 
@@ -19,63 +16,49 @@ export type LiveStoreContext =
19
16
  }
20
17
  | {
21
18
  stage: 'shutdown'
22
- cause: IntentionalShutdownCause | StoreAbort
19
+ cause: IntentionalShutdownCause | StoreInterrupted
23
20
  }
24
21
 
25
- export class StoreAbort extends Schema.TaggedError<StoreAbort>()('LiveStore.StoreAbort', {}) {}
26
- export class StoreInterrupted extends Schema.TaggedError<StoreInterrupted>()('LiveStore.StoreInterrupted', {}) {}
27
-
28
- export type ShutdownDeferred = Deferred.Deferred<
22
+ export type ShutdownDeferred = Deferred.Deferred<void, UnexpectedError | IntentionalShutdownCause | StoreInterrupted>
23
+ export const makeShutdownDeferred: Effect.Effect<ShutdownDeferred> = Deferred.make<
29
24
  void,
30
- UnexpectedError | IntentionalShutdownCause | StoreInterrupted | StoreAbort
31
- >
25
+ UnexpectedError | IntentionalShutdownCause | StoreInterrupted
26
+ >()
32
27
 
33
28
  export type LiveStoreContextRunning = {
34
29
  stage: 'running'
35
30
  store: Store
36
31
  }
37
32
 
38
- export type BaseGraphQLContext = {
39
- queriedTables: Set<string>
40
- /** Needed by Pothos Otel plugin for resolver tracing to work */
41
- otelContext?: otel.Context
42
- }
43
-
44
- export type GraphQLOptions<TContext> = {
45
- schema: GraphQLSchema
46
- makeContext: (db: SynchronousDatabaseWrapper, tracer: otel.Tracer, sessionId: string) => TContext
47
- }
48
-
49
33
  export type OtelOptions = {
50
34
  tracer: otel.Tracer
51
35
  rootSpanContext: otel.Context
52
36
  }
53
37
 
54
- export type StoreOptions<
55
- TGraphQLContext extends BaseGraphQLContext,
56
- TSchema extends LiveStoreSchema = LiveStoreSchema,
57
- > = {
38
+ export type StoreOptions<TSchema extends LiveStoreSchema = LiveStoreSchema, TContext = {}> = {
58
39
  clientSession: ClientSession
59
40
  schema: TSchema
60
41
  storeId: string
61
- // TODO remove graphql-related stuff from store and move to GraphQL query directly
62
- graphQLOptions?: GraphQLOptions<TGraphQLContext>
42
+ context: TContext
63
43
  otelOptions: OtelOptions
64
- reactivityGraph: ReactivityGraph
65
- disableDevtools?: boolean
66
- lifetimeScope: Scope.Scope
67
- runtime: Runtime.Runtime<Scope.Scope>
44
+ effectContext: {
45
+ runtime: Runtime.Runtime<Scope.Scope>
46
+ lifetimeScope: Scope.Scope
47
+ }
48
+ confirmUnsavedChanges: boolean
68
49
  batchUpdates: (runUpdates: () => void) => void
69
- // TODO validate whether we still need this
70
- unsyncedMutationEvents: MutableHashMap.MutableHashMap<EventId.EventId, MutationEvent.ForSchema<TSchema>>
50
+ params: {
51
+ leaderPushBatchSize: number
52
+ }
53
+ __runningInDevtools: boolean
71
54
  }
72
55
 
73
56
  export type RefreshReason =
74
57
  | DebugRefreshReasonBase
75
58
  | {
76
- _tag: 'mutate'
77
- /** The mutations that were applied */
78
- mutations: ReadonlyArray<MutationEvent.AnyDecoded | MutationEvent.PartialAny>
59
+ _tag: 'commit'
60
+ /** The events that were applied */
61
+ events: ReadonlyArray<LiveStoreEvent.AnyDecoded | LiveStoreEvent.PartialAnyDecoded>
79
62
 
80
63
  /** The tables that were written to by the event */
81
64
  writeTables: ReadonlyArray<string>
@@ -87,10 +70,12 @@ export type RefreshReason =
87
70
  label?: string
88
71
  stackInfo?: StackInfo
89
72
  }
73
+ | { _tag: 'subscribe.initial'; label?: string }
74
+ | { _tag: 'subscribe.update'; label?: string }
90
75
  | { _tag: 'manual'; label?: string }
91
76
 
92
77
  export type QueryDebugInfo = {
93
- _tag: 'graphql' | 'db' | 'computed' | 'unknown'
78
+ _tag: string
94
79
  label: string
95
80
  query: string
96
81
  durationMs: number
@@ -98,13 +83,39 @@ export type QueryDebugInfo = {
98
83
 
99
84
  export type StoreOtel = {
100
85
  tracer: otel.Tracer
101
- mutationsSpanContext: otel.Context
86
+ rootSpanContext: otel.Context
87
+ commitsSpanContext: otel.Context
102
88
  queriesSpanContext: otel.Context
103
89
  }
104
90
 
105
- export type StoreMutateOptions = {
91
+ export type StoreCommitOptions = {
106
92
  label?: string
107
93
  skipRefresh?: boolean
108
94
  spanLinks?: otel.Link[]
109
95
  otelContext?: otel.Context
110
96
  }
97
+
98
+ export type StoreEventsOptions<TSchema extends LiveStoreSchema> = {
99
+ /**
100
+ * By default only new events are returned.
101
+ * Use this to get all events from a specific point in time.
102
+ */
103
+ cursor?: EventSequenceNumber.EventSequenceNumber
104
+ /**
105
+ * Only include events of the given names
106
+ * @default undefined (include all)
107
+ */
108
+ filter?: ReadonlyArray<keyof TSchema['_EventDefMapType']>
109
+ /**
110
+ * Whether to include client-only events or only return synced events
111
+ * @default true
112
+ */
113
+ includeClientOnly?: boolean
114
+ /**
115
+ * Exclude own events that have not been pushed to the sync backend yet
116
+ * @default false
117
+ */
118
+ excludeUnpushed?: boolean
119
+ }
120
+
121
+ export type Unsubscribe = () => void