@livestore/utils 0.4.0 → 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/NoopTracer.d.ts +7 -8
- package/dist/NoopTracer.d.ts.map +1 -1
- package/dist/NoopTracer.js +3 -18
- package/dist/NoopTracer.js.map +1 -1
- package/dist/NoopTracer.test.d.ts +2 -0
- package/dist/NoopTracer.test.d.ts.map +1 -0
- package/dist/NoopTracer.test.js +17 -0
- package/dist/NoopTracer.test.js.map +1 -0
- package/dist/browser/Opfs/Opfs.d.ts +179 -29
- package/dist/browser/Opfs/Opfs.d.ts.map +1 -1
- package/dist/browser/Opfs/Opfs.js +132 -307
- package/dist/browser/Opfs/Opfs.js.map +1 -1
- package/dist/browser/Opfs/debug-utils.d.ts.map +1 -1
- package/dist/browser/Opfs/debug-utils.js +5 -4
- package/dist/browser/Opfs/debug-utils.js.map +1 -1
- package/dist/browser/Opfs/utils.d.ts +8 -8
- package/dist/browser/Opfs/utils.d.ts.map +1 -1
- package/dist/browser/Opfs/utils.js +35 -26
- package/dist/browser/Opfs/utils.js.map +1 -1
- package/dist/browser/QuotaExceededError.d.ts +10 -9
- package/dist/browser/QuotaExceededError.d.ts.map +1 -1
- package/dist/browser/WebChannelBrowser.d.ts.map +1 -1
- package/dist/browser/WebChannelBrowser.js +21 -10
- package/dist/browser/WebChannelBrowser.js.map +1 -1
- package/dist/browser/WebError.d.ts +54 -86
- package/dist/browser/WebError.d.ts.map +1 -1
- package/dist/browser/WebError.js +91 -84
- package/dist/browser/WebError.js.map +1 -1
- package/dist/browser/WebError.test.js +6 -6
- package/dist/browser/WebError.test.js.map +1 -1
- package/dist/browser/WebLock.d.ts.map +1 -1
- package/dist/browser/WebLock.js +13 -13
- package/dist/browser/WebLock.js.map +1 -1
- package/dist/effect/Debug.d.ts +4 -7
- package/dist/effect/Debug.d.ts.map +1 -1
- package/dist/effect/Debug.js +32 -36
- package/dist/effect/Debug.js.map +1 -1
- package/dist/effect/Effect.d.ts +31 -22
- package/dist/effect/Effect.d.ts.map +1 -1
- package/dist/effect/Effect.js +51 -47
- package/dist/effect/Effect.js.map +1 -1
- package/dist/effect/Effect.test.d.ts +2 -0
- package/dist/effect/Effect.test.d.ts.map +1 -0
- package/dist/effect/Effect.test.js +72 -0
- package/dist/effect/Effect.test.js.map +1 -0
- package/dist/effect/Error.d.ts +4 -6
- package/dist/effect/Error.d.ts.map +1 -1
- package/dist/effect/Logger.d.ts +0 -6
- package/dist/effect/Logger.d.ts.map +1 -1
- package/dist/effect/Logger.js +0 -32
- package/dist/effect/Logger.js.map +1 -1
- package/dist/effect/OtelTracer.d.ts +1 -1
- package/dist/effect/OtelTracer.d.ts.map +1 -1
- package/dist/effect/OtelTracer.js +2 -3
- package/dist/effect/OtelTracer.js.map +1 -1
- package/dist/effect/RpcClient.d.ts +7 -7
- package/dist/effect/RpcClient.d.ts.map +1 -1
- package/dist/effect/RpcClient.js +72 -52
- package/dist/effect/RpcClient.js.map +1 -1
- package/dist/effect/Schedule.d.ts +1 -1
- package/dist/effect/Schedule.d.ts.map +1 -1
- package/dist/effect/Schedule.js +2 -2
- package/dist/effect/Schedule.js.map +1 -1
- package/dist/effect/Schema/debug-diff.d.ts +1 -1
- package/dist/effect/Schema/debug-diff.d.ts.map +1 -1
- package/dist/effect/Schema/debug-diff.js +5 -7
- package/dist/effect/Schema/debug-diff.js.map +1 -1
- package/dist/effect/Schema/debug-diff.test.js +7 -4
- package/dist/effect/Schema/debug-diff.test.js.map +1 -1
- package/dist/effect/Schema/index.d.ts +28 -20
- package/dist/effect/Schema/index.d.ts.map +1 -1
- package/dist/effect/Schema/index.js +55 -28
- package/dist/effect/Schema/index.js.map +1 -1
- package/dist/effect/Stream.d.ts +13 -5
- package/dist/effect/Stream.d.ts.map +1 -1
- package/dist/effect/Stream.js +19 -12
- package/dist/effect/Stream.js.map +1 -1
- package/dist/effect/Stream.test.js +9 -9
- package/dist/effect/Stream.test.js.map +1 -1
- package/dist/effect/Subscribable.d.ts +9 -3
- package/dist/effect/Subscribable.d.ts.map +1 -1
- package/dist/effect/Subscribable.js +20 -35
- package/dist/effect/Subscribable.js.map +1 -1
- package/dist/effect/SubscriptionRef.d.ts +5 -6
- package/dist/effect/SubscriptionRef.d.ts.map +1 -1
- package/dist/effect/SubscriptionRef.js +2 -3
- package/dist/effect/SubscriptionRef.js.map +1 -1
- package/dist/effect/TaskTracing.d.ts +1 -1
- package/dist/effect/TaskTracing.d.ts.map +1 -1
- package/dist/effect/TaskTracing.js +12 -16
- package/dist/effect/TaskTracing.js.map +1 -1
- package/dist/effect/WebChannel/WebChannel.d.ts +7 -7
- package/dist/effect/WebChannel/WebChannel.d.ts.map +1 -1
- package/dist/effect/WebChannel/WebChannel.js +64 -43
- package/dist/effect/WebChannel/WebChannel.js.map +1 -1
- package/dist/effect/WebChannel/WebChannel.test.js +15 -15
- package/dist/effect/WebChannel/WebChannel.test.js.map +1 -1
- package/dist/effect/WebChannel/broadcastChannelWithAck.d.ts.map +1 -1
- package/dist/effect/WebChannel/broadcastChannelWithAck.js +16 -9
- package/dist/effect/WebChannel/broadcastChannelWithAck.js.map +1 -1
- package/dist/effect/WebChannel/common.d.ts +16 -17
- package/dist/effect/WebChannel/common.d.ts.map +1 -1
- package/dist/effect/WebChannel/common.js +6 -6
- package/dist/effect/WebChannel/common.js.map +1 -1
- package/dist/effect/WebSocket.d.ts +4 -6
- package/dist/effect/WebSocket.d.ts.map +1 -1
- package/dist/effect/WebSocket.js +4 -4
- package/dist/effect/WebSocket.js.map +1 -1
- package/dist/effect/WebSocket.test.js +2 -2
- package/dist/effect/WebSocket.test.js.map +1 -1
- package/dist/effect/mod.browser-build.test.d.ts +2 -0
- package/dist/effect/mod.browser-build.test.d.ts.map +1 -0
- package/dist/effect/mod.browser-build.test.js +18 -0
- package/dist/effect/mod.browser-build.test.js.map +1 -0
- package/dist/effect/mod.d.ts +13 -15
- package/dist/effect/mod.d.ts.map +1 -1
- package/dist/effect/mod.js +13 -18
- package/dist/effect/mod.js.map +1 -1
- package/dist/effect/spanEvent.d.ts.map +1 -1
- package/dist/effect/spanEvent.js +2 -2
- package/dist/effect/spanEvent.js.map +1 -1
- package/dist/effect/spanEvent.test.js +10 -13
- package/dist/effect/spanEvent.test.js.map +1 -1
- package/dist/fast-deep-equal.d.ts.map +1 -1
- package/dist/fast-deep-equal.js +1 -2
- package/dist/fast-deep-equal.js.map +1 -1
- package/dist/misc.js +2 -2
- package/dist/misc.js.map +1 -1
- package/dist/mod.d.ts +0 -35
- package/dist/mod.d.ts.map +1 -1
- package/dist/mod.js +0 -8
- package/dist/mod.js.map +1 -1
- package/dist/node/mod.d.ts +17 -11
- package/dist/node/mod.d.ts.map +1 -1
- package/dist/node/mod.js +23 -16
- package/dist/node/mod.js.map +1 -1
- package/dist/object/index.d.ts +0 -9
- package/dist/object/index.d.ts.map +1 -1
- package/dist/object/index.js +0 -9
- package/dist/object/index.js.map +1 -1
- package/dist/string.d.ts +0 -2
- package/dist/string.d.ts.map +1 -1
- package/dist/string.js +0 -2
- package/dist/string.js.map +1 -1
- package/package.json +18 -36
- package/src/NoopTracer.test.ts +20 -0
- package/src/NoopTracer.ts +18 -41
- package/src/browser/Opfs/Opfs.ts +304 -277
- package/src/browser/Opfs/debug-utils.ts +7 -6
- package/src/browser/Opfs/utils.ts +36 -26
- package/src/browser/QuotaExceededError.ts +13 -10
- package/src/browser/WebChannelBrowser.ts +25 -11
- package/src/browser/WebError.test.ts +6 -6
- package/src/browser/WebError.ts +107 -133
- package/src/browser/WebLock.ts +13 -14
- package/src/effect/Debug.ts +66 -59
- package/src/effect/Effect.test.ts +117 -0
- package/src/effect/Effect.ts +84 -71
- package/src/effect/Logger.ts +0 -48
- package/src/effect/OtelTracer.ts +2 -3
- package/src/effect/RpcClient.ts +80 -61
- package/src/effect/Schedule.ts +4 -5
- package/src/effect/Schema/debug-diff.test.ts +6 -6
- package/src/effect/Schema/debug-diff.ts +6 -8
- package/src/effect/Schema/index.ts +122 -61
- package/src/effect/Stream.test.ts +9 -9
- package/src/effect/Stream.ts +23 -16
- package/src/effect/Subscribable.ts +31 -42
- package/src/effect/SubscriptionRef.ts +8 -12
- package/src/effect/TaskTracing.ts +13 -16
- package/src/effect/WebChannel/WebChannel.test.ts +23 -23
- package/src/effect/WebChannel/WebChannel.ts +87 -55
- package/src/effect/WebChannel/broadcastChannelWithAck.ts +21 -11
- package/src/effect/WebChannel/common.ts +14 -15
- package/src/effect/WebSocket.test.ts +2 -2
- package/src/effect/WebSocket.ts +9 -6
- package/src/effect/mod.browser-build.test.ts +19 -0
- package/src/effect/mod.ts +35 -69
- package/src/effect/spanEvent.test.ts +10 -13
- package/src/effect/spanEvent.ts +5 -3
- package/src/fast-deep-equal.ts +1 -2
- package/src/misc.ts +2 -2
- package/src/mod.ts +0 -36
- package/src/node/mod.ts +26 -20
- package/src/object/index.ts +0 -24
- package/src/string.ts +0 -3
- package/dist/effect/BucketQueue.d.ts +0 -20
- package/dist/effect/BucketQueue.d.ts.map +0 -1
- package/dist/effect/BucketQueue.js +0 -34
- package/dist/effect/BucketQueue.js.map +0 -1
- package/dist/effect/Scheduler.d.ts +0 -4
- package/dist/effect/Scheduler.d.ts.map +0 -1
- package/dist/effect/Scheduler.js +0 -9
- package/dist/effect/Scheduler.js.map +0 -1
- package/dist/effect/ServiceContext.d.ts +0 -37
- package/dist/effect/ServiceContext.d.ts.map +0 -1
- package/dist/effect/ServiceContext.js +0 -55
- package/dist/effect/ServiceContext.js.map +0 -1
- package/dist/guards.d.ts +0 -20
- package/dist/guards.d.ts.map +0 -1
- package/dist/guards.js +0 -20
- package/dist/guards.js.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunner.d.ts +0 -4
- package/dist/node/ChildProcessRunner/ChildProcessRunner.d.ts.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunner.js +0 -128
- package/dist/node/ChildProcessRunner/ChildProcessRunner.js.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.d.ts +0 -10
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.d.ts.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.js +0 -217
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.js.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.d.ts +0 -84
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.d.ts.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.js +0 -68
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/schema.js.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.d.ts +0 -2
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.d.ts.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.js +0 -52
- package/dist/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.js.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessWorker.d.ts +0 -23
- package/dist/node/ChildProcessRunner/ChildProcessWorker.d.ts.map +0 -1
- package/dist/node/ChildProcessRunner/ChildProcessWorker.js +0 -138
- package/dist/node/ChildProcessRunner/ChildProcessWorker.js.map +0 -1
- package/dist/object/omit.d.ts +0 -3
- package/dist/object/omit.d.ts.map +0 -1
- package/dist/object/omit.js +0 -14
- package/dist/object/omit.js.map +0 -1
- package/dist/object/pick.d.ts +0 -14
- package/dist/object/pick.d.ts.map +0 -1
- package/dist/object/pick.js +0 -17
- package/dist/object/pick.js.map +0 -1
- package/dist/time.d.ts +0 -12
- package/dist/time.d.ts.map +0 -1
- package/dist/time.js +0 -22
- package/dist/time.js.map +0 -1
- package/src/effect/BucketQueue.ts +0 -49
- package/src/effect/Scheduler.ts +0 -13
- package/src/effect/ServiceContext.ts +0 -108
- package/src/guards.ts +0 -23
- package/src/node/ChildProcessRunner/ChildProcessRunner.ts +0 -148
- package/src/node/ChildProcessRunner/ChildProcessRunnerTest/ChildProcessRunner.test.ts +0 -311
- package/src/node/ChildProcessRunner/ChildProcessRunnerTest/schema.ts +0 -78
- package/src/node/ChildProcessRunner/ChildProcessRunnerTest/serializedWorker.ts +0 -65
- package/src/node/ChildProcessRunner/ChildProcessWorker.ts +0 -169
- package/src/object/omit.ts +0 -17
- package/src/object/pick.ts +0 -27
- package/src/time.ts +0 -25
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Deferred,
|
|
1
|
+
import { Cause, Deferred, Result, Exit, Filter, identity, Option, PubSub, Queue, Scope } from 'effect';
|
|
2
2
|
import { shouldNeverHappen } from "../../misc.js";
|
|
3
3
|
import * as Effect from "../Effect.js";
|
|
4
4
|
import * as Schema from "../Schema/index.js";
|
|
@@ -10,7 +10,7 @@ export const noopChannel = () => Effect.scopeWithCloseable((scope) => Effect.gen
|
|
|
10
10
|
[WebChannelSymbol]: WebChannelSymbol,
|
|
11
11
|
send: () => Effect.void,
|
|
12
12
|
listen: Stream.never,
|
|
13
|
-
closedDeferred: yield* Deferred.make()
|
|
13
|
+
closedDeferred: yield* Effect.acquireRelease(Deferred.make(), Deferred.done(Exit.void)),
|
|
14
14
|
shutdown: Scope.close(scope, Exit.succeed('shutdown')),
|
|
15
15
|
schema: {
|
|
16
16
|
listen: Schema.Any,
|
|
@@ -22,18 +22,30 @@ export const noopChannel = () => Effect.scopeWithCloseable((scope) => Effect.gen
|
|
|
22
22
|
export const messagePortChannel = ({ port, schema: inputSchema, debugId }) => Effect.scopeWithCloseable((scope) => Effect.gen(function* () {
|
|
23
23
|
const schema = mapSchema(inputSchema);
|
|
24
24
|
const label = debugId === undefined ? 'messagePort' : `messagePort:${debugId}`;
|
|
25
|
+
// In Effect v4, forking a consumer is not a readiness handshake. Install the MessagePort
|
|
26
|
+
// listener while constructing the channel and buffer into a scoped queue so early messages
|
|
27
|
+
// are not lost before `listen` is pulled.
|
|
28
|
+
const messageQueue = yield* Effect.acquireRelease(Queue.unbounded(), Queue.shutdown);
|
|
29
|
+
const handler = (event) => {
|
|
30
|
+
Queue.offerUnsafe(messageQueue, event);
|
|
31
|
+
};
|
|
32
|
+
port.addEventListener('message', handler);
|
|
33
|
+
yield* Effect.addFinalizer(() => Effect.sync(() => port.removeEventListener('message', handler)));
|
|
25
34
|
const send = (message) => Effect.gen(function* () {
|
|
26
35
|
const [messageEncoded, transferables] = yield* Schema.encodeWithTransferables(schema.send)(message);
|
|
27
36
|
port.postMessage(messageEncoded, transferables);
|
|
28
37
|
});
|
|
29
|
-
const listen = Stream.
|
|
38
|
+
const listen = Stream.fromQueue(messageQueue).pipe(
|
|
30
39
|
// Stream.tap((_) => Effect.log(`${label}:message`, _.data)),
|
|
31
|
-
Stream.map((_) => Schema.
|
|
40
|
+
Stream.map((_) => Schema.decodeResult(schema.listen)(_.data)), listenToDebugPing(label));
|
|
32
41
|
// NOTE unfortunately MessagePorts don't emit a `close` event when the other end is closed
|
|
33
42
|
port.start();
|
|
34
|
-
const closedDeferred = yield* Deferred.make()
|
|
43
|
+
const closedDeferred = yield* Effect.acquireRelease(Deferred.make(), Deferred.done(Exit.void));
|
|
35
44
|
const supportsTransferables = true;
|
|
36
|
-
yield* Effect.addFinalizer(() => Effect.try(
|
|
45
|
+
yield* Effect.addFinalizer(() => Effect.try({
|
|
46
|
+
try: () => port.close(),
|
|
47
|
+
catch: (cause) => new Cause.UnknownError(cause),
|
|
48
|
+
}).pipe(Effect.ignore));
|
|
37
49
|
return {
|
|
38
50
|
[WebChannelSymbol]: WebChannelSymbol,
|
|
39
51
|
send,
|
|
@@ -44,17 +56,17 @@ export const messagePortChannel = ({ port, schema: inputSchema, debugId }) => Ef
|
|
|
44
56
|
supportsTransferables,
|
|
45
57
|
};
|
|
46
58
|
}).pipe(Effect.withSpan(`WebChannel:messagePortChannel`)));
|
|
47
|
-
const sameThreadChannels =
|
|
59
|
+
const sameThreadChannels = new Map();
|
|
48
60
|
export const sameThreadChannel = ({ schema: inputSchema, channelName, }) => Effect.scopeWithCloseable((scope) => Effect.gen(function* () {
|
|
49
61
|
let pubSub = sameThreadChannels.get(channelName);
|
|
50
62
|
if (pubSub === undefined) {
|
|
51
|
-
pubSub = yield* PubSub.unbounded()
|
|
63
|
+
pubSub = yield* Effect.acquireRelease(PubSub.unbounded(), PubSub.shutdown);
|
|
52
64
|
sameThreadChannels.set(channelName, pubSub);
|
|
53
65
|
}
|
|
54
66
|
const schema = mapSchema(inputSchema);
|
|
55
67
|
const send = (message) => PubSub.publish(pubSub, message);
|
|
56
|
-
const listen = Stream.fromPubSub(pubSub).pipe(Stream.map(
|
|
57
|
-
const closedDeferred = yield* Deferred.make()
|
|
68
|
+
const listen = Stream.fromPubSub(pubSub).pipe(Stream.map(Result.succeed), listenToDebugPing(channelName));
|
|
69
|
+
const closedDeferred = yield* Effect.acquireRelease(Deferred.make(), Deferred.done(Exit.void));
|
|
58
70
|
return {
|
|
59
71
|
[WebChannelSymbol]: WebChannelSymbol,
|
|
60
72
|
send,
|
|
@@ -71,12 +83,12 @@ export const messagePortChannelWithAck = ({ port, schema: inputSchema, debugId }
|
|
|
71
83
|
const requestAckMap = new Map();
|
|
72
84
|
const ChannelRequest = Schema.TaggedStruct('ChannelRequest', {
|
|
73
85
|
id: Schema.String,
|
|
74
|
-
payload: Schema.Union(schema.listen, schema.send),
|
|
75
|
-
}).
|
|
86
|
+
payload: Schema.Union([schema.listen, schema.send]),
|
|
87
|
+
}).annotate({ title: 'webmesh.ChannelRequest' });
|
|
76
88
|
const ChannelRequestAck = Schema.TaggedStruct('ChannelRequestAck', {
|
|
77
89
|
reqId: Schema.String,
|
|
78
|
-
}).
|
|
79
|
-
const ChannelMessage = Schema.Union(ChannelRequest, ChannelRequestAck).
|
|
90
|
+
}).annotate({ title: 'webmesh.ChannelRequestAck' });
|
|
91
|
+
const ChannelMessage = Schema.Union([ChannelRequest, ChannelRequestAck]).annotate({
|
|
80
92
|
title: 'webmesh.ChannelMessage',
|
|
81
93
|
});
|
|
82
94
|
const debugInfo = {
|
|
@@ -85,6 +97,14 @@ export const messagePortChannelWithAck = ({ port, schema: inputSchema, debugId }
|
|
|
85
97
|
listenTotal: 0,
|
|
86
98
|
id: debugId,
|
|
87
99
|
};
|
|
100
|
+
// The ack channel sends protocol messages during setup. Buffer MessagePort events eagerly so
|
|
101
|
+
// the initial ping/pong cannot race a lazily-started `listen` stream under Effect v4.
|
|
102
|
+
const messageQueue = yield* Effect.acquireRelease(Queue.unbounded(), Queue.shutdown);
|
|
103
|
+
const handler = (event) => {
|
|
104
|
+
Queue.offerUnsafe(messageQueue, event);
|
|
105
|
+
};
|
|
106
|
+
port.addEventListener('message', handler);
|
|
107
|
+
yield* Effect.addFinalizer(() => Effect.sync(() => port.removeEventListener('message', handler)));
|
|
88
108
|
const send = (message) => Effect.gen(function* () {
|
|
89
109
|
debugInfo.sendTotal++;
|
|
90
110
|
debugInfo.sendPending++;
|
|
@@ -97,34 +117,35 @@ export const messagePortChannelWithAck = ({ port, schema: inputSchema, debugId }
|
|
|
97
117
|
const ack = yield* Deferred.make();
|
|
98
118
|
requestAckMap.set(id, ack);
|
|
99
119
|
port.postMessage(messageEncoded, transferables);
|
|
100
|
-
yield* ack;
|
|
120
|
+
yield* Deferred.await(ack);
|
|
101
121
|
requestAckMap.delete(id);
|
|
102
122
|
debugInfo.sendPending--;
|
|
103
123
|
});
|
|
104
|
-
|
|
105
|
-
// https://github.com/livestorejs/livestore/issues/262
|
|
106
|
-
const listen = Stream.fromEventListener(port, 'message').pipe(
|
|
124
|
+
const listen = Stream.fromQueue(messageQueue).pipe(
|
|
107
125
|
// Stream.onStart(Effect.log(`${label}:listen:start`)),
|
|
108
126
|
// Stream.tap((_) => Effect.log(`${label}:message`, _.data)),
|
|
109
|
-
Stream.map((_) => Schema.
|
|
110
|
-
if (msg
|
|
111
|
-
if (msg.
|
|
112
|
-
yield* Deferred.succeed(requestAckMap.get(msg.
|
|
127
|
+
Stream.map((_) => Schema.decodeResult(ChannelMessage)(_.data)), Stream.tap((msg) => Effect.gen(function* () {
|
|
128
|
+
if (Result.isSuccess(msg) === true) {
|
|
129
|
+
if (msg.success._tag === 'ChannelRequestAck') {
|
|
130
|
+
yield* Deferred.succeed(requestAckMap.get(msg.success.reqId), void 0);
|
|
113
131
|
}
|
|
114
|
-
else if (msg.
|
|
132
|
+
else if (msg.success._tag === 'ChannelRequest') {
|
|
115
133
|
debugInfo.listenTotal++;
|
|
116
|
-
port.postMessage(yield* Schema.
|
|
134
|
+
port.postMessage(yield* Schema.encodeEffect(ChannelMessage)({ _tag: 'ChannelRequestAck', reqId: msg.success.id }).pipe(Effect.orDie));
|
|
117
135
|
}
|
|
118
136
|
}
|
|
119
|
-
})), Stream.filterMap((msg) => msg
|
|
137
|
+
})), Stream.filterMap(Filter.fromPredicateOption((msg) => Result.isFailure(msg) === true
|
|
120
138
|
? Option.some(msg)
|
|
121
|
-
: msg.
|
|
122
|
-
? Option.some(
|
|
123
|
-
: Option.none())
|
|
139
|
+
: msg.success._tag === 'ChannelRequest'
|
|
140
|
+
? Option.some(Result.succeed(msg.success.payload))
|
|
141
|
+
: Option.none())), listenToDebugPing(label));
|
|
124
142
|
port.start();
|
|
125
|
-
const closedDeferred = yield* Deferred.make()
|
|
143
|
+
const closedDeferred = yield* Effect.acquireRelease(Deferred.make(), Deferred.done(Exit.void));
|
|
126
144
|
const supportsTransferables = true;
|
|
127
|
-
yield* Effect.addFinalizer(() => Effect.try(
|
|
145
|
+
yield* Effect.addFinalizer(() => Effect.try({
|
|
146
|
+
try: () => port.close(),
|
|
147
|
+
catch: (cause) => new Cause.UnknownError(cause),
|
|
148
|
+
}).pipe(Effect.ignore));
|
|
128
149
|
return {
|
|
129
150
|
[WebChannelSymbol]: WebChannelSymbol,
|
|
130
151
|
send,
|
|
@@ -141,11 +162,11 @@ export const messagePortChannelWithAck = ({ port, schema: inputSchema, debugId }
|
|
|
141
162
|
* and the `listenQueue` is only accessible write-only.
|
|
142
163
|
*/
|
|
143
164
|
export const queueChannelProxy = ({ schema: inputSchema, }) => Effect.scopeWithCloseable((scope) => Effect.gen(function* () {
|
|
144
|
-
const sendQueue = yield* Queue.unbounded()
|
|
145
|
-
const listenQueue = yield* Queue.unbounded()
|
|
165
|
+
const sendQueue = yield* Effect.acquireRelease(Queue.unbounded(), Queue.shutdown);
|
|
166
|
+
const listenQueue = yield* Effect.acquireRelease(Queue.unbounded(), Queue.shutdown);
|
|
146
167
|
const send = (message) => Queue.offer(sendQueue, message);
|
|
147
|
-
const listen = Stream.fromQueue(listenQueue).pipe(Stream.map(
|
|
148
|
-
const closedDeferred = yield* Deferred.make()
|
|
168
|
+
const listen = Stream.fromQueue(listenQueue).pipe(Stream.map(Result.succeed), listenToDebugPing('queueChannel'));
|
|
169
|
+
const closedDeferred = yield* Effect.acquireRelease(Deferred.make(), Deferred.done(Exit.void));
|
|
149
170
|
const supportsTransferables = true;
|
|
150
171
|
const schema = mapSchema(inputSchema);
|
|
151
172
|
const webChannel = {
|
|
@@ -163,7 +184,7 @@ export const queueChannelProxy = ({ schema: inputSchema, }) => Effect.scopeWithC
|
|
|
163
184
|
* Eagerly starts listening to a channel by buffering incoming messages in a queue.
|
|
164
185
|
*/
|
|
165
186
|
export const toOpenChannel = (channel, options) => Effect.gen(function* () {
|
|
166
|
-
const queue = yield* Queue.unbounded()
|
|
187
|
+
const queue = yield* Effect.acquireRelease(Queue.unbounded(), Queue.shutdown);
|
|
167
188
|
const heartbeatChannel = channel;
|
|
168
189
|
const pendingPingDeferredRef = {
|
|
169
190
|
current: undefined,
|
|
@@ -172,14 +193,14 @@ export const toOpenChannel = (channel, options) => Effect.gen(function* () {
|
|
|
172
193
|
// TODO implement this on the "chunk" level for better performance
|
|
173
194
|
options?.heartbeat !== undefined
|
|
174
195
|
? Stream.filterEffect(Effect.fn(function* (msg) {
|
|
175
|
-
if (msg
|
|
176
|
-
if (msg.
|
|
177
|
-
yield* heartbeatChannel.send(WebChannelPong.make({ requestId: msg.
|
|
196
|
+
if (Result.isSuccess(msg) === true && Schema.is(WebChannelHeartbeat)(msg.success) === true) {
|
|
197
|
+
if (msg.success._tag === 'WebChannel.Ping') {
|
|
198
|
+
yield* heartbeatChannel.send(WebChannelPong.make({ requestId: msg.success.requestId }));
|
|
178
199
|
}
|
|
179
200
|
else {
|
|
180
201
|
const { deferred, requestId } = pendingPingDeferredRef.current ?? shouldNeverHappen('No pending ping');
|
|
181
|
-
if (requestId !== msg.
|
|
182
|
-
shouldNeverHappen('Received pong for unexpected requestId', requestId, msg.
|
|
202
|
+
if (requestId !== msg.success.requestId) {
|
|
203
|
+
shouldNeverHappen('Received pong for unexpected requestId', requestId, msg.success.requestId);
|
|
183
204
|
}
|
|
184
205
|
yield* Deferred.succeed(deferred, void 0);
|
|
185
206
|
}
|
|
@@ -187,7 +208,7 @@ export const toOpenChannel = (channel, options) => Effect.gen(function* () {
|
|
|
187
208
|
}
|
|
188
209
|
return true;
|
|
189
210
|
}))
|
|
190
|
-
: identity, Stream.
|
|
211
|
+
: identity, Stream.tapArray((array) => Queue.offerAll(queue, array)), Stream.runDrain, Effect.forkScoped);
|
|
191
212
|
if (options?.heartbeat !== undefined) {
|
|
192
213
|
const { interval, timeout } = options.heartbeat;
|
|
193
214
|
yield* Effect.gen(function* () {
|
|
@@ -197,14 +218,14 @@ export const toOpenChannel = (channel, options) => Effect.gen(function* () {
|
|
|
197
218
|
yield* heartbeatChannel.send(WebChannelPing.make({ requestId }));
|
|
198
219
|
const deferred = yield* Deferred.make();
|
|
199
220
|
pendingPingDeferredRef.current = { deferred, requestId };
|
|
200
|
-
yield* deferred.pipe(Effect.timeout(timeout), Effect.catchTag('
|
|
221
|
+
yield* Deferred.await(deferred).pipe(Effect.timeout(timeout), Effect.catchTag('TimeoutError', () => channel.shutdown));
|
|
201
222
|
}
|
|
202
223
|
}).pipe(Effect.withSpan(`WebChannel:heartbeat`), Effect.forkScoped);
|
|
203
224
|
}
|
|
204
225
|
// We're currently limiting the chunk size to 1 to not drop messages in scearnios where
|
|
205
226
|
// the listen stream get subscribed to, only take N messages and then unsubscribe.
|
|
206
227
|
// Without this limit, messages would be dropped.
|
|
207
|
-
const listen = Stream.fromQueue(queue
|
|
228
|
+
const listen = Stream.fromQueue(queue).pipe(Stream.rechunk(1));
|
|
208
229
|
return {
|
|
209
230
|
[WebChannelSymbol]: WebChannelSymbol,
|
|
210
231
|
send: channel.send,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebChannel.js","sourceRoot":"","sources":["../../../src/effect/WebChannel/WebChannel.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WebChannel.js","sourceRoot":"","sources":["../../../src/effect/WebChannel/WebChannel.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as Vitest from '@effect/vitest';
|
|
2
|
-
import { Effect, Schema, Stream } from 'effect';
|
|
2
|
+
import { Effect, Fiber, Schema, Stream } from 'effect';
|
|
3
3
|
import { JSDOM } from 'jsdom';
|
|
4
4
|
import * as WebChannel from "../../browser/WebChannelBrowser.js";
|
|
5
5
|
Vitest.describe('WebChannel', () => {
|
|
6
6
|
Vitest.describe('windowChannel', () => {
|
|
7
|
-
Vitest.
|
|
7
|
+
Vitest.live('should work with 2 windows', () => Effect.gen(function* () {
|
|
8
8
|
const windowA = new JSDOM().window;
|
|
9
9
|
const windowB = new JSDOM().window;
|
|
10
10
|
const codeSideA = Effect.gen(function* () {
|
|
@@ -12,48 +12,48 @@ Vitest.describe('WebChannel', () => {
|
|
|
12
12
|
listenWindow: windowA,
|
|
13
13
|
sendWindow: windowB,
|
|
14
14
|
ids: { own: 'a', other: 'b' },
|
|
15
|
-
schema: Schema.
|
|
15
|
+
schema: Schema.Finite,
|
|
16
16
|
});
|
|
17
|
-
const msgFromBFiber = yield* channelToB.listen.pipe(Stream.
|
|
17
|
+
const msgFromBFiber = yield* channelToB.listen.pipe(Stream.runHead, Effect.flatMap(Effect.fromOption), Effect.flatMap(Effect.fromResult), Effect.forkChild);
|
|
18
18
|
yield* channelToB.send(1);
|
|
19
|
-
Vitest.expect(yield* msgFromBFiber).toEqual(2);
|
|
19
|
+
Vitest.expect(yield* Fiber.join(msgFromBFiber)).toEqual(2);
|
|
20
20
|
});
|
|
21
21
|
const codeSideB = Effect.gen(function* () {
|
|
22
22
|
const channelToA = yield* WebChannel.windowChannel({
|
|
23
23
|
listenWindow: windowB,
|
|
24
24
|
sendWindow: windowA,
|
|
25
25
|
ids: { own: 'b', other: 'a' },
|
|
26
|
-
schema: Schema.
|
|
26
|
+
schema: Schema.Finite,
|
|
27
27
|
});
|
|
28
|
-
const msgFromAFiber = yield* channelToA.listen.pipe(Stream.
|
|
28
|
+
const msgFromAFiber = yield* channelToA.listen.pipe(Stream.runHead, Effect.flatMap(Effect.fromOption), Effect.flatMap(Effect.fromResult), Effect.forkChild);
|
|
29
29
|
yield* channelToA.send(2);
|
|
30
|
-
Vitest.expect(yield* msgFromAFiber).toEqual(1);
|
|
30
|
+
Vitest.expect(yield* Fiber.join(msgFromAFiber)).toEqual(1);
|
|
31
31
|
});
|
|
32
32
|
yield* Effect.all([codeSideA, codeSideB], { concurrency: 'unbounded' });
|
|
33
33
|
}));
|
|
34
|
-
Vitest.
|
|
34
|
+
Vitest.live('should work with the same window', () => Effect.gen(function* () {
|
|
35
35
|
const window = new JSDOM().window;
|
|
36
36
|
const codeSideA = Effect.gen(function* () {
|
|
37
37
|
const channelToB = yield* WebChannel.windowChannel({
|
|
38
38
|
listenWindow: window,
|
|
39
39
|
sendWindow: window,
|
|
40
40
|
ids: { own: 'a', other: 'b' },
|
|
41
|
-
schema: Schema.
|
|
41
|
+
schema: Schema.Finite,
|
|
42
42
|
});
|
|
43
|
-
const msgFromBFiber = yield* channelToB.listen.pipe(Stream.
|
|
43
|
+
const msgFromBFiber = yield* channelToB.listen.pipe(Stream.runHead, Effect.flatMap(Effect.fromOption), Effect.flatMap(Effect.fromResult), Effect.forkChild);
|
|
44
44
|
yield* channelToB.send(1);
|
|
45
|
-
Vitest.expect(yield* msgFromBFiber).toEqual(2);
|
|
45
|
+
Vitest.expect(yield* Fiber.join(msgFromBFiber)).toEqual(2);
|
|
46
46
|
});
|
|
47
47
|
const codeSideB = Effect.gen(function* () {
|
|
48
48
|
const channelToA = yield* WebChannel.windowChannel({
|
|
49
49
|
listenWindow: window,
|
|
50
50
|
sendWindow: window,
|
|
51
51
|
ids: { own: 'b', other: 'a' },
|
|
52
|
-
schema: Schema.
|
|
52
|
+
schema: Schema.Finite,
|
|
53
53
|
});
|
|
54
|
-
const msgFromAFiber = yield* channelToA.listen.pipe(Stream.
|
|
54
|
+
const msgFromAFiber = yield* channelToA.listen.pipe(Stream.runHead, Effect.flatMap(Effect.fromOption), Effect.flatMap(Effect.fromResult), Effect.forkChild);
|
|
55
55
|
yield* channelToA.send(2);
|
|
56
|
-
Vitest.expect(yield* msgFromAFiber).toEqual(1);
|
|
56
|
+
Vitest.expect(yield* Fiber.join(msgFromAFiber)).toEqual(1);
|
|
57
57
|
});
|
|
58
58
|
yield* Effect.all([codeSideA, codeSideB], { concurrency: 'unbounded' });
|
|
59
59
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebChannel.test.js","sourceRoot":"","sources":["../../../src/effect/WebChannel/WebChannel.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"WebChannel.test.js","sourceRoot":"","sources":["../../../src/effect/WebChannel/WebChannel.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,gBAAgB,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAE7B,OAAO,KAAK,UAAU,MAAM,oCAAoC,CAAA;AAEhE,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACjC,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE,CAC7C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC,MAAsC,CAAA;YAClE,MAAM,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC,MAAsC,CAAA;YAElE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACpC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC;oBACjD,YAAY,EAAE,OAAO;oBACrB,UAAU,EAAE,OAAO;oBACnB,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,CAAA;gBAEF,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CACjD,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EACjC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EACjC,MAAM,CAAC,SAAS,CACjB,CAAA;gBAED,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAEzB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAC5D,CAAC,CAAC,CAAA;YAEF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACpC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC;oBACjD,YAAY,EAAE,OAAO;oBACrB,UAAU,EAAE,OAAO;oBACnB,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,CAAA;gBAEF,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CACjD,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EACjC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EACjC,MAAM,CAAC,SAAS,CACjB,CAAA;gBAED,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAEzB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAC5D,CAAC,CAAC,CAAA;YAEF,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAA;QACzE,CAAC,CAAC,CACH,CAAA;QAED,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE,CACnD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC,MAAsC,CAAA;YAEjE,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACpC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC;oBACjD,YAAY,EAAE,MAAM;oBACpB,UAAU,EAAE,MAAM;oBAClB,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,CAAA;gBAEF,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CACjD,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EACjC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EACjC,MAAM,CAAC,SAAS,CACjB,CAAA;gBAED,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAEzB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAC5D,CAAC,CAAC,CAAA;YAEF,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACpC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC;oBACjD,YAAY,EAAE,MAAM;oBACpB,UAAU,EAAE,MAAM;oBAClB,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;oBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,CAAA;gBAEF,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CACjD,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EACjC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EACjC,MAAM,CAAC,SAAS,CACjB,CAAA;gBAED,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAEzB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YAC5D,CAAC,CAAC,CAAA;YAEF,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAA;QACzE,CAAC,CAAC,CACH,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadcastChannelWithAck.d.ts","sourceRoot":"","sources":["../../../src/effect/WebChannel/broadcastChannelWithAck.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"broadcastChannelWithAck.d.ts","sourceRoot":"","sources":["../../../src/effect/WebChannel/broadcastChannelWithAck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmD,KAAK,EAAU,MAAM,QAAQ,CAAA;AAEvF,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AAEtC,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAwB1D;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAAI,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,uCAG3F;IACD,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,WAAW,CAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,cAAc,CAAC,CAAA;CAC1E,KAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAiGjE,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Deferred, Exit, Predicate, Queue,
|
|
1
|
+
import { Deferred, Exit, Filter, Latch, Predicate, Queue, Scope, Stream } from 'effect';
|
|
2
2
|
import * as Effect from "../Effect.js";
|
|
3
|
+
import * as Schema from "../Schema/index.js";
|
|
3
4
|
import { listenToDebugPing, mapSchema, WebChannelSymbol } from "./common.js";
|
|
4
5
|
const ConnectMessage = Schema.TaggedStruct('ConnectMessage', {
|
|
5
6
|
from: Schema.String,
|
|
@@ -16,26 +17,33 @@ const PayloadMessage = Schema.TaggedStruct('PayloadMessage', {
|
|
|
16
17
|
to: Schema.String,
|
|
17
18
|
payload: Schema.Any,
|
|
18
19
|
});
|
|
19
|
-
const Message = Schema.Union(ConnectMessage, ConnectAckMessage, DisconnectMessage, PayloadMessage);
|
|
20
|
+
const Message = Schema.Union([ConnectMessage, ConnectAckMessage, DisconnectMessage, PayloadMessage]);
|
|
20
21
|
/**
|
|
21
22
|
* Same as `broadcastChannel`, but with a queue in between to guarantee message delivery and meant
|
|
22
23
|
* for 1:1 connections.
|
|
23
24
|
*/
|
|
24
25
|
export const broadcastChannelWithAck = ({ channelName, schema: inputSchema, }) => Effect.scopeWithCloseable((scope) => Effect.gen(function* () {
|
|
25
26
|
const channel = new BroadcastChannel(channelName);
|
|
26
|
-
|
|
27
|
+
// BroadcastChannel messages are dropped unless a listener is already registered. Effect v4
|
|
28
|
+
// makes stream startup ordering explicit, so buffer events from channel construction time.
|
|
29
|
+
const messageQueue = yield* Effect.acquireRelease(Queue.unbounded(), Queue.shutdown);
|
|
27
30
|
const connectionId = crypto.randomUUID();
|
|
28
31
|
const schema = mapSchema(inputSchema);
|
|
29
32
|
const peerIdRef = { current: undefined };
|
|
30
|
-
const connectedLatch = yield*
|
|
33
|
+
const connectedLatch = yield* Latch.make(false);
|
|
31
34
|
const supportsTransferables = false;
|
|
32
35
|
const postMessage = (msg) => channel.postMessage(Schema.encodeSync(Message)(msg));
|
|
36
|
+
const handler = (event) => {
|
|
37
|
+
Queue.offerUnsafe(messageQueue, event);
|
|
38
|
+
};
|
|
39
|
+
channel.addEventListener('message', handler);
|
|
40
|
+
yield* Effect.addFinalizer(() => Effect.sync(() => channel.removeEventListener('message', handler)));
|
|
33
41
|
const send = (message) => Effect.gen(function* () {
|
|
34
42
|
yield* connectedLatch.await;
|
|
35
|
-
const payload = yield* Schema.
|
|
43
|
+
const payload = yield* Schema.encodeEffect(schema.send)(message);
|
|
36
44
|
postMessage(PayloadMessage.make({ from: connectionId, to: peerIdRef.current, payload }));
|
|
37
45
|
});
|
|
38
|
-
const listen = Stream.
|
|
46
|
+
const listen = Stream.fromQueue(messageQueue).pipe(Stream.map(({ data }) => data), Stream.filterMap(Filter.fromPredicateOption(Schema.decodeUnknownOption(Message))), Stream.mapEffect((data) => Effect.gen(function* () {
|
|
39
47
|
switch (data._tag) {
|
|
40
48
|
// Case: other side sends connect message (because otherside wasn't yet online when this side send their connect message)
|
|
41
49
|
case 'ConnectMessage': {
|
|
@@ -62,7 +70,7 @@ export const broadcastChannelWithAck = ({ channelName, schema: inputSchema, }) =
|
|
|
62
70
|
}
|
|
63
71
|
case 'PayloadMessage': {
|
|
64
72
|
if (data.to === connectionId) {
|
|
65
|
-
return Schema.
|
|
73
|
+
return Schema.decodeResult(schema.listen)(data.payload);
|
|
66
74
|
}
|
|
67
75
|
return undefined;
|
|
68
76
|
}
|
|
@@ -75,9 +83,8 @@ export const broadcastChannelWithAck = ({ channelName, schema: inputSchema, }) =
|
|
|
75
83
|
yield* Effect.addFinalizer(() => Effect.gen(function* () {
|
|
76
84
|
postMessage(DisconnectMessage.make({ from: connectionId }));
|
|
77
85
|
channel.close();
|
|
78
|
-
yield* Queue.shutdown(messageQueue);
|
|
79
86
|
}));
|
|
80
|
-
const closedDeferred = yield* Deferred.make()
|
|
87
|
+
const closedDeferred = yield* Effect.acquireRelease(Deferred.make(), Deferred.done(Exit.void));
|
|
81
88
|
return {
|
|
82
89
|
[WebChannelSymbol]: WebChannelSymbol,
|
|
83
90
|
send,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadcastChannelWithAck.js","sourceRoot":"","sources":["../../../src/effect/WebChannel/broadcastChannelWithAck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"broadcastChannelWithAck.js","sourceRoot":"","sources":["../../../src/effect/WebChannel/broadcastChannelWithAck.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,44 +1,43 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { Effect, Schema, Stream } from 'effect';
|
|
1
|
+
import { type Deferred, Effect, Result, Schema, Stream } from 'effect';
|
|
3
2
|
export declare const WebChannelSymbol: unique symbol;
|
|
4
3
|
export type WebChannelSymbol = typeof WebChannelSymbol;
|
|
5
4
|
export declare const isWebChannel: <MsgListen, MsgSend>(value: unknown) => value is WebChannel<MsgListen, MsgSend>;
|
|
6
5
|
export interface WebChannel<MsgListen, MsgSend, E = never> {
|
|
7
6
|
readonly [WebChannelSymbol]: unknown;
|
|
8
|
-
send: (a: MsgSend) => Effect.Effect<void,
|
|
9
|
-
listen: Stream.Stream<
|
|
7
|
+
send: (a: MsgSend) => Effect.Effect<void, Schema.SchemaError | E>;
|
|
8
|
+
listen: Stream.Stream<Result.Result<MsgListen, Schema.SchemaError>, E>;
|
|
10
9
|
supportsTransferables: boolean;
|
|
11
10
|
closedDeferred: Deferred.Deferred<void>;
|
|
12
11
|
shutdown: Effect.Effect<void>;
|
|
13
12
|
schema: {
|
|
14
|
-
listen: Schema.
|
|
15
|
-
send: Schema.
|
|
13
|
+
listen: Schema.Codec<MsgListen, any>;
|
|
14
|
+
send: Schema.Codec<MsgSend, any>;
|
|
16
15
|
};
|
|
17
16
|
debugInfo?: Record<string, any> | undefined;
|
|
18
17
|
}
|
|
19
18
|
export declare const DebugPingMessage: Schema.TaggedStruct<"WebChannel.DebugPing", {
|
|
20
|
-
message:
|
|
21
|
-
payload: Schema.optional<
|
|
19
|
+
readonly message: Schema.String;
|
|
20
|
+
readonly payload: Schema.optional<Schema.String>;
|
|
22
21
|
}>;
|
|
23
22
|
export declare const WebChannelPing: Schema.TaggedStruct<"WebChannel.Ping", {
|
|
24
|
-
requestId:
|
|
23
|
+
readonly requestId: Schema.String;
|
|
25
24
|
}>;
|
|
26
25
|
export declare const WebChannelPong: Schema.TaggedStruct<"WebChannel.Pong", {
|
|
27
|
-
requestId:
|
|
26
|
+
readonly requestId: Schema.String;
|
|
28
27
|
}>;
|
|
29
|
-
export declare const WebChannelHeartbeat: Schema.Union<[Schema.TaggedStruct<"WebChannel.Ping", {
|
|
30
|
-
requestId:
|
|
28
|
+
export declare const WebChannelHeartbeat: Schema.Union<readonly [Schema.TaggedStruct<"WebChannel.Ping", {
|
|
29
|
+
readonly requestId: Schema.String;
|
|
31
30
|
}>, Schema.TaggedStruct<"WebChannel.Pong", {
|
|
32
|
-
requestId:
|
|
31
|
+
readonly requestId: Schema.String;
|
|
33
32
|
}>]>;
|
|
34
33
|
type WebChannelMessages = typeof DebugPingMessage.Type | typeof WebChannelPing.Type | typeof WebChannelPong.Type;
|
|
35
34
|
export declare const schemaWithWebChannelMessages: <MsgListen, MsgSend>(schema: OutputSchema<MsgListen, MsgSend, any, any>) => OutputSchema<MsgListen | WebChannelMessages, MsgSend | WebChannelMessages, any, any>;
|
|
36
|
-
export type InputSchema<MsgListen, MsgSend, MsgListenEncoded, MsgSendEncoded> = Schema.
|
|
35
|
+
export type InputSchema<MsgListen, MsgSend, MsgListenEncoded, MsgSendEncoded> = Schema.Codec<MsgListen | MsgSend, MsgListenEncoded | MsgSendEncoded> | OutputSchema<MsgListen, MsgSend, MsgListenEncoded, MsgSendEncoded>;
|
|
37
36
|
export type OutputSchema<MsgListen, MsgSend, MsgListenEncoded, MsgSendEncoded> = {
|
|
38
|
-
listen: Schema.
|
|
39
|
-
send: Schema.
|
|
37
|
+
listen: Schema.Codec<MsgListen, MsgListenEncoded>;
|
|
38
|
+
send: Schema.Codec<MsgSend, MsgSendEncoded>;
|
|
40
39
|
};
|
|
41
40
|
export declare const mapSchema: <MsgListen, MsgSend, MsgListenEncoded, MsgSendEncoded>(schema: InputSchema<MsgListen, MsgSend, MsgListenEncoded, MsgSendEncoded>) => OutputSchema<MsgListen, MsgSend, MsgListenEncoded, MsgSendEncoded>;
|
|
42
|
-
export declare const listenToDebugPing: (channelName: string) => <MsgListen>(stream: Stream.Stream<
|
|
41
|
+
export declare const listenToDebugPing: (channelName: string) => <MsgListen>(stream: Stream.Stream<Result.Result<MsgListen, Schema.SchemaError>>) => Stream.Stream<Result.Result<MsgListen, Schema.SchemaError>>;
|
|
43
42
|
export {};
|
|
44
43
|
//# sourceMappingURL=common.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/effect/WebChannel/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/effect/WebChannel/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Effect, Predicate, Schema, Stream } from 'effect';
|
|
1
|
+
import { Effect, Predicate, Result, Schema, Stream } from 'effect';
|
|
2
2
|
export const WebChannelSymbol = Symbol('WebChannel');
|
|
3
3
|
export const isWebChannel = (value) => typeof value === 'object' && value !== null && Predicate.hasProperty(value, WebChannelSymbol);
|
|
4
4
|
export const DebugPingMessage = Schema.TaggedStruct('WebChannel.DebugPing', {
|
|
@@ -11,17 +11,17 @@ export const WebChannelPing = Schema.TaggedStruct('WebChannel.Ping', {
|
|
|
11
11
|
export const WebChannelPong = Schema.TaggedStruct('WebChannel.Pong', {
|
|
12
12
|
requestId: Schema.String,
|
|
13
13
|
});
|
|
14
|
-
export const WebChannelHeartbeat = Schema.Union(WebChannelPing, WebChannelPong);
|
|
14
|
+
export const WebChannelHeartbeat = Schema.Union([WebChannelPing, WebChannelPong]);
|
|
15
15
|
export const schemaWithWebChannelMessages = (schema) => ({
|
|
16
|
-
send: Schema.Union(schema.send, DebugPingMessage, WebChannelPing, WebChannelPong),
|
|
17
|
-
listen: Schema.Union(schema.listen, DebugPingMessage, WebChannelPing, WebChannelPong),
|
|
16
|
+
send: Schema.Union([schema.send, DebugPingMessage, WebChannelPing, WebChannelPong]),
|
|
17
|
+
listen: Schema.Union([schema.listen, DebugPingMessage, WebChannelPing, WebChannelPong]),
|
|
18
18
|
});
|
|
19
19
|
export const mapSchema = (schema) => Predicate.hasProperty(schema, 'send') === true && Predicate.hasProperty(schema, 'listen') === true
|
|
20
20
|
? schemaWithWebChannelMessages(schema)
|
|
21
21
|
: schemaWithWebChannelMessages({ send: schema, listen: schema });
|
|
22
22
|
export const listenToDebugPing = (channelName) => (stream) => stream.pipe(Stream.filterEffect(Effect.fn(function* (msg) {
|
|
23
|
-
if (msg
|
|
24
|
-
yield* Effect.logDebug(`WebChannel:ping [${channelName}] ${msg.
|
|
23
|
+
if (Result.isSuccess(msg) === true && Schema.is(DebugPingMessage)(msg.success) === true) {
|
|
24
|
+
yield* Effect.logDebug(`WebChannel:ping [${channelName}] ${msg.success.message}`, msg.success.payload);
|
|
25
25
|
return false;
|
|
26
26
|
}
|
|
27
27
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/effect/WebChannel/common.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/effect/WebChannel/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;AAGpD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAqB,KAAc,EAA2C,EAAE,CAC1G,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAA;AAa/F,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,YAAY,CAAC,sBAAsB,EAAE;IAC1E,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;CACxC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE;IACnE,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE;IACnE,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAA;AAIjF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAC1C,MAAkD,EACoC,EAAE,CAAC,CAAC;IAC1F,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;IACnF,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;CACxF,CAAC,CAAA;AAWF,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,MAAyE,EACL,EAAE,CACtE,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,IAAI;IAChG,CAAC,CAAE,4BAA4B,CAAC,MAAM,CAAS;IAC/C,CAAC,CAAE,4BAA4B,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAS,CAAA;AAE7E,MAAM,CAAC,MAAM,iBAAiB,GAC5B,CAAC,WAAmB,EAAE,EAAE,CACxB,CACE,MAAmE,EACN,EAAE,CAC/D,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,YAAY,CACjB,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG;IACtB,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACxF,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,WAAW,KAAK,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QACtG,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAC,CACH,CACF,CAAA"}
|