@livestore/adapter-web 0.4.0-dev.18 → 0.4.0-dev.19
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/in-memory/in-memory-adapter.d.ts +2 -2
- package/dist/in-memory/in-memory-adapter.d.ts.map +1 -1
- package/dist/in-memory/in-memory-adapter.js +6 -5
- package/dist/in-memory/in-memory-adapter.js.map +1 -1
- package/dist/web-worker/client-session/client-session-devtools.d.ts +1 -1
- package/dist/web-worker/client-session/client-session-devtools.d.ts.map +1 -1
- package/dist/web-worker/client-session/client-session-devtools.js +3 -2
- package/dist/web-worker/client-session/client-session-devtools.js.map +1 -1
- package/dist/web-worker/client-session/persisted-adapter.d.ts.map +1 -1
- package/dist/web-worker/client-session/persisted-adapter.js +27 -23
- package/dist/web-worker/client-session/persisted-adapter.js.map +1 -1
- package/dist/web-worker/common/persisted-sqlite.d.ts +11 -29
- package/dist/web-worker/common/persisted-sqlite.d.ts.map +1 -1
- package/dist/web-worker/common/persisted-sqlite.js +70 -184
- package/dist/web-worker/common/persisted-sqlite.js.map +1 -1
- package/dist/web-worker/common/shutdown-channel.d.ts +3 -2
- package/dist/web-worker/common/shutdown-channel.d.ts.map +1 -1
- package/dist/web-worker/common/shutdown-channel.js +2 -2
- package/dist/web-worker/common/shutdown-channel.js.map +1 -1
- package/dist/web-worker/common/worker-disconnect-channel.d.ts +2 -6
- package/dist/web-worker/common/worker-disconnect-channel.d.ts.map +1 -1
- package/dist/web-worker/common/worker-disconnect-channel.js +3 -2
- package/dist/web-worker/common/worker-disconnect-channel.js.map +1 -1
- package/dist/web-worker/common/worker-schema.d.ts +69 -46
- package/dist/web-worker/common/worker-schema.d.ts.map +1 -1
- package/dist/web-worker/common/worker-schema.js +20 -20
- package/dist/web-worker/common/worker-schema.js.map +1 -1
- package/dist/web-worker/leader-worker/make-leader-worker.d.ts.map +1 -1
- package/dist/web-worker/leader-worker/make-leader-worker.js +19 -16
- package/dist/web-worker/leader-worker/make-leader-worker.js.map +1 -1
- package/dist/web-worker/shared-worker/make-shared-worker.d.ts.map +1 -1
- package/dist/web-worker/shared-worker/make-shared-worker.js +10 -9
- package/dist/web-worker/shared-worker/make-shared-worker.js.map +1 -1
- package/package.json +7 -8
- package/src/in-memory/in-memory-adapter.ts +8 -16
- package/src/web-worker/ambient.d.ts +0 -20
- package/src/web-worker/client-session/client-session-devtools.ts +3 -2
- package/src/web-worker/client-session/persisted-adapter.ts +35 -27
- package/src/web-worker/common/persisted-sqlite.ts +186 -299
- package/src/web-worker/common/shutdown-channel.ts +10 -3
- package/src/web-worker/common/worker-disconnect-channel.ts +10 -3
- package/src/web-worker/common/worker-schema.ts +21 -21
- package/src/web-worker/leader-worker/make-leader-worker.ts +22 -23
- package/src/web-worker/shared-worker/make-shared-worker.ts +14 -15
- package/dist/opfs-utils.d.ts +0 -7
- package/dist/opfs-utils.d.ts.map +0 -1
- package/dist/opfs-utils.js +0 -43
- package/dist/opfs-utils.js.map +0 -1
- package/src/opfs-utils.ts +0 -61
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { Devtools, LogConfig, liveStoreVersion,
|
|
1
|
+
import { Devtools, LogConfig, liveStoreVersion, UnknownError } from '@livestore/common';
|
|
2
2
|
import * as DevtoolsWeb from '@livestore/devtools-web-common/web-channel';
|
|
3
3
|
import * as WebmeshWorker from '@livestore/devtools-web-common/worker';
|
|
4
4
|
import { isDevEnv, isNotUndefined, LS_DEV } from '@livestore/utils';
|
|
5
|
-
import {
|
|
5
|
+
import { Deferred, Effect, Exit, FetchHttpClient, identity, Layer, ParseResult, Ref, Schema, Scope, Stream, SubscriptionRef, TaskTracing, Worker, WorkerError, WorkerRunner, } from '@livestore/utils/effect';
|
|
6
|
+
import { BrowserWorker, BrowserWorkerRunner } from '@livestore/utils/effect/browser';
|
|
6
7
|
import { makeShutdownChannel } from "../common/shutdown-channel.js";
|
|
7
8
|
import * as WorkerSchema from "../common/worker-schema.js";
|
|
8
9
|
// Extract from `livestore-shared-worker-${storeId}`
|
|
@@ -25,7 +26,7 @@ const makeWorkerRunner = Effect.gen(function* () {
|
|
|
25
26
|
const leaderWorkerContextSubRef = yield* SubscriptionRef.make(undefined);
|
|
26
27
|
const waitForWorker = SubscriptionRef.waitUntil(leaderWorkerContextSubRef, isNotUndefined).pipe(Effect.map((_) => _.worker));
|
|
27
28
|
const forwardRequest = (req) =>
|
|
28
|
-
// Forward the request to the active worker and normalize platform errors into
|
|
29
|
+
// Forward the request to the active worker and normalize platform errors into UnknownError.
|
|
29
30
|
waitForWorker.pipe(
|
|
30
31
|
// Effect.logBefore(`forwardRequest: ${req._tag}`),
|
|
31
32
|
Effect.andThen((worker) => worker.executeEffect(req)),
|
|
@@ -34,11 +35,11 @@ const makeWorkerRunner = Effect.gen(function* () {
|
|
|
34
35
|
Effect.interruptible, Effect.logWarnIfTakesLongerThan({
|
|
35
36
|
label: `@livestore/adapter-web:shared-worker:forwardRequest:${req._tag}`,
|
|
36
37
|
duration: 500,
|
|
37
|
-
}), Effect.mapError((cause) => Schema.is(
|
|
38
|
+
}), Effect.mapError((cause) => Schema.is(UnknownError)(cause)
|
|
38
39
|
? cause
|
|
39
40
|
: ParseResult.isParseError(cause) || Schema.is(WorkerError.WorkerError)(cause)
|
|
40
|
-
? new
|
|
41
|
-
: cause), Effect.catchAllDefect((cause) => new
|
|
41
|
+
? new UnknownError({ cause })
|
|
42
|
+
: cause), Effect.catchAllDefect((cause) => new UnknownError({ cause })), Effect.tapCauseLogPretty);
|
|
42
43
|
const forwardRequestStream = (req) => Effect.gen(function* () {
|
|
43
44
|
yield* Effect.logDebug(`forwardRequestStream: ${req._tag}`);
|
|
44
45
|
const { worker, scope } = yield* SubscriptionRef.waitUntil(leaderWorkerContextSubRef, isNotUndefined);
|
|
@@ -53,7 +54,7 @@ const makeWorkerRunner = Effect.gen(function* () {
|
|
|
53
54
|
return Stream.empty;
|
|
54
55
|
}).pipe(Stream.unwrap);
|
|
55
56
|
return Stream.merge(stream, scopeShutdownStream, { haltStrategy: 'either' });
|
|
56
|
-
}).pipe(Effect.interruptible,
|
|
57
|
+
}).pipe(Effect.interruptible, UnknownError.mapToUnknownError, Effect.tapCauseLogPretty, Stream.unwrap, Stream.ensuring(Effect.logDebug(`shutting down stream for ${req._tag}`)), UnknownError.mapToUnknownErrorStream);
|
|
57
58
|
const resetCurrentWorkerCtx = Effect.gen(function* () {
|
|
58
59
|
const prevWorker = yield* SubscriptionRef.get(leaderWorkerContextSubRef);
|
|
59
60
|
if (prevWorker !== undefined) {
|
|
@@ -99,7 +100,7 @@ const makeWorkerRunner = Effect.gen(function* () {
|
|
|
99
100
|
// Early return on mismatch to keep happy path linear
|
|
100
101
|
if (prev !== undefined && !sameInvariants(prev, invariants)) {
|
|
101
102
|
const diff = Schema.debugDiff(InvariantsSchema)(prev, invariants);
|
|
102
|
-
return yield* new
|
|
103
|
+
return yield* new UnknownError({
|
|
103
104
|
cause: 'Store invariants changed across leader transitions',
|
|
104
105
|
payload: { diff, previous: prev, next: invariants },
|
|
105
106
|
});
|
|
@@ -129,7 +130,7 @@ const makeWorkerRunner = Effect.gen(function* () {
|
|
|
129
130
|
}).pipe(Effect.tapCauseLogPretty, Effect.forkScoped);
|
|
130
131
|
yield* SubscriptionRef.set(leaderWorkerContextSubRef, { worker, scope });
|
|
131
132
|
}).pipe(Effect.tapCauseLogPretty, Scope.extend(scope), Effect.forkIn(scope));
|
|
132
|
-
}).pipe(Effect.withSpan('@livestore/adapter-web:shared-worker:updateMessagePort'),
|
|
133
|
+
}).pipe(Effect.withSpan('@livestore/adapter-web:shared-worker:updateMessagePort'), UnknownError.mapToUnknownError, Effect.tapCauseLogPretty),
|
|
133
134
|
// Proxied requests
|
|
134
135
|
BootStatusStream: forwardRequestStream,
|
|
135
136
|
PushToLeader: forwardRequest,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-shared-worker.js","sourceRoot":"","sources":["../../../src/web-worker/shared-worker/make-shared-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"make-shared-worker.js","sourceRoot":"","sources":["../../../src/web-worker/shared-worker/make-shared-worker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@livestore/adapter-web",
|
|
3
|
-
"version": "0.4.0-dev.
|
|
3
|
+
"version": "0.4.0-dev.19",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"exports": {
|
|
@@ -8,16 +8,15 @@
|
|
|
8
8
|
"./worker": "./dist/web-worker/leader-worker/make-leader-worker.js",
|
|
9
9
|
"./worker-vite-dev-polyfill": "./dist/web-worker/vite-dev-polyfill.js",
|
|
10
10
|
"./shared-worker": "./dist/web-worker/shared-worker/make-shared-worker.js",
|
|
11
|
-
"./sqlite": "./dist/sqlite/index.js"
|
|
12
|
-
"./opfs-utils": "./dist/opfs-utils.js"
|
|
11
|
+
"./sqlite": "./dist/sqlite/index.js"
|
|
13
12
|
},
|
|
14
13
|
"dependencies": {
|
|
15
14
|
"@opentelemetry/api": "1.9.0",
|
|
16
|
-
"@livestore/
|
|
17
|
-
"@livestore/devtools-web-common": "0.4.0-dev.
|
|
18
|
-
"@livestore/
|
|
19
|
-
"@livestore/utils": "0.4.0-dev.
|
|
20
|
-
"@livestore/
|
|
15
|
+
"@livestore/sqlite-wasm": "0.4.0-dev.19",
|
|
16
|
+
"@livestore/devtools-web-common": "0.4.0-dev.19",
|
|
17
|
+
"@livestore/webmesh": "0.4.0-dev.19",
|
|
18
|
+
"@livestore/utils": "0.4.0-dev.19",
|
|
19
|
+
"@livestore/common": "0.4.0-dev.19"
|
|
21
20
|
},
|
|
22
21
|
"devDependencies": {
|
|
23
22
|
"@types/chrome": "0.1.4",
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
makeClientSession,
|
|
7
7
|
migrateDb,
|
|
8
8
|
type SyncOptions,
|
|
9
|
-
|
|
9
|
+
UnknownError,
|
|
10
10
|
} from '@livestore/common'
|
|
11
11
|
import type { DevtoolsOptions, LeaderSqliteDb } from '@livestore/common/leader-thread'
|
|
12
12
|
import { configureConnection, Eventlog, LeaderThreadCtx, makeLeaderThreadLayer } from '@livestore/common/leader-thread'
|
|
@@ -18,16 +18,8 @@ import type { MakeWebSqliteDb } from '@livestore/sqlite-wasm/browser'
|
|
|
18
18
|
import { sqliteDbFactory } from '@livestore/sqlite-wasm/browser'
|
|
19
19
|
import { tryAsFunctionAndNew } from '@livestore/utils'
|
|
20
20
|
import type { Scope } from '@livestore/utils/effect'
|
|
21
|
-
import {
|
|
22
|
-
|
|
23
|
-
Effect,
|
|
24
|
-
FetchHttpClient,
|
|
25
|
-
Fiber,
|
|
26
|
-
Layer,
|
|
27
|
-
type Schema,
|
|
28
|
-
SubscriptionRef,
|
|
29
|
-
Worker,
|
|
30
|
-
} from '@livestore/utils/effect'
|
|
21
|
+
import { Effect, FetchHttpClient, Fiber, Layer, type Schema, SubscriptionRef, Worker } from '@livestore/utils/effect'
|
|
22
|
+
import { BrowserWorker } from '@livestore/utils/effect/browser'
|
|
31
23
|
import { nanoid } from '@livestore/utils/nanoid'
|
|
32
24
|
import * as Webmesh from '@livestore/webmesh'
|
|
33
25
|
|
|
@@ -96,7 +88,7 @@ export const makeInMemoryAdapter =
|
|
|
96
88
|
}).pipe(
|
|
97
89
|
Effect.provide(BrowserWorker.layer(() => sharedWebWorker)),
|
|
98
90
|
Effect.tapCauseLogPretty,
|
|
99
|
-
|
|
91
|
+
UnknownError.mapToUnknownError,
|
|
100
92
|
Effect.forkScoped,
|
|
101
93
|
)
|
|
102
94
|
: undefined
|
|
@@ -151,7 +143,7 @@ export const makeInMemoryAdapter =
|
|
|
151
143
|
})
|
|
152
144
|
|
|
153
145
|
return clientSession
|
|
154
|
-
}).pipe(
|
|
146
|
+
}).pipe(UnknownError.mapToUnknownError, Effect.provide(FetchHttpClient.layer))
|
|
155
147
|
|
|
156
148
|
export interface MakeLeaderThreadArgs {
|
|
157
149
|
schema: LiveStoreSchema
|
|
@@ -236,7 +228,7 @@ const makeLeaderThread = ({
|
|
|
236
228
|
pull: ({ cursor }) => syncProcessor.pull({ cursor }),
|
|
237
229
|
push: (batch) =>
|
|
238
230
|
syncProcessor.push(
|
|
239
|
-
batch.map((item) => new LiveStoreEvent.EncodedWithMeta(item)),
|
|
231
|
+
batch.map((item) => new LiveStoreEvent.Client.EncodedWithMeta(item)),
|
|
240
232
|
{ waitForProcessing: true },
|
|
241
233
|
),
|
|
242
234
|
},
|
|
@@ -256,7 +248,7 @@ const makeLeaderThread = ({
|
|
|
256
248
|
|
|
257
249
|
type SharedWorkerFiber = Fiber.Fiber<
|
|
258
250
|
Worker.SerializedWorkerPool<typeof WebmeshWorker.Schema.Request.Type>,
|
|
259
|
-
|
|
251
|
+
UnknownError
|
|
260
252
|
>
|
|
261
253
|
|
|
262
254
|
const makeDevtoolsOptions = ({
|
|
@@ -273,7 +265,7 @@ const makeDevtoolsOptions = ({
|
|
|
273
265
|
dbEventlog: LeaderSqliteDb
|
|
274
266
|
storeId: string
|
|
275
267
|
clientId: string
|
|
276
|
-
}): Effect.Effect<DevtoolsOptions,
|
|
268
|
+
}): Effect.Effect<DevtoolsOptions, UnknownError, Scope.Scope> =>
|
|
277
269
|
Effect.gen(function* () {
|
|
278
270
|
if (devtoolsEnabled === false || sharedWorkerFiber === undefined) {
|
|
279
271
|
return { enabled: false }
|
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
// TODO remove OPFS stuff
|
|
2
|
-
// https://developer.mozilla.org/en-US/docs/Web/API/FileSystemSyncAccessHandle
|
|
3
|
-
interface FileSystemSyncAccessHandle {
|
|
4
|
-
close: () => void
|
|
5
|
-
flush: () => Promise<void>
|
|
6
|
-
getSize: () => number
|
|
7
|
-
read: (buffer: ArrayBuffer, options?: FileSystemReadWriteOptions) => number
|
|
8
|
-
truncate: (newSize: number) => void
|
|
9
|
-
write: (buffer: ArrayBuffer, options?: FileSystemReadWriteOptions) => number
|
|
10
|
-
seek: (offset: number) => void
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
interface FileSystemReadWriteOptions {
|
|
14
|
-
at?: number
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
interface FileSystemFileHandle {
|
|
18
|
-
createSyncAccessHandle: () => Promise<FileSystemSyncAccessHandle>
|
|
19
|
-
}
|
|
20
|
-
|
|
21
1
|
// TODO bring back when Vite limitation is resolved https://github.com/vitejs/vite/issues/8427
|
|
22
2
|
// declare module '*?sharedworker' {
|
|
23
3
|
// const sharedWorkerConstructor: {
|
|
@@ -3,7 +3,8 @@ import type { LiveStoreSchema } from '@livestore/common/schema'
|
|
|
3
3
|
import * as DevtoolsWeb from '@livestore/devtools-web-common/web-channel'
|
|
4
4
|
import { isDevEnv } from '@livestore/utils'
|
|
5
5
|
import type { Worker } from '@livestore/utils/effect'
|
|
6
|
-
import { Effect, Stream
|
|
6
|
+
import { Effect, Stream } from '@livestore/utils/effect'
|
|
7
|
+
import { WebChannelBrowser } from '@livestore/utils/effect/browser'
|
|
7
8
|
import * as Webmesh from '@livestore/webmesh'
|
|
8
9
|
|
|
9
10
|
export const logDevtoolsUrl = ({
|
|
@@ -83,7 +84,7 @@ export const connectWebmeshNodeClientSession = Effect.fn(function* ({
|
|
|
83
84
|
|
|
84
85
|
const contentscriptMainNodeName = DevtoolsWeb.makeNodeName.browserExtension.contentscriptMain(tabId)
|
|
85
86
|
|
|
86
|
-
const contentscriptMainChannel = yield*
|
|
87
|
+
const contentscriptMainChannel = yield* WebChannelBrowser.windowChannel({
|
|
87
88
|
listenWindow: window,
|
|
88
89
|
sendWindow: window,
|
|
89
90
|
schema: Webmesh.WebmeshSchema.Packet,
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
makeClientSession,
|
|
6
6
|
StoreInterrupted,
|
|
7
7
|
sessionChangesetMetaTable,
|
|
8
|
-
|
|
8
|
+
UnknownError,
|
|
9
9
|
} from '@livestore/common'
|
|
10
10
|
// TODO bring back - this currently doesn't work due to https://github.com/vitejs/vite/issues/8427
|
|
11
11
|
// NOTE We're using a non-relative import here for Vite to properly resolve the import during app builds
|
|
@@ -14,7 +14,6 @@ import { EventSequenceNumber } from '@livestore/common/schema'
|
|
|
14
14
|
import { sqliteDbFactory } from '@livestore/sqlite-wasm/browser'
|
|
15
15
|
import { isDevEnv, shouldNeverHappen, tryAsFunctionAndNew } from '@livestore/utils'
|
|
16
16
|
import {
|
|
17
|
-
BrowserWorker,
|
|
18
17
|
Cause,
|
|
19
18
|
Deferred,
|
|
20
19
|
Effect,
|
|
@@ -27,14 +26,15 @@ import {
|
|
|
27
26
|
Stream,
|
|
28
27
|
Subscribable,
|
|
29
28
|
SubscriptionRef,
|
|
30
|
-
WebLock,
|
|
31
29
|
Worker,
|
|
32
30
|
WorkerError,
|
|
33
31
|
} from '@livestore/utils/effect'
|
|
32
|
+
import { BrowserWorker, Opfs, WebLock } from '@livestore/utils/effect/browser'
|
|
34
33
|
import { nanoid } from '@livestore/utils/nanoid'
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
import {
|
|
35
|
+
readPersistedStateDbFromClientSession,
|
|
36
|
+
resetPersistedDataFromClientSession,
|
|
37
|
+
} from '../common/persisted-sqlite.ts'
|
|
38
38
|
import { makeShutdownChannel } from '../common/shutdown-channel.ts'
|
|
39
39
|
import { DedicatedWorkerDisconnectBroadcast, makeWorkerDisconnectChannel } from '../common/worker-disconnect-channel.ts'
|
|
40
40
|
import * as WorkerSchema from '../common/worker-schema.ts'
|
|
@@ -43,7 +43,7 @@ import { loadSqlite3 } from './sqlite-loader.ts'
|
|
|
43
43
|
|
|
44
44
|
if (isDevEnv()) {
|
|
45
45
|
globalThis.__debugLiveStoreUtils = {
|
|
46
|
-
opfs:
|
|
46
|
+
opfs: Opfs.debugUtils,
|
|
47
47
|
runSync: (effect: Effect.Effect<any, any, never>) => Effect.runSync(effect),
|
|
48
48
|
runFork: (effect: Effect.Effect<any, any, never>) => Effect.runFork(effect),
|
|
49
49
|
}
|
|
@@ -184,7 +184,15 @@ export const makePersistedAdapter =
|
|
|
184
184
|
const dataFromFile =
|
|
185
185
|
options.experimental?.disableFastPath === true
|
|
186
186
|
? undefined
|
|
187
|
-
: yield*
|
|
187
|
+
: yield* readPersistedStateDbFromClientSession({ storageOptions, storeId, schema }).pipe(
|
|
188
|
+
Effect.tapError((error) =>
|
|
189
|
+
Effect.logDebug('[@livestore/adapter-web:client-session] Could not read persisted state db', error, {
|
|
190
|
+
storeId,
|
|
191
|
+
}),
|
|
192
|
+
),
|
|
193
|
+
// If we get any error here, we return `undefined` to fall back to the slow path
|
|
194
|
+
Effect.orElseSucceed(() => undefined),
|
|
195
|
+
)
|
|
188
196
|
|
|
189
197
|
// The same across all client sessions (i.e. tabs, windows)
|
|
190
198
|
const clientId = options.clientId ?? getPersistedId(`clientId:${storeId}`, 'local')
|
|
@@ -219,7 +227,7 @@ export const makePersistedAdapter =
|
|
|
219
227
|
}).pipe(
|
|
220
228
|
Effect.provide(sharedWorkerContext),
|
|
221
229
|
Effect.tapCauseLogPretty,
|
|
222
|
-
|
|
230
|
+
UnknownError.mapToUnknownError,
|
|
223
231
|
Effect.tapErrorCause((cause) => shutdown(Exit.failCause(cause))),
|
|
224
232
|
Effect.withSpan('@livestore/adapter-web:client-session:setupSharedWorker'),
|
|
225
233
|
Effect.forkScoped,
|
|
@@ -261,7 +269,7 @@ export const makePersistedAdapter =
|
|
|
261
269
|
initialMessage: () => new WorkerSchema.LeaderWorkerOuterInitialMessage({ port: mc.port1, storeId, clientId }),
|
|
262
270
|
}).pipe(
|
|
263
271
|
Effect.provide(BrowserWorker.layer(() => worker)),
|
|
264
|
-
|
|
272
|
+
UnknownError.mapToUnknownError,
|
|
265
273
|
Effect.tapErrorCause((cause) => shutdown(Exit.failCause(cause))),
|
|
266
274
|
Effect.withSpan('@livestore/adapter-web:client-session:setupDedicatedWorker'),
|
|
267
275
|
Effect.tapCauseLogPretty,
|
|
@@ -287,7 +295,7 @@ export const makePersistedAdapter =
|
|
|
287
295
|
}),
|
|
288
296
|
)
|
|
289
297
|
.pipe(
|
|
290
|
-
|
|
298
|
+
UnknownError.mapToUnknownError,
|
|
291
299
|
Effect.tapErrorCause((cause) => shutdown(Exit.failCause(cause))),
|
|
292
300
|
)
|
|
293
301
|
|
|
@@ -319,7 +327,7 @@ export const makePersistedAdapter =
|
|
|
319
327
|
const runInWorker = <TReq extends typeof WorkerSchema.SharedWorkerRequest.Type>(
|
|
320
328
|
req: TReq,
|
|
321
329
|
): TReq extends Schema.WithResult<infer A, infer _I, infer E, infer _EI, infer R>
|
|
322
|
-
? Effect.Effect<A,
|
|
330
|
+
? Effect.Effect<A, UnknownError | E, R>
|
|
323
331
|
: never =>
|
|
324
332
|
Fiber.join(sharedWorkerFiber).pipe(
|
|
325
333
|
// NOTE we need to wait for the shared worker to be initialized before we can send requests to it
|
|
@@ -334,28 +342,28 @@ export const makePersistedAdapter =
|
|
|
334
342
|
}),
|
|
335
343
|
Effect.withSpan(`@livestore/adapter-web:client-session:runInWorker:${req._tag}`),
|
|
336
344
|
Effect.mapError((cause) =>
|
|
337
|
-
Schema.is(
|
|
345
|
+
Schema.is(UnknownError)(cause)
|
|
338
346
|
? cause
|
|
339
347
|
: ParseResult.isParseError(cause) || Schema.is(WorkerError.WorkerError)(cause)
|
|
340
|
-
? new
|
|
348
|
+
? new UnknownError({ cause })
|
|
341
349
|
: cause,
|
|
342
350
|
),
|
|
343
|
-
Effect.catchAllDefect((cause) => new
|
|
351
|
+
Effect.catchAllDefect((cause) => new UnknownError({ cause })),
|
|
344
352
|
) as any
|
|
345
353
|
|
|
346
354
|
const runInWorkerStream = <TReq extends typeof WorkerSchema.SharedWorkerRequest.Type>(
|
|
347
355
|
req: TReq,
|
|
348
356
|
): TReq extends Schema.WithResult<infer A, infer _I, infer _E, infer _EI, infer R>
|
|
349
|
-
? Stream.Stream<A,
|
|
357
|
+
? Stream.Stream<A, UnknownError, R>
|
|
350
358
|
: never =>
|
|
351
359
|
Effect.gen(function* () {
|
|
352
360
|
const sharedWorker = yield* Fiber.join(sharedWorkerFiber)
|
|
353
361
|
return sharedWorker.execute(req as any).pipe(
|
|
354
362
|
Stream.mapError((cause) =>
|
|
355
|
-
Schema.is(
|
|
363
|
+
Schema.is(UnknownError)(cause)
|
|
356
364
|
? cause
|
|
357
365
|
: ParseResult.isParseError(cause) || Schema.is(WorkerError.WorkerError)(cause)
|
|
358
|
-
? new
|
|
366
|
+
? new UnknownError({ cause })
|
|
359
367
|
: cause,
|
|
360
368
|
),
|
|
361
369
|
Stream.withSpan(`@livestore/adapter-web:client-session:runInWorkerStream:${req._tag}`),
|
|
@@ -403,7 +411,7 @@ export const makePersistedAdapter =
|
|
|
403
411
|
const numberOfTables =
|
|
404
412
|
sqliteDb.select<{ count: number }>(`select count(*) as count from sqlite_master`)[0]?.count ?? 0
|
|
405
413
|
if (numberOfTables === 0) {
|
|
406
|
-
return yield*
|
|
414
|
+
return yield* UnknownError.make({
|
|
407
415
|
cause: `Encountered empty or corrupted database`,
|
|
408
416
|
payload: { snapshotByteLength: initialResult.snapshot.byteLength, storageOptions: options.storage },
|
|
409
417
|
})
|
|
@@ -422,12 +430,12 @@ export const makePersistedAdapter =
|
|
|
422
430
|
)
|
|
423
431
|
|
|
424
432
|
const initialLeaderHead = initialLeaderHeadRes
|
|
425
|
-
? EventSequenceNumber.make({
|
|
433
|
+
? EventSequenceNumber.Client.Composite.make({
|
|
426
434
|
global: initialLeaderHeadRes.seqNumGlobal,
|
|
427
435
|
client: initialLeaderHeadRes.seqNumClient,
|
|
428
436
|
rebaseGeneration: initialLeaderHeadRes.seqNumRebaseGeneration,
|
|
429
437
|
})
|
|
430
|
-
: EventSequenceNumber.ROOT
|
|
438
|
+
: EventSequenceNumber.Client.ROOT
|
|
431
439
|
|
|
432
440
|
// console.debug('[@livestore/adapter-web:client-session] initialLeaderHead', initialLeaderHead)
|
|
433
441
|
|
|
@@ -453,7 +461,7 @@ export const makePersistedAdapter =
|
|
|
453
461
|
const leaderThread: ClientSession['leaderThread'] = {
|
|
454
462
|
export: runInWorker(new WorkerSchema.LeaderWorkerInnerExport()).pipe(
|
|
455
463
|
Effect.timeout(10_000),
|
|
456
|
-
|
|
464
|
+
UnknownError.mapToUnknownError,
|
|
457
465
|
Effect.withSpan('@livestore/adapter-web:client-session:export'),
|
|
458
466
|
),
|
|
459
467
|
|
|
@@ -472,13 +480,13 @@ export const makePersistedAdapter =
|
|
|
472
480
|
|
|
473
481
|
getEventlogData: runInWorker(new WorkerSchema.LeaderWorkerInnerExportEventlog()).pipe(
|
|
474
482
|
Effect.timeout(10_000),
|
|
475
|
-
|
|
483
|
+
UnknownError.mapToUnknownError,
|
|
476
484
|
Effect.withSpan('@livestore/adapter-web:client-session:getEventlogData'),
|
|
477
485
|
),
|
|
478
486
|
|
|
479
487
|
syncState: Subscribable.make({
|
|
480
488
|
get: runInWorker(new WorkerSchema.LeaderWorkerInnerGetLeaderSyncState()).pipe(
|
|
481
|
-
|
|
489
|
+
UnknownError.mapToUnknownError,
|
|
482
490
|
Effect.withSpan('@livestore/adapter-web:client-session:getLeaderSyncState'),
|
|
483
491
|
),
|
|
484
492
|
changes: runInWorkerStream(new WorkerSchema.LeaderWorkerInnerSyncStateStream()).pipe(Stream.orDie),
|
|
@@ -486,7 +494,7 @@ export const makePersistedAdapter =
|
|
|
486
494
|
|
|
487
495
|
sendDevtoolsMessage: (message) =>
|
|
488
496
|
runInWorker(new WorkerSchema.LeaderWorkerInnerExtraDevtoolsMessage({ message })).pipe(
|
|
489
|
-
|
|
497
|
+
UnknownError.mapToUnknownError,
|
|
490
498
|
Effect.withSpan('@livestore/adapter-web:client-session:devtoolsMessageForLeader'),
|
|
491
499
|
),
|
|
492
500
|
networkStatus: Subscribable.make({
|
|
@@ -521,7 +529,7 @@ export const makePersistedAdapter =
|
|
|
521
529
|
})
|
|
522
530
|
|
|
523
531
|
return clientSession
|
|
524
|
-
}).pipe(
|
|
532
|
+
}).pipe(Effect.provide(Opfs.Opfs.Default), UnknownError.mapToUnknownError)
|
|
525
533
|
|
|
526
534
|
// NOTE for `local` storage we could also use the eventlog db to store the data
|
|
527
535
|
const getPersistedId = (key: string, storageType: 'session' | 'local') => {
|
|
@@ -557,7 +565,7 @@ const ensureBrowserRequirements = Effect.gen(function* () {
|
|
|
557
565
|
const validate = (condition: boolean, label: string) =>
|
|
558
566
|
Effect.gen(function* () {
|
|
559
567
|
if (condition) {
|
|
560
|
-
return yield*
|
|
568
|
+
return yield* UnknownError.make({
|
|
561
569
|
cause: `[@livestore/adapter-web] Browser not supported. The LiveStore web adapter needs '${label}' to work properly`,
|
|
562
570
|
})
|
|
563
571
|
}
|