rivetkit 2.0.23 → 2.0.24

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 (228) hide show
  1. package/dist/schemas/actor-persist/v2.ts +3 -3
  2. package/dist/schemas/actor-persist/v3.ts +274 -0
  3. package/dist/schemas/client-protocol/v2.ts +432 -0
  4. package/dist/schemas/file-system-driver/v2.ts +136 -0
  5. package/dist/tsup/actor/errors.cjs +2 -4
  6. package/dist/tsup/actor/errors.cjs.map +1 -1
  7. package/dist/tsup/actor/errors.d.cts +7 -10
  8. package/dist/tsup/actor/errors.d.ts +7 -10
  9. package/dist/tsup/actor/errors.js +9 -11
  10. package/dist/tsup/{actor-router-consts-B3Lu87yJ.d.cts → actor-router-consts-DzI2szci.d.cts} +5 -9
  11. package/dist/tsup/{actor-router-consts-B3Lu87yJ.d.ts → actor-router-consts-DzI2szci.d.ts} +5 -9
  12. package/dist/tsup/{chunk-3JYSUFET.cjs → chunk-3543NCSN.cjs} +45 -57
  13. package/dist/tsup/chunk-3543NCSN.cjs.map +1 -0
  14. package/dist/tsup/chunk-4SHILYS5.cjs +5694 -0
  15. package/dist/tsup/chunk-4SHILYS5.cjs.map +1 -0
  16. package/dist/tsup/{chunk-NCUALX2Q.cjs → chunk-5BZO5XPS.cjs} +3 -3
  17. package/dist/tsup/{chunk-NCUALX2Q.cjs.map → chunk-5BZO5XPS.cjs.map} +1 -1
  18. package/dist/tsup/{chunk-5PKKNNNS.js → chunk-BAIGSF64.js} +189 -187
  19. package/dist/tsup/chunk-BAIGSF64.js.map +1 -0
  20. package/dist/tsup/{chunk-HNYF4T36.cjs → chunk-CHLZBSI2.cjs} +17 -17
  21. package/dist/tsup/chunk-CHLZBSI2.cjs.map +1 -0
  22. package/dist/tsup/chunk-D3SLADUD.cjs +512 -0
  23. package/dist/tsup/chunk-D3SLADUD.cjs.map +1 -0
  24. package/dist/tsup/{chunk-KSRXX3Z4.cjs → chunk-D6762AOA.cjs} +20 -25
  25. package/dist/tsup/chunk-D6762AOA.cjs.map +1 -0
  26. package/dist/tsup/{chunk-C56XVVV4.cjs → chunk-DLK5YCTN.cjs} +187 -185
  27. package/dist/tsup/chunk-DLK5YCTN.cjs.map +1 -0
  28. package/dist/tsup/{chunk-DLYZKFRY.js → chunk-DUJQWGYD.js} +3 -7
  29. package/dist/tsup/chunk-DUJQWGYD.js.map +1 -0
  30. package/dist/tsup/{chunk-5UJQWWO3.js → chunk-EIPANQMF.js} +2 -2
  31. package/dist/tsup/{chunk-54DVMQPT.cjs → chunk-ESMTDP7G.cjs} +6 -6
  32. package/dist/tsup/chunk-ESMTDP7G.cjs.map +1 -0
  33. package/dist/tsup/{chunk-XYK5PY3B.cjs → chunk-FVAKREFB.cjs} +1900 -1737
  34. package/dist/tsup/chunk-FVAKREFB.cjs.map +1 -0
  35. package/dist/tsup/{chunk-PHNIVSG5.js → chunk-I3XT7WOF.js} +44 -56
  36. package/dist/tsup/chunk-I3XT7WOF.js.map +1 -0
  37. package/dist/tsup/{chunk-3I6ZIJVJ.js → chunk-IMDS5T42.js} +3 -3
  38. package/dist/tsup/chunk-IMDS5T42.js.map +1 -0
  39. package/dist/tsup/{chunk-SN4KWTRA.cjs → chunk-J3HZJF2P.cjs} +10 -14
  40. package/dist/tsup/chunk-J3HZJF2P.cjs.map +1 -0
  41. package/dist/tsup/{chunk-NOZSCUPQ.js → chunk-MBBJUHSP.js} +1844 -1681
  42. package/dist/tsup/chunk-MBBJUHSP.js.map +1 -0
  43. package/dist/tsup/{chunk-RVVUS4X6.js → chunk-MO5CB6MD.js} +9 -9
  44. package/dist/tsup/chunk-MO5CB6MD.js.map +1 -0
  45. package/dist/tsup/chunk-OFOTPKAH.js +512 -0
  46. package/dist/tsup/chunk-OFOTPKAH.js.map +1 -0
  47. package/dist/tsup/{chunk-G64QUEDJ.js → chunk-W6RDS6NW.js} +23 -28
  48. package/dist/tsup/chunk-W6RDS6NW.js.map +1 -0
  49. package/dist/tsup/{chunk-XSDSNHSE.cjs → chunk-YC5DUHPM.cjs} +4 -8
  50. package/dist/tsup/chunk-YC5DUHPM.cjs.map +1 -0
  51. package/dist/tsup/{chunk-YAYNBR37.js → chunk-YC7YPM2T.js} +2 -6
  52. package/dist/tsup/chunk-YC7YPM2T.js.map +1 -0
  53. package/dist/tsup/{chunk-FTQ62XTN.js → chunk-ZSPU5R4C.js} +3322 -2251
  54. package/dist/tsup/chunk-ZSPU5R4C.js.map +1 -0
  55. package/dist/tsup/client/mod.cjs +9 -9
  56. package/dist/tsup/client/mod.d.cts +5 -7
  57. package/dist/tsup/client/mod.d.ts +5 -7
  58. package/dist/tsup/client/mod.js +8 -8
  59. package/dist/tsup/common/log.cjs +3 -3
  60. package/dist/tsup/common/log.js +2 -2
  61. package/dist/tsup/common/websocket.cjs +4 -4
  62. package/dist/tsup/common/websocket.js +3 -3
  63. package/dist/tsup/{conn-B3Vhbgnd.d.ts → config-BRDYDraU.d.cts} +1119 -1047
  64. package/dist/tsup/{conn-DJWL3nGx.d.cts → config-Bo-blHpJ.d.ts} +1119 -1047
  65. package/dist/tsup/driver-helpers/mod.cjs +5 -13
  66. package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
  67. package/dist/tsup/driver-helpers/mod.d.cts +11 -9
  68. package/dist/tsup/driver-helpers/mod.d.ts +11 -9
  69. package/dist/tsup/driver-helpers/mod.js +14 -22
  70. package/dist/tsup/driver-test-suite/mod.cjs +474 -303
  71. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  72. package/dist/tsup/driver-test-suite/mod.d.cts +6 -9
  73. package/dist/tsup/driver-test-suite/mod.d.ts +6 -9
  74. package/dist/tsup/driver-test-suite/mod.js +1085 -914
  75. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  76. package/dist/tsup/inspector/mod.cjs +6 -6
  77. package/dist/tsup/inspector/mod.d.cts +5 -7
  78. package/dist/tsup/inspector/mod.d.ts +5 -7
  79. package/dist/tsup/inspector/mod.js +5 -5
  80. package/dist/tsup/mod.cjs +10 -16
  81. package/dist/tsup/mod.cjs.map +1 -1
  82. package/dist/tsup/mod.d.cts +23 -25
  83. package/dist/tsup/mod.d.ts +23 -25
  84. package/dist/tsup/mod.js +17 -23
  85. package/dist/tsup/test/mod.cjs +11 -11
  86. package/dist/tsup/test/mod.d.cts +4 -6
  87. package/dist/tsup/test/mod.d.ts +4 -6
  88. package/dist/tsup/test/mod.js +10 -10
  89. package/dist/tsup/utils.cjs +3 -5
  90. package/dist/tsup/utils.cjs.map +1 -1
  91. package/dist/tsup/utils.d.cts +1 -2
  92. package/dist/tsup/utils.d.ts +1 -2
  93. package/dist/tsup/utils.js +2 -4
  94. package/package.json +13 -6
  95. package/src/actor/config.ts +56 -44
  96. package/src/actor/conn/driver.ts +61 -0
  97. package/src/actor/conn/drivers/http.ts +17 -0
  98. package/src/actor/conn/drivers/raw-request.ts +24 -0
  99. package/src/actor/conn/drivers/raw-websocket.ts +65 -0
  100. package/src/actor/conn/drivers/websocket.ts +129 -0
  101. package/src/actor/conn/mod.ts +232 -0
  102. package/src/actor/conn/persisted.ts +81 -0
  103. package/src/actor/conn/state-manager.ts +196 -0
  104. package/src/actor/contexts/action.ts +23 -0
  105. package/src/actor/{context.ts → contexts/actor.ts} +19 -8
  106. package/src/actor/contexts/conn-init.ts +31 -0
  107. package/src/actor/contexts/conn.ts +48 -0
  108. package/src/actor/contexts/create-conn-state.ts +13 -0
  109. package/src/actor/contexts/on-before-connect.ts +13 -0
  110. package/src/actor/contexts/on-connect.ts +22 -0
  111. package/src/actor/contexts/request.ts +48 -0
  112. package/src/actor/contexts/websocket.ts +48 -0
  113. package/src/actor/definition.ts +3 -3
  114. package/src/actor/driver.ts +36 -5
  115. package/src/actor/errors.ts +19 -24
  116. package/src/actor/instance/connection-manager.ts +465 -0
  117. package/src/actor/instance/event-manager.ts +292 -0
  118. package/src/actor/instance/kv.ts +15 -0
  119. package/src/actor/instance/mod.ts +1107 -0
  120. package/src/actor/instance/persisted.ts +67 -0
  121. package/src/actor/instance/schedule-manager.ts +349 -0
  122. package/src/actor/instance/state-manager.ts +502 -0
  123. package/src/actor/mod.ts +13 -16
  124. package/src/actor/protocol/old.ts +131 -43
  125. package/src/actor/protocol/serde.ts +19 -4
  126. package/src/actor/router-endpoints.ts +61 -586
  127. package/src/actor/router-websocket-endpoints.ts +408 -0
  128. package/src/actor/router.ts +63 -197
  129. package/src/actor/schedule.ts +1 -1
  130. package/src/client/actor-conn.ts +183 -249
  131. package/src/client/actor-handle.ts +29 -6
  132. package/src/client/client.ts +0 -4
  133. package/src/client/config.ts +1 -4
  134. package/src/client/mod.ts +0 -1
  135. package/src/client/raw-utils.ts +3 -3
  136. package/src/client/utils.ts +85 -39
  137. package/src/common/actor-router-consts.ts +5 -12
  138. package/src/common/{inline-websocket-adapter2.ts → inline-websocket-adapter.ts} +26 -48
  139. package/src/common/log.ts +1 -1
  140. package/src/common/router.ts +28 -17
  141. package/src/common/utils.ts +2 -0
  142. package/src/driver-helpers/mod.ts +7 -10
  143. package/src/driver-helpers/utils.ts +18 -9
  144. package/src/driver-test-suite/mod.ts +26 -50
  145. package/src/driver-test-suite/test-inline-client-driver.ts +27 -51
  146. package/src/driver-test-suite/tests/actor-conn-hibernation.ts +150 -0
  147. package/src/driver-test-suite/tests/actor-conn-state.ts +1 -4
  148. package/src/driver-test-suite/tests/actor-conn.ts +5 -9
  149. package/src/driver-test-suite/tests/actor-destroy.ts +294 -0
  150. package/src/driver-test-suite/tests/actor-driver.ts +0 -7
  151. package/src/driver-test-suite/tests/actor-handle.ts +12 -12
  152. package/src/driver-test-suite/tests/actor-metadata.ts +1 -1
  153. package/src/driver-test-suite/tests/manager-driver.ts +1 -1
  154. package/src/driver-test-suite/tests/raw-http-direct-registry.ts +8 -8
  155. package/src/driver-test-suite/tests/raw-http-request-properties.ts +6 -5
  156. package/src/driver-test-suite/tests/raw-http.ts +5 -5
  157. package/src/driver-test-suite/tests/raw-websocket-direct-registry.ts +7 -7
  158. package/src/driver-test-suite/tests/request-access.ts +4 -4
  159. package/src/driver-test-suite/utils.ts +6 -10
  160. package/src/drivers/engine/actor-driver.ts +614 -424
  161. package/src/drivers/engine/mod.ts +0 -1
  162. package/src/drivers/file-system/actor.ts +24 -12
  163. package/src/drivers/file-system/global-state.ts +427 -37
  164. package/src/drivers/file-system/manager.ts +71 -83
  165. package/src/drivers/file-system/mod.ts +3 -0
  166. package/src/drivers/file-system/utils.ts +18 -8
  167. package/src/engine-process/mod.ts +38 -38
  168. package/src/inspector/utils.ts +7 -5
  169. package/src/manager/driver.ts +11 -4
  170. package/src/manager/gateway.ts +4 -29
  171. package/src/manager/protocol/mod.ts +0 -2
  172. package/src/manager/protocol/query.ts +0 -4
  173. package/src/manager/router.ts +67 -64
  174. package/src/manager-api/actors.ts +13 -0
  175. package/src/mod.ts +1 -3
  176. package/src/registry/mod.ts +20 -20
  177. package/src/registry/serve.ts +9 -14
  178. package/src/remote-manager-driver/actor-websocket-client.ts +1 -16
  179. package/src/remote-manager-driver/api-endpoints.ts +13 -1
  180. package/src/remote-manager-driver/api-utils.ts +8 -0
  181. package/src/remote-manager-driver/metadata.ts +58 -0
  182. package/src/remote-manager-driver/mod.ts +47 -62
  183. package/src/remote-manager-driver/ws-proxy.ts +1 -1
  184. package/src/schemas/actor-persist/mod.ts +1 -1
  185. package/src/schemas/actor-persist/versioned.ts +56 -31
  186. package/src/schemas/client-protocol/mod.ts +1 -1
  187. package/src/schemas/client-protocol/versioned.ts +41 -21
  188. package/src/schemas/client-protocol-zod/mod.ts +103 -0
  189. package/src/schemas/file-system-driver/mod.ts +1 -1
  190. package/src/schemas/file-system-driver/versioned.ts +42 -19
  191. package/src/serde.ts +33 -11
  192. package/src/test/mod.ts +7 -3
  193. package/src/utils/node.ts +173 -0
  194. package/src/utils.ts +0 -4
  195. package/dist/tsup/chunk-3I6ZIJVJ.js.map +0 -1
  196. package/dist/tsup/chunk-3JYSUFET.cjs.map +0 -1
  197. package/dist/tsup/chunk-54DVMQPT.cjs.map +0 -1
  198. package/dist/tsup/chunk-5PKKNNNS.js.map +0 -1
  199. package/dist/tsup/chunk-C56XVVV4.cjs.map +0 -1
  200. package/dist/tsup/chunk-D6PCH7FR.cjs +0 -4623
  201. package/dist/tsup/chunk-D6PCH7FR.cjs.map +0 -1
  202. package/dist/tsup/chunk-DLYZKFRY.js.map +0 -1
  203. package/dist/tsup/chunk-FTQ62XTN.js.map +0 -1
  204. package/dist/tsup/chunk-G64QUEDJ.js.map +0 -1
  205. package/dist/tsup/chunk-HNYF4T36.cjs.map +0 -1
  206. package/dist/tsup/chunk-JMLTKMJ7.cjs +0 -1119
  207. package/dist/tsup/chunk-JMLTKMJ7.cjs.map +0 -1
  208. package/dist/tsup/chunk-KSRXX3Z4.cjs.map +0 -1
  209. package/dist/tsup/chunk-NOZSCUPQ.js.map +0 -1
  210. package/dist/tsup/chunk-PHNIVSG5.js.map +0 -1
  211. package/dist/tsup/chunk-RUTBXBRR.js +0 -1119
  212. package/dist/tsup/chunk-RUTBXBRR.js.map +0 -1
  213. package/dist/tsup/chunk-RVVUS4X6.js.map +0 -1
  214. package/dist/tsup/chunk-SN4KWTRA.cjs.map +0 -1
  215. package/dist/tsup/chunk-XSDSNHSE.cjs.map +0 -1
  216. package/dist/tsup/chunk-XYK5PY3B.cjs.map +0 -1
  217. package/dist/tsup/chunk-YAYNBR37.js.map +0 -1
  218. package/src/actor/action.ts +0 -178
  219. package/src/actor/conn-drivers.ts +0 -216
  220. package/src/actor/conn-socket.ts +0 -8
  221. package/src/actor/conn.ts +0 -272
  222. package/src/actor/instance.ts +0 -2336
  223. package/src/actor/persisted.ts +0 -49
  224. package/src/actor/unstable-react.ts +0 -110
  225. package/src/driver-test-suite/tests/actor-reconnect.ts +0 -170
  226. package/src/drivers/engine/kv.ts +0 -3
  227. package/src/manager/hono-websocket-adapter.ts +0 -393
  228. /package/dist/tsup/{chunk-5UJQWWO3.js.map → chunk-EIPANQMF.js.map} +0 -0
@@ -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 {
@@ -0,0 +1,274 @@
1
+ import assert from "assert"
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
+ }