rivetkit 2.0.24-rc.1 → 2.0.25-rc.1
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/schemas/actor-persist/v1.ts +6 -0
- package/dist/schemas/actor-persist/v2.ts +9 -3
- package/dist/schemas/actor-persist/v3.ts +280 -0
- package/dist/schemas/client-protocol/v1.ts +6 -0
- package/dist/schemas/client-protocol/v2.ts +438 -0
- package/dist/schemas/file-system-driver/v1.ts +6 -0
- package/dist/schemas/file-system-driver/v2.ts +142 -0
- package/dist/tsup/actor/errors.cjs +2 -4
- package/dist/tsup/actor/errors.cjs.map +1 -1
- package/dist/tsup/actor/errors.d.cts +7 -10
- package/dist/tsup/actor/errors.d.ts +7 -10
- package/dist/tsup/actor/errors.js +9 -11
- package/dist/tsup/{actor-router-consts-B3Lu87yJ.d.cts → actor-router-consts-DzI2szci.d.cts} +5 -9
- package/dist/tsup/{actor-router-consts-B3Lu87yJ.d.ts → actor-router-consts-DzI2szci.d.ts} +5 -9
- package/dist/tsup/{chunk-ZTH3KYFH.cjs → chunk-3FG5OJ3G.cjs} +3 -3
- package/dist/tsup/{chunk-ZTH3KYFH.cjs.map → chunk-3FG5OJ3G.cjs.map} +1 -1
- package/dist/tsup/{chunk-BLK27ES3.js → chunk-6JN6W6G3.js} +44 -56
- package/dist/tsup/chunk-6JN6W6G3.js.map +1 -0
- package/dist/tsup/chunk-7IBNNGQ2.js +514 -0
- package/dist/tsup/chunk-7IBNNGQ2.js.map +1 -0
- package/dist/tsup/{chunk-36JJ4IQB.cjs → chunk-AZATXPR4.cjs} +4 -8
- package/dist/tsup/chunk-AZATXPR4.cjs.map +1 -0
- package/dist/tsup/chunk-B7MENRD5.cjs +5694 -0
- package/dist/tsup/chunk-B7MENRD5.cjs.map +1 -0
- package/dist/tsup/{chunk-BOMZS2TJ.js → chunk-BBVFDEYD.js} +9 -9
- package/dist/tsup/chunk-BBVFDEYD.js.map +1 -0
- package/dist/tsup/{chunk-KSRXX3Z4.cjs → chunk-D6762AOA.cjs} +20 -25
- package/dist/tsup/chunk-D6762AOA.cjs.map +1 -0
- package/dist/tsup/{chunk-2JYPS5YM.cjs → chunk-E63WZNMR.cjs} +6 -6
- package/dist/tsup/chunk-E63WZNMR.cjs.map +1 -0
- package/dist/tsup/{chunk-YBG6R7LX.js → chunk-EDGN4OC7.js} +3 -7
- package/dist/tsup/chunk-EDGN4OC7.js.map +1 -0
- package/dist/tsup/{chunk-BYMKMOBS.js → chunk-FLOQ3UWM.js} +1844 -1681
- package/dist/tsup/chunk-FLOQ3UWM.js.map +1 -0
- package/dist/tsup/{chunk-7L65NNWP.cjs → chunk-H7GV5DIW.cjs} +187 -185
- package/dist/tsup/chunk-H7GV5DIW.cjs.map +1 -0
- package/dist/tsup/{chunk-227FEWMB.js → chunk-HZYZ7JSF.js} +3322 -2251
- package/dist/tsup/chunk-HZYZ7JSF.js.map +1 -0
- package/dist/tsup/{chunk-FX7TWFQR.js → chunk-IDJK7ILQ.js} +2 -6
- package/dist/tsup/chunk-IDJK7ILQ.js.map +1 -0
- package/dist/tsup/{chunk-VHGY7PU5.cjs → chunk-ILFXA4AL.cjs} +1900 -1737
- package/dist/tsup/chunk-ILFXA4AL.cjs.map +1 -0
- package/dist/tsup/chunk-MV6M3FDL.cjs +514 -0
- package/dist/tsup/chunk-MV6M3FDL.cjs.map +1 -0
- package/dist/tsup/{chunk-PLUN2NQT.js → chunk-NWBKMCWC.js} +189 -187
- package/dist/tsup/chunk-NWBKMCWC.js.map +1 -0
- package/dist/tsup/{chunk-CD33GT6Z.js → chunk-QIHBDXTO.js} +2 -2
- package/dist/tsup/{chunk-G64QUEDJ.js → chunk-W6RDS6NW.js} +23 -28
- package/dist/tsup/chunk-W6RDS6NW.js.map +1 -0
- package/dist/tsup/{chunk-INNFK746.cjs → chunk-WQU4M4ZC.cjs} +10 -14
- package/dist/tsup/chunk-WQU4M4ZC.cjs.map +1 -0
- package/dist/tsup/{chunk-SHVX2QUR.cjs → chunk-XKZA47XS.cjs} +17 -17
- package/dist/tsup/chunk-XKZA47XS.cjs.map +1 -0
- package/dist/tsup/{chunk-HHFKKVLR.cjs → chunk-YHWIOWVA.cjs} +45 -57
- package/dist/tsup/chunk-YHWIOWVA.cjs.map +1 -0
- package/dist/tsup/{chunk-YBHYXIP6.js → chunk-YVL6IRUM.js} +3 -3
- package/dist/tsup/chunk-YVL6IRUM.js.map +1 -0
- package/dist/tsup/client/mod.cjs +9 -9
- package/dist/tsup/client/mod.d.cts +5 -7
- package/dist/tsup/client/mod.d.ts +5 -7
- package/dist/tsup/client/mod.js +8 -8
- package/dist/tsup/common/log.cjs +3 -3
- package/dist/tsup/common/log.js +2 -2
- package/dist/tsup/common/websocket.cjs +4 -4
- package/dist/tsup/common/websocket.js +3 -3
- package/dist/tsup/{conn-B3Vhbgnd.d.ts → config-BRDYDraU.d.cts} +1119 -1047
- package/dist/tsup/{conn-DJWL3nGx.d.cts → config-Bo-blHpJ.d.ts} +1119 -1047
- package/dist/tsup/driver-helpers/mod.cjs +5 -13
- package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
- package/dist/tsup/driver-helpers/mod.d.cts +11 -9
- package/dist/tsup/driver-helpers/mod.d.ts +11 -9
- package/dist/tsup/driver-helpers/mod.js +14 -22
- package/dist/tsup/driver-test-suite/mod.cjs +474 -303
- package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/driver-test-suite/mod.d.cts +6 -9
- package/dist/tsup/driver-test-suite/mod.d.ts +6 -9
- package/dist/tsup/driver-test-suite/mod.js +1085 -914
- package/dist/tsup/driver-test-suite/mod.js.map +1 -1
- package/dist/tsup/inspector/mod.cjs +6 -6
- package/dist/tsup/inspector/mod.d.cts +5 -7
- package/dist/tsup/inspector/mod.d.ts +5 -7
- package/dist/tsup/inspector/mod.js +5 -5
- package/dist/tsup/mod.cjs +10 -16
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +23 -25
- package/dist/tsup/mod.d.ts +23 -25
- package/dist/tsup/mod.js +17 -23
- package/dist/tsup/test/mod.cjs +11 -11
- package/dist/tsup/test/mod.d.cts +4 -6
- package/dist/tsup/test/mod.d.ts +4 -6
- package/dist/tsup/test/mod.js +10 -10
- package/dist/tsup/utils.cjs +3 -5
- package/dist/tsup/utils.cjs.map +1 -1
- package/dist/tsup/utils.d.cts +1 -2
- package/dist/tsup/utils.d.ts +1 -2
- package/dist/tsup/utils.js +2 -4
- package/package.json +13 -6
- package/src/actor/config.ts +56 -44
- package/src/actor/conn/driver.ts +61 -0
- package/src/actor/conn/drivers/http.ts +17 -0
- package/src/actor/conn/drivers/raw-request.ts +24 -0
- package/src/actor/conn/drivers/raw-websocket.ts +65 -0
- package/src/actor/conn/drivers/websocket.ts +129 -0
- package/src/actor/conn/mod.ts +232 -0
- package/src/actor/conn/persisted.ts +81 -0
- package/src/actor/conn/state-manager.ts +196 -0
- package/src/actor/contexts/action.ts +23 -0
- package/src/actor/{context.ts → contexts/actor.ts} +19 -8
- package/src/actor/contexts/conn-init.ts +31 -0
- package/src/actor/contexts/conn.ts +48 -0
- package/src/actor/contexts/create-conn-state.ts +13 -0
- package/src/actor/contexts/on-before-connect.ts +13 -0
- package/src/actor/contexts/on-connect.ts +22 -0
- package/src/actor/contexts/request.ts +48 -0
- package/src/actor/contexts/websocket.ts +48 -0
- package/src/actor/definition.ts +3 -3
- package/src/actor/driver.ts +36 -5
- package/src/actor/errors.ts +19 -24
- package/src/actor/instance/connection-manager.ts +465 -0
- package/src/actor/instance/event-manager.ts +292 -0
- package/src/actor/instance/kv.ts +15 -0
- package/src/actor/instance/mod.ts +1107 -0
- package/src/actor/instance/persisted.ts +67 -0
- package/src/actor/instance/schedule-manager.ts +349 -0
- package/src/actor/instance/state-manager.ts +502 -0
- package/src/actor/mod.ts +13 -16
- package/src/actor/protocol/old.ts +131 -43
- package/src/actor/protocol/serde.ts +19 -4
- package/src/actor/router-endpoints.ts +61 -586
- package/src/actor/router-websocket-endpoints.ts +408 -0
- package/src/actor/router.ts +63 -197
- package/src/actor/schedule.ts +1 -1
- package/src/client/actor-conn.ts +183 -249
- package/src/client/actor-handle.ts +29 -6
- package/src/client/client.ts +0 -4
- package/src/client/config.ts +1 -4
- package/src/client/mod.ts +0 -1
- package/src/client/raw-utils.ts +3 -3
- package/src/client/utils.ts +85 -39
- package/src/common/actor-router-consts.ts +5 -12
- package/src/common/{inline-websocket-adapter2.ts → inline-websocket-adapter.ts} +26 -48
- package/src/common/log.ts +1 -1
- package/src/common/router.ts +28 -17
- package/src/common/utils.ts +2 -0
- package/src/driver-helpers/mod.ts +7 -10
- package/src/driver-helpers/utils.ts +18 -9
- package/src/driver-test-suite/mod.ts +26 -50
- package/src/driver-test-suite/test-inline-client-driver.ts +27 -51
- package/src/driver-test-suite/tests/actor-conn-hibernation.ts +150 -0
- package/src/driver-test-suite/tests/actor-conn-state.ts +1 -4
- package/src/driver-test-suite/tests/actor-conn.ts +5 -9
- package/src/driver-test-suite/tests/actor-destroy.ts +294 -0
- package/src/driver-test-suite/tests/actor-driver.ts +0 -7
- package/src/driver-test-suite/tests/actor-handle.ts +12 -12
- package/src/driver-test-suite/tests/actor-metadata.ts +1 -1
- package/src/driver-test-suite/tests/manager-driver.ts +1 -1
- package/src/driver-test-suite/tests/raw-http-direct-registry.ts +8 -8
- package/src/driver-test-suite/tests/raw-http-request-properties.ts +6 -5
- package/src/driver-test-suite/tests/raw-http.ts +5 -5
- package/src/driver-test-suite/tests/raw-websocket-direct-registry.ts +7 -7
- package/src/driver-test-suite/tests/request-access.ts +4 -4
- package/src/driver-test-suite/utils.ts +6 -10
- package/src/drivers/engine/actor-driver.ts +614 -424
- package/src/drivers/engine/mod.ts +0 -1
- package/src/drivers/file-system/actor.ts +24 -12
- package/src/drivers/file-system/global-state.ts +427 -37
- package/src/drivers/file-system/manager.ts +71 -83
- package/src/drivers/file-system/mod.ts +3 -0
- package/src/drivers/file-system/utils.ts +18 -8
- package/src/engine-process/mod.ts +38 -38
- package/src/inspector/utils.ts +7 -5
- package/src/manager/driver.ts +11 -4
- package/src/manager/gateway.ts +4 -29
- package/src/manager/protocol/mod.ts +0 -2
- package/src/manager/protocol/query.ts +0 -4
- package/src/manager/router.ts +67 -64
- package/src/manager-api/actors.ts +13 -0
- package/src/mod.ts +1 -3
- package/src/registry/mod.ts +20 -20
- package/src/registry/serve.ts +9 -14
- package/src/remote-manager-driver/actor-websocket-client.ts +1 -16
- package/src/remote-manager-driver/api-endpoints.ts +13 -1
- package/src/remote-manager-driver/api-utils.ts +8 -0
- package/src/remote-manager-driver/metadata.ts +58 -0
- package/src/remote-manager-driver/mod.ts +47 -62
- package/src/remote-manager-driver/ws-proxy.ts +1 -1
- package/src/schemas/actor-persist/mod.ts +1 -1
- package/src/schemas/actor-persist/versioned.ts +56 -31
- package/src/schemas/client-protocol/mod.ts +1 -1
- package/src/schemas/client-protocol/versioned.ts +41 -21
- package/src/schemas/client-protocol-zod/mod.ts +103 -0
- package/src/schemas/file-system-driver/mod.ts +1 -1
- package/src/schemas/file-system-driver/versioned.ts +42 -19
- package/src/serde.ts +33 -11
- package/src/test/mod.ts +7 -3
- package/src/utils/node.ts +173 -0
- package/src/utils.ts +0 -4
- package/dist/tsup/chunk-227FEWMB.js.map +0 -1
- package/dist/tsup/chunk-2JYPS5YM.cjs.map +0 -1
- package/dist/tsup/chunk-36JJ4IQB.cjs.map +0 -1
- package/dist/tsup/chunk-7L65NNWP.cjs.map +0 -1
- package/dist/tsup/chunk-BLK27ES3.js.map +0 -1
- package/dist/tsup/chunk-BOMZS2TJ.js.map +0 -1
- package/dist/tsup/chunk-BYMKMOBS.js.map +0 -1
- package/dist/tsup/chunk-FX7TWFQR.js.map +0 -1
- package/dist/tsup/chunk-G64QUEDJ.js.map +0 -1
- package/dist/tsup/chunk-HHFKKVLR.cjs.map +0 -1
- package/dist/tsup/chunk-INNFK746.cjs.map +0 -1
- package/dist/tsup/chunk-KSRXX3Z4.cjs.map +0 -1
- package/dist/tsup/chunk-O44LFKSB.cjs +0 -4623
- package/dist/tsup/chunk-O44LFKSB.cjs.map +0 -1
- package/dist/tsup/chunk-PLUN2NQT.js.map +0 -1
- package/dist/tsup/chunk-S4UJG7ZE.js +0 -1119
- package/dist/tsup/chunk-S4UJG7ZE.js.map +0 -1
- package/dist/tsup/chunk-SHVX2QUR.cjs.map +0 -1
- package/dist/tsup/chunk-VFB23BYZ.cjs +0 -1119
- package/dist/tsup/chunk-VFB23BYZ.cjs.map +0 -1
- package/dist/tsup/chunk-VHGY7PU5.cjs.map +0 -1
- package/dist/tsup/chunk-YBG6R7LX.js.map +0 -1
- package/dist/tsup/chunk-YBHYXIP6.js.map +0 -1
- package/src/actor/action.ts +0 -178
- package/src/actor/conn-drivers.ts +0 -216
- package/src/actor/conn-socket.ts +0 -8
- package/src/actor/conn.ts +0 -272
- package/src/actor/instance.ts +0 -2336
- package/src/actor/persisted.ts +0 -49
- package/src/actor/unstable-react.ts +0 -110
- package/src/driver-test-suite/tests/actor-reconnect.ts +0 -170
- package/src/drivers/engine/kv.ts +0 -3
- package/src/manager/hono-websocket-adapter.ts +0 -393
- /package/dist/tsup/{chunk-CD33GT6Z.js.map → chunk-QIHBDXTO.js.map} +0 -0
|
@@ -217,3 +217,9 @@ export function decodePersistedActor(bytes: Uint8Array): PersistedActor {
|
|
|
217
217
|
}
|
|
218
218
|
return result
|
|
219
219
|
}
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
function assert(condition: boolean, message?: string): asserts condition {
|
|
223
|
+
if (!condition) throw new Error(message ?? "Assertion failed")
|
|
224
|
+
}
|
|
225
|
+
|
|
@@ -220,7 +220,7 @@ export type PersistedActor = {
|
|
|
220
220
|
readonly state: ArrayBuffer,
|
|
221
221
|
readonly connections: readonly PersistedConnection[],
|
|
222
222
|
readonly scheduledEvents: readonly PersistedScheduleEvent[],
|
|
223
|
-
readonly
|
|
223
|
+
readonly hibernatableWebSockets: readonly PersistedHibernatableWebSocket[],
|
|
224
224
|
}
|
|
225
225
|
|
|
226
226
|
export function readPersistedActor(bc: bare.ByteCursor): PersistedActor {
|
|
@@ -230,7 +230,7 @@ export function readPersistedActor(bc: bare.ByteCursor): PersistedActor {
|
|
|
230
230
|
state: bare.readData(bc),
|
|
231
231
|
connections: read2(bc),
|
|
232
232
|
scheduledEvents: read3(bc),
|
|
233
|
-
|
|
233
|
+
hibernatableWebSockets: read4(bc),
|
|
234
234
|
}
|
|
235
235
|
}
|
|
236
236
|
|
|
@@ -240,7 +240,7 @@ export function writePersistedActor(bc: bare.ByteCursor, x: PersistedActor): voi
|
|
|
240
240
|
bare.writeData(bc, x.state)
|
|
241
241
|
write2(bc, x.connections)
|
|
242
242
|
write3(bc, x.scheduledEvents)
|
|
243
|
-
write4(bc, x.
|
|
243
|
+
write4(bc, x.hibernatableWebSockets)
|
|
244
244
|
}
|
|
245
245
|
|
|
246
246
|
export function encodePersistedActor(x: PersistedActor): Uint8Array {
|
|
@@ -260,3 +260,9 @@ export function decodePersistedActor(bytes: Uint8Array): PersistedActor {
|
|
|
260
260
|
}
|
|
261
261
|
return result
|
|
262
262
|
}
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
function assert(condition: boolean, message?: string): asserts condition {
|
|
266
|
+
if (!condition) throw new Error(message ?? "Assertion failed")
|
|
267
|
+
}
|
|
268
|
+
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
|
|
2
|
+
import * as bare from "@bare-ts/lib"
|
|
3
|
+
|
|
4
|
+
const config = /* @__PURE__ */ bare.Config({})
|
|
5
|
+
|
|
6
|
+
export type i64 = bigint
|
|
7
|
+
export type u16 = number
|
|
8
|
+
|
|
9
|
+
export type GatewayId = ArrayBuffer
|
|
10
|
+
|
|
11
|
+
export function readGatewayId(bc: bare.ByteCursor): GatewayId {
|
|
12
|
+
return bare.readFixedData(bc, 4)
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function writeGatewayId(bc: bare.ByteCursor, x: GatewayId): void {
|
|
16
|
+
assert(x.byteLength === 4)
|
|
17
|
+
bare.writeFixedData(bc, x)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export type RequestId = ArrayBuffer
|
|
21
|
+
|
|
22
|
+
export function readRequestId(bc: bare.ByteCursor): RequestId {
|
|
23
|
+
return bare.readFixedData(bc, 4)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export function writeRequestId(bc: bare.ByteCursor, x: RequestId): void {
|
|
27
|
+
assert(x.byteLength === 4)
|
|
28
|
+
bare.writeFixedData(bc, x)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type MessageIndex = u16
|
|
32
|
+
|
|
33
|
+
export function readMessageIndex(bc: bare.ByteCursor): MessageIndex {
|
|
34
|
+
return bare.readU16(bc)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export function writeMessageIndex(bc: bare.ByteCursor, x: MessageIndex): void {
|
|
38
|
+
bare.writeU16(bc, x)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function encodeMessageIndex(x: MessageIndex): Uint8Array {
|
|
42
|
+
const bc = new bare.ByteCursor(
|
|
43
|
+
new Uint8Array(config.initialBufferLength),
|
|
44
|
+
config
|
|
45
|
+
)
|
|
46
|
+
writeMessageIndex(bc, x)
|
|
47
|
+
return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset)
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function decodeMessageIndex(bytes: Uint8Array): MessageIndex {
|
|
51
|
+
const bc = new bare.ByteCursor(bytes, config)
|
|
52
|
+
const result = readMessageIndex(bc)
|
|
53
|
+
if (bc.offset < bc.view.byteLength) {
|
|
54
|
+
throw new bare.BareError(bc.offset, "remaining bytes")
|
|
55
|
+
}
|
|
56
|
+
return result
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export type Cbor = ArrayBuffer
|
|
60
|
+
|
|
61
|
+
export function readCbor(bc: bare.ByteCursor): Cbor {
|
|
62
|
+
return bare.readData(bc)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export function writeCbor(bc: bare.ByteCursor, x: Cbor): void {
|
|
66
|
+
bare.writeData(bc, x)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export type Subscription = {
|
|
70
|
+
readonly eventName: string,
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export function readSubscription(bc: bare.ByteCursor): Subscription {
|
|
74
|
+
return {
|
|
75
|
+
eventName: bare.readString(bc),
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export function writeSubscription(bc: bare.ByteCursor, x: Subscription): void {
|
|
80
|
+
bare.writeString(bc, x.eventName)
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function read0(bc: bare.ByteCursor): readonly Subscription[] {
|
|
84
|
+
const len = bare.readUintSafe(bc)
|
|
85
|
+
if (len === 0) { return [] }
|
|
86
|
+
const result = [readSubscription(bc)]
|
|
87
|
+
for (let i = 1; i < len; i++) {
|
|
88
|
+
result[i] = readSubscription(bc)
|
|
89
|
+
}
|
|
90
|
+
return result
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
function write0(bc: bare.ByteCursor, x: readonly Subscription[]): void {
|
|
94
|
+
bare.writeUintSafe(bc, x.length)
|
|
95
|
+
for (let i = 0; i < x.length; i++) {
|
|
96
|
+
writeSubscription(bc, x[i])
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function read1(bc: bare.ByteCursor): ReadonlyMap<string, string> {
|
|
101
|
+
const len = bare.readUintSafe(bc)
|
|
102
|
+
const result = new Map<string, string>()
|
|
103
|
+
for (let i = 0; i < len; i++) {
|
|
104
|
+
const offset = bc.offset
|
|
105
|
+
const key = bare.readString(bc)
|
|
106
|
+
if (result.has(key)) {
|
|
107
|
+
bc.offset = offset
|
|
108
|
+
throw new bare.BareError(offset, "duplicated key")
|
|
109
|
+
}
|
|
110
|
+
result.set(key, bare.readString(bc))
|
|
111
|
+
}
|
|
112
|
+
return result
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
function write1(bc: bare.ByteCursor, x: ReadonlyMap<string, string>): void {
|
|
116
|
+
bare.writeUintSafe(bc, x.size)
|
|
117
|
+
for(const kv of x) {
|
|
118
|
+
bare.writeString(bc, kv[0])
|
|
119
|
+
bare.writeString(bc, kv[1])
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export type Conn = {
|
|
124
|
+
readonly id: string,
|
|
125
|
+
readonly parameters: Cbor,
|
|
126
|
+
readonly state: Cbor,
|
|
127
|
+
readonly subscriptions: readonly Subscription[],
|
|
128
|
+
readonly gatewayId: GatewayId,
|
|
129
|
+
readonly requestId: RequestId,
|
|
130
|
+
readonly serverMessageIndex: u16,
|
|
131
|
+
readonly clientMessageIndex: u16,
|
|
132
|
+
readonly requestPath: string,
|
|
133
|
+
readonly requestHeaders: ReadonlyMap<string, string>,
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export function readConn(bc: bare.ByteCursor): Conn {
|
|
137
|
+
return {
|
|
138
|
+
id: bare.readString(bc),
|
|
139
|
+
parameters: readCbor(bc),
|
|
140
|
+
state: readCbor(bc),
|
|
141
|
+
subscriptions: read0(bc),
|
|
142
|
+
gatewayId: readGatewayId(bc),
|
|
143
|
+
requestId: readRequestId(bc),
|
|
144
|
+
serverMessageIndex: bare.readU16(bc),
|
|
145
|
+
clientMessageIndex: bare.readU16(bc),
|
|
146
|
+
requestPath: bare.readString(bc),
|
|
147
|
+
requestHeaders: read1(bc),
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export function writeConn(bc: bare.ByteCursor, x: Conn): void {
|
|
152
|
+
bare.writeString(bc, x.id)
|
|
153
|
+
writeCbor(bc, x.parameters)
|
|
154
|
+
writeCbor(bc, x.state)
|
|
155
|
+
write0(bc, x.subscriptions)
|
|
156
|
+
writeGatewayId(bc, x.gatewayId)
|
|
157
|
+
writeRequestId(bc, x.requestId)
|
|
158
|
+
bare.writeU16(bc, x.serverMessageIndex)
|
|
159
|
+
bare.writeU16(bc, x.clientMessageIndex)
|
|
160
|
+
bare.writeString(bc, x.requestPath)
|
|
161
|
+
write1(bc, x.requestHeaders)
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
export function encodeConn(x: Conn): Uint8Array {
|
|
165
|
+
const bc = new bare.ByteCursor(
|
|
166
|
+
new Uint8Array(config.initialBufferLength),
|
|
167
|
+
config
|
|
168
|
+
)
|
|
169
|
+
writeConn(bc, x)
|
|
170
|
+
return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset)
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export function decodeConn(bytes: Uint8Array): Conn {
|
|
174
|
+
const bc = new bare.ByteCursor(bytes, config)
|
|
175
|
+
const result = readConn(bc)
|
|
176
|
+
if (bc.offset < bc.view.byteLength) {
|
|
177
|
+
throw new bare.BareError(bc.offset, "remaining bytes")
|
|
178
|
+
}
|
|
179
|
+
return result
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
function read2(bc: bare.ByteCursor): Cbor | null {
|
|
183
|
+
return bare.readBool(bc)
|
|
184
|
+
? readCbor(bc)
|
|
185
|
+
: null
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
function write2(bc: bare.ByteCursor, x: Cbor | null): void {
|
|
189
|
+
bare.writeBool(bc, x !== null)
|
|
190
|
+
if (x !== null) {
|
|
191
|
+
writeCbor(bc, x)
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export type ScheduleEvent = {
|
|
196
|
+
readonly eventId: string,
|
|
197
|
+
readonly timestamp: i64,
|
|
198
|
+
readonly action: string,
|
|
199
|
+
readonly args: Cbor | null,
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
export function readScheduleEvent(bc: bare.ByteCursor): ScheduleEvent {
|
|
203
|
+
return {
|
|
204
|
+
eventId: bare.readString(bc),
|
|
205
|
+
timestamp: bare.readI64(bc),
|
|
206
|
+
action: bare.readString(bc),
|
|
207
|
+
args: read2(bc),
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export function writeScheduleEvent(bc: bare.ByteCursor, x: ScheduleEvent): void {
|
|
212
|
+
bare.writeString(bc, x.eventId)
|
|
213
|
+
bare.writeI64(bc, x.timestamp)
|
|
214
|
+
bare.writeString(bc, x.action)
|
|
215
|
+
write2(bc, x.args)
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
function read3(bc: bare.ByteCursor): readonly ScheduleEvent[] {
|
|
219
|
+
const len = bare.readUintSafe(bc)
|
|
220
|
+
if (len === 0) { return [] }
|
|
221
|
+
const result = [readScheduleEvent(bc)]
|
|
222
|
+
for (let i = 1; i < len; i++) {
|
|
223
|
+
result[i] = readScheduleEvent(bc)
|
|
224
|
+
}
|
|
225
|
+
return result
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
function write3(bc: bare.ByteCursor, x: readonly ScheduleEvent[]): void {
|
|
229
|
+
bare.writeUintSafe(bc, x.length)
|
|
230
|
+
for (let i = 0; i < x.length; i++) {
|
|
231
|
+
writeScheduleEvent(bc, x[i])
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
export type Actor = {
|
|
236
|
+
readonly input: Cbor | null,
|
|
237
|
+
readonly hasInitialized: boolean,
|
|
238
|
+
readonly state: Cbor,
|
|
239
|
+
readonly scheduledEvents: readonly ScheduleEvent[],
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
export function readActor(bc: bare.ByteCursor): Actor {
|
|
243
|
+
return {
|
|
244
|
+
input: read2(bc),
|
|
245
|
+
hasInitialized: bare.readBool(bc),
|
|
246
|
+
state: readCbor(bc),
|
|
247
|
+
scheduledEvents: read3(bc),
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
export function writeActor(bc: bare.ByteCursor, x: Actor): void {
|
|
252
|
+
write2(bc, x.input)
|
|
253
|
+
bare.writeBool(bc, x.hasInitialized)
|
|
254
|
+
writeCbor(bc, x.state)
|
|
255
|
+
write3(bc, x.scheduledEvents)
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
export function encodeActor(x: Actor): Uint8Array {
|
|
259
|
+
const bc = new bare.ByteCursor(
|
|
260
|
+
new Uint8Array(config.initialBufferLength),
|
|
261
|
+
config
|
|
262
|
+
)
|
|
263
|
+
writeActor(bc, x)
|
|
264
|
+
return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset)
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
export function decodeActor(bytes: Uint8Array): Actor {
|
|
268
|
+
const bc = new bare.ByteCursor(bytes, config)
|
|
269
|
+
const result = readActor(bc)
|
|
270
|
+
if (bc.offset < bc.view.byteLength) {
|
|
271
|
+
throw new bare.BareError(bc.offset, "remaining bytes")
|
|
272
|
+
}
|
|
273
|
+
return result
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
function assert(condition: boolean, message?: string): asserts condition {
|
|
278
|
+
if (!condition) throw new Error(message ?? "Assertion failed")
|
|
279
|
+
}
|
|
280
|
+
|
|
@@ -433,3 +433,9 @@ export function decodeHttpResolveResponse(bytes: Uint8Array): HttpResolveRespons
|
|
|
433
433
|
}
|
|
434
434
|
return result
|
|
435
435
|
}
|
|
436
|
+
|
|
437
|
+
|
|
438
|
+
function assert(condition: boolean, message?: string): asserts condition {
|
|
439
|
+
if (!condition) throw new Error(message ?? "Assertion failed")
|
|
440
|
+
}
|
|
441
|
+
|