@livestore/adapter-node 0.4.0-dev.9 → 0.5.0-dev.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/dist/.tsbuildinfo +1 -1
- package/dist/client-session/adapter.d.ts +69 -3
- package/dist/client-session/adapter.d.ts.map +1 -1
- package/dist/client-session/adapter.js +160 -62
- package/dist/client-session/adapter.js.map +1 -1
- package/dist/devtools/devtools-server.d.ts.map +1 -1
- package/dist/devtools/devtools-server.js +25 -19
- package/dist/devtools/devtools-server.js.map +1 -1
- package/dist/devtools/mod.d.ts +1 -1
- package/dist/devtools/mod.d.ts.map +1 -1
- package/dist/devtools/mod.js +1 -1
- package/dist/devtools/mod.js.map +1 -1
- package/dist/devtools/vite-dev-server.d.ts +22 -4
- package/dist/devtools/vite-dev-server.d.ts.map +1 -1
- package/dist/devtools/vite-dev-server.js +45 -11
- package/dist/devtools/vite-dev-server.js.map +1 -1
- package/dist/leader-thread-shared.d.ts +8 -7
- package/dist/leader-thread-shared.d.ts.map +1 -1
- package/dist/leader-thread-shared.js +19 -16
- package/dist/leader-thread-shared.js.map +1 -1
- package/dist/make-leader-worker.d.ts +5 -3
- package/dist/make-leader-worker.d.ts.map +1 -1
- package/dist/make-leader-worker.js +75 -59
- package/dist/make-leader-worker.js.map +1 -1
- package/dist/rpc-worker.d.ts +8 -0
- package/dist/rpc-worker.d.ts.map +1 -0
- package/dist/rpc-worker.js +5 -0
- package/dist/rpc-worker.js.map +1 -0
- package/dist/shutdown-channel.d.ts.map +1 -1
- package/dist/shutdown-channel.js.map +1 -1
- package/dist/webchannel.d.ts +1 -1
- package/dist/webchannel.d.ts.map +1 -1
- package/dist/webchannel.js +17 -18
- package/dist/webchannel.js.map +1 -1
- package/dist/worker-schema.d.ts +274 -138
- package/dist/worker-schema.d.ts.map +1 -1
- package/dist/worker-schema.js +79 -45
- package/dist/worker-schema.js.map +1 -1
- package/package.json +51 -20
- package/src/client-session/adapter.ts +228 -124
- package/src/devtools/devtools-server.ts +50 -35
- package/src/devtools/mod.ts +1 -1
- package/src/devtools/vite-dev-server.ts +65 -15
- package/src/leader-thread-shared.ts +37 -34
- package/src/make-leader-worker.ts +164 -115
- package/src/rpc-worker.ts +28 -0
- package/src/shutdown-channel.ts +1 -0
- package/src/webchannel.ts +21 -28
- package/src/worker-schema.ts +132 -117
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Effect, RpcClientError, Stream } from '@livestore/utils/effect';
|
|
2
|
+
export type WithoutRpcClientError<E> = E extends {
|
|
3
|
+
readonly _tag: infer Tag;
|
|
4
|
+
} ? 'RpcClientError' extends Tag ? never : E : E;
|
|
5
|
+
export declare const isRpcClientError: (error: unknown) => error is RpcClientError.RpcClientError;
|
|
6
|
+
export declare const dieOnRpcClientError: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, WithoutRpcClientError<E>, R>;
|
|
7
|
+
export declare const dieOnRpcClientErrorStream: <A, E, R>(stream: Stream.Stream<A, E, R>) => Stream.Stream<A, WithoutRpcClientError<E>, R>;
|
|
8
|
+
//# sourceMappingURL=rpc-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-worker.d.ts","sourceRoot":"","sources":["../src/rpc-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAU,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhF,MAAM,MAAM,qBAAqB,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,CAAA;CAAE,GACzE,gBAAgB,SAAS,GAAG,GAC1B,KAAK,GACL,CAAC,GACH,CAAC,CAAA;AAEL,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,cAAc,CAAC,cACzB,CAAA;AAEjD,eAAO,MAAM,mBAAmB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EACzC,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAGK,CAAA;AAEpD,eAAO,MAAM,yBAAyB,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAC/C,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAC7B,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAOK,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Effect, RpcClientError, Schema, Stream } from '@livestore/utils/effect';
|
|
2
|
+
export const isRpcClientError = (error) => Schema.is(RpcClientError.RpcClientError)(error);
|
|
3
|
+
export const dieOnRpcClientError = (effect) => effect.pipe(Effect.catchIf(isRpcClientError, (error) => Effect.die(error)));
|
|
4
|
+
export const dieOnRpcClientErrorStream = (stream) => stream.pipe(Stream.catchIf(isRpcClientError, (error) => Stream.die(error), (error) => Stream.fail(error)));
|
|
5
|
+
//# sourceMappingURL=rpc-worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rpc-worker.js","sourceRoot":"","sources":["../src/rpc-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAQhF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAA0C,EAAE,CACzF,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAA;AAEjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,MAA8B,EACiB,EAAE,CAChD,MAAwF,CAAC,IAAI,CAC5F,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CACd,CAAA;AAEpD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,MAA8B,EACiB,EAAE,CAChD,MAAwF,CAAC,IAAI,CAC5F,MAAM,CAAC,OAAO,CACZ,gBAAgB,EAChB,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAC5B,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAC9B,CAC+C,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shutdown-channel.d.ts","sourceRoot":"","sources":["../src/shutdown-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"shutdown-channel.d.ts","sourceRoot":"","sources":["../src/shutdown-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAI5D,eAAO,MAAM,mBAAmB,GAC9B,SAAS,MAAM,KACd,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAIhE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shutdown-channel.js","sourceRoot":"","sources":["../src/shutdown-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"shutdown-channel.js","sourceRoot":"","sources":["../src/shutdown-channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AAGjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEtD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAAe,EACqD,EAAE,CACtE,oBAAoB,CAAC;IACnB,WAAW,EAAE,sBAAsB,OAAO,EAAE;IAC5C,MAAM,EAAE,eAAe,CAAC,GAAG;CAC5B,CAAC,CAAA"}
|
package/dist/webchannel.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Effect, Schema, Scope, WebChannel } from '@livestore/utils/effect';
|
|
2
2
|
export declare const makeBroadcastChannel: <Msg, MsgEncoded>({ channelName, schema, }: {
|
|
3
3
|
channelName: string;
|
|
4
|
-
schema: Schema.
|
|
4
|
+
schema: Schema.Codec<Msg, MsgEncoded>;
|
|
5
5
|
}) => Effect.Effect<WebChannel.WebChannel<Msg, Msg>, never, Scope.Scope>;
|
|
6
6
|
//# sourceMappingURL=webchannel.d.ts.map
|
package/dist/webchannel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webchannel.d.ts","sourceRoot":"","sources":["../src/webchannel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webchannel.d.ts","sourceRoot":"","sources":["../src/webchannel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,MAAM,EAAe,MAAM,EAAE,KAAK,EAAU,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE1G,eAAO,MAAM,oBAAoB,GAAI,GAAG,EAAE,UAAU,EAAE,0BAGnD;IACD,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;CACtC,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAmDlE,CAAA"}
|
package/dist/webchannel.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Deferred, Effect, Exit, Schema, Scope, Stream, WebChannel } from '@livestore/utils/effect';
|
|
1
|
+
import { Deferred, Effect, Exit, Queue, Schema, Scope, Stream, WebChannel } from '@livestore/utils/effect';
|
|
2
2
|
export const makeBroadcastChannel = ({ channelName, schema, }) => Effect.scopeWithCloseable((scope) => Effect.gen(function* () {
|
|
3
3
|
if (globalThis.BroadcastChannel === undefined) {
|
|
4
4
|
yield* Effect.logWarning('BroadcastChannel is not supported in this environment. Using a NoopChannel instead.');
|
|
@@ -7,27 +7,26 @@ export const makeBroadcastChannel = ({ channelName, schema, }) => Effect.scopeWi
|
|
|
7
7
|
// NOTE we're using `globalThis.BroadcastChannel` here because `BroadcastChannel`
|
|
8
8
|
// from `node:worker_threads` is not yet stable in Deno
|
|
9
9
|
const channel = new globalThis.BroadcastChannel(channelName);
|
|
10
|
-
yield* Effect.addFinalizer(() => Effect.try(() =>
|
|
11
|
-
const send = (message) => Effect.gen(function* () {
|
|
12
|
-
const messageEncoded = yield* Schema.encode(schema)(message);
|
|
13
|
-
channel.postMessage(messageEncoded);
|
|
14
|
-
});
|
|
15
|
-
// TODO also listen to `messageerror` in parallel
|
|
16
|
-
// const listen = Stream.fromEventListener<MessageEvent>(channel, 'message').pipe(
|
|
17
|
-
// Stream.map((_) => Schema.decodeEither(listenSchema)(_.data)),
|
|
18
|
-
// )
|
|
19
|
-
const listen = Stream.asyncPush((emit) => Effect.acquireRelease(Effect.gen(function* () {
|
|
20
|
-
channel.onmessage = (event) => {
|
|
21
|
-
return emit.single(Schema.decodeEither(schema)(event.data));
|
|
22
|
-
};
|
|
23
|
-
return channel;
|
|
24
|
-
}), (channel) => Effect.sync(() => {
|
|
10
|
+
yield* Effect.addFinalizer(() => Effect.try(() => {
|
|
25
11
|
// NOTE not all BroadcastChannel implementations have the `unref` method
|
|
26
12
|
if (typeof channel.unref === 'function') {
|
|
27
13
|
channel.unref();
|
|
28
14
|
}
|
|
29
|
-
|
|
30
|
-
|
|
15
|
+
channel.close();
|
|
16
|
+
}).pipe(Effect.ignore));
|
|
17
|
+
const send = (message) => Effect.gen(function* () {
|
|
18
|
+
const messageEncoded = yield* Schema.encodeEffect(schema)(message);
|
|
19
|
+
channel.postMessage(messageEncoded);
|
|
20
|
+
});
|
|
21
|
+
// In Effect v4, forking a consumer is not a readiness handshake. Install the message
|
|
22
|
+
// listener while constructing the channel and buffer into a scoped queue so early messages
|
|
23
|
+
// are not lost before `listen` is pulled.
|
|
24
|
+
const messageQueue = yield* Effect.acquireRelease(Queue.unbounded(), Queue.shutdown);
|
|
25
|
+
channel.onmessage = (event) => {
|
|
26
|
+
Queue.offerUnsafe(messageQueue, event.data);
|
|
27
|
+
};
|
|
28
|
+
const listen = Stream.fromQueue(messageQueue).pipe(Stream.map((data) => Schema.decodeUnknownResult(schema)(data)));
|
|
29
|
+
const closedDeferred = yield* Effect.acquireRelease(Deferred.make(), Deferred.done(Exit.void));
|
|
31
30
|
const supportsTransferables = false;
|
|
32
31
|
return {
|
|
33
32
|
[WebChannel.WebChannelSymbol]: WebChannel.WebChannelSymbol,
|
package/dist/webchannel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webchannel.js","sourceRoot":"","sources":["../src/webchannel.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webchannel.js","sourceRoot":"","sources":["../src/webchannel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAE1G,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,IAAI,UAAU,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAC9C,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,qFAAqF,CAAC,CAAA;QAC/G,OAAO,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAA2C,CAAA;IACpF,CAAC;IAED,iFAAiF;IACjF,uDAAuD;IACvD,MAAM,OAAO,GAAG,IAAI,UAAU,CAAC,gBAAgB,CAAC,WAAW,CAAgC,CAAA;IAE3F,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;QACd,wEAAwE;QACxE,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;YACxC,OAAO,CAAC,KAAK,EAAE,CAAA;QACjB,CAAC;QACD,OAAO,CAAC,KAAK,EAAE,CAAA;IACjB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CACvB,CAAA;IAED,MAAM,IAAI,GAAG,CAAC,OAAY,EAAE,EAAE,CAC5B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAClB,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAA;QAClE,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;IACrC,CAAC,CAAC,CAAA;IAEJ,qFAAqF;IACrF,2FAA2F;IAC3F,0CAA0C;IAC1C,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,EAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC7F,OAAO,CAAC,SAAS,GAAG,CAAC,KAAU,EAAE,EAAE;QACjC,KAAK,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;IAC7C,CAAC,CAAA;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAElH,MAAM,cAAc,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,EAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACpG,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"}
|