@livestore/adapter-node 0.0.0-snapshot-a953343ad2d7468c6573bcb5e26f0eab4302078f

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/.tsbuildinfo +1 -0
  2. package/dist/client-session/index.d.ts +23 -0
  3. package/dist/client-session/index.d.ts.map +1 -0
  4. package/dist/client-session/index.js +140 -0
  5. package/dist/client-session/index.js.map +1 -0
  6. package/dist/devtools/devtools-server.d.ts +16 -0
  7. package/dist/devtools/devtools-server.d.ts.map +1 -0
  8. package/dist/devtools/devtools-server.js +58 -0
  9. package/dist/devtools/devtools-server.js.map +1 -0
  10. package/dist/devtools/mod.d.ts +3 -0
  11. package/dist/devtools/mod.d.ts.map +1 -0
  12. package/dist/devtools/mod.js +2 -0
  13. package/dist/devtools/mod.js.map +1 -0
  14. package/dist/devtools/vite-dev-server.d.ts +7 -0
  15. package/dist/devtools/vite-dev-server.d.ts.map +1 -0
  16. package/dist/devtools/vite-dev-server.js +107 -0
  17. package/dist/devtools/vite-dev-server.js.map +1 -0
  18. package/dist/in-memory/index.d.ts +11 -0
  19. package/dist/in-memory/index.d.ts.map +1 -0
  20. package/dist/in-memory/index.js +71 -0
  21. package/dist/in-memory/index.js.map +1 -0
  22. package/dist/index.d.ts +3 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +3 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/leader-thread-lazy.d.ts +2 -0
  27. package/dist/leader-thread-lazy.d.ts.map +1 -0
  28. package/dist/leader-thread-lazy.js +10 -0
  29. package/dist/leader-thread-lazy.js.map +1 -0
  30. package/dist/make-leader-worker.d.ts +20 -0
  31. package/dist/make-leader-worker.d.ts.map +1 -0
  32. package/dist/make-leader-worker.js +151 -0
  33. package/dist/make-leader-worker.js.map +1 -0
  34. package/dist/shutdown-channel.d.ts +6 -0
  35. package/dist/shutdown-channel.d.ts.map +1 -0
  36. package/dist/shutdown-channel.js +7 -0
  37. package/dist/shutdown-channel.js.map +1 -0
  38. package/dist/thread-polyfill.d.ts +2 -0
  39. package/dist/thread-polyfill.d.ts.map +1 -0
  40. package/dist/thread-polyfill.js +3 -0
  41. package/dist/thread-polyfill.js.map +1 -0
  42. package/dist/webchannel.d.ts +6 -0
  43. package/dist/webchannel.d.ts.map +1 -0
  44. package/dist/webchannel.js +33 -0
  45. package/dist/webchannel.js.map +1 -0
  46. package/dist/worker-schema.d.ts +196 -0
  47. package/dist/worker-schema.d.ts.map +1 -0
  48. package/dist/worker-schema.js +161 -0
  49. package/dist/worker-schema.js.map +1 -0
  50. package/package.json +54 -0
  51. package/rollup.config.mjs +24 -0
  52. package/src/client-session/index.ts +295 -0
  53. package/src/devtools/devtools-server.ts +88 -0
  54. package/src/devtools/mod.ts +2 -0
  55. package/src/devtools/types.d.ts +33 -0
  56. package/src/devtools/vite-dev-server.ts +122 -0
  57. package/src/in-memory/index.ts +133 -0
  58. package/src/index.ts +2 -0
  59. package/src/leader-thread-lazy.ts +9 -0
  60. package/src/make-leader-worker.ts +285 -0
  61. package/src/shutdown-channel.ts +9 -0
  62. package/src/thread-polyfill.ts +1 -0
  63. package/src/webchannel.ts +54 -0
  64. package/src/worker-schema.ts +175 -0
  65. package/tsconfig.json +17 -0
@@ -0,0 +1,151 @@
1
+ import './thread-polyfill.js';
2
+ import inspector from 'node:inspector';
3
+ import path from 'node:path';
4
+ if (process.execArgv.includes('--inspect')) {
5
+ inspector.open();
6
+ inspector.waitForDebugger();
7
+ }
8
+ import { Devtools, liveStoreStorageFormatVersion, UnexpectedError } from '@livestore/common';
9
+ import { configureConnection, getClientHeadFromDb, LeaderThreadCtx, makeLeaderThreadLayer, } from '@livestore/common/leader-thread';
10
+ import { MutationEvent } from '@livestore/common/schema';
11
+ import { makeNodeDevtoolsChannel } from '@livestore/devtools-node-common/web-channel';
12
+ import { loadSqlite3Wasm } from '@livestore/sqlite-wasm/load-wasm';
13
+ import { sqliteDbFactory } from '@livestore/sqlite-wasm/node';
14
+ import { Effect, FetchHttpClient, identity, Layer, Logger, LogLevel, OtelTracer, Schema, Stream, WorkerRunner, } from '@livestore/utils/effect';
15
+ import { PlatformNode } from '@livestore/utils/node';
16
+ import { startDevtoolsServer } from './devtools/devtools-server.js';
17
+ import { makeShutdownChannel } from './shutdown-channel.js';
18
+ import * as WorkerSchema from './worker-schema.js';
19
+ export const getWorkerArgs = () => Schema.decodeSync(WorkerSchema.WorkerArgv)(process.argv[2]);
20
+ export const makeWorker = (options) => {
21
+ makeWorkerEffect(options).pipe(Effect.runFork);
22
+ };
23
+ export const makeWorkerEffect = (options) => {
24
+ const TracingLive = options.otelOptions?.tracer
25
+ ? Layer.unwrapEffect(Effect.map(OtelTracer.make, Layer.setTracer)).pipe(Layer.provideMerge(Layer.succeed(OtelTracer.OtelTracer, options.otelOptions.tracer)))
26
+ : undefined;
27
+ return WorkerRunner.layerSerialized(WorkerSchema.LeaderWorkerInner.Request, {
28
+ InitialMessage: (args) => makeLeaderThread({ ...args, syncOptions: options.sync }),
29
+ PushToLeader: ({ batch }) => Effect.andThen(LeaderThreadCtx, (_) => _.syncProcessor.push(batch.map((item) => new MutationEvent.EncodedWithMeta(item)))).pipe(Effect.uninterruptible, Effect.withSpan('@livestore/adapter-node:worker:PushToLeader')),
30
+ BootStatusStream: () => Effect.andThen(LeaderThreadCtx, (_) => Stream.fromQueue(_.bootStatusQueue)).pipe(Stream.unwrap),
31
+ PullStream: ({ cursor }) => Effect.gen(function* () {
32
+ const { connectedClientSessionPullQueues } = yield* LeaderThreadCtx;
33
+ const pullQueue = yield* connectedClientSessionPullQueues.makeQueue(cursor);
34
+ return Stream.fromQueue(pullQueue);
35
+ }).pipe(Stream.unwrapScoped),
36
+ Export: () => Effect.andThen(LeaderThreadCtx, (_) => _.dbReadModel.export()).pipe(UnexpectedError.mapToUnexpectedError, Effect.withSpan('@livestore/adapter-node:worker:Export')),
37
+ ExportMutationlog: () => Effect.andThen(LeaderThreadCtx, (_) => _.dbMutationLog.export()).pipe(UnexpectedError.mapToUnexpectedError, Effect.withSpan('@livestore/adapter-node:worker:ExportMutationlog')),
38
+ GetLeaderHead: () => Effect.gen(function* () {
39
+ const workerCtx = yield* LeaderThreadCtx;
40
+ return getClientHeadFromDb(workerCtx.dbMutationLog);
41
+ }).pipe(UnexpectedError.mapToUnexpectedError, Effect.withSpan('@livestore/adapter-node:worker:GetLeaderHead')),
42
+ NetworkStatusStream: () => Effect.gen(function* (_) {
43
+ const ctx = yield* LeaderThreadCtx;
44
+ if (ctx.syncBackend === undefined) {
45
+ return Stream.make({ isConnected: false, timestampMs: Date.now(), latchClosed: false });
46
+ }
47
+ return ctx.syncBackend.isConnected.changes.pipe(Stream.map((isConnected) => ({ isConnected, timestampMs: Date.now(), latchClosed: false })));
48
+ }).pipe(Stream.unwrap),
49
+ GetLeaderSyncState: () => Effect.gen(function* () {
50
+ const workerCtx = yield* LeaderThreadCtx;
51
+ return yield* workerCtx.syncProcessor.syncState;
52
+ }).pipe(UnexpectedError.mapToUnexpectedError, Effect.withSpan('@livestore/adapter-node:worker:GetLeaderSyncState')),
53
+ GetRecreateSnapshot: () => Effect.gen(function* () {
54
+ const workerCtx = yield* LeaderThreadCtx;
55
+ // const result = yield* Deferred.await(workerCtx.initialSetupDeferred)
56
+ // NOTE we can only return the cached snapshot once as it's transferred (i.e. disposed), so we need to set it to undefined
57
+ // const cachedSnapshot =
58
+ // result._tag === 'Recreate' ? yield* Ref.getAndSet(result.snapshotRef, undefined) : undefined
59
+ // return cachedSnapshot ?? workerCtx.db.export()
60
+ const snapshot = workerCtx.dbReadModel.export();
61
+ return { snapshot, migrationsReport: workerCtx.initialState.migrationsReport };
62
+ }).pipe(UnexpectedError.mapToUnexpectedError, Effect.withSpan('@livestore/adapter-node:worker:GetRecreateSnapshot')),
63
+ Shutdown: () => Effect.gen(function* () {
64
+ // const { db, dbMutationLog } = yield* LeaderThreadCtx
65
+ yield* Effect.logDebug('[@livestore/adapter-node:worker] Shutdown');
66
+ // if (devtools.enabled) {
67
+ // yield* FiberSet.clear(devtools.connections)
68
+ // }
69
+ // db.close()
70
+ // dbMutationLog.close()
71
+ // Buy some time for Otel to flush
72
+ // TODO find a cleaner way to do this
73
+ // yield* Effect.sleep(1000)
74
+ }).pipe(UnexpectedError.mapToUnexpectedError, Effect.withSpan('@livestore/adapter-node:worker:Shutdown')),
75
+ ExtraDevtoolsMessage: ({ message }) => Effect.andThen(LeaderThreadCtx, (_) => _.extraIncomingMessagesQueue.offer(message)).pipe(UnexpectedError.mapToUnexpectedError, Effect.withSpan('@livestore/adapter-node:worker:ExtraDevtoolsMessage')),
76
+ }).pipe(Layer.provide(PlatformNode.NodeWorkerRunner.layer), Layer.launch, Effect.scoped, Effect.tapCauseLogPretty, Effect.annotateLogs({ thread: options.otelOptions?.serviceName ?? 'livestore-node-leader-thread' }), Effect.provide(Logger.prettyWithThread(options.otelOptions?.serviceName ?? 'livestore-node-leader-thread')), Effect.provide(FetchHttpClient.layer), Effect.provide(PlatformNode.NodeFileSystem.layer), TracingLive ? Effect.provide(TracingLive) : identity, Logger.withMinimumLogLevel(LogLevel.Debug));
77
+ };
78
+ const makeLeaderThread = ({ storeId, clientId, syncOptions, baseDirectory, devtools, schemaPath, }) => Effect.gen(function* () {
79
+ const schema = yield* Effect.promise(() => import(schemaPath).then((m) => m.schema));
80
+ const sqlite3 = yield* Effect.promise(() => loadSqlite3Wasm()).pipe(Effect.withSpan('@livestore/adapter-node:leader-thread:loadSqlite3Wasm'));
81
+ const makeSqliteDb = yield* sqliteDbFactory({ sqlite3 });
82
+ const runtime = yield* Effect.runtime();
83
+ const schemaHashSuffix = schema.migrationOptions.strategy === 'manual' ? 'fixed' : schema.hash.toString();
84
+ const makeDb = (kind) => makeSqliteDb({
85
+ _tag: 'fs',
86
+ directory: path.join(baseDirectory ?? '', storeId),
87
+ fileName: kind === 'app' ? getAppDbFileName(schemaHashSuffix) : `mutationlog@${liveStoreStorageFormatVersion}.db`,
88
+ // TODO enable WAL for nodejs
89
+ configureDb: (db) => configureConnection(db, { foreignKeys: true }).pipe(Effect.provide(runtime), Effect.runSync),
90
+ }).pipe(Effect.acquireRelease((db) => Effect.sync(() => db.close())));
91
+ // Might involve some async work, so we're running them concurrently
92
+ const [dbReadModel, dbMutationLog] = yield* Effect.all([makeDb('app'), makeDb('mutationlog')], { concurrency: 2 });
93
+ const devtoolsOptions = yield* makeDevtoolsOptions({
94
+ devtoolsEnabled: devtools.enabled,
95
+ devtoolsPort: devtools.port,
96
+ dbReadModel,
97
+ dbMutationLog,
98
+ storeId,
99
+ clientId,
100
+ schemaPath,
101
+ });
102
+ const shutdownChannel = yield* makeShutdownChannel(storeId);
103
+ return makeLeaderThreadLayer({
104
+ schema,
105
+ storeId,
106
+ clientId,
107
+ makeSqliteDb,
108
+ syncOptions,
109
+ dbReadModel,
110
+ dbMutationLog,
111
+ devtoolsOptions,
112
+ shutdownChannel,
113
+ });
114
+ }).pipe(Effect.tapCauseLogPretty, UnexpectedError.mapToUnexpectedError, Effect.withSpan('@livestore/adapter-node:worker:InitialMessage'), Layer.unwrapScoped);
115
+ const getAppDbFileName = (suffix) => `app${suffix}@${liveStoreStorageFormatVersion}.db`;
116
+ const makeDevtoolsOptions = ({ devtoolsEnabled, dbReadModel, dbMutationLog, storeId, clientId, devtoolsPort, schemaPath, }) => Effect.gen(function* () {
117
+ if (devtoolsEnabled === false) {
118
+ return {
119
+ enabled: false,
120
+ };
121
+ }
122
+ return {
123
+ enabled: true,
124
+ makeBootContext: Effect.gen(function* () {
125
+ // TODO instead of failing when the port is already in use, we should try to use that WS server instead of starting a new one
126
+ yield* startDevtoolsServer({
127
+ schemaPath,
128
+ storeId,
129
+ clientId,
130
+ sessionId: 'static', // TODO make this dynamic
131
+ port: devtoolsPort,
132
+ });
133
+ return {
134
+ devtoolsWebChannel: yield* makeNodeDevtoolsChannel({
135
+ nodeName: `leader-${storeId}-${clientId}`,
136
+ target: `devtools`,
137
+ url: `ws://localhost:${devtoolsPort}`,
138
+ schema: {
139
+ listen: Devtools.Leader.MessageToApp,
140
+ send: Devtools.Leader.MessageFromApp,
141
+ },
142
+ }),
143
+ persistenceInfo: {
144
+ readModel: dbReadModel.metadata.persistenceInfo,
145
+ mutationLog: dbMutationLog.metadata.persistenceInfo,
146
+ },
147
+ };
148
+ }),
149
+ };
150
+ });
151
+ //# sourceMappingURL=make-leader-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-leader-worker.js","sourceRoot":"","sources":["../src/make-leader-worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare const makeShutdownChannel: (storeId: string) => import("effect/Effect").Effect<import("@livestore/utils/dist/effect/WebChannel/common.js").WebChannel<import("@livestore/common/dist/adapter-types.js").IntentionalShutdownCause | {
2
+ readonly _tag: "DedicatedWorkerDisconnectBroadcast";
3
+ }, import("@livestore/common/dist/adapter-types.js").IntentionalShutdownCause | {
4
+ readonly _tag: "DedicatedWorkerDisconnectBroadcast";
5
+ }, never>, never, import("effect/Scope").Scope>;
6
+ //# sourceMappingURL=shutdown-channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shutdown-channel.d.ts","sourceRoot":"","sources":["../src/shutdown-channel.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB,YAAa,MAAM;;;;+CAI/C,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { ShutdownChannel } from '@livestore/common/leader-thread';
2
+ import { makeBroadcastChannel } from './webchannel.js';
3
+ export const makeShutdownChannel = (storeId) => makeBroadcastChannel({
4
+ channelName: `livestore.shutdown.${storeId}`,
5
+ schema: ShutdownChannel.All,
6
+ });
7
+ //# sourceMappingURL=shutdown-channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shutdown-channel.js","sourceRoot":"","sources":["../src/shutdown-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAEjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEtD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAAe,EAAE,EAAE,CACrD,oBAAoB,CAAC;IACnB,WAAW,EAAE,sBAAsB,OAAO,EAAE;IAC5C,MAAM,EAAE,eAAe,CAAC,GAAG;CAC5B,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=thread-polyfill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-polyfill.d.ts","sourceRoot":"","sources":["../src/thread-polyfill.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ process.stdout.isTTY = true;
2
+ export {};
3
+ //# sourceMappingURL=thread-polyfill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-polyfill.js","sourceRoot":"","sources":["../src/thread-polyfill.ts"],"names":[],"mappings":"AAAA,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA"}
@@ -0,0 +1,6 @@
1
+ import { Effect, Schema, Scope, WebChannel } from '@livestore/utils/effect';
2
+ export declare const makeBroadcastChannel: <Msg, MsgEncoded>({ channelName, schema, }: {
3
+ channelName: string;
4
+ schema: Schema.Schema<Msg, MsgEncoded>;
5
+ }) => Effect.Effect<WebChannel.WebChannel<Msg, Msg>, never, Scope.Scope>;
6
+ //# sourceMappingURL=webchannel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webchannel.d.ts","sourceRoot":"","sources":["../src/webchannel.ts"],"names":[],"mappings":"AAGA,OAAO,EAAY,MAAM,EAAQ,MAAM,EAAE,KAAK,EAAU,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEnG,eAAO,MAAM,oBAAoB,GAAI,GAAG,EAAE,UAAU,4BAGjD;IACD,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;CACvC,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CA0ClE,CAAA"}
@@ -0,0 +1,33 @@
1
+ import { BroadcastChannel } from 'node:worker_threads';
2
+ import { Deferred, Effect, Exit, Schema, Scope, Stream, WebChannel } from '@livestore/utils/effect';
3
+ export const makeBroadcastChannel = ({ channelName, schema, }) => Effect.scopeWithCloseable((scope) => Effect.gen(function* () {
4
+ const channel = new BroadcastChannel(channelName);
5
+ yield* Effect.addFinalizer(() => Effect.try(() => channel.close()).pipe(Effect.ignoreLogged));
6
+ const send = (message) => Effect.gen(function* () {
7
+ const messageEncoded = yield* Schema.encode(schema)(message);
8
+ channel.postMessage(messageEncoded);
9
+ });
10
+ // TODO also listen to `messageerror` in parallel
11
+ // const listen = Stream.fromEventListener<MessageEvent>(channel, 'message').pipe(
12
+ // Stream.map((_) => Schema.decodeEither(listenSchema)(_.data)),
13
+ // )
14
+ const listen = Stream.asyncPush((emit) => Effect.gen(function* () {
15
+ // eslint-disable-next-line unicorn/prefer-add-event-listener
16
+ channel.onmessage = (event) => {
17
+ return emit.single(Schema.decodeEither(schema)(event.data));
18
+ };
19
+ return () => channel.unref();
20
+ }));
21
+ const closedDeferred = yield* Deferred.make().pipe(Effect.acquireRelease(Deferred.done(Exit.void)));
22
+ const supportsTransferables = false;
23
+ return {
24
+ [WebChannel.WebChannelSymbol]: WebChannel.WebChannelSymbol,
25
+ send,
26
+ listen,
27
+ closedDeferred,
28
+ schema: { listen: schema, send: schema },
29
+ supportsTransferables,
30
+ shutdown: Scope.close(scope, Exit.void),
31
+ };
32
+ }).pipe(Effect.withSpan(`WebChannel:broadcastChannel(${channelName})`)));
33
+ //# sourceMappingURL=webchannel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webchannel.js","sourceRoot":"","sources":["../src/webchannel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAGtD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEnG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAkB,EACpD,WAAW,EACX,MAAM,GAIP,EAAsE,EAAE,CACvE,MAAM,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE,CAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,OAAO,GAAG,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAA;IAEjD,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA;IAE7F,MAAM,IAAI,GAAG,CAAC,OAAY,EAAE,EAAE,CAC5B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAA;QAC5D,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEJ,iDAAiD;IACjD,kFAAkF;IAClF,kEAAkE;IAClE,IAAI;IAEJ,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAA6C,CAAC,IAAI,EAAE,EAAE,CACnF,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,6DAA6D;QAC7D,OAAO,CAAC,SAAS,GAAG,CAAC,KAAU,EAAE,EAAE;YACjC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7D,CAAC,CAAA;QAED,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;IAC9B,CAAC,CAAC,CACH,CAAA;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACzG,MAAM,qBAAqB,GAAG,KAAK,CAAA;IAEnC,OAAO;QACL,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,gBAAgB;QAC1D,IAAI;QACJ,MAAM;QACN,cAAc;QACd,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;QACxC,qBAAqB;QACrB,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;KACxC,CAAA;AACH,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,+BAA+B,WAAW,GAAG,CAAC,CAAC,CACxE,CAAA"}
@@ -0,0 +1,196 @@
1
+ import { Devtools, InvalidPushError, SyncState, UnexpectedError } from '@livestore/common';
2
+ import { Schema } from '@livestore/utils/effect';
3
+ export declare const WorkerArgv: Schema.SchemaClass<{
4
+ readonly clientId: string;
5
+ readonly storeId: string;
6
+ readonly sessionId: string;
7
+ }, string, never>;
8
+ export declare const StorageTypeOpfs: Schema.Struct<{
9
+ type: Schema.Literal<["opfs"]>;
10
+ /**
11
+ * Default is `livestore-${storeId}`
12
+ *
13
+ * When providing this option, make sure to include the `storeId` in the path to avoid
14
+ * conflicts with other LiveStore apps.
15
+ */
16
+ directory: Schema.optional<typeof Schema.String>;
17
+ }>;
18
+ export type StorageTypeOpfs = typeof StorageTypeOpfs.Type;
19
+ export declare const StorageType: Schema.Struct<{
20
+ type: Schema.Literal<["opfs"]>;
21
+ /**
22
+ * Default is `livestore-${storeId}`
23
+ *
24
+ * When providing this option, make sure to include the `storeId` in the path to avoid
25
+ * conflicts with other LiveStore apps.
26
+ */
27
+ directory: Schema.optional<typeof Schema.String>;
28
+ }>;
29
+ export type StorageType = typeof StorageType.Type;
30
+ export type StorageTypeEncoded = typeof StorageType.Encoded;
31
+ export declare const SyncBackendOptions: Schema.Record$<typeof Schema.String, Schema.Schema<Schema.JsonValue, Schema.JsonValue, never>>;
32
+ export type SyncBackendOptions = Record<string, Schema.JsonValue>;
33
+ export declare namespace LeaderWorkerOuter {
34
+ const InitialMessage_base: Schema.TaggedRequestClass<InitialMessage, "InitialMessage", {
35
+ readonly _tag: Schema.tag<"InitialMessage">;
36
+ } & {
37
+ port: Schema.Schema<MessagePort, MessagePort, never>;
38
+ }, typeof Schema.Void, typeof UnexpectedError>;
39
+ export class InitialMessage extends InitialMessage_base {
40
+ }
41
+ const Request_base: typeof InitialMessage;
42
+ export class Request extends Request_base {
43
+ }
44
+ export {};
45
+ }
46
+ export declare namespace LeaderWorkerInner {
47
+ const InitialMessage_base_1: Schema.TaggedRequestClass<InitialMessage, "InitialMessage", {
48
+ readonly _tag: Schema.tag<"InitialMessage">;
49
+ } & {
50
+ storeId: typeof Schema.String;
51
+ clientId: typeof Schema.String;
52
+ baseDirectory: Schema.optional<typeof Schema.String>;
53
+ schemaPath: typeof Schema.String;
54
+ devtools: Schema.Struct<{
55
+ port: typeof Schema.Number;
56
+ enabled: typeof Schema.Boolean;
57
+ }>;
58
+ }, typeof Schema.Void, typeof UnexpectedError>;
59
+ export class InitialMessage extends InitialMessage_base_1 {
60
+ }
61
+ const BootStatusStream_base: Schema.TaggedRequestClass<BootStatusStream, "BootStatusStream", {
62
+ readonly _tag: Schema.tag<"BootStatusStream">;
63
+ }, Schema.Union<[Schema.Struct<{
64
+ stage: Schema.Literal<["loading"]>;
65
+ }>, Schema.Struct<{
66
+ stage: Schema.Literal<["migrating"]>;
67
+ progress: Schema.Struct<{
68
+ done: typeof Schema.Number;
69
+ total: typeof Schema.Number;
70
+ }>;
71
+ }>, Schema.Struct<{
72
+ stage: Schema.Literal<["rehydrating"]>;
73
+ progress: Schema.Struct<{
74
+ done: typeof Schema.Number;
75
+ total: typeof Schema.Number;
76
+ }>;
77
+ }>, Schema.Struct<{
78
+ stage: Schema.Literal<["syncing"]>;
79
+ progress: Schema.Struct<{
80
+ done: typeof Schema.Number;
81
+ total: typeof Schema.Number;
82
+ }>;
83
+ }>, Schema.Struct<{
84
+ stage: Schema.Literal<["done"]>;
85
+ }>]>, typeof UnexpectedError>;
86
+ export class BootStatusStream extends BootStatusStream_base {
87
+ }
88
+ const PullStream_base: Schema.TaggedRequestClass<PullStream, "PullStream", {
89
+ readonly _tag: Schema.tag<"PullStream">;
90
+ } & {
91
+ cursor: Schema.Struct<{
92
+ global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
93
+ client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
94
+ }>;
95
+ }, Schema.Struct<{
96
+ payload: Schema.Union<[typeof SyncState.PayloadUpstreamRebase, typeof SyncState.PayloadUpstreamAdvance]>;
97
+ remaining: typeof Schema.Number;
98
+ }>, typeof UnexpectedError>;
99
+ export class PullStream extends PullStream_base {
100
+ }
101
+ const PushToLeader_base: Schema.TaggedRequestClass<PushToLeader, "PushToLeader", {
102
+ readonly _tag: Schema.tag<"PushToLeader">;
103
+ } & {
104
+ batch: Schema.Array$<Schema.Struct<{
105
+ mutation: typeof Schema.String;
106
+ args: typeof Schema.Any;
107
+ id: Schema.Struct<{
108
+ global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
109
+ client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
110
+ }>;
111
+ parentId: Schema.Struct<{
112
+ global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
113
+ client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
114
+ }>;
115
+ clientId: typeof Schema.String;
116
+ sessionId: Schema.UndefinedOr<typeof Schema.String>;
117
+ }>>;
118
+ }, typeof Schema.Void, Schema.Union<[typeof UnexpectedError, typeof InvalidPushError]>>;
119
+ export class PushToLeader extends PushToLeader_base {
120
+ }
121
+ const Export_base: Schema.TaggedRequestClass<Export, "Export", {
122
+ readonly _tag: Schema.tag<"Export">;
123
+ }, Schema.Schema<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>, never>, typeof UnexpectedError>;
124
+ export class Export extends Export_base {
125
+ }
126
+ const GetRecreateSnapshot_base: Schema.TaggedRequestClass<GetRecreateSnapshot, "GetRecreateSnapshot", {
127
+ readonly _tag: Schema.tag<"GetRecreateSnapshot">;
128
+ }, Schema.Struct<{
129
+ snapshot: Schema.Schema<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>, never>;
130
+ migrationsReport: Schema.Struct<{
131
+ migrations: Schema.Array$<Schema.Struct<{
132
+ tableName: typeof Schema.String;
133
+ hashes: Schema.Struct<{
134
+ expected: typeof Schema.Number;
135
+ actual: Schema.optional<typeof Schema.Number>;
136
+ }>;
137
+ }>>;
138
+ }>;
139
+ }>, typeof UnexpectedError>;
140
+ export class GetRecreateSnapshot extends GetRecreateSnapshot_base {
141
+ }
142
+ const ExportMutationlog_base: Schema.TaggedRequestClass<ExportMutationlog, "ExportMutationlog", {
143
+ readonly _tag: Schema.tag<"ExportMutationlog">;
144
+ }, Schema.Schema<Uint8Array<ArrayBufferLike>, Uint8Array<ArrayBufferLike>, never>, typeof UnexpectedError>;
145
+ export class ExportMutationlog extends ExportMutationlog_base {
146
+ }
147
+ const GetLeaderHead_base: Schema.TaggedRequestClass<GetLeaderHead, "GetLeaderHead", {
148
+ readonly _tag: Schema.tag<"GetLeaderHead">;
149
+ }, Schema.Struct<{
150
+ global: Schema.BrandSchema<number & import("effect/Brand").Brand<"GlobalEventId">, number, never>;
151
+ client: Schema.BrandSchema<number & import("effect/Brand").Brand<"ClientEventId">, number, never>;
152
+ }>, typeof UnexpectedError>;
153
+ export class GetLeaderHead extends GetLeaderHead_base {
154
+ }
155
+ const GetLeaderSyncState_base: Schema.TaggedRequestClass<GetLeaderSyncState, "GetLeaderSyncState", {
156
+ readonly _tag: Schema.tag<"GetLeaderSyncState">;
157
+ }, typeof SyncState.SyncState, typeof UnexpectedError>;
158
+ export class GetLeaderSyncState extends GetLeaderSyncState_base {
159
+ }
160
+ const NetworkStatusStream_base: Schema.TaggedRequestClass<NetworkStatusStream, "NetworkStatusStream", {
161
+ readonly _tag: Schema.tag<"NetworkStatusStream">;
162
+ }, Schema.Struct<{
163
+ isConnected: typeof Schema.Boolean;
164
+ timestampMs: typeof Schema.Number;
165
+ }>, typeof UnexpectedError>;
166
+ export class NetworkStatusStream extends NetworkStatusStream_base {
167
+ }
168
+ const Shutdown_base: Schema.TaggedRequestClass<Shutdown, "Shutdown", {
169
+ readonly _tag: Schema.tag<"Shutdown">;
170
+ }, typeof Schema.Void, typeof UnexpectedError>;
171
+ export class Shutdown extends Shutdown_base {
172
+ }
173
+ const ExtraDevtoolsMessage_base: Schema.TaggedRequestClass<ExtraDevtoolsMessage, "ExtraDevtoolsMessage", {
174
+ readonly _tag: Schema.tag<"ExtraDevtoolsMessage">;
175
+ } & {
176
+ message: Schema.Union<[typeof Devtools.Leader.SnapshotReq, typeof Devtools.Leader.LoadDatabaseFileReq, typeof Devtools.Leader.MutationLogReq, Schema.TaggedStruct<"LSD.Leader.ResetAllData.Request", {
177
+ mode: Schema.Literal<["all-data", "only-app-db"]>;
178
+ } & {
179
+ readonly requestId: typeof Schema.String;
180
+ readonly liveStoreVersion: typeof Devtools.liveStoreVersion;
181
+ readonly clientId: typeof Schema.String;
182
+ }>, typeof Devtools.Leader.NetworkStatusSubscribe, typeof Devtools.Leader.NetworkStatusUnsubscribe, typeof Devtools.Leader.Disconnect, typeof Devtools.Leader.RunMutationReq, typeof Devtools.Leader.Ping, typeof Devtools.Leader.DatabaseFileInfoReq, typeof Devtools.Leader.SyncHistorySubscribe, typeof Devtools.Leader.SyncHistoryUnsubscribe, typeof Devtools.Leader.SyncingInfoReq, typeof Devtools.Leader.SyncHeadSubscribe, typeof Devtools.Leader.SyncHeadUnsubscribe, Schema.TaggedStruct<"LSD.Leader.SetSyncLatch.Request", {
183
+ closeLatch: typeof Schema.Boolean;
184
+ } & {
185
+ readonly requestId: typeof Schema.String;
186
+ readonly liveStoreVersion: typeof Devtools.liveStoreVersion;
187
+ readonly clientId: typeof Schema.String;
188
+ }>]>;
189
+ }, typeof Schema.Void, typeof UnexpectedError>;
190
+ export class ExtraDevtoolsMessage extends ExtraDevtoolsMessage_base {
191
+ }
192
+ export const Request: Schema.Union<[typeof InitialMessage, typeof BootStatusStream, typeof PullStream, typeof PushToLeader, typeof Export, typeof GetRecreateSnapshot, typeof ExportMutationlog, typeof GetLeaderHead, typeof GetLeaderSyncState, typeof NetworkStatusStream, typeof Shutdown, typeof ExtraDevtoolsMessage]>;
193
+ export type Request = typeof Request.Type;
194
+ export {};
195
+ }
196
+ //# sourceMappingURL=worker-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-schema.d.ts","sourceRoot":"","sources":["../src/worker-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ import { BootStatus, Devtools, InvalidPushError, MigrationsReport, SyncState, UnexpectedError } from '@livestore/common';
2
+ import { EventId, MutationEvent } from '@livestore/common/schema';
3
+ import { Schema, Transferable } from '@livestore/utils/effect';
4
+ export const WorkerArgv = Schema.parseJson(Schema.Struct({
5
+ clientId: Schema.String,
6
+ storeId: Schema.String,
7
+ sessionId: Schema.String,
8
+ }));
9
+ export const StorageTypeOpfs = Schema.Struct({
10
+ type: Schema.Literal('opfs'),
11
+ /**
12
+ * Default is `livestore-${storeId}`
13
+ *
14
+ * When providing this option, make sure to include the `storeId` in the path to avoid
15
+ * conflicts with other LiveStore apps.
16
+ */
17
+ directory: Schema.optional(Schema.String),
18
+ });
19
+ // export const StorageTypeIndexeddb = Schema.Struct({
20
+ // type: Schema.Literal('indexeddb'),
21
+ // /** @default "livestore" */
22
+ // databaseName: Schema.optionalWith(Schema.String, { default: () => 'livestore' }),
23
+ // /** @default "livestore-" */
24
+ // storeNamePrefix: Schema.optionalWith(Schema.String, { default: () => 'livestore-' }),
25
+ // })
26
+ export const StorageType = Schema.Union(StorageTypeOpfs);
27
+ // export const SyncBackendOptionsWebsocket = Schema.Struct({
28
+ // type: Schema.Literal('websocket'),
29
+ // url: Schema.String,
30
+ // storeId: Schema.String,
31
+ // })
32
+ // export const SyncBackendOptions = Schema.Union(SyncBackendOptionsWebsocket)
33
+ export const SyncBackendOptions = Schema.Record({ key: Schema.String, value: Schema.JsonValue });
34
+ export var LeaderWorkerOuter;
35
+ (function (LeaderWorkerOuter) {
36
+ class InitialMessage extends Schema.TaggedRequest()('InitialMessage', {
37
+ payload: { port: Transferable.MessagePort },
38
+ success: Schema.Void,
39
+ failure: UnexpectedError,
40
+ }) {
41
+ }
42
+ LeaderWorkerOuter.InitialMessage = InitialMessage;
43
+ class Request extends Schema.Union(InitialMessage) {
44
+ }
45
+ LeaderWorkerOuter.Request = Request;
46
+ })(LeaderWorkerOuter || (LeaderWorkerOuter = {}));
47
+ export var LeaderWorkerInner;
48
+ (function (LeaderWorkerInner) {
49
+ class InitialMessage extends Schema.TaggedRequest()('InitialMessage', {
50
+ payload: {
51
+ storeId: Schema.String,
52
+ clientId: Schema.String,
53
+ baseDirectory: Schema.optional(Schema.String),
54
+ schemaPath: Schema.String,
55
+ devtools: Schema.Struct({
56
+ port: Schema.Number,
57
+ enabled: Schema.Boolean,
58
+ }),
59
+ },
60
+ success: Schema.Void,
61
+ failure: UnexpectedError,
62
+ }) {
63
+ }
64
+ LeaderWorkerInner.InitialMessage = InitialMessage;
65
+ class BootStatusStream extends Schema.TaggedRequest()('BootStatusStream', {
66
+ payload: {},
67
+ success: BootStatus,
68
+ failure: UnexpectedError,
69
+ }) {
70
+ }
71
+ LeaderWorkerInner.BootStatusStream = BootStatusStream;
72
+ class PullStream extends Schema.TaggedRequest()('PullStream', {
73
+ payload: {
74
+ cursor: EventId.EventId,
75
+ },
76
+ success: Schema.Struct({
77
+ // mutationEvents: Schema.Array(EncodedAny),
78
+ // backendHead: Schema.Number,
79
+ payload: SyncState.PayloadUpstream,
80
+ remaining: Schema.Number,
81
+ }),
82
+ failure: UnexpectedError,
83
+ }) {
84
+ }
85
+ LeaderWorkerInner.PullStream = PullStream;
86
+ class PushToLeader extends Schema.TaggedRequest()('PushToLeader', {
87
+ payload: {
88
+ batch: Schema.Array(MutationEvent.AnyEncoded),
89
+ },
90
+ success: Schema.Void,
91
+ failure: Schema.Union(UnexpectedError, InvalidPushError),
92
+ }) {
93
+ }
94
+ LeaderWorkerInner.PushToLeader = PushToLeader;
95
+ class Export extends Schema.TaggedRequest()('Export', {
96
+ payload: {},
97
+ success: Transferable.Uint8Array,
98
+ failure: UnexpectedError,
99
+ }) {
100
+ }
101
+ LeaderWorkerInner.Export = Export;
102
+ class GetRecreateSnapshot extends Schema.TaggedRequest()('GetRecreateSnapshot', {
103
+ payload: {},
104
+ success: Schema.Struct({
105
+ snapshot: Transferable.Uint8Array,
106
+ migrationsReport: MigrationsReport,
107
+ }),
108
+ failure: UnexpectedError,
109
+ }) {
110
+ }
111
+ LeaderWorkerInner.GetRecreateSnapshot = GetRecreateSnapshot;
112
+ class ExportMutationlog extends Schema.TaggedRequest()('ExportMutationlog', {
113
+ payload: {},
114
+ success: Transferable.Uint8Array,
115
+ failure: UnexpectedError,
116
+ }) {
117
+ }
118
+ LeaderWorkerInner.ExportMutationlog = ExportMutationlog;
119
+ class GetLeaderHead extends Schema.TaggedRequest()('GetLeaderHead', {
120
+ payload: {},
121
+ success: EventId.EventId,
122
+ failure: UnexpectedError,
123
+ }) {
124
+ }
125
+ LeaderWorkerInner.GetLeaderHead = GetLeaderHead;
126
+ class GetLeaderSyncState extends Schema.TaggedRequest()('GetLeaderSyncState', {
127
+ payload: {},
128
+ success: SyncState.SyncState,
129
+ failure: UnexpectedError,
130
+ }) {
131
+ }
132
+ LeaderWorkerInner.GetLeaderSyncState = GetLeaderSyncState;
133
+ class NetworkStatusStream extends Schema.TaggedRequest()('NetworkStatusStream', {
134
+ payload: {},
135
+ success: Schema.Struct({
136
+ isConnected: Schema.Boolean,
137
+ timestampMs: Schema.Number,
138
+ }),
139
+ failure: UnexpectedError,
140
+ }) {
141
+ }
142
+ LeaderWorkerInner.NetworkStatusStream = NetworkStatusStream;
143
+ class Shutdown extends Schema.TaggedRequest()('Shutdown', {
144
+ payload: {},
145
+ success: Schema.Void,
146
+ failure: UnexpectedError,
147
+ }) {
148
+ }
149
+ LeaderWorkerInner.Shutdown = Shutdown;
150
+ class ExtraDevtoolsMessage extends Schema.TaggedRequest()('ExtraDevtoolsMessage', {
151
+ payload: {
152
+ message: Devtools.Leader.MessageToApp,
153
+ },
154
+ success: Schema.Void,
155
+ failure: UnexpectedError,
156
+ }) {
157
+ }
158
+ LeaderWorkerInner.ExtraDevtoolsMessage = ExtraDevtoolsMessage;
159
+ LeaderWorkerInner.Request = Schema.Union(InitialMessage, BootStatusStream, PullStream, PushToLeader, Export, GetRecreateSnapshot, ExportMutationlog, GetLeaderHead, GetLeaderSyncState, NetworkStatusStream, Shutdown, ExtraDevtoolsMessage);
160
+ })(LeaderWorkerInner || (LeaderWorkerInner = {}));
161
+ //# sourceMappingURL=worker-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-schema.js","sourceRoot":"","sources":["../src/worker-schema.ts"],"names":[],"mappings":"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"}