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.
Files changed (231) hide show
  1. package/dist/schemas/actor-persist/v1.ts +6 -0
  2. package/dist/schemas/actor-persist/v2.ts +9 -3
  3. package/dist/schemas/actor-persist/v3.ts +280 -0
  4. package/dist/schemas/client-protocol/v1.ts +6 -0
  5. package/dist/schemas/client-protocol/v2.ts +438 -0
  6. package/dist/schemas/file-system-driver/v1.ts +6 -0
  7. package/dist/schemas/file-system-driver/v2.ts +142 -0
  8. package/dist/tsup/actor/errors.cjs +2 -4
  9. package/dist/tsup/actor/errors.cjs.map +1 -1
  10. package/dist/tsup/actor/errors.d.cts +7 -10
  11. package/dist/tsup/actor/errors.d.ts +7 -10
  12. package/dist/tsup/actor/errors.js +9 -11
  13. package/dist/tsup/{actor-router-consts-B3Lu87yJ.d.cts → actor-router-consts-DzI2szci.d.cts} +5 -9
  14. package/dist/tsup/{actor-router-consts-B3Lu87yJ.d.ts → actor-router-consts-DzI2szci.d.ts} +5 -9
  15. package/dist/tsup/{chunk-ZTH3KYFH.cjs → chunk-3FG5OJ3G.cjs} +3 -3
  16. package/dist/tsup/{chunk-ZTH3KYFH.cjs.map → chunk-3FG5OJ3G.cjs.map} +1 -1
  17. package/dist/tsup/{chunk-BLK27ES3.js → chunk-6JN6W6G3.js} +44 -56
  18. package/dist/tsup/chunk-6JN6W6G3.js.map +1 -0
  19. package/dist/tsup/chunk-7IBNNGQ2.js +514 -0
  20. package/dist/tsup/chunk-7IBNNGQ2.js.map +1 -0
  21. package/dist/tsup/{chunk-36JJ4IQB.cjs → chunk-AZATXPR4.cjs} +4 -8
  22. package/dist/tsup/chunk-AZATXPR4.cjs.map +1 -0
  23. package/dist/tsup/chunk-B7MENRD5.cjs +5694 -0
  24. package/dist/tsup/chunk-B7MENRD5.cjs.map +1 -0
  25. package/dist/tsup/{chunk-BOMZS2TJ.js → chunk-BBVFDEYD.js} +9 -9
  26. package/dist/tsup/chunk-BBVFDEYD.js.map +1 -0
  27. package/dist/tsup/{chunk-KSRXX3Z4.cjs → chunk-D6762AOA.cjs} +20 -25
  28. package/dist/tsup/chunk-D6762AOA.cjs.map +1 -0
  29. package/dist/tsup/{chunk-2JYPS5YM.cjs → chunk-E63WZNMR.cjs} +6 -6
  30. package/dist/tsup/chunk-E63WZNMR.cjs.map +1 -0
  31. package/dist/tsup/{chunk-YBG6R7LX.js → chunk-EDGN4OC7.js} +3 -7
  32. package/dist/tsup/chunk-EDGN4OC7.js.map +1 -0
  33. package/dist/tsup/{chunk-BYMKMOBS.js → chunk-FLOQ3UWM.js} +1844 -1681
  34. package/dist/tsup/chunk-FLOQ3UWM.js.map +1 -0
  35. package/dist/tsup/{chunk-7L65NNWP.cjs → chunk-H7GV5DIW.cjs} +187 -185
  36. package/dist/tsup/chunk-H7GV5DIW.cjs.map +1 -0
  37. package/dist/tsup/{chunk-227FEWMB.js → chunk-HZYZ7JSF.js} +3322 -2251
  38. package/dist/tsup/chunk-HZYZ7JSF.js.map +1 -0
  39. package/dist/tsup/{chunk-FX7TWFQR.js → chunk-IDJK7ILQ.js} +2 -6
  40. package/dist/tsup/chunk-IDJK7ILQ.js.map +1 -0
  41. package/dist/tsup/{chunk-VHGY7PU5.cjs → chunk-ILFXA4AL.cjs} +1900 -1737
  42. package/dist/tsup/chunk-ILFXA4AL.cjs.map +1 -0
  43. package/dist/tsup/chunk-MV6M3FDL.cjs +514 -0
  44. package/dist/tsup/chunk-MV6M3FDL.cjs.map +1 -0
  45. package/dist/tsup/{chunk-PLUN2NQT.js → chunk-NWBKMCWC.js} +189 -187
  46. package/dist/tsup/chunk-NWBKMCWC.js.map +1 -0
  47. package/dist/tsup/{chunk-CD33GT6Z.js → chunk-QIHBDXTO.js} +2 -2
  48. package/dist/tsup/{chunk-G64QUEDJ.js → chunk-W6RDS6NW.js} +23 -28
  49. package/dist/tsup/chunk-W6RDS6NW.js.map +1 -0
  50. package/dist/tsup/{chunk-INNFK746.cjs → chunk-WQU4M4ZC.cjs} +10 -14
  51. package/dist/tsup/chunk-WQU4M4ZC.cjs.map +1 -0
  52. package/dist/tsup/{chunk-SHVX2QUR.cjs → chunk-XKZA47XS.cjs} +17 -17
  53. package/dist/tsup/chunk-XKZA47XS.cjs.map +1 -0
  54. package/dist/tsup/{chunk-HHFKKVLR.cjs → chunk-YHWIOWVA.cjs} +45 -57
  55. package/dist/tsup/chunk-YHWIOWVA.cjs.map +1 -0
  56. package/dist/tsup/{chunk-YBHYXIP6.js → chunk-YVL6IRUM.js} +3 -3
  57. package/dist/tsup/chunk-YVL6IRUM.js.map +1 -0
  58. package/dist/tsup/client/mod.cjs +9 -9
  59. package/dist/tsup/client/mod.d.cts +5 -7
  60. package/dist/tsup/client/mod.d.ts +5 -7
  61. package/dist/tsup/client/mod.js +8 -8
  62. package/dist/tsup/common/log.cjs +3 -3
  63. package/dist/tsup/common/log.js +2 -2
  64. package/dist/tsup/common/websocket.cjs +4 -4
  65. package/dist/tsup/common/websocket.js +3 -3
  66. package/dist/tsup/{conn-B3Vhbgnd.d.ts → config-BRDYDraU.d.cts} +1119 -1047
  67. package/dist/tsup/{conn-DJWL3nGx.d.cts → config-Bo-blHpJ.d.ts} +1119 -1047
  68. package/dist/tsup/driver-helpers/mod.cjs +5 -13
  69. package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
  70. package/dist/tsup/driver-helpers/mod.d.cts +11 -9
  71. package/dist/tsup/driver-helpers/mod.d.ts +11 -9
  72. package/dist/tsup/driver-helpers/mod.js +14 -22
  73. package/dist/tsup/driver-test-suite/mod.cjs +474 -303
  74. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  75. package/dist/tsup/driver-test-suite/mod.d.cts +6 -9
  76. package/dist/tsup/driver-test-suite/mod.d.ts +6 -9
  77. package/dist/tsup/driver-test-suite/mod.js +1085 -914
  78. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  79. package/dist/tsup/inspector/mod.cjs +6 -6
  80. package/dist/tsup/inspector/mod.d.cts +5 -7
  81. package/dist/tsup/inspector/mod.d.ts +5 -7
  82. package/dist/tsup/inspector/mod.js +5 -5
  83. package/dist/tsup/mod.cjs +10 -16
  84. package/dist/tsup/mod.cjs.map +1 -1
  85. package/dist/tsup/mod.d.cts +23 -25
  86. package/dist/tsup/mod.d.ts +23 -25
  87. package/dist/tsup/mod.js +17 -23
  88. package/dist/tsup/test/mod.cjs +11 -11
  89. package/dist/tsup/test/mod.d.cts +4 -6
  90. package/dist/tsup/test/mod.d.ts +4 -6
  91. package/dist/tsup/test/mod.js +10 -10
  92. package/dist/tsup/utils.cjs +3 -5
  93. package/dist/tsup/utils.cjs.map +1 -1
  94. package/dist/tsup/utils.d.cts +1 -2
  95. package/dist/tsup/utils.d.ts +1 -2
  96. package/dist/tsup/utils.js +2 -4
  97. package/package.json +13 -6
  98. package/src/actor/config.ts +56 -44
  99. package/src/actor/conn/driver.ts +61 -0
  100. package/src/actor/conn/drivers/http.ts +17 -0
  101. package/src/actor/conn/drivers/raw-request.ts +24 -0
  102. package/src/actor/conn/drivers/raw-websocket.ts +65 -0
  103. package/src/actor/conn/drivers/websocket.ts +129 -0
  104. package/src/actor/conn/mod.ts +232 -0
  105. package/src/actor/conn/persisted.ts +81 -0
  106. package/src/actor/conn/state-manager.ts +196 -0
  107. package/src/actor/contexts/action.ts +23 -0
  108. package/src/actor/{context.ts → contexts/actor.ts} +19 -8
  109. package/src/actor/contexts/conn-init.ts +31 -0
  110. package/src/actor/contexts/conn.ts +48 -0
  111. package/src/actor/contexts/create-conn-state.ts +13 -0
  112. package/src/actor/contexts/on-before-connect.ts +13 -0
  113. package/src/actor/contexts/on-connect.ts +22 -0
  114. package/src/actor/contexts/request.ts +48 -0
  115. package/src/actor/contexts/websocket.ts +48 -0
  116. package/src/actor/definition.ts +3 -3
  117. package/src/actor/driver.ts +36 -5
  118. package/src/actor/errors.ts +19 -24
  119. package/src/actor/instance/connection-manager.ts +465 -0
  120. package/src/actor/instance/event-manager.ts +292 -0
  121. package/src/actor/instance/kv.ts +15 -0
  122. package/src/actor/instance/mod.ts +1107 -0
  123. package/src/actor/instance/persisted.ts +67 -0
  124. package/src/actor/instance/schedule-manager.ts +349 -0
  125. package/src/actor/instance/state-manager.ts +502 -0
  126. package/src/actor/mod.ts +13 -16
  127. package/src/actor/protocol/old.ts +131 -43
  128. package/src/actor/protocol/serde.ts +19 -4
  129. package/src/actor/router-endpoints.ts +61 -586
  130. package/src/actor/router-websocket-endpoints.ts +408 -0
  131. package/src/actor/router.ts +63 -197
  132. package/src/actor/schedule.ts +1 -1
  133. package/src/client/actor-conn.ts +183 -249
  134. package/src/client/actor-handle.ts +29 -6
  135. package/src/client/client.ts +0 -4
  136. package/src/client/config.ts +1 -4
  137. package/src/client/mod.ts +0 -1
  138. package/src/client/raw-utils.ts +3 -3
  139. package/src/client/utils.ts +85 -39
  140. package/src/common/actor-router-consts.ts +5 -12
  141. package/src/common/{inline-websocket-adapter2.ts → inline-websocket-adapter.ts} +26 -48
  142. package/src/common/log.ts +1 -1
  143. package/src/common/router.ts +28 -17
  144. package/src/common/utils.ts +2 -0
  145. package/src/driver-helpers/mod.ts +7 -10
  146. package/src/driver-helpers/utils.ts +18 -9
  147. package/src/driver-test-suite/mod.ts +26 -50
  148. package/src/driver-test-suite/test-inline-client-driver.ts +27 -51
  149. package/src/driver-test-suite/tests/actor-conn-hibernation.ts +150 -0
  150. package/src/driver-test-suite/tests/actor-conn-state.ts +1 -4
  151. package/src/driver-test-suite/tests/actor-conn.ts +5 -9
  152. package/src/driver-test-suite/tests/actor-destroy.ts +294 -0
  153. package/src/driver-test-suite/tests/actor-driver.ts +0 -7
  154. package/src/driver-test-suite/tests/actor-handle.ts +12 -12
  155. package/src/driver-test-suite/tests/actor-metadata.ts +1 -1
  156. package/src/driver-test-suite/tests/manager-driver.ts +1 -1
  157. package/src/driver-test-suite/tests/raw-http-direct-registry.ts +8 -8
  158. package/src/driver-test-suite/tests/raw-http-request-properties.ts +6 -5
  159. package/src/driver-test-suite/tests/raw-http.ts +5 -5
  160. package/src/driver-test-suite/tests/raw-websocket-direct-registry.ts +7 -7
  161. package/src/driver-test-suite/tests/request-access.ts +4 -4
  162. package/src/driver-test-suite/utils.ts +6 -10
  163. package/src/drivers/engine/actor-driver.ts +614 -424
  164. package/src/drivers/engine/mod.ts +0 -1
  165. package/src/drivers/file-system/actor.ts +24 -12
  166. package/src/drivers/file-system/global-state.ts +427 -37
  167. package/src/drivers/file-system/manager.ts +71 -83
  168. package/src/drivers/file-system/mod.ts +3 -0
  169. package/src/drivers/file-system/utils.ts +18 -8
  170. package/src/engine-process/mod.ts +38 -38
  171. package/src/inspector/utils.ts +7 -5
  172. package/src/manager/driver.ts +11 -4
  173. package/src/manager/gateway.ts +4 -29
  174. package/src/manager/protocol/mod.ts +0 -2
  175. package/src/manager/protocol/query.ts +0 -4
  176. package/src/manager/router.ts +67 -64
  177. package/src/manager-api/actors.ts +13 -0
  178. package/src/mod.ts +1 -3
  179. package/src/registry/mod.ts +20 -20
  180. package/src/registry/serve.ts +9 -14
  181. package/src/remote-manager-driver/actor-websocket-client.ts +1 -16
  182. package/src/remote-manager-driver/api-endpoints.ts +13 -1
  183. package/src/remote-manager-driver/api-utils.ts +8 -0
  184. package/src/remote-manager-driver/metadata.ts +58 -0
  185. package/src/remote-manager-driver/mod.ts +47 -62
  186. package/src/remote-manager-driver/ws-proxy.ts +1 -1
  187. package/src/schemas/actor-persist/mod.ts +1 -1
  188. package/src/schemas/actor-persist/versioned.ts +56 -31
  189. package/src/schemas/client-protocol/mod.ts +1 -1
  190. package/src/schemas/client-protocol/versioned.ts +41 -21
  191. package/src/schemas/client-protocol-zod/mod.ts +103 -0
  192. package/src/schemas/file-system-driver/mod.ts +1 -1
  193. package/src/schemas/file-system-driver/versioned.ts +42 -19
  194. package/src/serde.ts +33 -11
  195. package/src/test/mod.ts +7 -3
  196. package/src/utils/node.ts +173 -0
  197. package/src/utils.ts +0 -4
  198. package/dist/tsup/chunk-227FEWMB.js.map +0 -1
  199. package/dist/tsup/chunk-2JYPS5YM.cjs.map +0 -1
  200. package/dist/tsup/chunk-36JJ4IQB.cjs.map +0 -1
  201. package/dist/tsup/chunk-7L65NNWP.cjs.map +0 -1
  202. package/dist/tsup/chunk-BLK27ES3.js.map +0 -1
  203. package/dist/tsup/chunk-BOMZS2TJ.js.map +0 -1
  204. package/dist/tsup/chunk-BYMKMOBS.js.map +0 -1
  205. package/dist/tsup/chunk-FX7TWFQR.js.map +0 -1
  206. package/dist/tsup/chunk-G64QUEDJ.js.map +0 -1
  207. package/dist/tsup/chunk-HHFKKVLR.cjs.map +0 -1
  208. package/dist/tsup/chunk-INNFK746.cjs.map +0 -1
  209. package/dist/tsup/chunk-KSRXX3Z4.cjs.map +0 -1
  210. package/dist/tsup/chunk-O44LFKSB.cjs +0 -4623
  211. package/dist/tsup/chunk-O44LFKSB.cjs.map +0 -1
  212. package/dist/tsup/chunk-PLUN2NQT.js.map +0 -1
  213. package/dist/tsup/chunk-S4UJG7ZE.js +0 -1119
  214. package/dist/tsup/chunk-S4UJG7ZE.js.map +0 -1
  215. package/dist/tsup/chunk-SHVX2QUR.cjs.map +0 -1
  216. package/dist/tsup/chunk-VFB23BYZ.cjs +0 -1119
  217. package/dist/tsup/chunk-VFB23BYZ.cjs.map +0 -1
  218. package/dist/tsup/chunk-VHGY7PU5.cjs.map +0 -1
  219. package/dist/tsup/chunk-YBG6R7LX.js.map +0 -1
  220. package/dist/tsup/chunk-YBHYXIP6.js.map +0 -1
  221. package/src/actor/action.ts +0 -178
  222. package/src/actor/conn-drivers.ts +0 -216
  223. package/src/actor/conn-socket.ts +0 -8
  224. package/src/actor/conn.ts +0 -272
  225. package/src/actor/instance.ts +0 -2336
  226. package/src/actor/persisted.ts +0 -49
  227. package/src/actor/unstable-react.ts +0 -110
  228. package/src/driver-test-suite/tests/actor-reconnect.ts +0 -170
  229. package/src/drivers/engine/kv.ts +0 -3
  230. package/src/manager/hono-websocket-adapter.ts +0 -393
  231. /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 hibernatableWebSocket: readonly PersistedHibernatableWebSocket[],
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
- hibernatableWebSocket: read4(bc),
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.hibernatableWebSocket)
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
+