@livestore/adapter-web 0.0.0-snapshot-057a9e3a18ca69a310d4eb8cf35a34e94fa1841e → 0.0.0-snapshot-8fd59846e2580d37bdd37ae607e9db2a458a8b63

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 (34) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/in-memory/in-memory-adapter.d.ts +2 -1
  3. package/dist/in-memory/in-memory-adapter.d.ts.map +1 -1
  4. package/dist/in-memory/in-memory-adapter.js +3 -4
  5. package/dist/in-memory/in-memory-adapter.js.map +1 -1
  6. package/dist/index.d.ts +1 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/opfs-utils.d.ts.map +1 -1
  11. package/dist/opfs-utils.js.map +1 -1
  12. package/dist/web-worker/client-session/client-session-devtools.d.ts +1 -1
  13. package/dist/web-worker/client-session/persisted-adapter.d.ts.map +1 -1
  14. package/dist/web-worker/client-session/persisted-adapter.js +6 -7
  15. package/dist/web-worker/client-session/persisted-adapter.js.map +1 -1
  16. package/dist/web-worker/common/persisted-sqlite.js +1 -1
  17. package/dist/web-worker/common/persisted-sqlite.js.map +1 -1
  18. package/dist/web-worker/common/shutdown-channel.d.ts +1 -1
  19. package/dist/web-worker/common/shutdown-channel.d.ts.map +1 -1
  20. package/dist/web-worker/common/worker-schema.d.ts +7 -7
  21. package/dist/web-worker/common/worker-schema.d.ts.map +1 -1
  22. package/dist/web-worker/common/worker-schema.js +3 -2
  23. package/dist/web-worker/common/worker-schema.js.map +1 -1
  24. package/dist/web-worker/vite-dev-polyfill.js +1 -2
  25. package/dist/web-worker/vite-dev-polyfill.js.map +1 -1
  26. package/package.json +7 -7
  27. package/src/in-memory/in-memory-adapter.ts +5 -17
  28. package/src/index.ts +1 -1
  29. package/src/opfs-utils.ts +1 -1
  30. package/src/web-worker/ambient.d.ts +2 -0
  31. package/src/web-worker/client-session/persisted-adapter.ts +11 -12
  32. package/src/web-worker/common/persisted-sqlite.ts +1 -1
  33. package/src/web-worker/common/worker-schema.ts +3 -1
  34. package/src/web-worker/vite-dev-polyfill.ts +1 -3
@@ -4,13 +4,12 @@ import {
4
4
  liveStoreVersion,
5
5
  makeClientSession,
6
6
  StoreInterrupted,
7
- sessionChangesetMetaTable,
8
7
  UnexpectedError,
9
8
  } from '@livestore/common'
10
9
  // TODO bring back - this currently doesn't work due to https://github.com/vitejs/vite/issues/8427
11
10
  // NOTE We're using a non-relative import here for Vite to properly resolve the import during app builds
12
11
  // import LiveStoreSharedWorker from '@livestore/adapter-web/internal-shared-worker?sharedworker'
13
- import { EventSequenceNumber } from '@livestore/common/schema'
12
+ import { EventSequenceNumber, SystemTables } from '@livestore/common/schema'
14
13
  import { sqliteDbFactory } from '@livestore/sqlite-wasm/browser'
15
14
  import { loadSqlite3Wasm } from '@livestore/sqlite-wasm/load-wasm'
16
15
  import { isDevEnv, shouldNeverHappen, tryAsFunctionAndNew } from '@livestore/utils'
@@ -68,9 +67,7 @@ export type WebAdapterOptions = {
68
67
  */
69
68
  sharedWorker:
70
69
  | ((options: { name: string }) => globalThis.SharedWorker)
71
- | (new (options: {
72
- name: string
73
- }) => globalThis.SharedWorker)
70
+ | (new (options: { name: string }) => globalThis.SharedWorker)
74
71
  /**
75
72
  * Specifies where to persist data for this adapter
76
73
  */
@@ -253,7 +250,7 @@ export const makePersistedAdapter =
253
250
 
254
251
  yield* Deferred.succeed(waitForSharedWorkerInitialized, undefined)
255
252
 
256
- return yield* Effect.never
253
+ yield* Effect.never
257
254
  }).pipe(Effect.withSpan('@livestore/adapter-web:client-session:lock'))
258
255
 
259
256
  // TODO take/give up lock when tab becomes active/passive
@@ -361,7 +358,7 @@ export const makePersistedAdapter =
361
358
  const numberOfTables =
362
359
  sqliteDb.select<{ count: number }>(`select count(*) as count from sqlite_master`)[0]?.count ?? 0
363
360
  if (numberOfTables === 0) {
364
- return yield* UnexpectedError.make({
361
+ yield* UnexpectedError.make({
365
362
  cause: `Encountered empty or corrupted database`,
366
363
  payload: { snapshotByteLength: initialResult.snapshot.byteLength, storageOptions: options.storage },
367
364
  })
@@ -369,15 +366,17 @@ export const makePersistedAdapter =
369
366
 
370
367
  // We're restoring the leader head from the SESSION_CHANGESET_META_TABLE, not from the eventlog db/table
371
368
  // in order to avoid exporting/transferring the eventlog db/table, which is important to speed up the fast path.
372
- const initialLeaderHeadRes = sqliteDb.select(
373
- sessionChangesetMetaTable.select('seqNumClient', 'seqNumGlobal', 'seqNumRebaseGeneration').first(),
374
- )
369
+ const initialLeaderHeadRes = sqliteDb.select<{
370
+ seqNumGlobal: EventSequenceNumber.GlobalEventSequenceNumber
371
+ seqNumClient: EventSequenceNumber.ClientEventSequenceNumber
372
+ }>(
373
+ `select seqNumGlobal, seqNumClient from ${SystemTables.SESSION_CHANGESET_META_TABLE} order by seqNumGlobal desc, seqNumClient desc limit 1`,
374
+ )[0]
375
375
 
376
376
  const initialLeaderHead = initialLeaderHeadRes
377
377
  ? EventSequenceNumber.make({
378
378
  global: initialLeaderHeadRes.seqNumGlobal,
379
379
  client: initialLeaderHeadRes.seqNumClient,
380
- rebaseGeneration: initialLeaderHeadRes.seqNumRebaseGeneration,
381
380
  })
382
381
  : EventSequenceNumber.ROOT
383
382
 
@@ -501,7 +500,7 @@ const ensureBrowserRequirements = Effect.gen(function* () {
501
500
  const validate = (condition: boolean, label: string) =>
502
501
  Effect.gen(function* () {
503
502
  if (condition) {
504
- return yield* UnexpectedError.make({
503
+ yield* UnexpectedError.make({
505
504
  cause: `[@livestore/adapter-web] Browser not supported. The LiveStore web adapter needs '${label}' to work properly`,
506
505
  })
507
506
  }
@@ -47,7 +47,7 @@ export const readPersistedAppDbFromClientSession = ({
47
47
 
48
48
  const fileResults = await Promise.all(files.map(tryGetDbFile))
49
49
 
50
- const appDbFileName = `/${getStateDbFileName(schema)}`
50
+ const appDbFileName = '/' + getStateDbFileName(schema)
51
51
 
52
52
  const dbFileRes = fileResults.find((_) => _?.fileName === appDbFileName)
53
53
  // console.debug('fileResults', fileResults, 'dbFileRes', dbFileRes)
@@ -2,6 +2,7 @@ import {
2
2
  BootStatus,
3
3
  Devtools,
4
4
  LeaderAheadError,
5
+ LeaderPullCursor,
5
6
  liveStoreVersion,
6
7
  MigrationsReport,
7
8
  SyncState,
@@ -84,10 +85,11 @@ export namespace LeaderWorkerInner {
84
85
 
85
86
  export class PullStream extends Schema.TaggedRequest<PullStream>()('PullStream', {
86
87
  payload: {
87
- cursor: EventSequenceNumber.EventSequenceNumber,
88
+ cursor: LeaderPullCursor,
88
89
  },
89
90
  success: Schema.Struct({
90
91
  payload: SyncState.PayloadUpstream,
92
+ mergeCounter: Schema.Number,
91
93
  }),
92
94
  failure: UnexpectedError,
93
95
  }) {}
@@ -1,11 +1,9 @@
1
- /// <reference lib="dom" />
2
-
3
1
  // @ts-expect-error TODO remove when Vite does proper treeshaking during dev
4
2
  globalThis.$RefreshReg$ = () => {}
5
3
  // @ts-expect-error TODO remove when Vite does proper treeshaking during dev
6
4
  globalThis.$RefreshSig$ = () => (type: any) => type
7
5
 
8
- // @ts-ignore
6
+ // @ts-expect-error Needed for React
9
7
  globalThis.process = globalThis.process ?? { env: {} }
10
8
 
11
9
  globalThis.document = (globalThis as any)?.document ?? {