@livestore/common-cf 0.5.0-dev.0 → 0.5.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/declare/mod.js +1 -1
- package/dist/do-rpc/client.d.ts +8 -0
- package/dist/do-rpc/client.d.ts.map +1 -1
- package/dist/do-rpc/client.js +67 -37
- package/dist/do-rpc/client.js.map +1 -1
- package/dist/do-rpc/client.test.js +97 -7
- package/dist/do-rpc/client.test.js.map +1 -1
- package/dist/do-rpc/mod.d.ts +1 -1
- package/dist/do-rpc/mod.d.ts.map +1 -1
- package/dist/do-rpc/mod.js +2 -2
- package/dist/do-rpc/mod.js.map +1 -1
- package/dist/do-rpc/rpc.test.js +2 -2
- package/dist/do-rpc/rpc.test.js.map +1 -1
- package/dist/do-rpc/server.d.ts +4 -3
- package/dist/do-rpc/server.d.ts.map +1 -1
- package/dist/do-rpc/server.js +55 -63
- package/dist/do-rpc/server.js.map +1 -1
- package/dist/do-rpc/test-fixtures/rpc-schema.d.ts +16 -16
- package/dist/do-rpc/test-fixtures/worker.d.ts.map +1 -1
- package/dist/do-rpc/test-fixtures/worker.js +1 -1
- package/dist/mod.js +3 -3
- package/dist/ws-rpc/test-fixtures/rpc-schema.d.ts +16 -16
- package/dist/ws-rpc/test-fixtures/worker.d.ts.map +1 -1
- package/dist/ws-rpc/test-fixtures/worker.js +2 -2
- package/dist/ws-rpc/ws-rpc-server.d.ts +8 -2
- package/dist/ws-rpc/ws-rpc-server.d.ts.map +1 -1
- package/dist/ws-rpc/ws-rpc-server.js +45 -13
- package/dist/ws-rpc/ws-rpc-server.js.map +1 -1
- package/dist/ws-rpc/ws-rpc.test.js +1 -1
- package/dist/ws-rpc/ws-rpc.test.js.map +1 -1
- package/package.json +28 -28
- package/src/do-rpc/README.md +2 -2
- package/src/do-rpc/client.test.ts +148 -7
- package/src/do-rpc/client.ts +94 -53
- package/src/do-rpc/mod.ts +1 -1
- package/src/do-rpc/rpc.test.ts +1 -1
- package/src/do-rpc/server.ts +84 -67
- package/src/ws-rpc/ws-rpc-server.ts +78 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-rpc-server.js","sourceRoot":"","sources":["../../src/ws-rpc/ws-rpc-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,EACL,OAAO,EACP,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,MAAM,EACN,KAAK,EACL,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,SAAS,EACT,KAAK,EACL,MAAM,GACP,MAAM,yBAAyB,CAAA;AAIhC;;;;GAIG;AACH,MAAM,OAAO,SAAU,SAAQ,OAAO,CAAC,OAAO,EAAiD,CAAC,WAAW,CAAC;CAAG;
|
|
1
|
+
{"version":3,"file":"ws-rpc-server.js","sourceRoot":"","sources":["../../src/ws-rpc/ws-rpc-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { Vitest } from '@livestore/utils-dev/node-vitest';
|
|
|
3
3
|
import { WranglerDevServer } from '@livestore/utils-dev/wrangler';
|
|
4
4
|
import { Effect, FetchHttpClient, Layer, Option, References, RpcClient, RpcSerialization, Socket, Stream, } from '@livestore/utils/effect';
|
|
5
5
|
import { PlatformNode } from '@livestore/utils/node';
|
|
6
|
-
import { TestRpcs } from
|
|
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,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-rpc.test.js","sourceRoot":"","sources":["../../src/ws-rpc/ws-rpc.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ws-rpc.test.js","sourceRoot":"","sources":["../../src/ws-rpc/ws-rpc.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,55 +1,55 @@
|
|
|
1
1
|
{
|
|
2
|
+
"$genie": {
|
|
3
|
+
"source": "package.json.genie.ts",
|
|
4
|
+
"warning": "DO NOT EDIT - changes will be overwritten",
|
|
5
|
+
"workspaceClosureDirs": [
|
|
6
|
+
"packages/@livestore/common-cf",
|
|
7
|
+
"packages/@livestore/utils",
|
|
8
|
+
"packages/@livestore/utils-dev"
|
|
9
|
+
]
|
|
10
|
+
},
|
|
2
11
|
"name": "@livestore/common-cf",
|
|
3
|
-
"version": "0.5.0
|
|
12
|
+
"version": "0.5.0",
|
|
13
|
+
"type": "module",
|
|
14
|
+
"sideEffects": false,
|
|
4
15
|
"license": "Apache-2.0",
|
|
5
16
|
"repository": {
|
|
6
17
|
"type": "git",
|
|
7
18
|
"url": "git+https://github.com/livestorejs/livestore.git"
|
|
8
19
|
},
|
|
20
|
+
"exports": {
|
|
21
|
+
".": "./dist/mod.js",
|
|
22
|
+
"./declare": "./dist/declare/mod.js"
|
|
23
|
+
},
|
|
9
24
|
"files": [
|
|
10
25
|
"dist",
|
|
11
26
|
"package.json",
|
|
12
27
|
"src",
|
|
13
28
|
"README.md"
|
|
14
29
|
],
|
|
15
|
-
"type": "module",
|
|
16
|
-
"sideEffects": false,
|
|
17
|
-
"exports": {
|
|
18
|
-
".": "./dist/mod.js",
|
|
19
|
-
"./declare": "./dist/declare/mod.js"
|
|
20
|
-
},
|
|
21
|
-
"publishConfig": {
|
|
22
|
-
"access": "public"
|
|
23
|
-
},
|
|
24
30
|
"dependencies": {
|
|
25
31
|
"@cloudflare/workers-types": "4.20251118.0",
|
|
26
|
-
"@livestore/utils": "^0.5.0
|
|
32
|
+
"@livestore/utils": "^0.5.0"
|
|
27
33
|
},
|
|
28
34
|
"devDependencies": {
|
|
35
|
+
"@livestore/utils-dev": "^0.5.0",
|
|
29
36
|
"vitest": "4.1.9",
|
|
30
|
-
"wrangler": "4.42.2"
|
|
31
|
-
"@livestore/utils-dev": "^0.5.0-dev.0"
|
|
37
|
+
"wrangler": "4.42.2"
|
|
32
38
|
},
|
|
33
39
|
"peerDependencies": {
|
|
34
|
-
"@effect/opentelemetry": "^4.0.
|
|
35
|
-
"@effect/platform-browser": "^4.0.
|
|
36
|
-
"@effect/platform-bun": "^4.0.
|
|
37
|
-
"@effect/platform-node": "^4.0.
|
|
38
|
-
"@effect/platform-node-shared": "^4.0.
|
|
39
|
-
"@effect/vitest": "^4.0.
|
|
40
|
+
"@effect/opentelemetry": "^4.0.3",
|
|
41
|
+
"@effect/platform-browser": "^4.0.3",
|
|
42
|
+
"@effect/platform-bun": "^4.0.3",
|
|
43
|
+
"@effect/platform-node": "^4.0.3",
|
|
44
|
+
"@effect/platform-node-shared": "^4.0.3",
|
|
45
|
+
"@effect/vitest": "^4.0.3",
|
|
40
46
|
"@opentelemetry/api": "^1.9.0",
|
|
41
47
|
"@opentelemetry/resources": "^2.2.0",
|
|
42
48
|
"@standard-schema/spec": "^1.1.0",
|
|
43
|
-
"effect": "^4.0.
|
|
49
|
+
"effect": "^4.0.3"
|
|
44
50
|
},
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"warning": "DO NOT EDIT - changes will be overwritten",
|
|
48
|
-
"workspaceClosureDirs": [
|
|
49
|
-
"packages/@livestore/common-cf",
|
|
50
|
-
"packages/@livestore/utils",
|
|
51
|
-
"packages/@livestore/utils-dev"
|
|
52
|
-
]
|
|
51
|
+
"publishConfig": {
|
|
52
|
+
"access": "public"
|
|
53
53
|
},
|
|
54
54
|
"scripts": {
|
|
55
55
|
"test": "vitest run"
|
package/src/do-rpc/README.md
CHANGED
|
@@ -14,7 +14,7 @@ This module provides a direct RPC communication layer for Cloudflare Durable Obj
|
|
|
14
14
|
|
|
15
15
|
### Architecture Principles
|
|
16
16
|
|
|
17
|
-
- **Minimal Transport**: Use
|
|
17
|
+
- **Minimal Transport**: Use Effect SchemaBinary serialization over Cloudflare's native DO RPC
|
|
18
18
|
- **Streaming-First**: Design for progressive data delivery rather than batch responses
|
|
19
19
|
- **Effect-Native**: Leverage Effect's streaming, error handling, and context management
|
|
20
20
|
- **Simple API**: Maintain the same API surface as standard Effect RPC clients/servers
|
|
@@ -28,7 +28,7 @@ This module provides a direct RPC communication layer for Cloudflare Durable Obj
|
|
|
28
28
|
|
|
29
29
|
### Transport Layer
|
|
30
30
|
|
|
31
|
-
- **Serialization**:
|
|
31
|
+
- **Serialization**: Effect SchemaBinary for schema-aware binary encoding
|
|
32
32
|
- **Streaming**: `ReadableStream` support for multi-value responses (requires binary messages)
|
|
33
33
|
|
|
34
34
|
## Usage Example
|
|
@@ -1,8 +1,20 @@
|
|
|
1
1
|
import { Vitest } from '@livestore/utils-dev/node-vitest'
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
Cause,
|
|
4
|
+
Effect,
|
|
5
|
+
Exit,
|
|
6
|
+
Fiber,
|
|
7
|
+
Option,
|
|
8
|
+
Rpc,
|
|
9
|
+
RpcClient,
|
|
10
|
+
RpcClientError,
|
|
11
|
+
RpcGroup,
|
|
12
|
+
Schema,
|
|
13
|
+
Stream,
|
|
14
|
+
} from '@livestore/utils/effect'
|
|
3
15
|
|
|
4
16
|
import type * as CfTypes from '../cf-types.ts'
|
|
5
|
-
import { layerProtocolDurableObject } from './client.ts'
|
|
17
|
+
import { DoRpcReadError, layerProtocolDurableObject } from './client.ts'
|
|
6
18
|
import { toDurableObjectHandler } from './server.ts'
|
|
7
19
|
|
|
8
20
|
class Rpcs extends RpcGroup.make(
|
|
@@ -88,16 +100,145 @@ Vitest.live('keeps a straddling stream frame isolated from a concurrent unary re
|
|
|
88
100
|
}),
|
|
89
101
|
)
|
|
90
102
|
|
|
103
|
+
Vitest.describe('transport failures', () => {
|
|
104
|
+
Vitest.live('fails a unary call with an RpcClientError that keeps the rejected error', () =>
|
|
105
|
+
Effect.gen(function* () {
|
|
106
|
+
const rejected = cloudflareError()
|
|
107
|
+
|
|
108
|
+
const exit = yield* RpcClient.make(Rpcs).pipe(
|
|
109
|
+
Effect.flatMap((client) => client.Echo({ text: 'hi' })),
|
|
110
|
+
Effect.exit,
|
|
111
|
+
Effect.provide(protocolWith(() => Promise.reject(rejected))),
|
|
112
|
+
Effect.timeout('2 seconds'),
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
Vitest.expect(transportFailureCause(exit)).toBe(rejected)
|
|
116
|
+
}),
|
|
117
|
+
)
|
|
118
|
+
|
|
119
|
+
Vitest.live('preserves a read failure through rejected cancellation and releases the reader lock', () =>
|
|
120
|
+
Effect.gen(function* () {
|
|
121
|
+
const rejected = cloudflareError()
|
|
122
|
+
let failedStream: ReadableStream<Uint8Array> | undefined
|
|
123
|
+
const failAfterFirstRead = (bytes: Uint8Array) => {
|
|
124
|
+
let isFirstRead = true
|
|
125
|
+
const stream = new ReadableStream<Uint8Array>({
|
|
126
|
+
pull(controller) {
|
|
127
|
+
if (isFirstRead === false) return controller.error(rejected)
|
|
128
|
+
isFirstRead = false
|
|
129
|
+
controller.enqueue(bytes.subarray(0, READ_CHUNK_SIZE))
|
|
130
|
+
},
|
|
131
|
+
})
|
|
132
|
+
failedStream = stream
|
|
133
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- bridge platform ReadableStream to the CF type, like server.ts
|
|
134
|
+
return stream as unknown as CfTypes.ReadableStream
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
const exit = yield* RpcClient.make(Rpcs).pipe(
|
|
138
|
+
Effect.flatMap((client) => client.BigStream({ n: expectedRows.length }).pipe(Stream.runCollect)),
|
|
139
|
+
Effect.exit,
|
|
140
|
+
Effect.provide(protocolWith(makeGatedCallRpc(failAfterFirstRead))),
|
|
141
|
+
Effect.timeout('2 seconds'),
|
|
142
|
+
)
|
|
143
|
+
|
|
144
|
+
Vitest.expect(transportFailureCause(exit)).toBe(rejected)
|
|
145
|
+
Vitest.expect(failedStream?.locked).toBe(false)
|
|
146
|
+
}),
|
|
147
|
+
)
|
|
148
|
+
|
|
149
|
+
Vitest.live('fails only the request whose call rejected', () =>
|
|
150
|
+
Effect.gen(function* () {
|
|
151
|
+
let releaseStream = () => {}
|
|
152
|
+
const streamReleased = new Promise<void>((resolve) => {
|
|
153
|
+
releaseStream = resolve
|
|
154
|
+
})
|
|
155
|
+
const gatedUntilReleased = (bytes: Uint8Array) => {
|
|
156
|
+
const stream = new ReadableStream<Uint8Array>({
|
|
157
|
+
async start(controller) {
|
|
158
|
+
await streamReleased
|
|
159
|
+
controller.enqueue(bytes)
|
|
160
|
+
controller.close()
|
|
161
|
+
},
|
|
162
|
+
})
|
|
163
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- bridge platform ReadableStream to the CF type, like server.ts
|
|
164
|
+
return stream as unknown as CfTypes.ReadableStream
|
|
165
|
+
}
|
|
166
|
+
const callStream = makeGatedCallRpc(gatedUntilReleased)
|
|
167
|
+
let calls = 0
|
|
168
|
+
const callRpc = (payload: Uint8Array) => {
|
|
169
|
+
calls++
|
|
170
|
+
return calls === 1 ? callStream(payload) : Promise.reject(cloudflareError())
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const result = yield* Effect.gen(function* () {
|
|
174
|
+
const client = yield* RpcClient.make(Rpcs)
|
|
175
|
+
const streamFiber = yield* client
|
|
176
|
+
.BigStream({ n: expectedRows.length })
|
|
177
|
+
.pipe(Stream.runCollect, Effect.forkChild)
|
|
178
|
+
yield* Effect.yieldNow
|
|
179
|
+
const echoExit = yield* client.Echo({ text: 'hi' }).pipe(Effect.exit)
|
|
180
|
+
yield* Effect.sync(() => releaseStream())
|
|
181
|
+
const rows = yield* Fiber.join(streamFiber)
|
|
182
|
+
return { echoExit, rows: Array.from(rows) }
|
|
183
|
+
}).pipe(Effect.provide(protocolWith(callRpc)), Effect.timeout('2 seconds'))
|
|
184
|
+
|
|
185
|
+
Vitest.expect(transportFailureCause(result.echoExit)).toBeInstanceOf(Error)
|
|
186
|
+
Vitest.expect(result.rows).toEqual(expectedRows)
|
|
187
|
+
}),
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
Vitest.live('interruption releases the reader even when remote cancellation never completes', () =>
|
|
191
|
+
Effect.gen(function* () {
|
|
192
|
+
const stream = new ReadableStream<Uint8Array>({ cancel: () => new Promise(() => {}) })
|
|
193
|
+
const exit = yield* RpcClient.make(Rpcs).pipe(
|
|
194
|
+
Effect.flatMap((client) => client.BigStream({ n: 1 }).pipe(Stream.runDrain, Effect.timeout('20 millis'))),
|
|
195
|
+
Effect.exit,
|
|
196
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- bridge the platform stream to the CF type
|
|
197
|
+
Effect.provide(protocolWith(async () => stream as unknown as CfTypes.ReadableStream)),
|
|
198
|
+
Effect.timeout('2 seconds'),
|
|
199
|
+
)
|
|
200
|
+
Vitest.expect(Exit.isFailure(exit)).toBe(true)
|
|
201
|
+
Vitest.expect(stream.locked).toBe(false)
|
|
202
|
+
}),
|
|
203
|
+
)
|
|
204
|
+
|
|
205
|
+
Vitest.live('reports a truncated response as a read failure instead of waiting forever for an RPC exit', () =>
|
|
206
|
+
Effect.gen(function* () {
|
|
207
|
+
const stream = new ReadableStream<Uint8Array>({ start: (controller) => controller.close() })
|
|
208
|
+
const exit = yield* RpcClient.make(Rpcs).pipe(
|
|
209
|
+
Effect.flatMap((client) => client.BigStream({ n: 1 }).pipe(Stream.runCollect)),
|
|
210
|
+
Effect.exit,
|
|
211
|
+
// oxlint-disable-next-line typescript-eslint(no-unsafe-type-assertion) -- bridge the platform stream to the CF type
|
|
212
|
+
Effect.provide(protocolWith(async () => stream as unknown as CfTypes.ReadableStream)),
|
|
213
|
+
Effect.timeout('2 seconds'),
|
|
214
|
+
)
|
|
215
|
+
Vitest.expect(transportFailureCause(exit)).toEqual(new Error('RPC stream ended before its exit'))
|
|
216
|
+
}),
|
|
217
|
+
)
|
|
218
|
+
})
|
|
219
|
+
|
|
220
|
+
const cloudflareError = () => Object.assign(new Error('Network connection lost.'), { retryable: true })
|
|
221
|
+
|
|
222
|
+
const protocolWith = (callRpc: (payload: Uint8Array) => Promise<Uint8Array | CfTypes.ReadableStream>) =>
|
|
223
|
+
layerProtocolDurableObject({ callRpc, callerContext: { bindingName: 'TEST', durableObjectId: 'id' } })
|
|
224
|
+
|
|
225
|
+
/** The rejected error carried by a typed transport failure, or `undefined` for any other outcome (including a defect). */
|
|
226
|
+
const transportFailureCause = (exit: Exit.Exit<unknown, unknown>): unknown => {
|
|
227
|
+
if (Exit.isSuccess(exit) === true) return undefined
|
|
228
|
+
const error = Option.getOrUndefined(Cause.findErrorOption(exit.cause))
|
|
229
|
+
if (error instanceof RpcClientError.RpcClientError === false) return undefined
|
|
230
|
+
if (error.reason._tag !== 'RpcClientDefect') return undefined
|
|
231
|
+
return error.reason.cause instanceof DoRpcReadError ? error.reason.cause.cause : error.reason.cause
|
|
232
|
+
}
|
|
233
|
+
|
|
91
234
|
const makeGatedCallRpc =
|
|
92
235
|
(gateStream: (bytes: Uint8Array) => CfTypes.ReadableStream) =>
|
|
93
236
|
(payload: Uint8Array): Promise<Uint8Array | CfTypes.ReadableStream> =>
|
|
94
237
|
toDurableObjectHandler(Rpcs, { layer: ServerLive })(new Uint8Array(payload)).pipe(
|
|
95
|
-
Effect.
|
|
238
|
+
Effect.filterOrElse(
|
|
96
239
|
// Narrow on `Uint8Array`; the `ReadableStream` global differs from `CfTypes` across envs.
|
|
97
|
-
(result):
|
|
98
|
-
|
|
99
|
-
? Effect.succeed(result)
|
|
100
|
-
: Effect.promise(() => collectBytes(result)).pipe(Effect.map(gateStream)),
|
|
240
|
+
(result): result is Uint8Array<ArrayBuffer> => result instanceof Uint8Array,
|
|
241
|
+
(result) => Effect.promise(() => collectBytes(result)).pipe(Effect.map(gateStream)),
|
|
101
242
|
),
|
|
102
243
|
Effect.runPromise,
|
|
103
244
|
)
|
package/src/do-rpc/client.ts
CHANGED
|
@@ -1,46 +1,79 @@
|
|
|
1
1
|
import {
|
|
2
|
+
Data,
|
|
2
3
|
Effect,
|
|
3
4
|
Fiber,
|
|
4
5
|
FiberMap,
|
|
5
6
|
Layer,
|
|
6
7
|
Option,
|
|
7
8
|
RpcClient,
|
|
8
|
-
|
|
9
|
+
RpcClientError,
|
|
10
|
+
RpcMessage,
|
|
9
11
|
RpcSerialization,
|
|
12
|
+
Schema,
|
|
10
13
|
type Scope,
|
|
11
14
|
} from '@livestore/utils/effect'
|
|
12
15
|
|
|
13
16
|
import type * as CfTypes from '../cf-types.ts'
|
|
14
17
|
|
|
15
|
-
/**
|
|
18
|
+
/** A transferred stream can lose Cloudflare's RPC error flags when its connection breaks. */
|
|
19
|
+
export class DoRpcReadError extends Data.TaggedError('DoRpcReadError')<{ cause: unknown }> {}
|
|
20
|
+
|
|
21
|
+
const isEncodedRpcMessage = Schema.is(RpcMessage.EncodedSchema)
|
|
22
|
+
|
|
23
|
+
const isFromServerEncoded = (message: unknown): message is RpcMessage.FromServerEncoded => {
|
|
24
|
+
if (isEncodedRpcMessage(message) === false) return false
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
message._tag === 'Chunk' ||
|
|
28
|
+
message._tag === 'Exit' ||
|
|
29
|
+
message._tag === 'Defect' ||
|
|
30
|
+
message._tag === 'Pong' ||
|
|
31
|
+
message._tag === 'Request'
|
|
32
|
+
)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** Decodes a streaming-RPC `ReadableStream`'s binary frames, writing each out as it arrives. */
|
|
16
36
|
const processReadableStream = (
|
|
17
37
|
stream: CfTypes.ReadableStream,
|
|
18
|
-
parser:
|
|
19
|
-
writeResponse: (response:
|
|
20
|
-
): Effect.Effect<void> =>
|
|
38
|
+
parser: RpcSerialization.Parser,
|
|
39
|
+
writeResponse: (response: RpcMessage.FromServerEncoded) => Effect.Effect<void>,
|
|
40
|
+
): Effect.Effect<void, RpcClientError.RpcClientError> =>
|
|
21
41
|
Effect.gen(function* () {
|
|
22
42
|
const reader = stream.getReader()
|
|
23
43
|
|
|
24
44
|
yield* Effect.gen(function* () {
|
|
25
45
|
while (true) {
|
|
26
|
-
const { done, value } = yield* Effect.tryPromise(
|
|
46
|
+
const { done, value } = yield* Effect.tryPromise({
|
|
47
|
+
try: () => reader.read(),
|
|
48
|
+
catch: (cause) => transportFailure(new DoRpcReadError({ cause })),
|
|
49
|
+
})
|
|
27
50
|
|
|
28
51
|
if (done === true) {
|
|
29
|
-
|
|
52
|
+
return yield* transportFailure(new DoRpcReadError({ cause: new Error('RPC stream ended before its exit') }))
|
|
30
53
|
}
|
|
31
54
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
for (const message of
|
|
55
|
+
if (value instanceof Uint8Array === false) {
|
|
56
|
+
return yield* Effect.die('Received a non-binary RPC response')
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
for (const message of parser.decode(value)) {
|
|
60
|
+
if (isFromServerEncoded(message) === false) {
|
|
61
|
+
return yield* Effect.die('Received an invalid RPC response')
|
|
62
|
+
}
|
|
37
63
|
yield* writeResponse(message)
|
|
64
|
+
// The RPC exit completes the request; do not wait for the transferred stream to close too.
|
|
65
|
+
if (message._tag === 'Exit') return
|
|
38
66
|
}
|
|
39
67
|
}
|
|
40
68
|
}).pipe(
|
|
41
69
|
Effect.withSpan('do-rpc-client:processReadableStream'),
|
|
70
|
+
// Cancelling an errored stream rejects with that same error; ignore it so the original failure surfaces.
|
|
42
71
|
Effect.ensuring(
|
|
43
|
-
Effect.
|
|
72
|
+
Effect.sync(() => {
|
|
73
|
+
// Cancellation is best effort: a disconnected remote producer may never acknowledge it.
|
|
74
|
+
void reader.cancel().catch(() => {})
|
|
75
|
+
reader.releaseLock()
|
|
76
|
+
}),
|
|
44
77
|
),
|
|
45
78
|
)
|
|
46
79
|
})
|
|
@@ -58,7 +91,9 @@ interface MakeDoRpcProtocolArgs {
|
|
|
58
91
|
* This enables direct RPC communication with Durable Objects using Cloudflare's native RPC.
|
|
59
92
|
*/
|
|
60
93
|
export const layerProtocolDurableObject = (args: MakeDoRpcProtocolArgs): Layer.Layer<RpcClient.Protocol> =>
|
|
61
|
-
Layer.effect(RpcClient.Protocol, makeProtocolDurableObject(args))
|
|
94
|
+
Layer.effect(RpcClient.Protocol, makeProtocolDurableObject(args)).pipe(
|
|
95
|
+
Layer.provide(RpcSerialization.layerSchemaBinary()),
|
|
96
|
+
)
|
|
62
97
|
|
|
63
98
|
/**
|
|
64
99
|
* Implementation of the RPC Protocol interface using Cloudflare Durable Object RPC calls.
|
|
@@ -66,14 +101,22 @@ export const layerProtocolDurableObject = (args: MakeDoRpcProtocolArgs): Layer.L
|
|
|
66
101
|
*/
|
|
67
102
|
const makeProtocolDurableObject = ({
|
|
68
103
|
callRpc,
|
|
69
|
-
}: MakeDoRpcProtocolArgs): Effect.Effect<
|
|
104
|
+
}: MakeDoRpcProtocolArgs): Effect.Effect<
|
|
105
|
+
RpcClient.Protocol['Service'],
|
|
106
|
+
never,
|
|
107
|
+
Scope.Scope | RpcSerialization.RpcSerialization
|
|
108
|
+
> =>
|
|
70
109
|
RpcClient.Protocol.make(
|
|
71
110
|
Effect.fnUntraced(function* (writeResponse) {
|
|
111
|
+
const serialization = yield* RpcSerialization.RpcSerialization
|
|
72
112
|
// Not using an actual `FiberMap` here because it seems to shutdown to early
|
|
73
113
|
// const fiberMap = new Map<string, Fiber.Fiber<void, never>>()
|
|
74
|
-
const fiberMap = yield* FiberMap.make<string, void,
|
|
114
|
+
const fiberMap = yield* FiberMap.make<string, void, RpcClientError.RpcClientError>()
|
|
75
115
|
|
|
76
|
-
const send = (
|
|
116
|
+
const send = (
|
|
117
|
+
clientId: number,
|
|
118
|
+
message: RpcMessage.FromClientEncoded,
|
|
119
|
+
): Effect.Effect<void, RpcClientError.RpcClientError> => {
|
|
77
120
|
if (message._tag !== 'Request') {
|
|
78
121
|
if (message._tag === 'Interrupt') {
|
|
79
122
|
return Effect.gen(function* () {
|
|
@@ -87,56 +130,54 @@ const makeProtocolDurableObject = ({
|
|
|
87
130
|
return Effect.void
|
|
88
131
|
}
|
|
89
132
|
|
|
90
|
-
//
|
|
91
|
-
const parser =
|
|
133
|
+
// Binary parsers hold stream framing state, so scope one parser to one DO RPC call.
|
|
134
|
+
const parser = serialization.makeUnsafe()
|
|
92
135
|
|
|
93
136
|
// Wrap single Request in array to match server expected format
|
|
94
|
-
const serializedPayload = parser.encode([message])
|
|
137
|
+
const serializedPayload = parser.encode([message])
|
|
138
|
+
if (serializedPayload instanceof Uint8Array === false) {
|
|
139
|
+
return Effect.die('SchemaBinary RPC serialization did not produce bytes')
|
|
140
|
+
}
|
|
95
141
|
|
|
96
142
|
return Effect.gen(function* () {
|
|
97
|
-
const serializedResponse = yield* Effect.tryPromise(
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
(response)
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
// fiberMap.set(message.id, fiber)
|
|
111
|
-
yield* FiberMap.set(fiberMap, message.id, fiber)
|
|
112
|
-
|
|
113
|
-
yield* Fiber.join(fiber)
|
|
114
|
-
|
|
143
|
+
const serializedResponse = yield* Effect.tryPromise({
|
|
144
|
+
try: () => callRpc(serializedPayload),
|
|
145
|
+
catch: transportFailure,
|
|
146
|
+
})
|
|
147
|
+
|
|
148
|
+
if (serializedResponse instanceof Uint8Array) {
|
|
149
|
+
for (const response of parser.decode(serializedResponse)) {
|
|
150
|
+
if (isFromServerEncoded(response) === false) {
|
|
151
|
+
return yield* Effect.die('Received an invalid RPC response')
|
|
152
|
+
}
|
|
153
|
+
yield* writeResponse(clientId, response)
|
|
154
|
+
}
|
|
115
155
|
return
|
|
116
156
|
}
|
|
117
157
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
// Normalize nested arrays from server serialization (same as streaming path)
|
|
122
|
-
let responseArray: any[]
|
|
123
|
-
if (Array.isArray(decoded) === true) {
|
|
124
|
-
responseArray = decoded.flat(1)
|
|
125
|
-
} else {
|
|
126
|
-
responseArray = [decoded]
|
|
127
|
-
}
|
|
158
|
+
const fiber = yield* processReadableStream(serializedResponse, parser, (response) =>
|
|
159
|
+
writeResponse(clientId, response),
|
|
160
|
+
).pipe(Effect.forkChild)
|
|
128
161
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
}).pipe(Effect.withSpan('do-rpc-client:send'), Effect.orDie) // Ensure never error type
|
|
162
|
+
yield* FiberMap.set(fiberMap, message.id, fiber)
|
|
163
|
+
yield* Fiber.join(fiber)
|
|
164
|
+
}).pipe(Effect.withSpan('do-rpc-client:send'))
|
|
134
165
|
}
|
|
135
166
|
|
|
136
167
|
return {
|
|
137
168
|
send,
|
|
138
169
|
supportsAck: false, // DO RPC doesn't support ack mechanism like WebSockets
|
|
139
170
|
supportsTransferables: false, // DO RPC doesn't support transferables yet
|
|
171
|
+
codecFor: serialization.codecFor,
|
|
140
172
|
}
|
|
141
173
|
}),
|
|
142
174
|
)
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* A rejected DO call or stream read fails only the request that made it (Effect RPC routes `send` failures per
|
|
178
|
+
* request). `RpcClientError` reasons are a closed union, so the original rejection rides as `RpcClientDefect.cause`.
|
|
179
|
+
*/
|
|
180
|
+
const transportFailure = (cause: unknown) =>
|
|
181
|
+
new RpcClientError.RpcClientError({
|
|
182
|
+
reason: new RpcClientError.RpcClientDefect({ message: 'Durable Object RPC call failed', cause }),
|
|
183
|
+
})
|
package/src/do-rpc/mod.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// Re-export client and server implementations for backward compatibility
|
|
2
|
-
export { layerProtocolDurableObject } from './client.ts'
|
|
2
|
+
export { DoRpcReadError, layerProtocolDurableObject } from './client.ts'
|
|
3
3
|
export { type ClientDoWithRpcCallback, emitStreamResponse, toDurableObjectHandler } from './server.ts'
|
package/src/do-rpc/rpc.test.ts
CHANGED
|
@@ -158,7 +158,7 @@ Vitest.describe('Durable Object RPC', { timeout: testTimeout }, () => {
|
|
|
158
158
|
/*
|
|
159
159
|
|
|
160
160
|
|
|
161
|
-
In
|
|
161
|
+
In the installed `@effect/rpc` `RpcClient.js`:
|
|
162
162
|
add the console log
|
|
163
163
|
```
|
|
164
164
|
yield* Scope.addFinalizerExit(scope, exit => {
|