@livestore/adapter-web 0.4.0-dev.8 → 0.4.0
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/README.md +5 -5
- package/dist/.tsbuildinfo +1 -1
- package/dist/in-memory/in-memory-adapter.d.ts +49 -5
- package/dist/in-memory/in-memory-adapter.d.ts.map +1 -1
- package/dist/in-memory/in-memory-adapter.js +77 -20
- package/dist/in-memory/in-memory-adapter.js.map +1 -1
- package/dist/index.d.ts +11 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/index.js.map +1 -1
- package/dist/single-tab/mod.d.ts +15 -0
- package/dist/single-tab/mod.d.ts.map +1 -0
- package/dist/single-tab/mod.js +15 -0
- package/dist/single-tab/mod.js.map +1 -0
- package/dist/single-tab/single-tab-adapter.d.ts +108 -0
- package/dist/single-tab/single-tab-adapter.d.ts.map +1 -0
- package/dist/single-tab/single-tab-adapter.js +271 -0
- package/dist/single-tab/single-tab-adapter.js.map +1 -0
- package/dist/web-worker/client-session/client-session-devtools.d.ts +2 -2
- package/dist/web-worker/client-session/client-session-devtools.d.ts.map +1 -1
- package/dist/web-worker/client-session/client-session-devtools.js +20 -9
- package/dist/web-worker/client-session/client-session-devtools.js.map +1 -1
- package/dist/web-worker/client-session/persisted-adapter.d.ts +18 -0
- package/dist/web-worker/client-session/persisted-adapter.d.ts.map +1 -1
- package/dist/web-worker/client-session/persisted-adapter.js +141 -67
- package/dist/web-worker/client-session/persisted-adapter.js.map +1 -1
- package/dist/web-worker/client-session/sqlite-loader.d.ts +2 -0
- package/dist/web-worker/client-session/sqlite-loader.d.ts.map +1 -0
- package/dist/web-worker/client-session/sqlite-loader.js +16 -0
- package/dist/web-worker/client-session/sqlite-loader.js.map +1 -0
- package/dist/web-worker/common/persisted-sqlite.d.ts +13 -20
- package/dist/web-worker/common/persisted-sqlite.d.ts.map +1 -1
- package/dist/web-worker/common/persisted-sqlite.js +95 -102
- 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 +152 -58
- package/dist/web-worker/common/worker-schema.d.ts.map +1 -1
- package/dist/web-worker/common/worker-schema.js +55 -37
- package/dist/web-worker/common/worker-schema.js.map +1 -1
- package/dist/web-worker/leader-worker/make-leader-worker.d.ts +5 -3
- package/dist/web-worker/leader-worker/make-leader-worker.d.ts.map +1 -1
- package/dist/web-worker/leader-worker/make-leader-worker.js +99 -38
- package/dist/web-worker/leader-worker/make-leader-worker.js.map +1 -1
- package/dist/web-worker/shared-worker/make-shared-worker.d.ts +2 -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 +62 -52
- package/dist/web-worker/shared-worker/make-shared-worker.js.map +1 -1
- package/package.json +56 -18
- package/src/in-memory/in-memory-adapter.ts +92 -26
- package/src/index.ts +15 -1
- package/src/single-tab/mod.ts +15 -0
- package/src/single-tab/single-tab-adapter.ts +499 -0
- package/src/web-worker/ambient.d.ts +7 -24
- package/src/web-worker/client-session/client-session-devtools.ts +32 -18
- package/src/web-worker/client-session/persisted-adapter.ts +199 -103
- package/src/web-worker/client-session/sqlite-loader.ts +19 -0
- package/src/web-worker/common/persisted-sqlite.ts +215 -170
- 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 +78 -38
- package/src/web-worker/leader-worker/make-leader-worker.ts +149 -71
- package/src/web-worker/shared-worker/make-shared-worker.ts +78 -90
- package/dist/opfs-utils.d.ts +0 -5
- 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,32 +1,48 @@
|
|
|
1
|
-
import { IntentionalShutdownCause, liveStoreVersion, makeClientSession, StoreInterrupted, sessionChangesetMetaTable,
|
|
1
|
+
import { IntentionalShutdownCause, isWorkerTransportError, liveStoreVersion, makeClientSession, StoreInterrupted, sessionChangesetMetaTable, UnknownError, } from '@livestore/common';
|
|
2
2
|
// TODO bring back - this currently doesn't work due to https://github.com/vitejs/vite/issues/8427
|
|
3
3
|
// NOTE We're using a non-relative import here for Vite to properly resolve the import during app builds
|
|
4
4
|
// import LiveStoreSharedWorker from '@livestore/adapter-web/internal-shared-worker?sharedworker'
|
|
5
5
|
import { EventSequenceNumber } from '@livestore/common/schema';
|
|
6
6
|
import { sqliteDbFactory } from '@livestore/sqlite-wasm/browser';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { BrowserWorker,
|
|
7
|
+
import { isDevEnv, omitUndefineds, shouldNeverHappen, tryAsFunctionAndNew } from '@livestore/utils';
|
|
8
|
+
import { Cause, Deferred, Effect, Exit, Fiber, Layer, Option, Queue, Schema, Stream, Subscribable, SubscriptionRef, Worker, } from '@livestore/utils/effect';
|
|
9
|
+
import { BrowserWorker, Opfs, WebError, WebLock } from '@livestore/utils/effect/browser';
|
|
10
10
|
import { nanoid } from '@livestore/utils/nanoid';
|
|
11
|
-
import
|
|
12
|
-
import {
|
|
11
|
+
import { makeSingleTabAdapter } from "../../single-tab/single-tab-adapter.js";
|
|
12
|
+
import { readPersistedStateDbFromClientSession, resetPersistedDataFromClientSession, } from "../common/persisted-sqlite.js";
|
|
13
13
|
import { makeShutdownChannel } from "../common/shutdown-channel.js";
|
|
14
14
|
import { DedicatedWorkerDisconnectBroadcast, makeWorkerDisconnectChannel } from "../common/worker-disconnect-channel.js";
|
|
15
15
|
import * as WorkerSchema from "../common/worker-schema.js";
|
|
16
16
|
import { connectWebmeshNodeClientSession } from "./client-session-devtools.js";
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if
|
|
17
|
+
import { loadSqlite3 } from "./sqlite-loader.js";
|
|
18
|
+
/**
|
|
19
|
+
* Checks if SharedWorker API is available in the current browser context.
|
|
20
|
+
*
|
|
21
|
+
* Returns false on Android Chrome and other browsers without SharedWorker support.
|
|
22
|
+
*
|
|
23
|
+
* @see https://github.com/livestorejs/livestore/issues/321
|
|
24
|
+
* @see https://issues.chromium.org/issues/40290702
|
|
25
|
+
*/
|
|
26
|
+
export const canUseSharedWorker = () => typeof SharedWorker !== 'undefined';
|
|
27
|
+
if (isDevEnv() === true) {
|
|
20
28
|
globalThis.__debugLiveStoreUtils = {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
runFork: (effect) => Effect.runFork(effect),
|
|
29
|
+
...globalThis.__debugLiveStoreUtils,
|
|
30
|
+
opfs: Opfs.debugUtils,
|
|
24
31
|
};
|
|
25
32
|
}
|
|
26
33
|
/**
|
|
27
34
|
* Creates a web adapter with persistent storage (currently only supports OPFS).
|
|
28
35
|
* Requires both a web worker and a shared worker.
|
|
29
36
|
*
|
|
37
|
+
* On browsers without SharedWorker support (e.g. Android Chrome), this adapter
|
|
38
|
+
* automatically falls back to single-tab mode. In single-tab mode:
|
|
39
|
+
* - Each tab runs independently with its own leader worker
|
|
40
|
+
* - Multi-tab synchronization is not available
|
|
41
|
+
* - Devtools are not supported
|
|
42
|
+
*
|
|
43
|
+
* @see https://github.com/livestorejs/livestore/issues/321 - SharedWorker tracking issue
|
|
44
|
+
* @see https://issues.chromium.org/issues/40290702 - Chromium SharedWorker bug
|
|
45
|
+
*
|
|
30
46
|
* @example
|
|
31
47
|
* ```ts
|
|
32
48
|
* import { makePersistedAdapter } from '@livestore/adapter-web'
|
|
@@ -41,35 +57,69 @@ if (isDevEnv()) {
|
|
|
41
57
|
* ```
|
|
42
58
|
*/
|
|
43
59
|
export const makePersistedAdapter = (options) => (adapterArgs) => Effect.gen(function* () {
|
|
44
|
-
|
|
60
|
+
// Check SharedWorker availability first and fall back to single-tab mode if unavailable
|
|
61
|
+
if (canUseSharedWorker() === false) {
|
|
62
|
+
yield* Effect.logWarning('[@livestore/adapter-web] SharedWorker unavailable (e.g. Android Chrome). ' +
|
|
63
|
+
'Falling back to single-tab mode. Multi-tab synchronization and devtools are disabled. ' +
|
|
64
|
+
'See: https://github.com/livestorejs/livestore/issues/321');
|
|
65
|
+
return yield* makeSingleTabAdapter({
|
|
66
|
+
worker: options.worker,
|
|
67
|
+
storage: options.storage,
|
|
68
|
+
...omitUndefineds({
|
|
69
|
+
resetPersistence: options.resetPersistence,
|
|
70
|
+
clientId: options.clientId,
|
|
71
|
+
sessionId: options.sessionId,
|
|
72
|
+
experimental: options.experimental,
|
|
73
|
+
}),
|
|
74
|
+
})(adapterArgs);
|
|
75
|
+
}
|
|
76
|
+
const { schema, storeId, devtoolsEnabled, debugInstanceId, bootStatusQueue, shutdown, syncPayloadSchema: _syncPayloadSchema, syncPayloadEncoded, } = adapterArgs;
|
|
77
|
+
// NOTE: The schema travels with the worker bundle (developers call
|
|
78
|
+
// `makeWorker({ schema, syncPayloadSchema })`). We only keep the
|
|
79
|
+
// destructured value here to document availability on the client session
|
|
80
|
+
// side—structured cloning the Effect schema into the worker is not
|
|
81
|
+
// possible, so we intentionally do not forward it.
|
|
82
|
+
void _syncPayloadSchema;
|
|
45
83
|
yield* ensureBrowserRequirements;
|
|
46
84
|
yield* Queue.offer(bootStatusQueue, { stage: 'loading' });
|
|
47
|
-
const sqlite3 = yield* Effect.promise(() =>
|
|
85
|
+
const sqlite3 = yield* Effect.promise(() => loadSqlite3());
|
|
48
86
|
const LIVESTORE_TAB_LOCK = `livestore-tab-lock-${storeId}`;
|
|
49
87
|
const LIVESTORE_SHARED_WORKER_TERMINATION_LOCK = `livestore-shared-worker-termination-lock-${storeId}`;
|
|
50
88
|
const storageOptions = yield* Schema.decode(WorkerSchema.StorageType)(options.storage);
|
|
51
89
|
const shutdownChannel = yield* makeShutdownChannel(storeId);
|
|
52
|
-
if (
|
|
90
|
+
// Check OPFS availability early and notify user if storage is unavailable (e.g. private browsing)
|
|
91
|
+
const opfsWarning = yield* checkOpfsAvailability;
|
|
92
|
+
if (opfsWarning !== undefined) {
|
|
93
|
+
yield* Effect.logWarning('[@livestore/adapter-web:client-session] OPFS unavailable', opfsWarning);
|
|
94
|
+
}
|
|
95
|
+
if (options.resetPersistence === true && opfsWarning === undefined) {
|
|
53
96
|
yield* shutdownChannel.send(IntentionalShutdownCause.make({ reason: 'adapter-reset' }));
|
|
54
97
|
yield* resetPersistedDataFromClientSession({ storageOptions, storeId });
|
|
55
98
|
}
|
|
99
|
+
else if (options.resetPersistence === true) {
|
|
100
|
+
yield* Effect.logWarning('[@livestore/adapter-web:client-session] Skipping persistence reset because storage is unavailable', opfsWarning);
|
|
101
|
+
}
|
|
56
102
|
// Note on fast-path booting:
|
|
57
103
|
// Instead of waiting for the leader worker to boot and then get a database snapshot from it,
|
|
58
104
|
// we're here trying to get the snapshot directly from storage
|
|
59
105
|
// we usually speeds up the boot process by a lot.
|
|
60
106
|
// We need to be extra careful though to not run into any race conditions or inconsistencies.
|
|
61
107
|
// TODO also verify persisted data
|
|
62
|
-
const dataFromFile = options.experimental?.disableFastPath === true
|
|
108
|
+
const dataFromFile = options.experimental?.disableFastPath === true || opfsWarning !== undefined
|
|
63
109
|
? undefined
|
|
64
|
-
: yield*
|
|
110
|
+
: yield* readPersistedStateDbFromClientSession({ storageOptions, storeId, schema }).pipe(Effect.tapError((error) => Effect.logDebug('[@livestore/adapter-web:client-session] Could not read persisted state db', error, {
|
|
111
|
+
storeId,
|
|
112
|
+
})),
|
|
113
|
+
// If we get any error here, we return `undefined` to fall back to the slow path
|
|
114
|
+
Effect.orElseSucceed(() => undefined));
|
|
65
115
|
// The same across all client sessions (i.e. tabs, windows)
|
|
66
116
|
const clientId = options.clientId ?? getPersistedId(`clientId:${storeId}`, 'local');
|
|
67
117
|
// Unique per client session (i.e. tab, window)
|
|
68
118
|
const sessionId = options.sessionId ?? getPersistedId(`sessionId:${storeId}`, 'session');
|
|
69
119
|
const workerDisconnectChannel = yield* makeWorkerDisconnectChannel(storeId);
|
|
70
|
-
yield* shutdownChannel.listen.pipe(Stream.flatten(), Stream.tap((cause) => shutdown(cause._tag === '
|
|
120
|
+
yield* shutdownChannel.listen.pipe(Stream.flatten(), Stream.tap((cause) => shutdown(cause._tag === 'IntentionalShutdownCause' ? Exit.succeed(cause) : Exit.fail(cause))), Stream.runDrain, Effect.interruptible, Effect.tapCauseLogPretty, Effect.forkScoped);
|
|
71
121
|
const sharedWebWorker = tryAsFunctionAndNew(options.sharedWorker, { name: `livestore-shared-worker-${storeId}` });
|
|
72
|
-
if (options.experimental?.awaitSharedWorkerTermination) {
|
|
122
|
+
if (options.experimental?.awaitSharedWorkerTermination === true) {
|
|
73
123
|
// Relying on the lock being available is currently the only mechanism we're aware of
|
|
74
124
|
// to know whether the shared worker has terminated.
|
|
75
125
|
yield* Effect.addFinalizer(() => WebLock.waitForLock(LIVESTORE_SHARED_WORKER_TERMINATION_LOCK));
|
|
@@ -78,28 +128,14 @@ export const makePersistedAdapter = (options) => (adapterArgs) => Effect.gen(fun
|
|
|
78
128
|
const sharedWorkerFiber = yield* Worker.makePoolSerialized({
|
|
79
129
|
size: 1,
|
|
80
130
|
concurrency: 100,
|
|
81
|
-
|
|
82
|
-
liveStoreVersion,
|
|
83
|
-
payload: {
|
|
84
|
-
_tag: 'FromClientSession',
|
|
85
|
-
initialMessage: new WorkerSchema.LeaderWorkerInnerInitialMessage({
|
|
86
|
-
storageOptions,
|
|
87
|
-
storeId,
|
|
88
|
-
clientId,
|
|
89
|
-
devtoolsEnabled,
|
|
90
|
-
debugInstanceId,
|
|
91
|
-
syncPayload,
|
|
92
|
-
}),
|
|
93
|
-
},
|
|
94
|
-
}),
|
|
95
|
-
}).pipe(Effect.provide(sharedWorkerContext), Effect.tapCauseLogPretty, UnexpectedError.mapToUnexpectedError, Effect.tapErrorCause((cause) => shutdown(Exit.failCause(cause))), Effect.withSpan('@livestore/adapter-web:client-session:setupSharedWorker'), Effect.forkScoped);
|
|
131
|
+
}).pipe(Effect.provide(sharedWorkerContext), Effect.tapCauseLogPretty, Effect.orDie, Effect.tapErrorCause((cause) => shutdown(Exit.failCause(cause))), Effect.withSpan('@livestore/adapter-web:client-session:setupSharedWorker'), Effect.forkScoped);
|
|
96
132
|
const lockDeferred = yield* Deferred.make();
|
|
97
133
|
// It's important that we resolve the leader election in a blocking way, so there's always a leader.
|
|
98
134
|
// Otherwise events could end up being dropped.
|
|
99
135
|
//
|
|
100
136
|
// Sorry for this pun ...
|
|
101
137
|
let gotLocky = yield* WebLock.tryGetDeferredLock(lockDeferred, LIVESTORE_TAB_LOCK);
|
|
102
|
-
const lockStatus = yield* SubscriptionRef.make(gotLocky ? 'has-lock' : 'no-lock');
|
|
138
|
+
const lockStatus = yield* SubscriptionRef.make(gotLocky === true ? 'has-lock' : 'no-lock');
|
|
103
139
|
// Ideally we can come up with a simpler implementation that doesn't require this
|
|
104
140
|
const waitForSharedWorkerInitialized = yield* Deferred.make();
|
|
105
141
|
if (gotLocky === false) {
|
|
@@ -116,10 +152,23 @@ export const makePersistedAdapter = (options) => (adapterArgs) => Effect.gen(fun
|
|
|
116
152
|
const worker = tryAsFunctionAndNew(options.worker, { name: `livestore-worker-${storeId}-${sessionId}` });
|
|
117
153
|
yield* Worker.makeSerialized({
|
|
118
154
|
initialMessage: () => new WorkerSchema.LeaderWorkerOuterInitialMessage({ port: mc.port1, storeId, clientId }),
|
|
119
|
-
}).pipe(Effect.provide(BrowserWorker.layer(() => worker)),
|
|
155
|
+
}).pipe(Effect.provide(BrowserWorker.layer(() => worker)), UnknownError.mapToUnknownError, Effect.tapErrorCause((cause) => shutdown(Exit.failCause(cause))), Effect.withSpan('@livestore/adapter-web:client-session:setupDedicatedWorker'), Effect.tapCauseLogPretty, Effect.forkScoped);
|
|
120
156
|
yield* workerDisconnectChannel.send(DedicatedWorkerDisconnectBroadcast.make({}));
|
|
121
157
|
const sharedWorker = yield* Fiber.join(sharedWorkerFiber);
|
|
122
|
-
yield* sharedWorker
|
|
158
|
+
yield* sharedWorker
|
|
159
|
+
.executeEffect(new WorkerSchema.SharedWorkerUpdateMessagePort({
|
|
160
|
+
port: mc.port2,
|
|
161
|
+
liveStoreVersion,
|
|
162
|
+
initial: new WorkerSchema.LeaderWorkerInnerInitialMessage({
|
|
163
|
+
storageOptions,
|
|
164
|
+
storeId,
|
|
165
|
+
clientId,
|
|
166
|
+
devtoolsEnabled,
|
|
167
|
+
debugInstanceId,
|
|
168
|
+
syncPayloadEncoded,
|
|
169
|
+
}),
|
|
170
|
+
}))
|
|
171
|
+
.pipe(UnknownError.mapToUnknownError, Effect.tapErrorCause((cause) => shutdown(Exit.failCause(cause))));
|
|
123
172
|
yield* Deferred.succeed(waitForSharedWorkerInitialized, undefined);
|
|
124
173
|
return yield* Effect.never;
|
|
125
174
|
}).pipe(Effect.withSpan('@livestore/adapter-web:client-session:lock'));
|
|
@@ -137,27 +186,19 @@ export const makePersistedAdapter = (options) => (adapterArgs) => Effect.gen(fun
|
|
|
137
186
|
}
|
|
138
187
|
const runInWorker = (req) => Fiber.join(sharedWorkerFiber).pipe(
|
|
139
188
|
// NOTE we need to wait for the shared worker to be initialized before we can send requests to it
|
|
140
|
-
Effect.tap(() => waitForSharedWorkerInitialized), Effect.flatMap((worker) => worker.executeEffect(req)),
|
|
189
|
+
Effect.tap(() => waitForSharedWorkerInitialized), Effect.flatMap((worker) => worker.executeEffect(req)), Effect.catchIf(isWorkerTransportError, (e) => Effect.die(e)),
|
|
141
190
|
// NOTE we want to treat worker requests as atomic and therefore not allow them to be interrupted
|
|
142
191
|
// Interruption usually only happens during leader re-election or store shutdown
|
|
143
192
|
// Effect.uninterruptible,
|
|
144
193
|
Effect.logWarnIfTakesLongerThan({
|
|
145
194
|
label: `@livestore/adapter-web:client-session:runInWorker:${req._tag}`,
|
|
146
195
|
duration: 2000,
|
|
147
|
-
}), Effect.withSpan(`@livestore/adapter-web:client-session:runInWorker:${req._tag}`)
|
|
148
|
-
? cause
|
|
149
|
-
: ParseResult.isParseError(cause) || Schema.is(WorkerError.WorkerError)(cause)
|
|
150
|
-
? new UnexpectedError({ cause })
|
|
151
|
-
: cause), Effect.catchAllDefect((cause) => new UnexpectedError({ cause })));
|
|
196
|
+
}), Effect.withSpan(`@livestore/adapter-web:client-session:runInWorker:${req._tag}`));
|
|
152
197
|
const runInWorkerStream = (req) => Effect.gen(function* () {
|
|
153
198
|
const sharedWorker = yield* Fiber.join(sharedWorkerFiber);
|
|
154
|
-
return sharedWorker.execute(req).pipe(Stream.
|
|
155
|
-
? cause
|
|
156
|
-
: ParseResult.isParseError(cause) || Schema.is(WorkerError.WorkerError)(cause)
|
|
157
|
-
? new UnexpectedError({ cause })
|
|
158
|
-
: cause), Stream.withSpan(`@livestore/adapter-web:client-session:runInWorkerStream:${req._tag}`));
|
|
199
|
+
return sharedWorker.execute(req).pipe(Stream.refineOrDie((e) => isWorkerTransportError(e) === true ? Option.none() : Option.some(e)), Stream.withSpan(`@livestore/adapter-web:client-session:runInWorkerStream:${req._tag}`));
|
|
159
200
|
}).pipe(Stream.unwrap);
|
|
160
|
-
const bootStatusFiber = yield* runInWorkerStream(new WorkerSchema.LeaderWorkerInnerBootStatusStream()).pipe(Stream.tap((_) => Queue.offer(bootStatusQueue, _)), Stream.runDrain, Effect.tapErrorCause((cause) => Cause.isInterruptedOnly(cause) ? Effect.void : shutdown(Exit.failCause(cause))), Effect.interruptible, Effect.tapCauseLogPretty, Effect.forkScoped);
|
|
201
|
+
const bootStatusFiber = yield* runInWorkerStream(new WorkerSchema.LeaderWorkerInnerBootStatusStream()).pipe(Stream.tap((_) => Queue.offer(bootStatusQueue, _)), Stream.runDrain, Effect.tapErrorCause((cause) => Cause.isInterruptedOnly(cause) === true ? Effect.void : shutdown(Exit.failCause(cause))), Effect.interruptible, Effect.tapCauseLogPretty, Effect.forkScoped);
|
|
161
202
|
yield* Queue.awaitShutdown(bootStatusQueue).pipe(Effect.andThen(Fiber.interrupt(bootStatusFiber)), Effect.tapCauseLogPretty, Effect.forkScoped);
|
|
162
203
|
// TODO maybe bring back transfering the initially created in-memory db snapshot instead of
|
|
163
204
|
// re-exporting the db
|
|
@@ -174,7 +215,7 @@ export const makePersistedAdapter = (options) => (adapterArgs) => Effect.gen(fun
|
|
|
174
215
|
sqliteDb.import(initialResult.snapshot);
|
|
175
216
|
const numberOfTables = sqliteDb.select(`select count(*) as count from sqlite_master`)[0]?.count ?? 0;
|
|
176
217
|
if (numberOfTables === 0) {
|
|
177
|
-
return yield*
|
|
218
|
+
return yield* UnknownError.make({
|
|
178
219
|
cause: `Encountered empty or corrupted database`,
|
|
179
220
|
payload: { snapshotByteLength: initialResult.snapshot.byteLength, storageOptions: options.storage },
|
|
180
221
|
});
|
|
@@ -188,16 +229,16 @@ export const makePersistedAdapter = (options) => (adapterArgs) => Effect.gen(fun
|
|
|
188
229
|
{ col: 'seqNumClient', direction: 'desc' },
|
|
189
230
|
])
|
|
190
231
|
.first());
|
|
191
|
-
const initialLeaderHead = initialLeaderHeadRes
|
|
192
|
-
? EventSequenceNumber.make({
|
|
232
|
+
const initialLeaderHead = initialLeaderHeadRes !== undefined
|
|
233
|
+
? EventSequenceNumber.Client.Composite.make({
|
|
193
234
|
global: initialLeaderHeadRes.seqNumGlobal,
|
|
194
235
|
client: initialLeaderHeadRes.seqNumClient,
|
|
195
236
|
rebaseGeneration: initialLeaderHeadRes.seqNumRebaseGeneration,
|
|
196
237
|
})
|
|
197
|
-
: EventSequenceNumber.ROOT;
|
|
238
|
+
: EventSequenceNumber.Client.ROOT;
|
|
198
239
|
// console.debug('[@livestore/adapter-web:client-session] initialLeaderHead', initialLeaderHead)
|
|
199
240
|
yield* Effect.addFinalizer((ex) => Effect.gen(function* () {
|
|
200
|
-
if (Exit.isFailure(ex) &&
|
|
241
|
+
if (Exit.isFailure(ex) === true &&
|
|
201
242
|
Exit.isInterrupted(ex) === false &&
|
|
202
243
|
Schema.is(IntentionalShutdownCause)(Cause.squash(ex.cause)) === false &&
|
|
203
244
|
Schema.is(StoreInterrupted)(Cause.squash(ex.cause)) === false) {
|
|
@@ -206,22 +247,34 @@ export const makePersistedAdapter = (options) => (adapterArgs) => Effect.gen(fun
|
|
|
206
247
|
else {
|
|
207
248
|
yield* Effect.logDebug('[@livestore/adapter-web:client-session] client-session shutdown', gotLocky, ex);
|
|
208
249
|
}
|
|
209
|
-
if (gotLocky) {
|
|
250
|
+
if (gotLocky === true) {
|
|
210
251
|
yield* Deferred.succeed(lockDeferred, undefined);
|
|
211
252
|
}
|
|
212
253
|
}).pipe(Effect.tapCauseLogPretty, Effect.orDie));
|
|
213
254
|
const leaderThread = {
|
|
214
|
-
export: runInWorker(new WorkerSchema.LeaderWorkerInnerExport()).pipe(Effect.
|
|
255
|
+
export: runInWorker(new WorkerSchema.LeaderWorkerInnerExport()).pipe(Effect.timeoutOrDie(10_000), Effect.withSpan('@livestore/adapter-web:client-session:export')),
|
|
215
256
|
events: {
|
|
216
257
|
pull: ({ cursor }) => runInWorkerStream(new WorkerSchema.LeaderWorkerInnerPullStream({ cursor })).pipe(Stream.orDie),
|
|
217
258
|
push: (batch) => runInWorker(new WorkerSchema.LeaderWorkerInnerPushToLeader({ batch })).pipe(Effect.withSpan('@livestore/adapter-web:client-session:pushToLeader', {
|
|
218
259
|
attributes: { batchSize: batch.length },
|
|
219
260
|
})),
|
|
261
|
+
stream: (options) => runInWorkerStream(new WorkerSchema.LeaderWorkerInnerStreamEvents(options)).pipe(Stream.withSpan('@livestore/adapter-web:client-session:streamEvents'), Stream.orDie),
|
|
220
262
|
},
|
|
221
|
-
initialState: {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
263
|
+
initialState: {
|
|
264
|
+
leaderHead: initialLeaderHead,
|
|
265
|
+
migrationsReport,
|
|
266
|
+
storageMode: opfsWarning === undefined ? 'persisted' : 'in-memory',
|
|
267
|
+
},
|
|
268
|
+
getEventlogData: runInWorker(new WorkerSchema.LeaderWorkerInnerExportEventlog()).pipe(Effect.timeoutOrDie(10_000), Effect.withSpan('@livestore/adapter-web:client-session:getEventlogData')),
|
|
269
|
+
syncState: Subscribable.make({
|
|
270
|
+
get: runInWorker(new WorkerSchema.LeaderWorkerInnerGetLeaderSyncState()).pipe(Effect.withSpan('@livestore/adapter-web:client-session:getLeaderSyncState')),
|
|
271
|
+
changes: runInWorkerStream(new WorkerSchema.LeaderWorkerInnerSyncStateStream()).pipe(Stream.orDie),
|
|
272
|
+
}),
|
|
273
|
+
sendDevtoolsMessage: (message) => runInWorker(new WorkerSchema.LeaderWorkerInnerExtraDevtoolsMessage({ message })).pipe(Effect.withSpan('@livestore/adapter-web:client-session:devtoolsMessageForLeader')),
|
|
274
|
+
networkStatus: Subscribable.make({
|
|
275
|
+
get: runInWorker(new WorkerSchema.LeaderWorkerInnerGetNetworkStatus()),
|
|
276
|
+
changes: runInWorkerStream(new WorkerSchema.LeaderWorkerInnerNetworkStatusStream()),
|
|
277
|
+
}),
|
|
225
278
|
};
|
|
226
279
|
const sharedWorker = yield* Fiber.join(sharedWorkerFiber);
|
|
227
280
|
const clientSession = yield* makeClientSession({
|
|
@@ -230,10 +283,11 @@ export const makePersistedAdapter = (options) => (adapterArgs) => Effect.gen(fun
|
|
|
230
283
|
lockStatus,
|
|
231
284
|
clientId,
|
|
232
285
|
sessionId,
|
|
233
|
-
|
|
234
|
-
isLeader: true,
|
|
286
|
+
isLeader: gotLocky,
|
|
235
287
|
leaderThread,
|
|
236
288
|
webmeshMode: 'direct',
|
|
289
|
+
// Can be undefined in Node.js
|
|
290
|
+
origin: globalThis.location?.origin,
|
|
237
291
|
connectWebmeshNode: ({ sessionInfo, webmeshNode }) => connectWebmeshNodeClientSession({ webmeshNode, sessionInfo, sharedWorker, devtoolsEnabled, schema }),
|
|
238
292
|
registerBeforeUnload: (onBeforeUnload) => {
|
|
239
293
|
if (typeof window !== 'undefined' && typeof window.addEventListener === 'function') {
|
|
@@ -244,7 +298,7 @@ export const makePersistedAdapter = (options) => (adapterArgs) => Effect.gen(fun
|
|
|
244
298
|
},
|
|
245
299
|
});
|
|
246
300
|
return clientSession;
|
|
247
|
-
}).pipe(
|
|
301
|
+
}).pipe(Effect.provide(Opfs.Opfs.Default), UnknownError.mapToUnknownError);
|
|
248
302
|
// NOTE for `local` storage we could also use the eventlog db to store the data
|
|
249
303
|
const getPersistedId = (key, storageType) => {
|
|
250
304
|
const makeId = () => nanoid(5);
|
|
@@ -254,7 +308,7 @@ const getPersistedId = (key, storageType) => {
|
|
|
254
308
|
? sessionStorage
|
|
255
309
|
: storageType === 'local'
|
|
256
310
|
? localStorage
|
|
257
|
-
: shouldNeverHappen(`[@livestore/adapter-web] Invalid storage type: ${storageType}`);
|
|
311
|
+
: shouldNeverHappen(`[@livestore/adapter-web] Invalid storage type: ${String(storageType)}`);
|
|
258
312
|
// in case of a worker, we need the id of the parent window, to keep the id consistent
|
|
259
313
|
// we also need to handle the case where there are multiple workers being spawned by the same window
|
|
260
314
|
if (storage === undefined) {
|
|
@@ -262,7 +316,7 @@ const getPersistedId = (key, storageType) => {
|
|
|
262
316
|
}
|
|
263
317
|
const fullKey = `livestore:${key}`;
|
|
264
318
|
const storedKey = storage.getItem(fullKey);
|
|
265
|
-
if (storedKey)
|
|
319
|
+
if (storedKey !== null)
|
|
266
320
|
return storedKey;
|
|
267
321
|
const newKey = makeId();
|
|
268
322
|
storage.setItem(fullKey, newKey);
|
|
@@ -270,8 +324,8 @@ const getPersistedId = (key, storageType) => {
|
|
|
270
324
|
};
|
|
271
325
|
const ensureBrowserRequirements = Effect.gen(function* () {
|
|
272
326
|
const validate = (condition, label) => Effect.gen(function* () {
|
|
273
|
-
if (condition) {
|
|
274
|
-
return yield*
|
|
327
|
+
if (condition === true) {
|
|
328
|
+
return yield* UnknownError.make({
|
|
275
329
|
cause: `[@livestore/adapter-web] Browser not supported. The LiveStore web adapter needs '${label}' to work properly`,
|
|
276
330
|
});
|
|
277
331
|
}
|
|
@@ -285,4 +339,24 @@ const ensureBrowserRequirements = Effect.gen(function* () {
|
|
|
285
339
|
validate(typeof sessionStorage === 'undefined', 'sessionStorage'),
|
|
286
340
|
]);
|
|
287
341
|
});
|
|
342
|
+
/**
|
|
343
|
+
* Attempts to access OPFS and returns a warning if unavailable.
|
|
344
|
+
*
|
|
345
|
+
* Common failure scenarios:
|
|
346
|
+
* - Safari/Firefox private browsing: SecurityError or NotAllowedError
|
|
347
|
+
* - Permission denied: NotAllowedError
|
|
348
|
+
* - Quota exceeded: QuotaExceededError
|
|
349
|
+
*/
|
|
350
|
+
const checkOpfsAvailability = Effect.gen(function* () {
|
|
351
|
+
const opfs = yield* Opfs.Opfs;
|
|
352
|
+
return yield* opfs.getRootDirectoryHandle.pipe(Effect.as(undefined), Effect.catchAll((error) => {
|
|
353
|
+
const reason = Schema.is(WebError.SecurityError)(error) === true || Schema.is(WebError.NotAllowedError)(error) === true
|
|
354
|
+
? 'private-browsing'
|
|
355
|
+
: 'storage-unavailable';
|
|
356
|
+
const message = reason === 'private-browsing'
|
|
357
|
+
? 'Storage unavailable in private browsing mode. LiveStore will continue without persistence.'
|
|
358
|
+
: 'Storage access denied. LiveStore will continue without persistence.';
|
|
359
|
+
return Effect.succeed({ reason, message });
|
|
360
|
+
}));
|
|
361
|
+
});
|
|
288
362
|
//# sourceMappingURL=persisted-adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persisted-adapter.js","sourceRoot":"","sources":["../../../src/web-worker/client-session/persisted-adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"persisted-adapter.js","sourceRoot":"","sources":["../../../src/web-worker/client-session/persisted-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-loader.d.ts","sourceRoot":"","sources":["../../../src/web-worker/client-session/sqlite-loader.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,WAAW,0BAA+F,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { loadSqlite3Wasm } from '@livestore/sqlite-wasm/load-wasm';
|
|
2
|
+
/**
|
|
3
|
+
* Browser sessions benefit from downloading and compiling the wasm binary as soon as
|
|
4
|
+
* possible to hide network and IO latency behind the rest of the boot process. We kick
|
|
5
|
+
* that work off eagerly on the client while still returning the shared promise.
|
|
6
|
+
*
|
|
7
|
+
* The Cloudflare / Workerd runtime has stricter rules: async fetches during module
|
|
8
|
+
* evaluation are blocked, so we defer loading until the worker asks for it.
|
|
9
|
+
*/
|
|
10
|
+
const isServerRuntime = String(import.meta.env?.SSR) === 'true' || typeof window === 'undefined';
|
|
11
|
+
let sqlite3Promise;
|
|
12
|
+
if (isServerRuntime === false) {
|
|
13
|
+
sqlite3Promise = loadSqlite3Wasm();
|
|
14
|
+
}
|
|
15
|
+
export const loadSqlite3 = () => (isServerRuntime === true ? loadSqlite3Wasm() : (sqlite3Promise ?? loadSqlite3Wasm()));
|
|
16
|
+
//# sourceMappingURL=sqlite-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-loader.js","sourceRoot":"","sources":["../../../src/web-worker/client-session/sqlite-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAElE;;;;;;;GAOG;AACH,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,MAAM,IAAI,OAAO,MAAM,KAAK,WAAW,CAAA;AAEhG,IAAI,cAA8D,CAAA;AAElE,IAAI,eAAe,KAAK,KAAK,EAAE,CAAC;IAC9B,cAAc,GAAG,eAAe,EAAE,CAAA;AACpC,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,eAAe,EAAE,CAAC,CAAC,CAAA"}
|
|
@@ -1,27 +1,29 @@
|
|
|
1
|
-
import { UnexpectedError } from '@livestore/common';
|
|
2
1
|
import type { LiveStoreSchema } from '@livestore/common/schema';
|
|
3
2
|
import { type WebDatabaseMetadataOpfs } from '@livestore/sqlite-wasm/browser';
|
|
4
3
|
import { Effect, Schema } from '@livestore/utils/effect';
|
|
4
|
+
import { Opfs, type WebError } from '@livestore/utils/effect/browser';
|
|
5
5
|
import type * as WorkerSchema from './worker-schema.ts';
|
|
6
6
|
declare const PersistedSqliteError_base: Schema.TaggedErrorClass<PersistedSqliteError, "PersistedSqliteError", {
|
|
7
7
|
readonly _tag: Schema.tag<"PersistedSqliteError">;
|
|
8
8
|
} & {
|
|
9
9
|
message: typeof Schema.String;
|
|
10
|
-
cause: typeof Schema.Defect
|
|
10
|
+
cause: Schema.optional<typeof Schema.Defect>;
|
|
11
11
|
}>;
|
|
12
12
|
export declare class PersistedSqliteError extends PersistedSqliteError_base {
|
|
13
13
|
}
|
|
14
|
-
export declare const
|
|
14
|
+
export declare const readPersistedStateDbFromClientSession: (args: {
|
|
15
15
|
storageOptions: WorkerSchema.StorageType;
|
|
16
16
|
storeId: string;
|
|
17
17
|
schema: LiveStoreSchema;
|
|
18
|
-
}) => Effect.Effect<Uint8Array<ArrayBuffer
|
|
19
|
-
export declare const resetPersistedDataFromClientSession: (
|
|
18
|
+
}) => Effect.Effect<Uint8Array<ArrayBuffer>, PersistedSqliteError | WebError.UnknownError | WebError.TypeError | WebError.NotFoundError | WebError.NotAllowedError | WebError.TypeMismatchError | WebError.SecurityError | Opfs.OpfsError, Opfs.Opfs>;
|
|
19
|
+
export declare const resetPersistedDataFromClientSession: (args_0: {
|
|
20
20
|
storageOptions: WorkerSchema.StorageType;
|
|
21
21
|
storeId: string;
|
|
22
|
-
}) => Effect.Effect<void,
|
|
23
|
-
export declare const sanitizeOpfsDir: (directory: string | undefined, storeId: string) => string
|
|
22
|
+
}) => Effect.Effect<void, PersistedSqliteError | WebError.UnknownError | WebError.TypeError | WebError.NotAllowedError | WebError.TypeMismatchError | WebError.SecurityError | Opfs.OpfsError | WebError.NoModificationAllowedError | WebError.InvalidModificationError, Opfs.Opfs>;
|
|
23
|
+
export declare const sanitizeOpfsDir: (directory: string | undefined, storeId: string) => Effect.Effect<string, PersistedSqliteError, never>;
|
|
24
24
|
export declare const getStateDbFileName: (schema: LiveStoreSchema) => string;
|
|
25
|
+
export declare const MAX_ARCHIVED_STATE_DBS_IN_DEV = 3;
|
|
26
|
+
export declare const ARCHIVE_DIR_NAME = "archive";
|
|
25
27
|
/**
|
|
26
28
|
* Cleanup old state database files after successful migration.
|
|
27
29
|
* This prevents OPFS file pool capacity from being exhausted by accumulated schema files.
|
|
@@ -29,19 +31,10 @@ export declare const getStateDbFileName: (schema: LiveStoreSchema) => string;
|
|
|
29
31
|
* @param vfs - The AccessHandlePoolVFS instance for safe file operations
|
|
30
32
|
* @param currentSchema - Current schema (to avoid deleting the active database)
|
|
31
33
|
*/
|
|
32
|
-
export declare const cleanupOldStateDbFiles: (
|
|
33
|
-
vfs: WebDatabaseMetadataOpfs[
|
|
34
|
+
export declare const cleanupOldStateDbFiles: (options: {
|
|
35
|
+
vfs: WebDatabaseMetadataOpfs['vfs'];
|
|
34
36
|
currentSchema: LiveStoreSchema;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
readonly _tag: Schema.tag<"SqliteVfsError">;
|
|
38
|
-
} & {
|
|
39
|
-
operation: typeof Schema.String;
|
|
40
|
-
fileName: typeof Schema.String;
|
|
41
|
-
vfsResultCode: Schema.optional<typeof Schema.Number>;
|
|
42
|
-
cause: Schema.optional<typeof Schema.Defect>;
|
|
43
|
-
}>;
|
|
44
|
-
export declare class SqliteVfsError extends SqliteVfsError_base {
|
|
45
|
-
}
|
|
37
|
+
opfsDirectory: string;
|
|
38
|
+
}) => Effect.Effect<void, WebError.AbortError | WebError.DataCloneError | WebError.EvalError | WebError.InvalidModificationError | WebError.InvalidStateError | WebError.NoModificationAllowedError | WebError.NotAllowedError | WebError.NotFoundError | WebError.QuotaExceededError | WebError.RangeError | WebError.ReferenceError | WebError.SecurityError | WebError.TypeError | WebError.TypeMismatchError | WebError.URIError | WebError.UnknownError | Opfs.OpfsError | PersistedSqliteError, Opfs.Opfs>;
|
|
46
39
|
export {};
|
|
47
40
|
//# sourceMappingURL=persisted-sqlite.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persisted-sqlite.d.ts","sourceRoot":"","sources":["../../../src/web-worker/common/persisted-sqlite.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"persisted-sqlite.d.ts","sourceRoot":"","sources":["../../../src/web-worker/common/persisted-sqlite.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,gCAAgC,CAAA;AAEvC,OAAO,EAAS,MAAM,EAA2B,MAAM,EAAU,MAAM,yBAAyB,CAAA;AAChG,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAErE,OAAO,KAAK,KAAK,YAAY,MAAM,oBAAoB,CAAA;;;;;;;AAEvD,qBAAa,oBAAqB,SAAQ,yBAGxC;CAAG;AAEL,eAAO,MAAM,qCAAqC,EAAE,CAAC,IAAI,EAAE;IACzD,cAAc,EAAE,YAAY,CAAC,WAAW,CAAA;IACxC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,eAAe,CAAA;CACxB,KAAK,MAAM,CAAC,MAAM,CACjB,UAAU,CAAC,WAAW,CAAC,EAErB,oBAAoB,GACpB,QAAQ,CAAC,YAAY,GACrB,QAAQ,CAAC,SAAS,GAClB,QAAQ,CAAC,aAAa,GACtB,QAAQ,CAAC,eAAe,GACxB,QAAQ,CAAC,iBAAiB,GAC1B,QAAQ,CAAC,aAAa,GACtB,IAAI,CAAC,SAAS,EAChB,IAAI,CAAC,IAAI,CAmDV,CAAA;AAED,eAAO,MAAM,mCAAmC;oBAGY,YAAY,CAAC,WAAW;aAAW,MAAM;mRAUpG,CAAA;AAED,eAAO,MAAM,eAAe,wGAe1B,CAAA;AAEF,eAAO,MAAM,kBAAkB,GAAI,QAAQ,eAAe,WAIzD,CAAA;AAED,eAAO,MAAM,6BAA6B,IAAI,CAAA;AAC9C,eAAO,MAAM,gBAAgB,YAAY,CAAA;AAEzC;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,CAAC,OAAO,EAAE;IAC7C,GAAG,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAA;IACnC,aAAa,EAAE,eAAe,CAAA;IAC9B,aAAa,EAAE,MAAM,CAAA;CACtB,KAAK,MAAM,CAAC,MAAM,CACjB,IAAI,EAEF,QAAQ,CAAC,UAAU,GACnB,QAAQ,CAAC,cAAc,GACvB,QAAQ,CAAC,SAAS,GAClB,QAAQ,CAAC,wBAAwB,GACjC,QAAQ,CAAC,iBAAiB,GAC1B,QAAQ,CAAC,0BAA0B,GACnC,QAAQ,CAAC,eAAe,GACxB,QAAQ,CAAC,aAAa,GACtB,QAAQ,CAAC,kBAAkB,GAC3B,QAAQ,CAAC,UAAU,GACnB,QAAQ,CAAC,cAAc,GACvB,QAAQ,CAAC,aAAa,GACtB,QAAQ,CAAC,SAAS,GAClB,QAAQ,CAAC,iBAAiB,GAC1B,QAAQ,CAAC,QAAQ,GACjB,QAAQ,CAAC,YAAY,GACrB,IAAI,CAAC,SAAS,GACd,oBAAoB,EACtB,IAAI,CAAC,IAAI,CA4ET,CAAA"}
|