@livestore/adapter-node 0.3.0-dev.32 → 0.3.0-dev.34
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/client-session/adapter.d.ts +44 -0
- package/dist/client-session/adapter.d.ts.map +1 -0
- package/dist/client-session/adapter.js +202 -0
- package/dist/client-session/adapter.js.map +1 -0
- package/dist/client-session/in-memory-adapter.d.ts +145 -10
- package/dist/client-session/in-memory-adapter.d.ts.map +1 -1
- package/dist/client-session/in-memory-adapter.js +6 -7
- package/dist/client-session/in-memory-adapter.js.map +1 -1
- package/dist/client-session/persisted-adapter.d.ts +26 -14
- package/dist/client-session/persisted-adapter.d.ts.map +1 -1
- package/dist/client-session/persisted-adapter.js +81 -24
- package/dist/client-session/persisted-adapter.js.map +1 -1
- package/dist/devtools/devtools-server.d.ts.map +1 -1
- package/dist/devtools/devtools-server.js +3 -1
- package/dist/devtools/devtools-server.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/dist/index.js.map +1 -1
- package/dist/leader-shared.d.ts +29 -0
- package/dist/leader-shared.d.ts.map +1 -0
- package/dist/leader-shared.js +87 -0
- package/dist/leader-shared.js.map +1 -0
- package/dist/leader-thread-lazy.js +4 -0
- package/dist/leader-thread-lazy.js.map +1 -1
- package/dist/leader-thread-shared.d.ts +29 -0
- package/dist/leader-thread-shared.d.ts.map +1 -0
- package/dist/leader-thread-shared.js +88 -0
- package/dist/leader-thread-shared.js.map +1 -0
- package/dist/make-leader-worker.d.ts +5 -1
- package/dist/make-leader-worker.d.ts.map +1 -1
- package/dist/make-leader-worker.js +16 -83
- package/dist/make-leader-worker.js.map +1 -1
- package/dist/webchannel.d.ts.map +1 -1
- package/dist/webchannel.js +13 -3
- package/dist/webchannel.js.map +1 -1
- package/dist/worker-schema.d.ts +35 -19
- package/dist/worker-schema.d.ts.map +1 -1
- package/dist/worker-schema.js +14 -19
- package/dist/worker-schema.js.map +1 -1
- package/package.json +12 -11
- package/src/client-session/{persisted-adapter.ts → adapter.ts} +193 -57
- package/src/devtools/devtools-server.ts +3 -0
- package/src/index.ts +1 -2
- package/src/leader-thread-lazy.ts +5 -0
- package/src/leader-thread-shared.ts +167 -0
- package/src/make-leader-worker.ts +22 -138
- package/src/webchannel.ts +16 -3
- package/src/worker-schema.ts +23 -26
- package/rollup.config.mjs +0 -24
- package/src/client-session/in-memory-adapter.ts +0 -170
- package/tmp/pack.tgz +0 -0
- package/tsconfig.json +0 -17
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { Adapter, SyncOptions } from '@livestore/common';
|
|
2
|
+
import type { TestingOverrides } from '../leader-thread-shared.js';
|
|
3
|
+
import * as WorkerSchema from '../worker-schema.js';
|
|
4
|
+
export interface NodeAdapterOptions {
|
|
5
|
+
storage: WorkerSchema.StorageType;
|
|
6
|
+
/** The default is the hostname of the current machine */
|
|
7
|
+
clientId?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Warning: This adapter doesn't currently support multiple client sessions for the same client (i.e. same storeId + clientId)
|
|
10
|
+
* @default 'static'
|
|
11
|
+
*/
|
|
12
|
+
sessionId?: string;
|
|
13
|
+
devtools?: {
|
|
14
|
+
schemaPath: string;
|
|
15
|
+
/**
|
|
16
|
+
* Where to run the devtools server (via Vite)
|
|
17
|
+
*
|
|
18
|
+
* @default 4242
|
|
19
|
+
*/
|
|
20
|
+
port?: number;
|
|
21
|
+
/**
|
|
22
|
+
* @default 'localhost'
|
|
23
|
+
*/
|
|
24
|
+
host?: string;
|
|
25
|
+
};
|
|
26
|
+
/** Only used internally for testing */
|
|
27
|
+
testing?: {
|
|
28
|
+
overrides?: TestingOverrides;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/** Runs everything in the same thread. Use `makeWorkerAdapter` for multi-threaded implementation. */
|
|
32
|
+
export declare const makeAdapter: ({ sync, ...options }: NodeAdapterOptions & {
|
|
33
|
+
sync?: SyncOptions;
|
|
34
|
+
}) => Adapter;
|
|
35
|
+
/**
|
|
36
|
+
* Runs persistence and syncing in a worker thread.
|
|
37
|
+
*/
|
|
38
|
+
export declare const makeWorkerAdapter: ({ workerUrl, ...options }: NodeAdapterOptions & {
|
|
39
|
+
/**
|
|
40
|
+
* Example: `new URL('./livestore.worker.js', import.meta.url)`
|
|
41
|
+
*/
|
|
42
|
+
workerUrl: URL;
|
|
43
|
+
}) => Adapter;
|
|
44
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/client-session/adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,OAAO,EAOP,WAAW,EACZ,MAAM,mBAAmB,CAAA;AAwB1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAGlE,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAA;AAEnD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,YAAY,CAAC,WAAW,CAAA;IACjC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,QAAQ,CAAC,EAAE;QACT,UAAU,EAAE,MAAM,CAAA;QAClB;;;;WAIG;QACH,IAAI,CAAC,EAAE,MAAM,CAAA;QACb;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IAED,uCAAuC;IACvC,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,gBAAgB,CAAA;KAC7B,CAAA;CACF;AAED,qGAAqG;AACrG,eAAO,MAAM,WAAW,GAAI,sBAGzB,kBAAkB,GAAG;IACtB,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB,KAAG,OAA2F,CAAA;AAE/F;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,2BAG/B,kBAAkB,GAAG;IACtB;;OAEG;IACH,SAAS,EAAE,GAAG,CAAA;CACf,KAAG,OAA+F,CAAA"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { hostname } from 'node:os';
|
|
2
|
+
import * as WT from 'node:worker_threads';
|
|
3
|
+
import { Devtools, UnexpectedError } from '@livestore/common';
|
|
4
|
+
import { Eventlog, LeaderThreadCtx } from '@livestore/common/leader-thread';
|
|
5
|
+
import { LiveStoreEvent } from '@livestore/common/schema';
|
|
6
|
+
import * as DevtoolsNode from '@livestore/devtools-node-common/web-channel';
|
|
7
|
+
import { loadSqlite3Wasm } from '@livestore/sqlite-wasm/load-wasm';
|
|
8
|
+
import { sqliteDbFactory } from '@livestore/sqlite-wasm/node';
|
|
9
|
+
import { Cause, Effect, FetchHttpClient, Fiber, Layer, ParseResult, Queue, Schema, Stream, SubscriptionRef, Worker, WorkerError, } from '@livestore/utils/effect';
|
|
10
|
+
import { PlatformNode } from '@livestore/utils/node';
|
|
11
|
+
import { makeLeaderThread } from '../leader-thread-shared.js';
|
|
12
|
+
import { makeShutdownChannel } from '../shutdown-channel.js';
|
|
13
|
+
import * as WorkerSchema from '../worker-schema.js';
|
|
14
|
+
/** Runs everything in the same thread. Use `makeWorkerAdapter` for multi-threaded implementation. */
|
|
15
|
+
export const makeAdapter = ({ sync, ...options }) => makeAdapterImpl({ ...options, leaderThread: { _tag: 'single-threaded', sync } });
|
|
16
|
+
/**
|
|
17
|
+
* Runs persistence and syncing in a worker thread.
|
|
18
|
+
*/
|
|
19
|
+
export const makeWorkerAdapter = ({ workerUrl, ...options }) => makeAdapterImpl({ ...options, leaderThread: { _tag: 'multi-threaded', workerUrl } });
|
|
20
|
+
const makeAdapterImpl = ({ storage, devtools: devtoolsOptionsInput, clientId = hostname(),
|
|
21
|
+
// TODO make this dynamic and actually support multiple sessions
|
|
22
|
+
sessionId = 'static', testing, leaderThread: leaderThreadInput, }) => (({ storeId, devtoolsEnabled, shutdown, connectDevtoolsToStore, bootStatusQueue, syncPayload, schema }) => Effect.gen(function* () {
|
|
23
|
+
yield* Queue.offer(bootStatusQueue, { stage: 'loading' });
|
|
24
|
+
const sqlite3 = yield* Effect.promise(() => loadSqlite3Wasm());
|
|
25
|
+
const makeSqliteDb = yield* sqliteDbFactory({ sqlite3 });
|
|
26
|
+
// TODO consider bringing back happy-path initialisation boost
|
|
27
|
+
// const fileData = yield* fs.readFile(dbFilePath).pipe(Effect.either)
|
|
28
|
+
// if (fileData._tag === 'Right') {
|
|
29
|
+
// syncInMemoryDb.import(fileData.right)
|
|
30
|
+
// } else {
|
|
31
|
+
// yield* Effect.logWarning('Failed to load database file', fileData.left)
|
|
32
|
+
// }
|
|
33
|
+
if (leaderThreadInput._tag === 'multi-threaded') {
|
|
34
|
+
// TODO make static import again once BroadcastChannel is stable in Deno
|
|
35
|
+
//
|
|
36
|
+
// const { makeShutdownChannel } = yield* Effect.promise(() => import('../shutdown-channel.js'))
|
|
37
|
+
const shutdownChannel = yield* makeShutdownChannel(storeId);
|
|
38
|
+
yield* shutdownChannel.listen.pipe(Stream.flatten(), Stream.tap((error) => Effect.sync(() => shutdown(Cause.fail(error)))), Stream.runDrain, Effect.interruptible, Effect.tapCauseLogPretty, Effect.forkScoped);
|
|
39
|
+
}
|
|
40
|
+
const syncInMemoryDb = yield* makeSqliteDb({ _tag: 'in-memory' }).pipe(Effect.orDie);
|
|
41
|
+
// TODO actually implement this multi-session support
|
|
42
|
+
const lockStatus = yield* SubscriptionRef.make('has-lock');
|
|
43
|
+
const devtoolsOptions = devtoolsEnabled && devtoolsOptionsInput !== undefined
|
|
44
|
+
? {
|
|
45
|
+
enabled: true,
|
|
46
|
+
schemaPath: devtoolsOptionsInput.schemaPath,
|
|
47
|
+
port: devtoolsOptionsInput.port ?? 4242,
|
|
48
|
+
host: devtoolsOptionsInput.host ?? 'localhost',
|
|
49
|
+
}
|
|
50
|
+
: { enabled: false };
|
|
51
|
+
const { leaderThread, initialSnapshot } = leaderThreadInput._tag === 'single-threaded'
|
|
52
|
+
? yield* makeLocalLeaderThread({
|
|
53
|
+
storeId,
|
|
54
|
+
clientId,
|
|
55
|
+
schema,
|
|
56
|
+
makeSqliteDb,
|
|
57
|
+
syncOptions: leaderThreadInput.sync,
|
|
58
|
+
syncPayload,
|
|
59
|
+
devtools: devtoolsOptions,
|
|
60
|
+
storage,
|
|
61
|
+
testing,
|
|
62
|
+
}).pipe(UnexpectedError.mapToUnexpectedError)
|
|
63
|
+
: yield* makeWorkerLeaderThread({
|
|
64
|
+
shutdown,
|
|
65
|
+
storeId,
|
|
66
|
+
clientId,
|
|
67
|
+
sessionId,
|
|
68
|
+
workerUrl: leaderThreadInput.workerUrl,
|
|
69
|
+
storage,
|
|
70
|
+
devtools: devtoolsOptions,
|
|
71
|
+
bootStatusQueue,
|
|
72
|
+
syncPayload,
|
|
73
|
+
});
|
|
74
|
+
syncInMemoryDb.import(initialSnapshot);
|
|
75
|
+
if (devtoolsOptions.enabled) {
|
|
76
|
+
yield* Effect.gen(function* () {
|
|
77
|
+
const webmeshNode = yield* DevtoolsNode.makeNodeDevtoolsConnectedMeshNode({
|
|
78
|
+
url: `ws://${devtoolsOptions.host}:${devtoolsOptions.port}`,
|
|
79
|
+
nodeName: `client-session-${storeId}-${clientId}-${sessionId}`,
|
|
80
|
+
});
|
|
81
|
+
const sessionsChannel = yield* webmeshNode.makeBroadcastChannel({
|
|
82
|
+
channelName: 'session-info',
|
|
83
|
+
schema: Devtools.SessionInfo.Message,
|
|
84
|
+
});
|
|
85
|
+
yield* Devtools.SessionInfo.provideSessionInfo({
|
|
86
|
+
webChannel: sessionsChannel,
|
|
87
|
+
sessionInfo: Devtools.SessionInfo.SessionInfo.make({ storeId, clientId, sessionId }),
|
|
88
|
+
}).pipe(Effect.tapCauseLogPretty, Effect.forkScoped);
|
|
89
|
+
const storeDevtoolsChannel = yield* DevtoolsNode.makeChannelForConnectedMeshNode({
|
|
90
|
+
node: webmeshNode,
|
|
91
|
+
target: `devtools-${storeId}-${clientId}-${sessionId}`,
|
|
92
|
+
schema: { listen: Devtools.ClientSession.MessageToApp, send: Devtools.ClientSession.MessageFromApp },
|
|
93
|
+
});
|
|
94
|
+
yield* connectDevtoolsToStore(storeDevtoolsChannel);
|
|
95
|
+
}).pipe(Effect.tapCauseLogPretty, Effect.withSpan('@livestore/adapter-node:client-session:devtools'), Effect.forkScoped);
|
|
96
|
+
}
|
|
97
|
+
const devtools = devtoolsEnabled
|
|
98
|
+
? { enabled: true, pullLatch: yield* Effect.makeLatch(true), pushLatch: yield* Effect.makeLatch(true) }
|
|
99
|
+
: { enabled: false };
|
|
100
|
+
const clientSession = {
|
|
101
|
+
sqliteDb: syncInMemoryDb,
|
|
102
|
+
leaderThread,
|
|
103
|
+
devtools,
|
|
104
|
+
lockStatus,
|
|
105
|
+
clientId,
|
|
106
|
+
sessionId,
|
|
107
|
+
shutdown,
|
|
108
|
+
};
|
|
109
|
+
return clientSession;
|
|
110
|
+
}).pipe(Effect.withSpan('@livestore/adapter-node:adapter'), Effect.parallelFinalizers, Effect.provide(PlatformNode.NodeFileSystem.layer), Effect.provide(FetchHttpClient.layer)));
|
|
111
|
+
const makeLocalLeaderThread = ({ storeId, clientId, schema, makeSqliteDb, syncOptions, syncPayload, storage, devtools, testing, }) => Effect.gen(function* () {
|
|
112
|
+
const layer = yield* Layer.build(makeLeaderThread({
|
|
113
|
+
storeId,
|
|
114
|
+
clientId,
|
|
115
|
+
schema,
|
|
116
|
+
syncOptions,
|
|
117
|
+
storage,
|
|
118
|
+
syncPayload,
|
|
119
|
+
devtools,
|
|
120
|
+
makeSqliteDb,
|
|
121
|
+
testing: testing?.overrides,
|
|
122
|
+
}).pipe(Layer.unwrapScoped));
|
|
123
|
+
return yield* Effect.gen(function* () {
|
|
124
|
+
const { dbState, dbEventlog, syncProcessor, extraIncomingMessagesQueue, initialState } = yield* LeaderThreadCtx;
|
|
125
|
+
const initialLeaderHead = Eventlog.getClientHeadFromDb(dbEventlog);
|
|
126
|
+
const leaderThread = {
|
|
127
|
+
events: {
|
|
128
|
+
pull: testing?.overrides?.clientSession?.leaderThreadProxy?.events?.pull ??
|
|
129
|
+
(({ cursor }) => syncProcessor.pull({ cursor })),
|
|
130
|
+
push: (batch) => syncProcessor.push(batch.map((item) => new LiveStoreEvent.EncodedWithMeta(item)), { waitForProcessing: true }),
|
|
131
|
+
},
|
|
132
|
+
initialState: { leaderHead: initialLeaderHead, migrationsReport: initialState.migrationsReport },
|
|
133
|
+
export: Effect.sync(() => dbState.export()),
|
|
134
|
+
getEventlogData: Effect.sync(() => dbEventlog.export()),
|
|
135
|
+
getSyncState: syncProcessor.syncState,
|
|
136
|
+
sendDevtoolsMessage: (message) => extraIncomingMessagesQueue.offer(message),
|
|
137
|
+
};
|
|
138
|
+
const initialSnapshot = dbState.export();
|
|
139
|
+
return { leaderThread, initialSnapshot };
|
|
140
|
+
}).pipe(Effect.provide(layer));
|
|
141
|
+
});
|
|
142
|
+
const makeWorkerLeaderThread = ({ shutdown, storeId, clientId, sessionId, workerUrl, storage, devtools, bootStatusQueue, syncPayload, testing, }) => Effect.gen(function* () {
|
|
143
|
+
const nodeWorker = new WT.Worker(workerUrl, {
|
|
144
|
+
execArgv: process.env.DEBUG_WORKER ? ['--inspect --enable-source-maps'] : ['--enable-source-maps'],
|
|
145
|
+
argv: [Schema.encodeSync(WorkerSchema.WorkerArgv)({ storeId, clientId, sessionId })],
|
|
146
|
+
});
|
|
147
|
+
const nodeWorkerLayer = yield* Layer.build(PlatformNode.NodeWorker.layer(() => nodeWorker));
|
|
148
|
+
const worker = yield* Worker.makePoolSerialized({
|
|
149
|
+
size: 1,
|
|
150
|
+
concurrency: 100,
|
|
151
|
+
initialMessage: () => new WorkerSchema.LeaderWorkerInner.InitialMessage({
|
|
152
|
+
storeId,
|
|
153
|
+
clientId,
|
|
154
|
+
storage,
|
|
155
|
+
devtools,
|
|
156
|
+
syncPayload,
|
|
157
|
+
}),
|
|
158
|
+
}).pipe(Effect.provide(nodeWorkerLayer), UnexpectedError.mapToUnexpectedError, Effect.tapErrorCause((cause) => Effect.sync(() => shutdown(cause))), Effect.withSpan('@livestore/adapter-node:adapter:setupLeaderThread'));
|
|
159
|
+
yield* Effect.addFinalizer(() => Effect.gen(function* () {
|
|
160
|
+
// We first try to gracefully shutdown the leader worker and then forcefully terminate it
|
|
161
|
+
yield* Effect.raceFirst(runInWorker(new WorkerSchema.LeaderWorkerInner.Shutdown()).pipe(Effect.andThen(() => nodeWorker.terminate())), Effect.sync(() => {
|
|
162
|
+
console.warn('[@livestore/adapter-node:adapter] Worker did not gracefully shutdown in time, terminating it');
|
|
163
|
+
nodeWorker.terminate();
|
|
164
|
+
}).pipe(Effect.delay(1000))).pipe(Effect.exit); // The disconnect is to prevent the interrupt to bubble out
|
|
165
|
+
}).pipe(Effect.withSpan('@livestore/adapter-node:adapter:shutdown'), Effect.tapCauseLogPretty, Effect.orDie));
|
|
166
|
+
const runInWorker = (req) => worker.executeEffect(req).pipe(Effect.logWarnIfTakesLongerThan({
|
|
167
|
+
label: `@livestore/adapter-node:client-session:runInWorker:${req._tag}`,
|
|
168
|
+
duration: 2000,
|
|
169
|
+
}), Effect.withSpan(`@livestore/adapter-node:client-session:runInWorker:${req._tag}`), Effect.mapError((cause) => Schema.is(UnexpectedError)(cause)
|
|
170
|
+
? cause
|
|
171
|
+
: ParseResult.isParseError(cause) || Schema.is(WorkerError.WorkerError)(cause)
|
|
172
|
+
? new UnexpectedError({ cause })
|
|
173
|
+
: cause), Effect.catchAllDefect((cause) => new UnexpectedError({ cause })));
|
|
174
|
+
const runInWorkerStream = (req) => worker.execute(req).pipe(Stream.mapError((cause) => Schema.is(UnexpectedError)(cause)
|
|
175
|
+
? cause
|
|
176
|
+
: ParseResult.isParseError(cause) || Schema.is(WorkerError.WorkerError)(cause)
|
|
177
|
+
? new UnexpectedError({ cause })
|
|
178
|
+
: cause), Stream.withSpan(`@livestore/adapter-node:client-session:runInWorkerStream:${req._tag}`));
|
|
179
|
+
const bootStatusFiber = yield* runInWorkerStream(new WorkerSchema.LeaderWorkerInner.BootStatusStream()).pipe(Stream.tap((bootStatus) => Queue.offer(bootStatusQueue, bootStatus)), Stream.runDrain, Effect.tapErrorCause((cause) => Cause.isInterruptedOnly(cause) ? Effect.void : Effect.sync(() => shutdown(cause))), Effect.interruptible, Effect.tapCauseLogPretty, Effect.forkScoped);
|
|
180
|
+
yield* Queue.awaitShutdown(bootStatusQueue).pipe(Effect.andThen(Fiber.interrupt(bootStatusFiber)), Effect.tapCauseLogPretty, Effect.forkScoped);
|
|
181
|
+
const initialLeaderHead = yield* runInWorker(new WorkerSchema.LeaderWorkerInner.GetLeaderHead());
|
|
182
|
+
const bootResult = yield* runInWorker(new WorkerSchema.LeaderWorkerInner.GetRecreateSnapshot()).pipe(Effect.timeout(10_000), UnexpectedError.mapToUnexpectedError, Effect.withSpan('@livestore/adapter-node:client-session:export'));
|
|
183
|
+
const leaderThread = {
|
|
184
|
+
events: {
|
|
185
|
+
pull: testing?.overrides?.clientSession?.leaderThreadProxy?.events?.pull ??
|
|
186
|
+
(({ cursor }) => runInWorkerStream(new WorkerSchema.LeaderWorkerInner.PullStream({ cursor })).pipe(Stream.orDie)),
|
|
187
|
+
push: (batch) => runInWorker(new WorkerSchema.LeaderWorkerInner.PushToLeader({ batch })).pipe(Effect.withSpan('@livestore/adapter-node:client-session:pushToLeader', {
|
|
188
|
+
attributes: { batchSize: batch.length },
|
|
189
|
+
})),
|
|
190
|
+
},
|
|
191
|
+
initialState: {
|
|
192
|
+
leaderHead: initialLeaderHead,
|
|
193
|
+
migrationsReport: bootResult.migrationsReport,
|
|
194
|
+
},
|
|
195
|
+
export: runInWorker(new WorkerSchema.LeaderWorkerInner.Export()).pipe(Effect.timeout(10_000), UnexpectedError.mapToUnexpectedError, Effect.withSpan('@livestore/adapter-node:client-session:export')),
|
|
196
|
+
getEventlogData: Effect.dieMessage('Not implemented'),
|
|
197
|
+
getSyncState: runInWorker(new WorkerSchema.LeaderWorkerInner.GetLeaderSyncState()).pipe(UnexpectedError.mapToUnexpectedError, Effect.withSpan('@livestore/adapter-node:client-session:getLeaderSyncState')),
|
|
198
|
+
sendDevtoolsMessage: (message) => runInWorker(new WorkerSchema.LeaderWorkerInner.ExtraDevtoolsMessage({ message })).pipe(UnexpectedError.mapToUnexpectedError, Effect.withSpan('@livestore/adapter-node:client-session:devtoolsMessageForLeader')),
|
|
199
|
+
};
|
|
200
|
+
return { leaderThread, initialSnapshot: bootResult.snapshot };
|
|
201
|
+
});
|
|
202
|
+
//# sourceMappingURL=adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/client-session/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAClC,OAAO,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAYzC,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAE3E,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,YAAY,MAAM,6CAA6C,CAAA;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,EACL,KAAK,EACL,MAAM,EACN,eAAe,EACf,KAAK,EACL,KAAK,EACL,WAAW,EACX,KAAK,EACL,MAAM,EACN,MAAM,EACN,eAAe,EACf,MAAM,EACN,WAAW,GACZ,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAGpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAA;AAgCnD,qGAAqG;AACrG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAC1B,IAAI,EACJ,GAAG,OAAO,EAGX,EAAW,EAAE,CAAC,eAAe,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAA;AAE/F;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,SAAS,EACT,GAAG,OAAO,EAMX,EAAW,EAAE,CAAC,eAAe,CAAC,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;AAEnG,MAAM,eAAe,GAAG,CAAC,EACvB,OAAO,EACP,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,GAAG,QAAQ,EAAE;AACrB,gEAAgE;AAChE,SAAS,GAAG,QAAQ,EACpB,OAAO,EACP,YAAY,EAAE,iBAAiB,GAWhC,EAAW,EAAE,CACZ,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,sBAAsB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,CACxG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;IAEzD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAA;IAC9D,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IAExD,8DAA8D;IAC9D,sEAAsE;IACtE,mCAAmC;IACnC,0CAA0C;IAC1C,WAAW;IACX,4EAA4E;IAC5E,IAAI;IAEJ,IAAI,iBAAiB,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAChD,wEAAwE;QACxE,EAAE;QACF,gGAAgG;QAChG,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAA;QAE3D,KAAK,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAChC,MAAM,CAAC,OAAO,EAAE,EAChB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EACrE,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,UAAU,CAClB,CAAA;IACH,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAEpF,qDAAqD;IACrD,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,eAAe,CAAC,IAAI,CAAa,UAAU,CAAC,CAAA;IAEtE,MAAM,eAAe,GACnB,eAAe,IAAI,oBAAoB,KAAK,SAAS;QACnD,CAAC,CAAC;YACE,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,oBAAoB,CAAC,UAAU;YAC3C,IAAI,EAAE,oBAAoB,CAAC,IAAI,IAAI,IAAI;YACvC,IAAI,EAAE,oBAAoB,CAAC,IAAI,IAAI,WAAW;SAC/C;QACH,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAExB,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GACrC,iBAAiB,CAAC,IAAI,KAAK,iBAAiB;QAC1C,CAAC,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC;YAC3B,OAAO;YACP,QAAQ;YACR,MAAM;YACN,YAAY;YACZ,WAAW,EAAE,iBAAiB,CAAC,IAAI;YACnC,WAAW;YACX,QAAQ,EAAE,eAAe;YACzB,OAAO;YACP,OAAO;SACR,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC;QAC/C,CAAC,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC;YAC5B,QAAQ;YACR,OAAO;YACP,QAAQ;YACR,SAAS;YACT,SAAS,EAAE,iBAAiB,CAAC,SAAS;YACtC,OAAO;YACP,QAAQ,EAAE,eAAe;YACzB,eAAe;YACf,WAAW;SACZ,CAAC,CAAA;IAER,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;IAEtC,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;QAC5B,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzB,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,iCAAiC,CAAC;gBACxE,GAAG,EAAE,QAAQ,eAAe,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,EAAE;gBAC3D,QAAQ,EAAE,kBAAkB,OAAO,IAAI,QAAQ,IAAI,SAAS,EAAE;aAC/D,CAAC,CAAA;YAEF,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC;gBAC9D,WAAW,EAAE,cAAc;gBAC3B,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,OAAO;aACrC,CAAC,CAAA;YAEF,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,kBAAkB,CAAC;gBAC7C,UAAU,EAAE,eAAe;gBAC3B,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;aACrF,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;YAEpD,MAAM,oBAAoB,GAAG,KAAK,CAAC,CAAC,YAAY,CAAC,+BAA+B,CAAC;gBAC/E,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,YAAY,OAAO,IAAI,QAAQ,IAAI,SAAS,EAAE;gBACtD,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE;aACrG,CAAC,CAAA;YAEF,KAAK,CAAC,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAA;QACrD,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,QAAQ,CAAC,iDAAiD,CAAC,EAClE,MAAM,CAAC,UAAU,CAClB,CAAA;IACH,CAAC;IAED,MAAM,QAAQ,GAA8B,eAAe;QACzD,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QACvG,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAEtB,MAAM,aAAa,GAAG;QACpB,QAAQ,EAAE,cAAc;QACxB,YAAY;QACZ,QAAQ;QACR,UAAU;QACV,QAAQ;QACR,SAAS;QACT,QAAQ;KACe,CAAA;IAEzB,OAAO,aAAa,CAAA;AACtB,CAAC,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,QAAQ,CAAC,iCAAiC,CAAC,EAClD,MAAM,CAAC,kBAAkB,EACzB,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,EACjD,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CACtC,CAAmB,CAAA;AAExB,MAAM,qBAAqB,GAAG,CAAC,EAC7B,OAAO,EACP,QAAQ,EACR,MAAM,EACN,YAAY,EACZ,WAAW,EACX,WAAW,EACX,OAAO,EACP,QAAQ,EACR,OAAO,GAaR,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAC9B,gBAAgB,CAAC;QACf,OAAO;QACP,QAAQ;QACR,MAAM;QACN,WAAW;QACX,OAAO;QACP,WAAW;QACX,QAAQ;QACR,YAAY;QACZ,OAAO,EAAE,OAAO,EAAE,SAAS;KAC5B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAC5B,CAAA;IAED,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAChC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,0BAA0B,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,CAAC,eAAe,CAAA;QAE/G,MAAM,iBAAiB,GAAG,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAA;QAElE,MAAM,YAAY,GAAG;YACnB,MAAM,EAAE;gBACN,IAAI,EACF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI;oBAClE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;gBAClD,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,aAAa,CAAC,IAAI,CAChB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,EAC7D,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAC5B;aACJ;YACD,YAAY,EAAE,EAAE,UAAU,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,YAAY,CAAC,gBAAgB,EAAE;YAChG,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC3C,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvD,YAAY,EAAE,aAAa,CAAC,SAAS;YACrC,mBAAmB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,0BAA0B,CAAC,KAAK,CAAC,OAAO,CAAC;SACnC,CAAA;QAE1C,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;QAExC,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,CAAA;IAC1C,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;AAChC,CAAC,CAAC,CAAA;AAEJ,MAAM,sBAAsB,GAAG,CAAC,EAC9B,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,SAAS,EACT,SAAS,EACT,OAAO,EACP,QAAQ,EACR,eAAe,EACf,WAAW,EACX,OAAO,GAcR,EAAE,EAAE,CACH,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,UAAU,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE;QAC1C,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC;QAClG,IAAI,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;KACrF,CAAC,CAAA;IACF,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAE3F,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAqD;QAClG,IAAI,EAAE,CAAC;QACP,WAAW,EAAE,GAAG;QAChB,cAAc,EAAE,GAAG,EAAE,CACnB,IAAI,YAAY,CAAC,iBAAiB,CAAC,cAAc,CAAC;YAChD,OAAO;YACP,QAAQ;YACR,OAAO;YACP,QAAQ;YACR,WAAW;SACZ,CAAC;KACL,CAAC,CAAC,IAAI,CACL,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAC/B,eAAe,CAAC,oBAAoB,EACpC,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EACnE,MAAM,CAAC,QAAQ,CAAC,mDAAmD,CAAC,CACrE,CAAA;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAC9B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,yFAAyF;QACzF,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CACrB,WAAW,CAAC,IAAI,YAAY,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,CAAC,EAE7G,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;YACf,OAAO,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAA;YAC5G,UAAU,CAAC,SAAS,EAAE,CAAA;QACxB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAC5B,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,CAAC,2DAA2D;IACjF,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,0CAA0C,CAAC,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,KAAK,CAAC,CAC7G,CAAA;IAED,MAAM,WAAW,GAAG,CAClB,GAAS,EAGD,EAAE,CACT,MAAM,CAAC,aAAa,CAAC,GAAG,CAAS,CAAC,IAAI,CACrC,MAAM,CAAC,wBAAwB,CAAC;QAC9B,KAAK,EAAE,sDAAsD,GAAG,CAAC,IAAI,EAAE;QACvE,QAAQ,EAAE,IAAI;KACf,CAAC,EACF,MAAM,CAAC,QAAQ,CAAC,sDAAsD,GAAG,CAAC,IAAI,EAAE,CAAC,EACjF,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC;QAC/B,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;YAC5E,CAAC,CAAC,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC;YAChC,CAAC,CAAC,KAAK,CACZ,EACD,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAC1D,CAAA;IAEV,MAAM,iBAAiB,GAAG,CACxB,GAAS,EAGD,EAAE,CACV,MAAM,CAAC,OAAO,CAAC,GAAU,CAAC,CAAC,IAAI,CAC7B,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC;QAC/B,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;YAC5E,CAAC,CAAC,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC;YAChC,CAAC,CAAC,KAAK,CACZ,EACD,MAAM,CAAC,QAAQ,CAAC,4DAA4D,GAAG,CAAC,IAAI,EAAE,CAAC,CACjF,CAAA;IAEV,MAAM,eAAe,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC,IAAI,YAAY,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAC1G,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC,EACpE,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,EAAE,CAC7B,KAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAClF,EACD,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,UAAU,CAClB,CAAA;IAED,KAAK,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,IAAI,CAC9C,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,EAChD,MAAM,CAAC,iBAAiB,EACxB,MAAM,CAAC,UAAU,CAClB,CAAA;IAED,MAAM,iBAAiB,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC,CAAA;IAEhG,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,iBAAiB,CAAC,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAClG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EACtB,eAAe,CAAC,oBAAoB,EACpC,MAAM,CAAC,QAAQ,CAAC,+CAA+C,CAAC,CACjE,CAAA;IAED,MAAM,YAAY,GAAG;QACnB,MAAM,EAAE;YACN,IAAI,EACF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI;gBAClE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CACd,iBAAiB,CAAC,IAAI,YAAY,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACpG,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,WAAW,CAAC,IAAI,YAAY,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAC1E,MAAM,CAAC,QAAQ,CAAC,qDAAqD,EAAE;gBACrE,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE;aACxC,CAAC,CACH;SACJ;QACD,YAAY,EAAE;YACZ,UAAU,EAAE,iBAAiB;YAC7B,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;SAC9C;QACD,MAAM,EAAE,WAAW,CAAC,IAAI,YAAY,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CACnE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EACtB,eAAe,CAAC,oBAAoB,EACpC,MAAM,CAAC,QAAQ,CAAC,+CAA+C,CAAC,CACjE;QACD,eAAe,EAAE,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC;QACrD,YAAY,EAAE,WAAW,CAAC,IAAI,YAAY,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CACrF,eAAe,CAAC,oBAAoB,EACpC,MAAM,CAAC,QAAQ,CAAC,2DAA2D,CAAC,CAC7E;QACD,mBAAmB,EAAE,CAAC,OAAO,EAAE,EAAE,CAC/B,WAAW,CAAC,IAAI,YAAY,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CACpF,eAAe,CAAC,oBAAoB,EACpC,MAAM,CAAC,QAAQ,CAAC,iEAAiE,CAAC,CACnF;KACqC,CAAA;IAE1C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAA;AAC/D,CAAC,CAAC,CAAA"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import type { Adapter,
|
|
1
|
+
import type { Adapter, MakeSqliteDb, SyncOptions } from '@livestore/common';
|
|
2
2
|
import { UnexpectedError } from '@livestore/common';
|
|
3
|
-
import {
|
|
3
|
+
import type { LiveStoreSchema } from '@livestore/common/schema';
|
|
4
|
+
import { LiveStoreEvent } from '@livestore/common/schema';
|
|
5
|
+
import type { Schema } from '@livestore/utils/effect';
|
|
6
|
+
import { Effect, Stream } from '@livestore/utils/effect';
|
|
7
|
+
import type { TestingOverrides } from '../leader-shared.js';
|
|
4
8
|
export interface InMemoryAdapterOptions {
|
|
5
9
|
sync?: SyncOptions;
|
|
6
10
|
/**
|
|
@@ -16,14 +20,145 @@ export interface InMemoryAdapterOptions {
|
|
|
16
20
|
overrides?: TestingOverrides;
|
|
17
21
|
};
|
|
18
22
|
}
|
|
19
|
-
export
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
export declare const makeInMemoryAdapter: ({ sync: syncOptions, clientId, sessionId, testing }: InMemoryAdapterOptions) => Adapter;
|
|
24
|
+
export declare const makeInMemoryLeaderThread: ({ storeId, clientId, schema, makeSqliteDb, syncOptions, syncPayload, testing, }: {
|
|
25
|
+
storeId: string;
|
|
26
|
+
clientId: string;
|
|
27
|
+
schema: LiveStoreSchema;
|
|
28
|
+
makeSqliteDb: MakeSqliteDb;
|
|
29
|
+
syncOptions: SyncOptions | undefined;
|
|
30
|
+
syncPayload: Schema.JsonValue | undefined;
|
|
31
|
+
testing?: {
|
|
32
|
+
overrides?: TestingOverrides;
|
|
22
33
|
};
|
|
23
|
-
|
|
24
|
-
|
|
34
|
+
}) => Effect.Effect<{
|
|
35
|
+
leaderThread: {
|
|
36
|
+
events: {
|
|
37
|
+
pull: (args: {
|
|
38
|
+
cursor: import("@livestore/common").LeaderPullCursor;
|
|
39
|
+
}) => Stream.Stream<{
|
|
40
|
+
payload: {
|
|
41
|
+
readonly _tag: "upstream-rebase";
|
|
42
|
+
readonly rollbackEvents: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
43
|
+
readonly newEvents: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
44
|
+
} | {
|
|
45
|
+
readonly _tag: "upstream-advance";
|
|
46
|
+
readonly newEvents: readonly LiveStoreEvent.EncodedWithMeta[];
|
|
47
|
+
};
|
|
48
|
+
mergeCounter: number;
|
|
49
|
+
}, UnexpectedError>;
|
|
50
|
+
push: (batch: readonly LiveStoreEvent.AnyEncoded[]) => Effect.Effect<void, import("@livestore/common").LeaderAheadError, never>;
|
|
51
|
+
};
|
|
52
|
+
initialState: {
|
|
53
|
+
leaderHead: import("@livestore/common/dist/schema/EventId.js").EventId;
|
|
54
|
+
migrationsReport: {
|
|
55
|
+
readonly migrations: readonly {
|
|
56
|
+
readonly tableName: string;
|
|
57
|
+
readonly hashes: {
|
|
58
|
+
readonly expected: number;
|
|
59
|
+
readonly actual?: number | undefined;
|
|
60
|
+
};
|
|
61
|
+
}[];
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
export: Effect.Effect<Uint8Array<ArrayBufferLike>, never, never>;
|
|
65
|
+
getEventlogData: Effect.Effect<Uint8Array<ArrayBufferLike>, never, never>;
|
|
66
|
+
getSyncState: import("@livestore/utils/dist/effect/Subscribable.js").Subscribable<import("@livestore/common/dist/sync/syncstate.js").SyncState, never, never>;
|
|
67
|
+
sendDevtoolsMessage: (message: {
|
|
68
|
+
readonly clientId: string;
|
|
69
|
+
readonly _tag: "LSD.Leader.SnapshotReq";
|
|
70
|
+
readonly liveStoreVersion: "0.3.0-dev.33";
|
|
71
|
+
readonly requestId: string;
|
|
72
|
+
} | {
|
|
73
|
+
readonly clientId: string;
|
|
74
|
+
readonly _tag: "LSD.Leader.EventlogReq";
|
|
75
|
+
readonly liveStoreVersion: "0.3.0-dev.33";
|
|
76
|
+
readonly requestId: string;
|
|
77
|
+
} | {
|
|
78
|
+
readonly clientId: string;
|
|
79
|
+
readonly _tag: "LSD.Leader.NetworkStatusSubscribe";
|
|
80
|
+
readonly liveStoreVersion: "0.3.0-dev.33";
|
|
81
|
+
readonly requestId: string;
|
|
82
|
+
readonly subscriptionId: string;
|
|
83
|
+
} | {
|
|
84
|
+
readonly clientId: string;
|
|
85
|
+
readonly _tag: "LSD.Leader.NetworkStatusUnsubscribe";
|
|
86
|
+
readonly liveStoreVersion: "0.3.0-dev.33";
|
|
87
|
+
readonly requestId: string;
|
|
88
|
+
readonly subscriptionId: string;
|
|
89
|
+
} | {
|
|
90
|
+
readonly clientId: string;
|
|
91
|
+
readonly _tag: "LSD.Leader.Disconnect";
|
|
92
|
+
readonly liveStoreVersion: "0.3.0-dev.33";
|
|
93
|
+
readonly requestId: string;
|
|
94
|
+
} | {
|
|
95
|
+
readonly clientId: string;
|
|
96
|
+
readonly _tag: "LSD.Leader.CommitEventReq";
|
|
97
|
+
readonly liveStoreVersion: "0.3.0-dev.33";
|
|
98
|
+
readonly requestId: string;
|
|
99
|
+
readonly eventEncoded: {
|
|
100
|
+
readonly name: string;
|
|
101
|
+
readonly args: any;
|
|
102
|
+
};
|
|
103
|
+
} | {
|
|
104
|
+
readonly clientId: string;
|
|
105
|
+
readonly _tag: "LSD.Leader.Ping";
|
|
106
|
+
readonly liveStoreVersion: "0.3.0-dev.33";
|
|
107
|
+
readonly requestId: string;
|
|
108
|
+
} | {
|
|
109
|
+
readonly clientId: string;
|
|
110
|
+
readonly _tag: "LSD.Leader.DatabaseFileInfoReq";
|
|
111
|
+
readonly liveStoreVersion: "0.3.0-dev.33";
|
|
112
|
+
readonly requestId: string;
|
|
113
|
+
} | {
|
|
114
|
+
readonly clientId: string;
|
|
115
|
+
readonly _tag: "LSD.Leader.SyncHistorySubscribe";
|
|
116
|
+
readonly liveStoreVersion: "0.3.0-dev.33";
|
|
117
|
+
readonly requestId: string;
|
|
118
|
+
readonly subscriptionId: string;
|
|
119
|
+
} | {
|
|
120
|
+
readonly clientId: string;
|
|
121
|
+
readonly _tag: "LSD.Leader.SyncHistoryUnsubscribe";
|
|
122
|
+
readonly liveStoreVersion: "0.3.0-dev.33";
|
|
123
|
+
readonly requestId: string;
|
|
124
|
+
readonly subscriptionId: string;
|
|
125
|
+
} | {
|
|
126
|
+
readonly clientId: string;
|
|
127
|
+
readonly _tag: "LSD.Leader.SyncingInfoReq";
|
|
128
|
+
readonly liveStoreVersion: "0.3.0-dev.33";
|
|
129
|
+
readonly requestId: string;
|
|
130
|
+
} | {
|
|
131
|
+
readonly clientId: string;
|
|
132
|
+
readonly _tag: "LSD.Leader.SyncHeadSubscribe";
|
|
133
|
+
readonly liveStoreVersion: "0.3.0-dev.33";
|
|
134
|
+
readonly requestId: string;
|
|
135
|
+
readonly subscriptionId: string;
|
|
136
|
+
} | {
|
|
137
|
+
readonly clientId: string;
|
|
138
|
+
readonly _tag: "LSD.Leader.SyncHeadUnsubscribe";
|
|
139
|
+
readonly liveStoreVersion: "0.3.0-dev.33";
|
|
140
|
+
readonly requestId: string;
|
|
141
|
+
readonly subscriptionId: string;
|
|
142
|
+
} | {
|
|
143
|
+
readonly clientId: string;
|
|
144
|
+
readonly _tag: "LSD.Leader.LoadDatabaseFile.Request";
|
|
145
|
+
readonly liveStoreVersion: "0.3.0-dev.33";
|
|
146
|
+
readonly requestId: string;
|
|
147
|
+
readonly data: Uint8Array<ArrayBufferLike>;
|
|
148
|
+
} | {
|
|
149
|
+
readonly clientId: string;
|
|
150
|
+
readonly _tag: "LSD.Leader.ResetAllData.Request";
|
|
151
|
+
readonly mode: "all-data" | "only-app-db";
|
|
152
|
+
readonly liveStoreVersion: "0.3.0-dev.33";
|
|
153
|
+
readonly requestId: string;
|
|
154
|
+
} | {
|
|
155
|
+
readonly clientId: string;
|
|
156
|
+
readonly _tag: "LSD.Leader.SetSyncLatch.Request";
|
|
157
|
+
readonly liveStoreVersion: "0.3.0-dev.33";
|
|
158
|
+
readonly requestId: string;
|
|
159
|
+
readonly closeLatch: boolean;
|
|
160
|
+
}) => Effect.Effect<boolean, never, never>;
|
|
25
161
|
};
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
export declare const makeInMemoryAdapter: ({ sync: syncOptions, clientId, sessionId, testing }: InMemoryAdapterOptions) => Adapter;
|
|
162
|
+
initialSnapshot: Uint8Array<ArrayBufferLike>;
|
|
163
|
+
}, UnexpectedError | import("@livestore/common").SqliteError, import("effect/Scope").Scope>;
|
|
29
164
|
//# sourceMappingURL=in-memory-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-adapter.d.ts","sourceRoot":"","sources":["../../src/client-session/in-memory-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,
|
|
1
|
+
{"version":3,"file":"in-memory-adapter.d.ts","sourceRoot":"","sources":["../../src/client-session/in-memory-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAIP,YAAY,EAEZ,WAAW,EACZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAGzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AACrD,OAAO,EAAS,MAAM,EAA0B,MAAM,EAAmB,MAAM,yBAAyB,CAAA;AAGxG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAK3D,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,WAAW,CAAA;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,uCAAuC;IACvC,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,gBAAgB,CAAA;KAC7B,CAAA;CACF;AAED,eAAO,MAAM,mBAAmB,GAC7B,qDAA+E,sBAAsB,KAAG,OAkD1D,CAAA;AAEjD,eAAO,MAAM,wBAAwB,GAAI,iFAQtC;IACD,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,EAAE,YAAY,CAAA;IAC1B,WAAW,EAAE,WAAW,GAAG,SAAS,CAAA;IACpC,WAAW,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAA;IACzC,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,gBAAgB,CAAA;KAC7B,CAAA;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2FA+CG,CAAA"}
|
|
@@ -6,7 +6,6 @@ import { loadSqlite3Wasm } from '@livestore/sqlite-wasm/load-wasm';
|
|
|
6
6
|
import { Cause, Effect, FetchHttpClient, Layer, Stream, SubscriptionRef } from '@livestore/utils/effect';
|
|
7
7
|
import { nanoid } from '@livestore/utils/nanoid';
|
|
8
8
|
import { makeShutdownChannel } from '../shutdown-channel.js';
|
|
9
|
-
/** NOTE: This adapter is currently only used for testing */
|
|
10
9
|
export const makeInMemoryAdapter = ({ sync: syncOptions, clientId = 'in-memory', sessionId = nanoid(6), testing }) => ({ schema, storeId, shutdown, syncPayload,
|
|
11
10
|
// devtoolsEnabled, bootStatusQueue, shutdown, connectDevtoolsToStore
|
|
12
11
|
}) => Effect.gen(function* () {
|
|
@@ -16,7 +15,7 @@ export const makeInMemoryAdapter = ({ sync: syncOptions, clientId = 'in-memory',
|
|
|
16
15
|
const lockStatus = yield* SubscriptionRef.make('has-lock');
|
|
17
16
|
const shutdownChannel = yield* makeShutdownChannel(storeId);
|
|
18
17
|
yield* shutdownChannel.listen.pipe(Stream.flatten(), Stream.tap((error) => Effect.sync(() => shutdown(Cause.fail(error)))), Stream.runDrain, Effect.interruptible, Effect.tapCauseLogPretty, Effect.forkScoped);
|
|
19
|
-
const { leaderThread, initialSnapshot } = yield*
|
|
18
|
+
const { leaderThread, initialSnapshot } = yield* makeInMemoryLeaderThread({
|
|
20
19
|
storeId,
|
|
21
20
|
clientId,
|
|
22
21
|
schema,
|
|
@@ -37,10 +36,10 @@ export const makeInMemoryAdapter = ({ sync: syncOptions, clientId = 'in-memory',
|
|
|
37
36
|
};
|
|
38
37
|
return clientSession;
|
|
39
38
|
}).pipe(UnexpectedError.mapToUnexpectedError);
|
|
40
|
-
const
|
|
39
|
+
export const makeInMemoryLeaderThread = ({ storeId, clientId, schema, makeSqliteDb, syncOptions, syncPayload, testing, }) => Effect.gen(function* () {
|
|
41
40
|
const layer = yield* Layer.memoize(makeLeaderThreadLayer({
|
|
42
41
|
clientId,
|
|
43
|
-
|
|
42
|
+
dbState: yield* makeSqliteDb({ _tag: 'in-memory' }),
|
|
44
43
|
dbEventlog: testing?.overrides?.makeLeaderThread?.dbEventlog
|
|
45
44
|
? yield* testing.overrides.makeLeaderThread.dbEventlog(makeSqliteDb)
|
|
46
45
|
: yield* makeSqliteDb({ _tag: 'in-memory' }),
|
|
@@ -54,7 +53,7 @@ const makeLeaderThread = ({ storeId, clientId, schema, makeSqliteDb, syncOptions
|
|
|
54
53
|
syncPayload,
|
|
55
54
|
}).pipe(Layer.provideMerge(FetchHttpClient.layer)));
|
|
56
55
|
return yield* Effect.gen(function* () {
|
|
57
|
-
const {
|
|
56
|
+
const { dbState, dbEventlog, syncProcessor, extraIncomingMessagesQueue, initialState } = yield* LeaderThreadCtx;
|
|
58
57
|
const initialLeaderHead = Eventlog.getClientHeadFromDb(dbEventlog);
|
|
59
58
|
const leaderThread = {
|
|
60
59
|
events: {
|
|
@@ -63,12 +62,12 @@ const makeLeaderThread = ({ storeId, clientId, schema, makeSqliteDb, syncOptions
|
|
|
63
62
|
push: (batch) => syncProcessor.push(batch.map((item) => new LiveStoreEvent.EncodedWithMeta(item)), { waitForProcessing: true }),
|
|
64
63
|
},
|
|
65
64
|
initialState: { leaderHead: initialLeaderHead, migrationsReport: initialState.migrationsReport },
|
|
66
|
-
export: Effect.sync(() =>
|
|
65
|
+
export: Effect.sync(() => dbState.export()),
|
|
67
66
|
getEventlogData: Effect.sync(() => dbEventlog.export()),
|
|
68
67
|
getSyncState: syncProcessor.syncState,
|
|
69
68
|
sendDevtoolsMessage: (message) => extraIncomingMessagesQueue.offer(message),
|
|
70
69
|
};
|
|
71
|
-
const initialSnapshot =
|
|
70
|
+
const initialSnapshot = dbState.export();
|
|
72
71
|
return { leaderThread, initialSnapshot };
|
|
73
72
|
}).pipe(Effect.provide(layer));
|
|
74
73
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"in-memory-adapter.js","sourceRoot":"","sources":["../../src/client-session/in-memory-adapter.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAElG,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAElE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AACxG,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"in-memory-adapter.js","sourceRoot":"","sources":["../../src/client-session/in-memory-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,32 +1,44 @@
|
|
|
1
|
-
import type { Adapter } from '@livestore/common';
|
|
1
|
+
import type { Adapter, SyncOptions } from '@livestore/common';
|
|
2
|
+
import type { TestingOverrides } from '../leader-shared.js';
|
|
3
|
+
import * as WorkerSchema from '../worker-schema.js';
|
|
2
4
|
export interface NodeAdapterOptions {
|
|
3
|
-
|
|
4
|
-
* Example: `new URL('./livestore.worker.js', import.meta.url)`
|
|
5
|
-
*/
|
|
6
|
-
workerUrl: URL;
|
|
7
|
-
/** Needed for the worker and the devtools */
|
|
8
|
-
schemaPath: string;
|
|
9
|
-
/** Where to store the database files */
|
|
10
|
-
baseDirectory?: string;
|
|
5
|
+
storage: WorkerSchema.StorageType;
|
|
11
6
|
/** The default is the hostname of the current machine */
|
|
12
7
|
clientId?: string;
|
|
13
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* Warning: This adapter doesn't currently support multiple client sessions for the same client (i.e. same storeId + clientId)
|
|
10
|
+
* @default 'static'
|
|
11
|
+
*/
|
|
14
12
|
sessionId?: string;
|
|
15
13
|
devtools?: {
|
|
14
|
+
schemaPath: string;
|
|
16
15
|
/**
|
|
17
16
|
* Where to run the devtools server (via Vite)
|
|
18
17
|
*
|
|
19
18
|
* @default 4242
|
|
20
19
|
*/
|
|
21
|
-
port
|
|
20
|
+
port?: number;
|
|
22
21
|
/**
|
|
23
22
|
* @default 'localhost'
|
|
24
23
|
*/
|
|
25
|
-
host
|
|
24
|
+
host?: string;
|
|
25
|
+
};
|
|
26
|
+
/** Only used internally for testing */
|
|
27
|
+
testing?: {
|
|
28
|
+
overrides?: TestingOverrides;
|
|
26
29
|
};
|
|
27
30
|
}
|
|
31
|
+
/** Runs everything in the same thread. Use `makeWorkerAdapter` for multi-threaded implementation. */
|
|
32
|
+
export declare const makeAdapter: ({ sync, ...options }: NodeAdapterOptions & {
|
|
33
|
+
sync?: SyncOptions;
|
|
34
|
+
}) => Adapter;
|
|
28
35
|
/**
|
|
29
|
-
*
|
|
36
|
+
* Runs persistence and syncing in a worker thread.
|
|
30
37
|
*/
|
|
31
|
-
export declare const
|
|
38
|
+
export declare const makeWorkerAdapter: ({ workerUrl, ...options }: NodeAdapterOptions & {
|
|
39
|
+
/**
|
|
40
|
+
* Example: `new URL('./livestore.worker.js', import.meta.url)`
|
|
41
|
+
*/
|
|
42
|
+
workerUrl: URL;
|
|
43
|
+
}) => Adapter;
|
|
32
44
|
//# sourceMappingURL=persisted-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persisted-adapter.d.ts","sourceRoot":"","sources":["../../src/client-session/persisted-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,OAAO,
|
|
1
|
+
{"version":3,"file":"persisted-adapter.d.ts","sourceRoot":"","sources":["../../src/client-session/persisted-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,OAAO,EAOP,WAAW,EACZ,MAAM,mBAAmB,CAAA;AAwB1B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAG3D,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAA;AAEnD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,YAAY,CAAC,WAAW,CAAA;IACjC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,QAAQ,CAAC,EAAE;QACT,UAAU,EAAE,MAAM,CAAA;QAClB;;;;WAIG;QACH,IAAI,CAAC,EAAE,MAAM,CAAA;QACb;;WAEG;QACH,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IAED,uCAAuC;IACvC,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,gBAAgB,CAAA;KAC7B,CAAA;CACF;AAED,qGAAqG;AACrG,eAAO,MAAM,WAAW,GAAI,sBAGzB,kBAAkB,GAAG;IACtB,IAAI,CAAC,EAAE,WAAW,CAAA;CACnB,KAAG,OAA2F,CAAA;AAE/F;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,2BAG/B,kBAAkB,GAAG;IACtB;;OAEG;IACH,SAAS,EAAE,GAAG,CAAA;CACf,KAAG,OAA+F,CAAA"}
|