@livestore/common 0.3.2-dev.0 → 0.3.2-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 (255) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/ClientSessionLeaderThreadProxy.d.ts +7 -7
  3. package/dist/__tests__/fixture.d.ts +4 -4
  4. package/dist/__tests__/fixture.js +2 -2
  5. package/dist/adapter-types.d.ts +9 -9
  6. package/dist/adapter-types.d.ts.map +1 -1
  7. package/dist/adapter-types.js +4 -4
  8. package/dist/adapter-types.js.map +1 -1
  9. package/dist/debug-info.d.ts +2 -2
  10. package/dist/debug-info.js +2 -2
  11. package/dist/devtools/devtools-messages-client-session.d.ts +27 -27
  12. package/dist/devtools/devtools-messages-client-session.js +4 -4
  13. package/dist/devtools/devtools-messages-common.d.ts +6 -6
  14. package/dist/devtools/devtools-messages-common.js +1 -1
  15. package/dist/devtools/devtools-messages-leader.d.ts +35 -35
  16. package/dist/devtools/devtools-messages-leader.js +4 -4
  17. package/dist/devtools/devtools-messages.d.ts +3 -3
  18. package/dist/devtools/devtools-messages.d.ts.map +1 -1
  19. package/dist/devtools/devtools-messages.js +3 -3
  20. package/dist/devtools/devtools-messages.js.map +1 -1
  21. package/dist/devtools/mod.d.ts +3 -3
  22. package/dist/devtools/mod.js +3 -3
  23. package/dist/index.d.ts +16 -16
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +16 -16
  26. package/dist/index.js.map +1 -1
  27. package/dist/leader-thread/LeaderSyncProcessor.d.ts +5 -5
  28. package/dist/leader-thread/LeaderSyncProcessor.js +11 -11
  29. package/dist/leader-thread/LeaderSyncProcessor.js.map +1 -1
  30. package/dist/leader-thread/connection.d.ts +4 -4
  31. package/dist/leader-thread/connection.js +2 -2
  32. package/dist/leader-thread/eventlog.d.ts +7 -7
  33. package/dist/leader-thread/eventlog.js +8 -8
  34. package/dist/leader-thread/eventlog.js.map +1 -1
  35. package/dist/leader-thread/leader-worker-devtools.d.ts +3 -3
  36. package/dist/leader-thread/leader-worker-devtools.js +3 -3
  37. package/dist/leader-thread/make-leader-thread-layer.d.ts +7 -7
  38. package/dist/leader-thread/make-leader-thread-layer.js +10 -10
  39. package/dist/leader-thread/materialize-event.d.ts +4 -4
  40. package/dist/leader-thread/materialize-event.js +7 -7
  41. package/dist/leader-thread/mod.d.ts +8 -8
  42. package/dist/leader-thread/mod.d.ts.map +1 -1
  43. package/dist/leader-thread/mod.js +8 -8
  44. package/dist/leader-thread/mod.js.map +1 -1
  45. package/dist/leader-thread/recreate-db.d.ts +5 -5
  46. package/dist/leader-thread/recreate-db.js +2 -2
  47. package/dist/leader-thread/shutdown-channel.d.ts +1 -1
  48. package/dist/leader-thread/shutdown-channel.js +1 -1
  49. package/dist/leader-thread/types.d.ts +6 -6
  50. package/dist/make-client-session.d.ts +2 -2
  51. package/dist/make-client-session.d.ts.map +1 -1
  52. package/dist/make-client-session.js +2 -2
  53. package/dist/make-client-session.js.map +1 -1
  54. package/dist/materializer-helper.d.ts +5 -5
  55. package/dist/materializer-helper.js +5 -5
  56. package/dist/rematerialize-from-eventlog.d.ts +4 -4
  57. package/dist/rematerialize-from-eventlog.js +3 -3
  58. package/dist/schema/EventDef.d.ts +3 -3
  59. package/dist/schema/EventSequenceNumber.test.js +1 -1
  60. package/dist/schema/LiveStoreEvent.d.ts +5 -5
  61. package/dist/schema/LiveStoreEvent.js +1 -1
  62. package/dist/schema/events.d.ts +1 -1
  63. package/dist/schema/events.d.ts.map +1 -1
  64. package/dist/schema/events.js +1 -1
  65. package/dist/schema/events.js.map +1 -1
  66. package/dist/schema/mod.d.ts +9 -9
  67. package/dist/schema/mod.d.ts.map +1 -1
  68. package/dist/schema/mod.js +9 -9
  69. package/dist/schema/mod.js.map +1 -1
  70. package/dist/schema/schema.d.ts +4 -4
  71. package/dist/schema/schema.js +3 -3
  72. package/dist/schema/state/mod.d.ts +2 -2
  73. package/dist/schema/state/mod.js +2 -2
  74. package/dist/schema/state/sqlite/client-document-def.d.ts +5 -5
  75. package/dist/schema/state/sqlite/client-document-def.d.ts.map +1 -1
  76. package/dist/schema/state/sqlite/client-document-def.js +6 -6
  77. package/dist/schema/state/sqlite/client-document-def.js.map +1 -1
  78. package/dist/schema/state/sqlite/client-document-def.test.js +4 -6
  79. package/dist/schema/state/sqlite/client-document-def.test.js.map +1 -1
  80. package/dist/schema/state/sqlite/db-schema/ast/sqlite.js +1 -1
  81. package/dist/schema/state/sqlite/db-schema/ast/validate.d.ts +1 -1
  82. package/dist/schema/state/sqlite/db-schema/dsl/field-defs.test.js +1 -1
  83. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts +3 -3
  84. package/dist/schema/state/sqlite/db-schema/dsl/mod.d.ts.map +1 -1
  85. package/dist/schema/state/sqlite/db-schema/dsl/mod.js +1 -1
  86. package/dist/schema/state/sqlite/db-schema/dsl/mod.js.map +1 -1
  87. package/dist/schema/state/sqlite/db-schema/hash.d.ts.map +1 -1
  88. package/dist/schema/state/sqlite/db-schema/hash.js +0 -1
  89. package/dist/schema/state/sqlite/db-schema/hash.js.map +1 -1
  90. package/dist/schema/state/sqlite/db-schema/mod.d.ts +2 -2
  91. package/dist/schema/state/sqlite/db-schema/mod.d.ts.map +1 -1
  92. package/dist/schema/state/sqlite/db-schema/mod.js +2 -2
  93. package/dist/schema/state/sqlite/db-schema/mod.js.map +1 -1
  94. package/dist/schema/state/sqlite/mod.d.ts +7 -7
  95. package/dist/schema/state/sqlite/mod.d.ts.map +1 -1
  96. package/dist/schema/state/sqlite/mod.js +7 -7
  97. package/dist/schema/state/sqlite/mod.js.map +1 -1
  98. package/dist/schema/state/sqlite/query-builder/api.d.ts +5 -5
  99. package/dist/schema/state/sqlite/query-builder/astToSql.d.ts +2 -2
  100. package/dist/schema/state/sqlite/query-builder/astToSql.js +1 -1
  101. package/dist/schema/state/sqlite/query-builder/impl.d.ts +2 -2
  102. package/dist/schema/state/sqlite/query-builder/impl.d.ts.map +1 -1
  103. package/dist/schema/state/sqlite/query-builder/impl.js +4 -14
  104. package/dist/schema/state/sqlite/query-builder/impl.js.map +1 -1
  105. package/dist/schema/state/sqlite/query-builder/impl.test.js +3 -3
  106. package/dist/schema/state/sqlite/query-builder/mod.d.ts +2 -2
  107. package/dist/schema/state/sqlite/query-builder/mod.js +2 -2
  108. package/dist/schema/state/sqlite/schema-helpers.d.ts +1 -1
  109. package/dist/schema/state/sqlite/schema-helpers.js +1 -1
  110. package/dist/schema/state/sqlite/system-tables.d.ts +10 -10
  111. package/dist/schema/state/sqlite/system-tables.js +3 -3
  112. package/dist/schema/state/sqlite/table-def.d.ts +2 -2
  113. package/dist/schema/state/sqlite/table-def.js +2 -2
  114. package/dist/schema-management/common.d.ts +2 -2
  115. package/dist/schema-management/common.js +1 -1
  116. package/dist/schema-management/migrations.d.ts +6 -6
  117. package/dist/schema-management/migrations.js +5 -5
  118. package/dist/schema-management/validate-schema.d.ts +4 -4
  119. package/dist/schema-management/validate-schema.js +1 -1
  120. package/dist/sql-queries/index.d.ts +3 -3
  121. package/dist/sql-queries/index.js +3 -3
  122. package/dist/sql-queries/sql-queries.d.ts +2 -2
  123. package/dist/sql-queries/sql-queries.js +3 -3
  124. package/dist/sql-queries/sql-query-builder.d.ts +3 -3
  125. package/dist/sql-queries/sql-query-builder.js +1 -1
  126. package/dist/sql-queries/types.d.ts +1 -1
  127. package/dist/sqlite-db-helper.d.ts +2 -2
  128. package/dist/sqlite-db-helper.js +1 -1
  129. package/dist/sqlite-types.d.ts +4 -4
  130. package/dist/sync/ClientSessionSyncProcessor.d.ts +17 -6
  131. package/dist/sync/ClientSessionSyncProcessor.d.ts.map +1 -1
  132. package/dist/sync/ClientSessionSyncProcessor.js +30 -11
  133. package/dist/sync/ClientSessionSyncProcessor.js.map +1 -1
  134. package/dist/sync/index.d.ts +3 -3
  135. package/dist/sync/index.d.ts.map +1 -1
  136. package/dist/sync/index.js +3 -3
  137. package/dist/sync/index.js.map +1 -1
  138. package/dist/sync/next/compact-events.d.ts +1 -1
  139. package/dist/sync/next/compact-events.js +4 -4
  140. package/dist/sync/next/facts.d.ts +3 -3
  141. package/dist/sync/next/facts.js +2 -2
  142. package/dist/sync/next/graphology.d.ts.map +1 -1
  143. package/dist/sync/next/graphology.js.map +1 -1
  144. package/dist/sync/next/graphology_.d.ts +1 -1
  145. package/dist/sync/next/graphology_.d.ts.map +1 -1
  146. package/dist/sync/next/graphology_.js +1 -1
  147. package/dist/sync/next/graphology_.js.map +1 -1
  148. package/dist/sync/next/history-dag-common.d.ts +3 -3
  149. package/dist/sync/next/history-dag-common.js +2 -2
  150. package/dist/sync/next/history-dag.d.ts +2 -2
  151. package/dist/sync/next/history-dag.js +3 -3
  152. package/dist/sync/next/mod.d.ts +5 -5
  153. package/dist/sync/next/mod.d.ts.map +1 -1
  154. package/dist/sync/next/mod.js +5 -5
  155. package/dist/sync/next/mod.js.map +1 -1
  156. package/dist/sync/next/rebase-events.d.ts +4 -4
  157. package/dist/sync/next/rebase-events.d.ts.map +1 -1
  158. package/dist/sync/next/rebase-events.js +2 -2
  159. package/dist/sync/next/rebase-events.js.map +1 -1
  160. package/dist/sync/next/test/compact-events.calculator.test.js +4 -4
  161. package/dist/sync/next/test/compact-events.test.js +4 -4
  162. package/dist/sync/next/test/event-fixtures.d.ts +3 -3
  163. package/dist/sync/next/test/event-fixtures.js +5 -5
  164. package/dist/sync/next/test/mod.d.ts +1 -1
  165. package/dist/sync/next/test/mod.js +1 -1
  166. package/dist/sync/sync.d.ts +4 -4
  167. package/dist/sync/sync.js +1 -1
  168. package/dist/sync/syncstate.d.ts +1 -1
  169. package/dist/sync/syncstate.js +2 -2
  170. package/dist/sync/syncstate.test.js +3 -4
  171. package/dist/sync/syncstate.test.js.map +1 -1
  172. package/dist/sync/validate-push-payload.d.ts +2 -2
  173. package/dist/sync/validate-push-payload.js +1 -1
  174. package/dist/util.d.ts.map +1 -1
  175. package/dist/util.js +0 -1
  176. package/dist/util.js.map +1 -1
  177. package/dist/version.d.ts +1 -1
  178. package/dist/version.js +1 -1
  179. package/package.json +6 -6
  180. package/src/ClientSessionLeaderThreadProxy.ts +7 -7
  181. package/src/__tests__/fixture.ts +2 -2
  182. package/src/adapter-types.ts +10 -9
  183. package/src/debug-info.ts +2 -2
  184. package/src/devtools/devtools-messages-client-session.ts +4 -4
  185. package/src/devtools/devtools-messages-common.ts +1 -1
  186. package/src/devtools/devtools-messages-leader.ts +4 -4
  187. package/src/devtools/devtools-messages.ts +3 -3
  188. package/src/devtools/mod.ts +3 -3
  189. package/src/index.ts +16 -16
  190. package/src/leader-thread/LeaderSyncProcessor.ts +14 -14
  191. package/src/leader-thread/connection.ts +5 -5
  192. package/src/leader-thread/eventlog.ts +12 -12
  193. package/src/leader-thread/leader-worker-devtools.ts +4 -4
  194. package/src/leader-thread/make-leader-thread-layer.ts +16 -16
  195. package/src/leader-thread/materialize-event.ts +9 -9
  196. package/src/leader-thread/mod.ts +8 -8
  197. package/src/leader-thread/recreate-db.ts +6 -6
  198. package/src/leader-thread/shutdown-channel.ts +1 -1
  199. package/src/leader-thread/types.ts +6 -6
  200. package/src/make-client-session.ts +3 -4
  201. package/src/materializer-helper.ts +11 -11
  202. package/src/rematerialize-from-eventlog.ts +6 -6
  203. package/src/schema/EventDef.ts +3 -3
  204. package/src/schema/EventSequenceNumber.test.ts +1 -1
  205. package/src/schema/LiveStoreEvent.ts +3 -3
  206. package/src/schema/events.ts +1 -1
  207. package/src/schema/mod.ts +9 -9
  208. package/src/schema/schema.ts +7 -7
  209. package/src/schema/state/mod.ts +2 -2
  210. package/src/schema/state/sqlite/client-document-def.test.ts +9 -7
  211. package/src/schema/state/sqlite/client-document-def.ts +45 -33
  212. package/src/schema/state/sqlite/db-schema/ast/sqlite.ts +1 -1
  213. package/src/schema/state/sqlite/db-schema/ast/validate.ts +1 -1
  214. package/src/schema/state/sqlite/db-schema/dsl/field-defs.test.ts +1 -1
  215. package/src/schema/state/sqlite/db-schema/dsl/mod.ts +19 -13
  216. package/src/schema/state/sqlite/db-schema/hash.ts +0 -1
  217. package/src/schema/state/sqlite/db-schema/mod.ts +2 -2
  218. package/src/schema/state/sqlite/mod.ts +13 -13
  219. package/src/schema/state/sqlite/query-builder/api.ts +5 -5
  220. package/src/schema/state/sqlite/query-builder/astToSql.ts +4 -4
  221. package/src/schema/state/sqlite/query-builder/impl.test.ts +4 -4
  222. package/src/schema/state/sqlite/query-builder/impl.ts +8 -16
  223. package/src/schema/state/sqlite/query-builder/mod.ts +2 -2
  224. package/src/schema/state/sqlite/schema-helpers.ts +2 -2
  225. package/src/schema/state/sqlite/system-tables.ts +3 -3
  226. package/src/schema/state/sqlite/table-def.ts +3 -3
  227. package/src/schema-management/common.ts +3 -3
  228. package/src/schema-management/migrations.ts +11 -11
  229. package/src/schema-management/validate-schema.ts +4 -4
  230. package/src/sql-queries/index.ts +3 -3
  231. package/src/sql-queries/sql-queries.ts +4 -4
  232. package/src/sql-queries/sql-query-builder.ts +4 -4
  233. package/src/sql-queries/types.ts +1 -1
  234. package/src/sqlite-db-helper.ts +3 -3
  235. package/src/sqlite-types.ts +4 -4
  236. package/src/sync/ClientSessionSyncProcessor.ts +50 -12
  237. package/src/sync/index.ts +3 -3
  238. package/src/sync/next/compact-events.ts +5 -5
  239. package/src/sync/next/facts.ts +4 -4
  240. package/src/sync/next/graphology.ts +2 -4
  241. package/src/sync/next/graphology_.ts +1 -1
  242. package/src/sync/next/history-dag-common.ts +3 -3
  243. package/src/sync/next/history-dag.ts +3 -3
  244. package/src/sync/next/mod.ts +5 -5
  245. package/src/sync/next/rebase-events.ts +6 -6
  246. package/src/sync/next/test/compact-events.calculator.test.ts +4 -4
  247. package/src/sync/next/test/compact-events.test.ts +5 -5
  248. package/src/sync/next/test/event-fixtures.ts +7 -7
  249. package/src/sync/next/test/mod.ts +1 -1
  250. package/src/sync/sync.ts +4 -4
  251. package/src/sync/syncstate.test.ts +9 -6
  252. package/src/sync/syncstate.ts +2 -2
  253. package/src/sync/validate-push-payload.ts +2 -2
  254. package/src/util.ts +0 -1
  255. package/src/version.ts +1 -1
@@ -1,14 +1,24 @@
1
1
  /// <reference lib="dom" />
2
2
  import { LS_DEV, shouldNeverHappen, TRACE_VERBOSE } from '@livestore/utils'
3
- import { Option, type Runtime, type Scope } from '@livestore/utils/effect'
4
- import { BucketQueue, Effect, FiberHandle, Queue, Schema, Stream, Subscribable } from '@livestore/utils/effect'
3
+ import {
4
+ BucketQueue,
5
+ Effect,
6
+ FiberHandle,
7
+ Option,
8
+ Queue,
9
+ type Runtime,
10
+ Schema,
11
+ type Scope,
12
+ Stream,
13
+ Subscribable,
14
+ } from '@livestore/utils/effect'
5
15
  import * as otel from '@opentelemetry/api'
6
16
 
7
- import { type ClientSession, SyncError, type UnexpectedError } from '../adapter-types.js'
8
- import * as EventSequenceNumber from '../schema/EventSequenceNumber.js'
9
- import * as LiveStoreEvent from '../schema/LiveStoreEvent.js'
10
- import { getEventDef, type LiveStoreSchema } from '../schema/mod.js'
11
- import * as SyncState from './syncstate.js'
17
+ import { type ClientSession, SyncError, type UnexpectedError } from '../adapter-types.ts'
18
+ import * as EventSequenceNumber from '../schema/EventSequenceNumber.ts'
19
+ import * as LiveStoreEvent from '../schema/LiveStoreEvent.ts'
20
+ import { getEventDef, type LiveStoreSchema } from '../schema/mod.ts'
21
+ import * as SyncState from './syncstate.ts'
12
22
 
13
23
  /**
14
24
  * Rebase behaviour:
@@ -52,6 +62,7 @@ export const makeClientSessionSyncProcessor = ({
52
62
  span: otel.Span
53
63
  params: {
54
64
  leaderPushBatchSize: number
65
+ simulation?: ClientSessionSyncProcessorSimulationParams
55
66
  }
56
67
  /**
57
68
  * Currently only used in the web adapter:
@@ -61,6 +72,11 @@ export const makeClientSessionSyncProcessor = ({
61
72
  }): ClientSessionSyncProcessor => {
62
73
  const eventSchema = LiveStoreEvent.makeEventDefSchemaMemo(schema)
63
74
 
75
+ const simSleep = <TKey extends keyof ClientSessionSyncProcessorSimulationParams>(
76
+ key: TKey,
77
+ key2: keyof ClientSessionSyncProcessorSimulationParams[TKey],
78
+ ) => Effect.sleep((params.simulation?.[key]?.[key2] ?? 0) as number)
79
+
64
80
  const syncStateRef = {
65
81
  // The initial state is identical to the leader's initial state
66
82
  current: new SyncState.SyncState({
@@ -161,7 +177,6 @@ export const makeClientSessionSyncProcessor = ({
161
177
  const otelContext = otel.trace.setSpan(otel.context.active(), span)
162
178
 
163
179
  const boot: ClientSessionSyncProcessor['boot'] = Effect.gen(function* () {
164
- // eslint-disable-next-line unicorn/prefer-global-this
165
180
  if (confirmUnsavedChanges && typeof window !== 'undefined' && typeof window.addEventListener === 'function') {
166
181
  const onBeforeUnload = (event: BeforeUnloadEvent) => {
167
182
  if (syncStateRef.current.pending.length > 0) {
@@ -230,19 +245,23 @@ export const makeClientSessionSyncProcessor = ({
230
245
 
231
246
  debugInfo.rebaseCount++
232
247
 
248
+ if (SIMULATION_ENABLED) yield* simSleep('pull', '1_before_leader_push_fiber_interrupt')
249
+
233
250
  yield* FiberHandle.clear(leaderPushingFiberHandle)
234
251
 
252
+ if (SIMULATION_ENABLED) yield* simSleep('pull', '2_before_leader_push_queue_clear')
253
+
235
254
  // Reset the leader push queue since we're rebasing and will push again
236
255
  yield* BucketQueue.clear(leaderPushQueue)
237
256
 
238
- yield* FiberHandle.run(leaderPushingFiberHandle, backgroundLeaderPushing)
257
+ if (SIMULATION_ENABLED) yield* simSleep('pull', '3_before_rebase_rollback')
239
258
 
240
259
  if (LS_DEV) {
241
- Effect.logDebug(
260
+ yield* Effect.logDebug(
242
261
  'merge:pull:rebase: rollback',
243
262
  mergeResult.rollbackEvents.length,
244
263
  ...mergeResult.rollbackEvents.slice(0, 10).map((_) => _.toJSON()),
245
- ).pipe(Effect.provide(runtime), Effect.runSync)
264
+ )
246
265
  }
247
266
 
248
267
  for (let i = mergeResult.rollbackEvents.length - 1; i >= 0; i--) {
@@ -253,8 +272,13 @@ export const makeClientSessionSyncProcessor = ({
253
272
  }
254
273
  }
255
274
 
256
- // Pushing rebased pending events to leader
275
+ if (SIMULATION_ENABLED) yield* simSleep('pull', '4_before_leader_push_queue_offer')
276
+
257
277
  yield* BucketQueue.offerAll(leaderPushQueue, mergeResult.newSyncState.pending)
278
+
279
+ if (SIMULATION_ENABLED) yield* simSleep('pull', '5_before_leader_push_fiber_run')
280
+
281
+ yield* FiberHandle.run(leaderPushingFiberHandle, backgroundLeaderPushing)
258
282
  } else {
259
283
  span.addEvent('merge:pull:advance', {
260
284
  payloadTag: payload._tag,
@@ -353,3 +377,17 @@ export interface ClientSessionSyncProcessor {
353
377
  }
354
378
  }
355
379
  }
380
+
381
+ // TODO turn this into a build-time "macro" so all simulation snippets are removed for production builds
382
+ const SIMULATION_ENABLED = true
383
+
384
+ export const ClientSessionSyncProcessorSimulationParams = Schema.Struct({
385
+ pull: Schema.Struct({
386
+ '1_before_leader_push_fiber_interrupt': Schema.Int.pipe(Schema.between(0, 1000)),
387
+ '2_before_leader_push_queue_clear': Schema.Int.pipe(Schema.between(0, 1000)),
388
+ '3_before_rebase_rollback': Schema.Int.pipe(Schema.between(0, 1000)),
389
+ '4_before_leader_push_queue_offer': Schema.Int.pipe(Schema.between(0, 1000)),
390
+ '5_before_leader_push_fiber_run': Schema.Int.pipe(Schema.between(0, 1000)),
391
+ }),
392
+ })
393
+ type ClientSessionSyncProcessorSimulationParams = typeof ClientSessionSyncProcessorSimulationParams.Type
package/src/sync/index.ts CHANGED
@@ -1,3 +1,3 @@
1
- export * from './sync.js'
2
- export * from './validate-push-payload.js'
3
- export * from './ClientSessionSyncProcessor.js'
1
+ export * from './ClientSessionSyncProcessor.ts'
2
+ export * from './sync.ts'
3
+ export * from './validate-push-payload.ts'
@@ -1,8 +1,8 @@
1
- import { EventSequenceNumber } from '../../schema/mod.js'
2
- import { replacesFacts } from './facts.js'
3
- import { graphologyDag } from './graphology_.js'
4
- import type { HistoryDag } from './history-dag-common.js'
5
- import { emptyHistoryDag } from './history-dag-common.js'
1
+ import { EventSequenceNumber } from '../../schema/mod.ts'
2
+ import { replacesFacts } from './facts.ts'
3
+ import { graphologyDag } from './graphology_.ts'
4
+ import type { HistoryDag } from './history-dag-common.ts'
5
+ import { emptyHistoryDag } from './history-dag-common.ts'
6
6
 
7
7
  /**
8
8
  * Idea:
@@ -6,10 +6,10 @@ import type {
6
6
  EventDefFactsGroup,
7
7
  EventDefFactsSnapshot,
8
8
  FactsCallback,
9
- } from '../../schema/EventDef.js'
10
- import type * as EventSequenceNumber from '../../schema/EventSequenceNumber.js'
11
- import { graphologyDag } from './graphology_.js'
12
- import { EMPTY_FACT_VALUE, type HistoryDag, type HistoryDagNode } from './history-dag-common.js'
9
+ } from '../../schema/EventDef.ts'
10
+ import type * as EventSequenceNumber from '../../schema/EventSequenceNumber.ts'
11
+ import { graphologyDag } from './graphology_.ts'
12
+ import { EMPTY_FACT_VALUE, type HistoryDag, type HistoryDagNode } from './history-dag-common.ts'
13
13
 
14
14
  export const factsSnapshotForEvents = (
15
15
  events: HistoryDagNode[],
@@ -13,11 +13,9 @@ export declare class IGraph<
13
13
  constructor(options?: graphologyTypes.GraphOptions)
14
14
  }
15
15
 
16
- export const DirectedGraph = class DirectedGraph extends graphology.DirectedGraph {
17
- } as typeof IGraph
16
+ export const DirectedGraph = class DirectedGraph extends graphology.DirectedGraph {} as typeof IGraph
18
17
 
19
- export const Graph = class Graph extends graphology.Graph {
20
- } as typeof IGraph
18
+ export const Graph = class Graph extends graphology.Graph {} as typeof IGraph
21
19
 
22
20
  // export const graphology = graphology_ as graphologyTypes
23
21
 
@@ -1,2 +1,2 @@
1
- export * as graphology from './graphology.js'
2
1
  export { default as graphologyDag } from 'graphology-dag'
2
+ export * as graphology from './graphology.ts'
@@ -1,6 +1,6 @@
1
- import type { EventDefFactsGroup } from '../../schema/EventDef.js'
2
- import * as EventSequenceNumber from '../../schema/EventSequenceNumber.js'
3
- import { graphology } from './graphology_.js'
1
+ import type { EventDefFactsGroup } from '../../schema/EventDef.ts'
2
+ import * as EventSequenceNumber from '../../schema/EventSequenceNumber.ts'
3
+ import { graphology } from './graphology_.ts'
4
4
 
5
5
  export const connectionTypeOptions = ['parent', 'facts'] as const
6
6
  export type ConnectionType = (typeof connectionTypeOptions)[number]
@@ -1,6 +1,6 @@
1
- import * as EventSequenceNumber from '../../schema/EventSequenceNumber.js'
2
- import { factsToString, validateFacts } from './facts.js'
3
- import { emptyHistoryDag, type HistoryDagNode, rootParentNum } from './history-dag-common.js'
1
+ import * as EventSequenceNumber from '../../schema/EventSequenceNumber.ts'
2
+ import { factsToString, validateFacts } from './facts.ts'
3
+ import { emptyHistoryDag, type HistoryDagNode, rootParentNum } from './history-dag-common.ts'
4
4
 
5
5
  export const historyDagFromNodes = (dagNodes: HistoryDagNode[], options?: { skipFactsCheck: boolean }) => {
6
6
  if (options?.skipFactsCheck !== true) {
@@ -1,5 +1,5 @@
1
- export * from './history-dag-common.js'
2
- export * from './history-dag.js'
3
- export * from './facts.js'
4
- export * from './compact-events.js'
5
- export * from './rebase-events.js'
1
+ export * from './compact-events.ts'
2
+ export * from './facts.ts'
3
+ export * from './history-dag.ts'
4
+ export * from './history-dag-common.ts'
5
+ export * from './rebase-events.ts'
@@ -1,14 +1,14 @@
1
- import type { EventDef, EventDefFactsSnapshot } from '../../schema/EventDef.js'
2
- import * as EventSequenceNumber from '../../schema/EventSequenceNumber.js'
3
- import type * as LiveStoreEvent from '../../schema/LiveStoreEvent.js'
1
+ import type { EventDef, EventDefFactsSnapshot } from '../../schema/EventDef.ts'
2
+ import * as EventSequenceNumber from '../../schema/EventSequenceNumber.ts'
3
+ import type * as LiveStoreEvent from '../../schema/LiveStoreEvent.ts'
4
4
  import {
5
5
  applyFactGroups,
6
- factsIntersect,
7
6
  type FactValidationResult,
7
+ factsIntersect,
8
8
  getFactsGroupForEventArgs,
9
9
  validateFacts,
10
- } from './facts.js'
11
- import type { HistoryDagNode } from './history-dag-common.js'
10
+ } from './facts.ts'
11
+ import type { HistoryDagNode } from './history-dag-common.ts'
12
12
 
13
13
  export type RebaseEventWithConflict = HistoryDagNode & {
14
14
  conflictType: 'overlap' | 'missing-requirement'
@@ -2,10 +2,10 @@ import { defineEvent } from '@livestore/common/schema'
2
2
  import { Schema } from '@livestore/utils/effect'
3
3
  import { describe, expect, it } from 'vitest'
4
4
 
5
- import { compactEvents } from '../compact-events.js'
6
- import { historyDagFromNodes } from '../history-dag.js'
7
- import { customSerializer } from './compact-events.test.js'
8
- import { printEvent, toEventNodes } from './event-fixtures.js'
5
+ import { compactEvents } from '../compact-events.ts'
6
+ import { historyDagFromNodes } from '../history-dag.ts'
7
+ import { customSerializer } from './compact-events.test.ts'
8
+ import { printEvent, toEventNodes } from './event-fixtures.ts'
9
9
 
10
10
  expect.addSnapshotSerializer(customSerializer)
11
11
 
@@ -1,11 +1,11 @@
1
1
  import type { EventDefFacts } from '@livestore/common/schema'
2
2
  import { describe, expect, it } from 'vitest'
3
3
 
4
- import { compactEvents } from '../compact-events.js'
5
- import { historyDagFromNodes } from '../history-dag.js'
6
- import type { HistoryDagNode } from '../history-dag-common.js'
7
- import { EMPTY_FACT_VALUE } from '../history-dag-common.js'
8
- import { events as eventDefs, printEvent, toEventNodes } from './event-fixtures.js'
4
+ import { compactEvents } from '../compact-events.ts'
5
+ import { historyDagFromNodes } from '../history-dag.ts'
6
+ import type { HistoryDagNode } from '../history-dag-common.ts'
7
+ import { EMPTY_FACT_VALUE } from '../history-dag-common.ts'
8
+ import { events as eventDefs, printEvent, toEventNodes } from './event-fixtures.ts'
9
9
 
10
10
  const customStringify = (value: any): string => {
11
11
  if (value === null) {
@@ -1,12 +1,12 @@
1
1
  import { Schema } from '@livestore/utils/effect'
2
2
 
3
- import type { EventDef } from '../../../schema/EventDef.js'
4
- import { defineEvent, defineFacts } from '../../../schema/EventDef.js'
5
- import * as EventSequenceNumber from '../../../schema/EventSequenceNumber.js'
6
- import { factsSnapshotForDag, getFactsGroupForEventArgs } from '../facts.js'
7
- import { historyDagFromNodes } from '../history-dag.js'
8
- import type { HistoryDagNode } from '../history-dag-common.js'
9
- import { rootEventNode } from '../history-dag-common.js'
3
+ import type { EventDef } from '../../../schema/EventDef.ts'
4
+ import { defineEvent, defineFacts } from '../../../schema/EventDef.ts'
5
+ import * as EventSequenceNumber from '../../../schema/EventSequenceNumber.ts'
6
+ import { factsSnapshotForDag, getFactsGroupForEventArgs } from '../facts.ts'
7
+ import { historyDagFromNodes } from '../history-dag.ts'
8
+ import type { HistoryDagNode } from '../history-dag-common.ts'
9
+ import { rootEventNode } from '../history-dag-common.ts'
10
10
 
11
11
  export const printEvent = ({ seqNum, parentSeqNum, factsGroup, ...rest }: HistoryDagNode) => ({
12
12
  seqNum: EventSequenceNumber.toString(seqNum),
@@ -1 +1 @@
1
- export * from './event-fixtures.js'
1
+ export * from './event-fixtures.ts'
package/src/sync/sync.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import type { Effect, HttpClient, Option, Scope, Stream, SubscriptionRef } from '@livestore/utils/effect'
2
2
  import { Schema } from '@livestore/utils/effect'
3
3
 
4
- import type { UnexpectedError } from '../adapter-types.js'
5
- import type { InitialSyncOptions } from '../leader-thread/types.js'
6
- import * as EventSequenceNumber from '../schema/EventSequenceNumber.js'
7
- import type * as LiveStoreEvent from '../schema/LiveStoreEvent.js'
4
+ import type { UnexpectedError } from '../adapter-types.ts'
5
+ import type { InitialSyncOptions } from '../leader-thread/types.ts'
6
+ import * as EventSequenceNumber from '../schema/EventSequenceNumber.ts'
7
+ import type * as LiveStoreEvent from '../schema/LiveStoreEvent.ts'
8
8
 
9
9
  /**
10
10
  * Those arguments can be used to implement multi-tenancy etc and are passed in from the store.
@@ -1,16 +1,17 @@
1
- /* eslint-disable prefer-arrow/prefer-arrow-functions */
2
1
  import { describe, expect, it } from 'vitest'
3
2
 
4
- import * as EventSequenceNumber from '../schema/EventSequenceNumber.js'
5
- import * as LiveStoreEvent from '../schema/LiveStoreEvent.js'
6
- import * as SyncState from './syncstate.js'
3
+ import * as EventSequenceNumber from '../schema/EventSequenceNumber.ts'
4
+ import * as LiveStoreEvent from '../schema/LiveStoreEvent.ts'
5
+ import * as SyncState from './syncstate.ts'
7
6
 
8
7
  class TestEvent extends LiveStoreEvent.EncodedWithMeta {
8
+ public readonly payload: string
9
+ public readonly isClient: boolean
9
10
  constructor(
10
11
  seqNum: EventSequenceNumber.EventSequenceNumberInput,
11
12
  parentSeqNum: EventSequenceNumber.EventSequenceNumberInput,
12
- public readonly payload: string,
13
- public readonly isClient: boolean,
13
+ payload: string,
14
+ isClient: boolean,
14
15
  ) {
15
16
  super({
16
17
  seqNum: EventSequenceNumber.make(seqNum),
@@ -20,6 +21,8 @@ class TestEvent extends LiveStoreEvent.EncodedWithMeta {
20
21
  clientId: 'static-local-id',
21
22
  sessionId: 'static-session-id',
22
23
  })
24
+ this.payload = payload
25
+ this.isClient = isClient
23
26
  }
24
27
 
25
28
  rebase_ = (parentSeqNum: EventSequenceNumber.EventSequenceNumber, rebaseGeneration: number) => {
@@ -1,8 +1,8 @@
1
1
  import { casesHandled, LS_DEV, shouldNeverHappen } from '@livestore/utils'
2
2
  import { Match, ReadonlyArray, Schema } from '@livestore/utils/effect'
3
3
 
4
- import * as EventSequenceNumber from '../schema/EventSequenceNumber.js'
5
- import * as LiveStoreEvent from '../schema/LiveStoreEvent.js'
4
+ import * as EventSequenceNumber from '../schema/EventSequenceNumber.ts'
5
+ import * as LiveStoreEvent from '../schema/LiveStoreEvent.ts'
6
6
 
7
7
  /**
8
8
  * SyncState represents the current sync state of a sync node relative to an upstream node.
@@ -1,7 +1,7 @@
1
1
  import { Effect } from '@livestore/utils/effect'
2
2
 
3
- import type { EventSequenceNumber, LiveStoreEvent } from '../schema/mod.js'
4
- import { InvalidPushError } from './sync.js'
3
+ import type { EventSequenceNumber, LiveStoreEvent } from '../schema/mod.ts'
4
+ import { InvalidPushError } from './sync.ts'
5
5
 
6
6
  // TODO proper batch validation
7
7
  export const validatePushPayload = (
package/src/util.ts CHANGED
@@ -30,7 +30,6 @@ export const sql = (template: TemplateStringsArray, ...args: unknown[]): string
30
30
  str += template[i] + String(arg)
31
31
  }
32
32
 
33
- // eslint-disable-next-line unicorn/prefer-at
34
33
  return str + template[template.length - 1]
35
34
  }
36
35
 
package/src/version.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  // import packageJson from '../package.json' with { type: 'json' }
3
3
  // export const liveStoreVersion = packageJson.version
4
4
 
5
- export const liveStoreVersion = '0.3.2-dev.0' as const
5
+ export const liveStoreVersion = '0.3.2-dev.1' as const
6
6
 
7
7
  /**
8
8
  * This version number is incremented whenever the internal storage format changes in a breaking way.