@livestore/common-cf 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.
Files changed (58) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/cf-types.js +2 -0
  3. package/dist/cf-types.js.map +1 -1
  4. package/dist/declare/cf-declare.d.ts +32 -5
  5. package/dist/declare/cf-declare.d.ts.map +1 -1
  6. package/dist/declare/cf-declare.js +9 -10
  7. package/dist/declare/cf-declare.js.map +1 -1
  8. package/dist/do-rpc/client.d.ts +1 -1
  9. package/dist/do-rpc/client.d.ts.map +1 -1
  10. package/dist/do-rpc/client.js +23 -46
  11. package/dist/do-rpc/client.js.map +1 -1
  12. package/dist/do-rpc/client.test.d.ts +2 -0
  13. package/dist/do-rpc/client.test.d.ts.map +1 -0
  14. package/dist/do-rpc/client.test.js +99 -0
  15. package/dist/do-rpc/client.test.js.map +1 -0
  16. package/dist/do-rpc/rpc.test.js +27 -59
  17. package/dist/do-rpc/rpc.test.js.map +1 -1
  18. package/dist/do-rpc/server.d.ts +10 -5
  19. package/dist/do-rpc/server.d.ts.map +1 -1
  20. package/dist/do-rpc/server.js +104 -54
  21. package/dist/do-rpc/server.js.map +1 -1
  22. package/dist/do-rpc/test-fixtures/rpc-schema.d.ts +27 -27
  23. package/dist/do-rpc/test-fixtures/rpc-schema.js +11 -11
  24. package/dist/do-rpc/test-fixtures/worker.d.ts.map +1 -1
  25. package/dist/do-rpc/test-fixtures/worker.js +10 -10
  26. package/dist/do-rpc/test-fixtures/worker.js.map +1 -1
  27. package/dist/ws-rpc/test-fixtures/rpc-schema.d.ts +27 -27
  28. package/dist/ws-rpc/test-fixtures/rpc-schema.js +9 -9
  29. package/dist/ws-rpc/test-fixtures/worker.d.ts.map +1 -1
  30. package/dist/ws-rpc/test-fixtures/worker.js +2 -2
  31. package/dist/ws-rpc/test-fixtures/worker.js.map +1 -1
  32. package/dist/ws-rpc/ws-rpc-server.d.ts +47 -6
  33. package/dist/ws-rpc/ws-rpc-server.d.ts.map +1 -1
  34. package/dist/ws-rpc/ws-rpc-server.js +30 -20
  35. package/dist/ws-rpc/ws-rpc-server.js.map +1 -1
  36. package/dist/ws-rpc/ws-rpc.test.js +29 -61
  37. package/dist/ws-rpc/ws-rpc.test.js.map +1 -1
  38. package/package.json +40 -16
  39. package/src/cf-types.ts +2 -0
  40. package/src/declare/cf-declare.ts +18 -10
  41. package/src/do-rpc/README.md +1 -2
  42. package/src/do-rpc/client.test.ts +122 -0
  43. package/src/do-rpc/client.ts +30 -50
  44. package/src/do-rpc/rpc.test.ts +33 -61
  45. package/src/do-rpc/server.ts +157 -80
  46. package/src/do-rpc/test-fixtures/rpc-schema.ts +11 -11
  47. package/src/do-rpc/test-fixtures/worker.ts +13 -14
  48. package/src/ws-rpc/README.md +1 -1
  49. package/src/ws-rpc/test-fixtures/rpc-schema.ts +9 -9
  50. package/src/ws-rpc/test-fixtures/worker.ts +6 -4
  51. package/src/ws-rpc/ws-rpc-server.ts +69 -34
  52. package/src/ws-rpc/ws-rpc.test.ts +35 -63
  53. package/src/do-rpc/test-fixtures/.wrangler/state/v3/do/test-durable-object-rpc-TestRpcDurableObject/9ad3dfcb5436dfc3f2e14f5b554a0fd6d8b68206ad64fdde7320232d04e16dfe.sqlite +0 -0
  54. package/src/do-rpc/test-fixtures/.wrangler/state/v3/do/test-durable-object-rpc-TestRpcDurableObject/9ad3dfcb5436dfc3f2e14f5b554a0fd6d8b68206ad64fdde7320232d04e16dfe.sqlite-shm +0 -0
  55. package/src/do-rpc/test-fixtures/.wrangler/state/v3/do/test-durable-object-rpc-TestRpcDurableObject/9ad3dfcb5436dfc3f2e14f5b554a0fd6d8b68206ad64fdde7320232d04e16dfe.sqlite-wal +0 -0
  56. package/src/ws-rpc/test-fixtures/.wrangler/state/v3/do/test-durable-object-rpc-TestRpcDurableObject/9ad3dfcb5436dfc3f2e14f5b554a0fd6d8b68206ad64fdde7320232d04e16dfe.sqlite +0 -0
  57. package/src/ws-rpc/test-fixtures/.wrangler/state/v3/do/test-durable-object-rpc-TestRpcDurableObject/9ad3dfcb5436dfc3f2e14f5b554a0fd6d8b68206ad64fdde7320232d04e16dfe.sqlite-shm +0 -0
  58. package/src/ws-rpc/test-fixtures/.wrangler/state/v3/do/test-durable-object-rpc-TestRpcDurableObject/9ad3dfcb5436dfc3f2e14f5b554a0fd6d8b68206ad64fdde7320232d04e16dfe.sqlite-wal +0 -0
package/dist/cf-types.js CHANGED
@@ -1,2 +1,4 @@
1
1
  export {};
2
+ // We can't re-export the types from `cloudflare:workers` because they rely on having loaded the `@cloudflare/workers-types`
3
+ // which should only be done in the application, not in the library.
2
4
  //# sourceMappingURL=cf-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cf-types.js","sourceRoot":"","sources":["../src/cf-types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"cf-types.js","sourceRoot":"","sources":["../src/cf-types.ts"],"names":[],"mappings":";AACA,4HAA4H;AAC5H,oEAAoE"}
@@ -1,9 +1,36 @@
1
1
  import type * as CF from '@cloudflare/workers-types';
2
- export declare const ReadableStream: typeof CF.ReadableStream;
3
- export declare const Request: typeof CF.Request;
4
- export declare const Response: typeof CF.Response;
5
- export declare const WebSocket: typeof CF.WebSocket;
2
+ export declare const ReadableStream: {
3
+ new (underlyingSource: CF.UnderlyingByteSource, strategy?: CF.QueuingStrategy<Uint8Array>): CF.ReadableStream<Uint8Array>;
4
+ new <R = any>(underlyingSource?: CF.UnderlyingSource<R>, strategy?: CF.QueuingStrategy<R>): CF.ReadableStream<R>;
5
+ prototype: CF.ReadableStream;
6
+ };
7
+ export declare const Request: {
8
+ new <CfHostMetadata = unknown, Cf = CF.CfProperties<CfHostMetadata>>(input: CF.RequestInfo<CF.CfProperties> | CF.URL, init?: CF.RequestInit<Cf>): CF.Request<CfHostMetadata, Cf>;
9
+ prototype: CF.Request;
10
+ };
11
+ export declare const Response: {
12
+ new (body?: CF.BodyInit | null, init?: CF.ResponseInit): CF.Response;
13
+ prototype: CF.Response;
14
+ error(): CF.Response;
15
+ redirect(url: string, status?: number): CF.Response;
16
+ json(any: any, maybeInit?: CF.ResponseInit | CF.Response): CF.Response;
17
+ };
18
+ export declare const WebSocket: {
19
+ new (url: string, protocols?: string[] | string): CF.WebSocket;
20
+ prototype: CF.WebSocket;
21
+ readonly READY_STATE_CONNECTING: number;
22
+ readonly CONNECTING: number;
23
+ readonly READY_STATE_OPEN: number;
24
+ readonly OPEN: number;
25
+ readonly READY_STATE_CLOSING: number;
26
+ readonly CLOSING: number;
27
+ readonly READY_STATE_CLOSED: number;
28
+ readonly CLOSED: number;
29
+ };
6
30
  export declare const Rpc: typeof CF.Rpc;
7
- export declare const WebSocketPair: typeof CF.WebSocketPair;
31
+ export declare const WebSocketPair: new () => {
32
+ 0: CF.WebSocket;
33
+ 1: CF.WebSocket;
34
+ };
8
35
  export declare const WebSocketRequestResponsePair: typeof CF.WebSocketRequestResponsePair;
9
36
  //# sourceMappingURL=cf-declare.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cf-declare.d.ts","sourceRoot":"","sources":["../../src/declare/cf-declare.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAEpD,eAAO,MAAM,cAAc,EAA2C,OAAO,EAAE,CAAC,cAAc,CAAA;AAC9F,eAAO,MAAM,OAAO,EAAoC,OAAO,EAAE,CAAC,OAAO,CAAA;AACzE,eAAO,MAAM,QAAQ,EAAqC,OAAO,EAAE,CAAC,QAAQ,CAAA;AAC5E,eAAO,MAAM,SAAS,EAAsC,OAAO,EAAE,CAAC,SAAS,CAAA;AAC/E,eAAO,MAAM,GAAG,EAAgC,OAAO,EAAE,CAAC,GAAG,CAAA;AAE7D,eAAO,MAAM,aAAa,EAA0C,OAAO,EAAE,CAAC,aAAa,CAAA;AAC3F,eAAO,MAAM,4BAA4B,EAEe,OAAO,EAAE,CAAC,4BAA4B,CAAA"}
1
+ {"version":3,"file":"cf-declare.d.ts","sourceRoot":"","sources":["../../src/declare/cf-declare.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAapD,eAAO,MAAM,cAAc;;;;CAA8B,CAAA;AACzD,eAAO,MAAM,OAAO;;;CAAuB,CAAA;AAC3C,eAAO,MAAM,QAAQ;;;;;;CAAwB,CAAA;AAC7C,eAAO,MAAM,SAAS;;;;;;;;;;;CAAyB,CAAA;AAC/C,eAAO,MAAM,GAAG,eAAmB,CAAA;AACnC,eAAO,MAAM,aAAa;;;CAA6B,CAAA;AACvD,eAAO,MAAM,4BAA4B,wCAA4C,CAAA"}
@@ -1,12 +1,11 @@
1
1
  /// <reference types="@cloudflare/workers-types" />
2
- export const ReadableStream = globalThis.ReadableStream;
3
- export const Request = globalThis.Request;
4
- export const Response = globalThis.Response;
5
- export const WebSocket = globalThis.WebSocket;
6
- export const Rpc = globalThis.Rpc;
7
- // @ts-expect-error WebSocketPair is not defined in the globalThis object
8
- export const WebSocketPair = globalThis.WebSocketPair;
9
- export const WebSocketRequestResponsePair =
10
- // @ts-expect-error WebSocketRequestResponsePair is not defined in the globalThis object
11
- globalThis.WebSocketRequestResponsePair;
2
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- bridging standard Web API types to Cloudflare Worker types; inherent platform type mismatch
3
+ const cfGlobalThis = globalThis;
4
+ export const ReadableStream = cfGlobalThis.ReadableStream;
5
+ export const Request = cfGlobalThis.Request;
6
+ export const Response = cfGlobalThis.Response;
7
+ export const WebSocket = cfGlobalThis.WebSocket;
8
+ export const Rpc = cfGlobalThis.Rpc;
9
+ export const WebSocketPair = cfGlobalThis.WebSocketPair;
10
+ export const WebSocketRequestResponsePair = cfGlobalThis.WebSocketRequestResponsePair;
12
11
  //# sourceMappingURL=cf-declare.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cf-declare.js","sourceRoot":"","sources":["../../src/declare/cf-declare.ts"],"names":[],"mappings":"AAAA,mDAAmD;AAMnD,MAAM,CAAC,MAAM,cAAc,GAAG,UAAU,CAAC,cAAqD,CAAA;AAC9F,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAAC,OAAuC,CAAA;AACzE,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAyC,CAAA;AAC5E,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CAAC,SAA2C,CAAA;AAC/E,MAAM,CAAC,MAAM,GAAG,GAAG,UAAU,CAAC,GAA+B,CAAA;AAC7D,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC,aAAmD,CAAA;AAC3F,MAAM,CAAC,MAAM,4BAA4B;AACvC,wFAAwF;AACxF,UAAU,CAAC,4BAAiF,CAAA"}
1
+ {"version":3,"file":"cf-declare.js","sourceRoot":"","sources":["../../src/declare/cf-declare.ts"],"names":[],"mappings":"AAAA,mDAAmD;AAMnD,sKAAsK;AACtK,MAAM,YAAY,GAAG,UAQpB,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CAAC,cAAc,CAAA;AACzD,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAA;AAC3C,MAAM,CAAC,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAA;AAC7C,MAAM,CAAC,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;AAC/C,MAAM,CAAC,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAA;AACnC,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,CAAA;AACvD,MAAM,CAAC,MAAM,4BAA4B,GAAG,YAAY,CAAC,4BAA4B,CAAA"}
@@ -11,6 +11,6 @@ interface MakeDoRpcProtocolArgs {
11
11
  * Creates a Protocol layer that uses Cloudflare Durable Object RPC calls.
12
12
  * This enables direct RPC communication with Durable Objects using Cloudflare's native RPC.
13
13
  */
14
- export declare const layerProtocolDurableObject: (args: MakeDoRpcProtocolArgs) => Layer.Layer<RpcClient.Protocol, never, never>;
14
+ export declare const layerProtocolDurableObject: (args: MakeDoRpcProtocolArgs) => Layer.Layer<RpcClient.Protocol>;
15
15
  export {};
16
16
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/do-rpc/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,EACL,SAAS,EAIV,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAqD9C,UAAU,qBAAqB;IAC7B,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9E,aAAa,EAAE;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,eAAe,EAAE,MAAM,CAAA;KACxB,CAAA;CACF;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GACrC,MAAM,qBAAqB,KAC1B,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAsE,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/do-rpc/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,EAEL,SAAS,EAIV,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAmC9C,UAAU,qBAAqB;IAC7B,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9E,aAAa,EAAE;QACb,WAAW,EAAE,MAAM,CAAA;QACnB,eAAe,EAAE,MAAM,CAAA;KACxB,CAAA;CACF;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GAAI,MAAM,qBAAqB,KAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CACpC,CAAA"}
@@ -1,35 +1,17 @@
1
- import { Effect, Fiber, FiberMap, Layer, RpcClient, RpcSerialization, } from '@livestore/utils/effect';
2
- /**
3
- * Processes a ReadableStream response from streaming RPCs.
4
- * Reads chunks from the stream and writes them as RPC responses.
5
- */
1
+ import { Effect, Fiber, FiberMap, Layer, Option, RpcClient, RpcSerialization, } from '@livestore/utils/effect';
2
+ /** Decodes a streaming-RPC `ReadableStream`'s msgpack frames, writing each out as it arrives. */
6
3
  const processReadableStream = (stream, parser, writeResponse) => Effect.gen(function* () {
7
4
  const reader = stream.getReader();
8
5
  yield* Effect.gen(function* () {
9
6
  while (true) {
10
- const { done, value } = yield* Effect.tryPromise({
11
- try: () => reader.read(),
12
- catch: (cause) => cause,
13
- }).pipe(Effect.orDie);
14
- if (done) {
7
+ const { done, value } = yield* Effect.tryPromise(() => reader.read()).pipe(Effect.orDie);
8
+ if (done === true) {
15
9
  break;
16
10
  }
17
- // Decode the chunk
11
+ // Server encodes `[message]` per enqueue; merged enqueues arrive as
12
+ // `[[msg1], [msg2], ...]`. `flat(1)` normalizes both to `[msg1, ...]`.
18
13
  const decoded = parser.decode(value);
19
- // Handle array of messages - we get [[message]] from server
20
- let messages;
21
- if (Array.isArray(decoded) && decoded.length === 1 && Array.isArray(decoded[0])) {
22
- // Double-wrapped array [[message]] -> [message]
23
- messages = decoded[0];
24
- }
25
- else if (Array.isArray(decoded)) {
26
- // Single array [message]
27
- messages = decoded;
28
- }
29
- else {
30
- messages = [decoded];
31
- }
32
- // Write each message
14
+ const messages = Array.isArray(decoded) === true ? decoded.flat(1) : [decoded];
33
15
  for (const message of messages) {
34
16
  yield* writeResponse(message);
35
17
  }
@@ -40,61 +22,56 @@ const processReadableStream = (stream, parser, writeResponse) => Effect.gen(func
40
22
  * Creates a Protocol layer that uses Cloudflare Durable Object RPC calls.
41
23
  * This enables direct RPC communication with Durable Objects using Cloudflare's native RPC.
42
24
  */
43
- export const layerProtocolDurableObject = (args) => Layer.scoped(RpcClient.Protocol, makeProtocolDurableObject(args));
25
+ export const layerProtocolDurableObject = (args) => Layer.effect(RpcClient.Protocol, makeProtocolDurableObject(args));
44
26
  /**
45
27
  * Implementation of the RPC Protocol interface using Cloudflare Durable Object RPC calls.
46
28
  * Provides the core protocol methods required by @effect/rpc.
47
29
  */
48
30
  const makeProtocolDurableObject = ({ callRpc, }) => RpcClient.Protocol.make(Effect.fnUntraced(function* (writeResponse) {
49
- const parser = RpcSerialization.msgPack.unsafeMake();
50
31
  // Not using an actual `FiberMap` here because it seems to shutdown to early
51
- // const fiberMap = new Map<string, Fiber.RuntimeFiber<void, never>>()
32
+ // const fiberMap = new Map<string, Fiber.Fiber<void, never>>()
52
33
  const fiberMap = yield* FiberMap.make();
53
- const send = (message) => {
34
+ const send = (clientId, message) => {
54
35
  if (message._tag !== 'Request') {
55
36
  if (message._tag === 'Interrupt') {
56
37
  return Effect.gen(function* () {
57
38
  const fiber = yield* FiberMap.get(fiberMap, message.requestId);
58
- yield* Fiber.interrupt(fiber);
39
+ if (Option.isSome(fiber) === true) {
40
+ yield* Fiber.interrupt(fiber.value);
41
+ }
59
42
  }).pipe(Effect.orDie);
60
43
  }
61
44
  return Effect.void;
62
45
  }
46
+ // MessagePack parsers buffer incomplete frames, so scope one parser to one DO RPC call.
47
+ const parser = RpcSerialization.msgPack.makeUnsafe();
63
48
  // Wrap single Request in array to match server expected format
64
49
  const serializedPayload = parser.encode([message]);
65
50
  return Effect.gen(function* () {
66
- const serializedResponse = yield* Effect.tryPromise({
67
- try: () => callRpc(serializedPayload),
68
- catch: (cause) => cause,
69
- }).pipe(Effect.orDie); // Convert errors to defects to match never error type
51
+ const serializedResponse = yield* Effect.tryPromise(() => callRpc(serializedPayload)).pipe(Effect.orDie); // Convert errors to defects to match never error type
70
52
  // Handle ReadableStream for streaming responses
71
53
  if (serializedResponse instanceof ReadableStream) {
72
- const fiber = yield* processReadableStream(serializedResponse, parser, writeResponse).pipe(
54
+ const fiber = yield* processReadableStream(serializedResponse, parser, (response) => writeResponse(clientId, response)).pipe(
73
55
  // Effect.tapCauseLogPretty,
74
- Effect.fork);
56
+ Effect.forkChild);
75
57
  // fiberMap.set(message.id, fiber)
76
58
  yield* FiberMap.set(fiberMap, message.id, fiber);
77
- yield* fiber;
59
+ yield* Fiber.join(fiber);
78
60
  return;
79
61
  }
80
62
  // Handle regular Uint8Array responses
81
63
  const decoded = parser.decode(serializedResponse);
82
- // Handle potential nested array from server serialization
64
+ // Normalize nested arrays from server serialization (same as streaming path)
83
65
  let responseArray;
84
- if (Array.isArray(decoded) && decoded.length === 1 && Array.isArray(decoded[0])) {
85
- // Double-wrapped array [[Exit]] -> [Exit]
86
- responseArray = decoded[0];
87
- }
88
- else if (Array.isArray(decoded)) {
89
- // Single array [Exit]
90
- responseArray = decoded;
66
+ if (Array.isArray(decoded) === true) {
67
+ responseArray = decoded.flat(1);
91
68
  }
92
69
  else {
93
70
  responseArray = [decoded];
94
71
  }
95
72
  // Process each response
96
73
  for (const response of responseArray) {
97
- yield* writeResponse(response);
74
+ yield* writeResponse(clientId, response);
98
75
  }
99
76
  }).pipe(Effect.withSpan('do-rpc-client:send'), Effect.orDie); // Ensure never error type
100
77
  };
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/do-rpc/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/do-rpc/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=client.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../../src/do-rpc/client.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,99 @@
1
+ import { Vitest } from '@livestore/utils-dev/node-vitest';
2
+ import { Effect, Fiber, Rpc, RpcClient, RpcGroup, Schema, Stream } from '@livestore/utils/effect';
3
+ import { layerProtocolDurableObject } from "./client.js";
4
+ import { toDurableObjectHandler } from "./server.js";
5
+ class Rpcs extends RpcGroup.make(Rpc.make('BigStream', {
6
+ payload: Schema.Struct({ n: Schema.Finite }),
7
+ success: Schema.Struct({
8
+ seqNum: Schema.Finite,
9
+ name: Schema.String,
10
+ args: Schema.Struct({ a: Schema.Finite, b: Schema.String }),
11
+ }),
12
+ stream: true,
13
+ }), Rpc.make('Echo', {
14
+ payload: Schema.Struct({ text: Schema.String }),
15
+ success: Schema.Struct({ echo: Schema.String }),
16
+ })) {
17
+ }
18
+ const READ_CHUNK_SIZE = 4096;
19
+ const expectedRows = [
20
+ {
21
+ seqNum: 0,
22
+ name: 'event-0',
23
+ args: { a: 0, b: 'x'.repeat(READ_CHUNK_SIZE) },
24
+ },
25
+ ];
26
+ const ServerLive = Rpcs.toLayer({
27
+ BigStream: ({ n }) => Stream.fromIterable(expectedRows.slice(0, n)),
28
+ Echo: ({ text }) => Effect.succeed({ echo: `Echo: ${text}` }),
29
+ });
30
+ Vitest.live('keeps a straddling stream frame isolated from a concurrent unary response', () => Effect.gen(function* () {
31
+ let signalFirstStreamRead = () => { };
32
+ const firstStreamReadDone = new Promise((resolve) => {
33
+ signalFirstStreamRead = resolve;
34
+ });
35
+ let releaseStreamTail = () => { };
36
+ const streamTailReleased = new Promise((resolve) => {
37
+ releaseStreamTail = resolve;
38
+ });
39
+ const streamWithGatedTail = (bytes) => {
40
+ let pos = 0;
41
+ let isFirstRead = true;
42
+ const stream = new ReadableStream({
43
+ async pull(controller) {
44
+ if (pos >= bytes.length)
45
+ return controller.close();
46
+ if (isFirstRead === false)
47
+ await streamTailReleased;
48
+ controller.enqueue(bytes.subarray(pos, pos + READ_CHUNK_SIZE));
49
+ pos += READ_CHUNK_SIZE;
50
+ if (isFirstRead === true) {
51
+ isFirstRead = false;
52
+ signalFirstStreamRead();
53
+ }
54
+ },
55
+ });
56
+ // oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- bridge platform ReadableStream to the CF type, like server.ts
57
+ return stream;
58
+ };
59
+ const ProtocolLive = layerProtocolDurableObject({
60
+ callRpc: makeGatedCallRpc(streamWithGatedTail),
61
+ callerContext: { bindingName: 'TEST', durableObjectId: 'id' },
62
+ });
63
+ const result = yield* Effect.gen(function* () {
64
+ const client = yield* RpcClient.make(Rpcs);
65
+ const streamFiber = yield* client.BigStream({ n: expectedRows.length }).pipe(Stream.runCollect, Effect.forkChild);
66
+ yield* Effect.promise(() => firstStreamReadDone);
67
+ const echo = yield* client.Echo({ text: 'hi' }).pipe(Effect.timeout('500 millis'));
68
+ yield* Effect.sync(() => releaseStreamTail());
69
+ const rows = yield* Fiber.join(streamFiber);
70
+ return { rows: Array.from(rows), echo };
71
+ }).pipe(Effect.provide(ProtocolLive), Effect.timeout('2 seconds'));
72
+ Vitest.expect(result.echo).toEqual({ echo: 'Echo: hi' });
73
+ Vitest.expect(result.rows).toEqual(expectedRows);
74
+ }));
75
+ const makeGatedCallRpc = (gateStream) => (payload) => toDurableObjectHandler(Rpcs, { layer: ServerLive })(new Uint8Array(payload)).pipe(Effect.flatMap(
76
+ // Narrow on `Uint8Array`; the `ReadableStream` global differs from `CfTypes` across envs.
77
+ (result) => result instanceof Uint8Array
78
+ ? Effect.succeed(result)
79
+ : Effect.promise(() => collectBytes(result)).pipe(Effect.map(gateStream))), Effect.runPromise);
80
+ const collectBytes = async (stream) => {
81
+ const reader = stream.getReader();
82
+ const parts = [];
83
+ let total = 0;
84
+ for (;;) {
85
+ const { done, value } = await reader.read();
86
+ if (done === true)
87
+ break;
88
+ parts.push(value);
89
+ total += value.length;
90
+ }
91
+ const out = new Uint8Array(total);
92
+ let offset = 0;
93
+ for (const part of parts) {
94
+ out.set(part, offset);
95
+ offset += part.length;
96
+ }
97
+ return out;
98
+ };
99
+ //# sourceMappingURL=client.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../src/do-rpc/client.test.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,22 @@
1
- import { Chunk, Effect, FetchHttpClient, Layer, Logger, LogLevel, Option, RpcClient, RpcSerialization, Stream, } from '@livestore/utils/effect';
2
- import { PlatformNode } from '@livestore/utils/node';
3
- import { Vitest } from '@livestore/utils-dev/node-vitest';
4
- import { WranglerDevServerService } from '@livestore/utils-dev/wrangler';
5
1
  import { expect } from 'vitest';
2
+ import { Vitest } from '@livestore/utils-dev/node-vitest';
3
+ import { WranglerDevServer } from '@livestore/utils-dev/wrangler';
4
+ import { Effect, FetchHttpClient, Layer, Option, References, RpcClient, RpcSerialization, Stream, } from '@livestore/utils/effect';
5
+ import { PlatformNode } from '@livestore/utils/node';
6
6
  import { TestRpcs } from "./test-fixtures/rpc-schema.js";
7
7
  const testTimeout = 60_000;
8
8
  const withWranglerTest = Vitest.makeWithTestCtx({
9
9
  timeout: testTimeout,
10
- makeLayer: () => WranglerDevServerService.Default({
10
+ makeLayer: () => WranglerDevServer.layer({
11
11
  cwd: `${import.meta.dirname}/test-fixtures`,
12
- }).pipe(Layer.provide(Layer.mergeAll(PlatformNode.NodeContext.layer, FetchHttpClient.layer, Logger.minimumLogLevel(LogLevel.Debug)))),
12
+ }).pipe(Layer.provide(Layer.mergeAll(PlatformNode.NodeServices.layer, FetchHttpClient.layer, Layer.succeed(References.MinimumLogLevel, 'Debug')))),
13
13
  });
14
14
  const ProtocolLive = Layer.suspend(() => Effect.gen(function* () {
15
- const server = yield* WranglerDevServerService;
15
+ const server = yield* WranglerDevServer.WranglerDevServer;
16
16
  return RpcClient.layerProtocolHttp({
17
17
  url: `${server.url}/rpc`,
18
18
  }).pipe(Layer.provide([FetchHttpClient.layer, RpcSerialization.layerJson]));
19
- }).pipe(Layer.unwrapEffect));
19
+ }).pipe(Layer.unwrap));
20
20
  /**
21
21
  * Test Architecture - Effect RPC via HTTP
22
22
  *
@@ -36,97 +36,65 @@ const ProtocolLive = Layer.suspend(() => Effect.gen(function* () {
36
36
  */
37
37
  Vitest.describe('Durable Object RPC', { timeout: testTimeout }, () => {
38
38
  // Direct HTTP RPC client tests
39
- Vitest.scopedLive('should call ping method', (test) => Effect.gen(function* () {
39
+ Vitest.live('should call ping method', (test) => Effect.gen(function* () {
40
40
  const client = yield* RpcClient.make(TestRpcs);
41
41
  const result = yield* client.Ping({ message: 'Hello HTTP RPC' });
42
42
  expect(result).toEqual({ response: 'Pong: Hello HTTP RPC' });
43
43
  }).pipe(Effect.provide(ProtocolLive), withWranglerTest(test)));
44
- Vitest.scopedLive('should call echo method', (test) => Effect.gen(function* () {
44
+ Vitest.live('should call echo method', (test) => Effect.gen(function* () {
45
45
  const client = yield* RpcClient.make(TestRpcs);
46
46
  const result = yield* client.Echo({ text: 'Echo' });
47
47
  expect(result).toEqual({ echo: 'Echo: Echo' });
48
48
  }).pipe(Effect.provide(ProtocolLive), withWranglerTest(test)));
49
- Vitest.scopedLive('should call add method', (test) => Effect.gen(function* () {
49
+ Vitest.live('should call add method', (test) => Effect.gen(function* () {
50
50
  const client = yield* RpcClient.make(TestRpcs);
51
51
  const result = yield* client.Add({ a: 15, b: 25 });
52
52
  expect(result).toEqual({ result: 40 });
53
53
  }).pipe(Effect.provide(ProtocolLive), withWranglerTest(test)));
54
- Vitest.scopedLive('should handle RPC fail method', (test) => Effect.gen(function* () {
54
+ Vitest.live('should handle RPC fail method', (test) => Effect.gen(function* () {
55
55
  const client = yield* RpcClient.make(TestRpcs);
56
56
  const error = yield* client.Fail({ message: 'test http failure' }).pipe(Effect.exit);
57
57
  expect(error.toString()).toMatchInlineSnapshot(`
58
- "{
59
- "_id": "Exit",
60
- "_tag": "Failure",
61
- "cause": {
62
- "_id": "Cause",
63
- "_tag": "Die",
64
- "defect": "RPC failure: test http failure"
65
- }
66
- }"
58
+ "Failure(Cause([Die("RPC failure: test http failure")]))"
67
59
  `);
68
60
  }).pipe(Effect.provide(ProtocolLive), withWranglerTest(test)));
69
- Vitest.scopedLive('should handle defect method', (test) => Effect.gen(function* () {
61
+ Vitest.live('should handle defect method', (test) => Effect.gen(function* () {
70
62
  const client = yield* RpcClient.make(TestRpcs);
71
63
  const error = yield* client.Defect({ message: 'test http defect' }).pipe(Effect.exit);
72
64
  expect(error.toString()).toMatchInlineSnapshot(`
73
- "{
74
- "_id": "Exit",
75
- "_tag": "Failure",
76
- "cause": {
77
- "_id": "Cause",
78
- "_tag": "Die",
79
- "defect": "some defect: test http defect"
80
- }
81
- }"
65
+ "Failure(Cause([Die("some defect: test http defect")]))"
82
66
  `);
83
67
  }).pipe(Effect.provide(ProtocolLive), withWranglerTest(test)));
84
- Vitest.scopedLive('should handle streaming RPC via HTTP', (test) => Effect.gen(function* () {
68
+ Vitest.live('should handle streaming RPC via HTTP', (test) => Effect.gen(function* () {
85
69
  const client = yield* RpcClient.make(TestRpcs);
86
70
  const stream = client.Stream({}).pipe(Stream.take(4), Stream.map((c) => c.maybeNumber.pipe(Option.getOrUndefined)));
87
- const chunks = yield* Stream.runCollect(stream);
88
- expect(Chunk.toReadonlyArray(chunks)).toEqual([1, 4, 9, 16]); // squares of 1,2,3,4
71
+ const result = yield* Stream.runCollect(stream);
72
+ expect(result).toEqual([1, 4, 9, 16]); // squares of 1,2,3,4
89
73
  }).pipe(Effect.provide(ProtocolLive), withWranglerTest(test)));
90
- Vitest.scopedLive('should handle streaming RPC with error via HTTP', (test) => Effect.gen(function* () {
74
+ Vitest.live('should handle streaming RPC with error via HTTP', (test) => Effect.gen(function* () {
91
75
  const client = yield* RpcClient.make(TestRpcs);
92
76
  const stream = client.StreamError({ count: 5, errorAfter: 4 });
93
77
  const error = yield* Stream.runCollect(stream).pipe(Effect.exit);
94
78
  expect(error.toString()).toMatchInlineSnapshot(`
95
- "{
96
- "_id": "Exit",
97
- "_tag": "Failure",
98
- "cause": {
99
- "_id": "Cause",
100
- "_tag": "Fail",
101
- "failure": "Stream error after 4: got 9"
102
- }
103
- }"
79
+ "Failure(Cause([Fail("Stream error after 4: got 9")]))"
104
80
  `);
105
81
  }).pipe(Effect.provide(ProtocolLive), withWranglerTest(test)));
106
- Vitest.scopedLive('should handle streaming RPC with defect via HTTP', (test) => Effect.gen(function* () {
82
+ Vitest.live('should handle streaming RPC with defect via HTTP', (test) => Effect.gen(function* () {
107
83
  const client = yield* RpcClient.make(TestRpcs);
108
84
  const stream = client.StreamDefect({ count: 4, defectAfter: 1 });
109
85
  const error = yield* Stream.runCollect(stream).pipe(Effect.exit);
110
86
  expect(error.toString()).toMatchInlineSnapshot(`
111
- "{
112
- "_id": "Exit",
113
- "_tag": "Failure",
114
- "cause": {
115
- "_id": "Cause",
116
- "_tag": "Die",
117
- "defect": "Stream defect after 1: got 4"
118
- }
119
- }"
87
+ "Failure(Cause([Die("Stream defect after 1: got 4")]))"
120
88
  `);
121
89
  }).pipe(Effect.provide(ProtocolLive), withWranglerTest(test)));
122
- Vitest.scopedLive('should handle stream interruption via HTTP', (test) => Effect.gen(function* () {
90
+ Vitest.live('should handle stream interruption via HTTP', (test) => Effect.gen(function* () {
123
91
  const client = yield* RpcClient.make(TestRpcs);
124
92
  const stream = client.StreamInterruptible({ delay: 50, interruptAfterCount: 3 }).pipe(Stream.take(3));
125
- const chunks = yield* Stream.runCollect(stream);
126
- expect(Chunk.toReadonlyArray(chunks)).toEqual([1, 2, 3]);
93
+ const result = yield* Stream.runCollect(stream);
94
+ expect(result).toEqual([1, 2, 3]);
127
95
  }).pipe(Effect.provide(ProtocolLive), withWranglerTest(test)));
128
96
  // TODO @IMax153
129
- Vitest.scopedLive.skip('should handle streaming RPC bug scenario', (test) => Effect.gen(function* () {
97
+ Vitest.live.skip('should handle streaming RPC bug scenario', (test) => Effect.gen(function* () {
130
98
  const client = yield* RpcClient.make(TestRpcs);
131
99
  yield* client.StreamBugScenarioDoClient({});
132
100
  /*
@@ -169,7 +137,7 @@ Vitest.describe('Durable Object RPC', { timeout: testTimeout }, () => {
169
137
  errorSchema: [Function: Never],
170
138
  annotations: { _id: 'Context', services: [] },
171
139
  middlewares: Set(0) {},
172
- key: '@effect/rpc/Rpc/StreamBugScenarioDoServer'
140
+ key: 'effect/unstable/rpc/Rpc/StreamBugScenarioDoServer'
173
141
  } {}
174
142
 
175
143
  Killing wrangler process...
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.test.js","sourceRoot":"","sources":["../../src/do-rpc/rpc.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rpc.test.js","sourceRoot":"","sources":["../../src/do-rpc/rpc.test.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,12 @@
1
- import { Effect, type Layer, type NonEmptyArray, Rpc, type RpcGroup, type RpcMessage } from '@livestore/utils/effect';
1
+ import { Effect, type Layer, type ReadonlyArray, Rpc, type RpcGroup } from '@livestore/utils/effect';
2
2
  import type * as CfTypes from '../cf-types.ts';
3
3
  export interface ClientDoWithRpcCallback {
4
4
  __DURABLE_OBJECT_BRAND: never;
5
- syncUpdateRpc: (payload: RpcMessage.ResponseChunkEncoded) => Promise<void>;
5
+ /**
6
+ * The sync backend calls this to deliver a live update; `storeId` lets a rebuilt DO reload its
7
+ * store before delivering. See the Cloudflare Durable Object adapter docs for the recovery options.
8
+ */
9
+ syncUpdateRpc: (payload: Uint8Array<ArrayBuffer>, storeId: string) => Promise<void>;
6
10
  }
7
11
  /**
8
12
  * Construct a Durable Object RPC handler from an `RpcGroup`.
@@ -15,13 +19,14 @@ export declare const toDurableObjectHandler: <Rpcs extends Rpc.Any, LE>(group: R
15
19
  readonly spanAttributes?: Record<string, unknown> | undefined;
16
20
  }) => ((serializedPayload: Uint8Array<ArrayBuffer>) => Effect.Effect<Uint8Array<ArrayBuffer> | CfTypes.ReadableStream>);
17
21
  /** Out-of-band RPC stream response emission back to the caller DO */
18
- export declare const emitStreamResponse: ({ callerContext, env, requestId, values, }: {
22
+ export declare const emitStreamResponse: (args_0: {
19
23
  env: Record<string, any>;
20
24
  callerContext: {
21
25
  bindingName: string;
22
26
  durableObjectId: string;
23
27
  };
24
28
  requestId: string;
25
- values: NonEmptyArray<any>;
26
- }) => Effect.Effect<void, import("effect/Cause").UnknownException, never>;
29
+ storeId: string;
30
+ values: ReadonlyArray.NonEmptyReadonlyArray<any>;
31
+ }) => Effect.Effect<void, import("effect/Cause").UnknownError, never>;
27
32
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/do-rpc/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,MAAM,EAGN,KAAK,KAAK,EACV,KAAK,aAAa,EAElB,GAAG,EACH,KAAK,QAAQ,EACb,KAAK,UAAU,EAMhB,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAE9C,MAAM,WAAW,uBAAuB;IACtC,sBAAsB,EAAE,KAAK,CAAA;IAC7B,aAAa,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3E;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAChC,IAAI,SAAS,GAAG,CAAC,GAAG,EAAE,EAAE,EACvB,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC9B,SAAS;IACP,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IAC3E,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;CAC9D,KACA,CAAC,CACF,iBAAiB,EAAE,UAAU,CAAC,WAAW,CAAC,KACvC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAoHC,CAAA;AAEvE,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,GAAI,4CAKhC;IACD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxB,aAAa,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/D,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,CAAA;CAC3B,wEAesD,CAAA"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/do-rpc/server.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EAGN,KAAK,KAAK,EAEV,KAAK,aAAa,EAClB,GAAG,EACH,KAAK,QAAQ,EASd,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAc9C,MAAM,WAAW,uBAAuB;IACtC,sBAAsB,EAAE,KAAK,CAAA;IAC7B;;;OAGG;IACH,aAAa,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpF;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAChC,IAAI,SAAS,GAAG,CAAC,GAAG,EAAE,EAAE,EACvB,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC9B,SAAS;IACP,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IAC3E,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;CAC9D,KACA,CAAC,CACF,iBAAiB,EAAE,UAAU,CAAC,WAAW,CAAC,KACvC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAuJjE,CAAA;AAEL,qEAAqE;AACrE,eAAO,MAAM,kBAAkB;SAOxB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;mBACT;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE;eACpD,MAAM;aACR,MAAM;YACP,aAAa,CAAC,qBAAqB,CAAC,GAAG,CAAC;qEAqBhD,CAAA"}