rivetkit 2.0.27 → 2.0.28

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 (124) hide show
  1. package/dist/schemas/file-system-driver/v3.ts +167 -0
  2. package/dist/tsup/{chunk-4GJQDTAG.cjs → chunk-3ZC6SBX6.cjs} +652 -329
  3. package/dist/tsup/chunk-3ZC6SBX6.cjs.map +1 -0
  4. package/dist/tsup/{chunk-D7A47BVR.js → chunk-7IAEY5UZ.js} +2 -2
  5. package/dist/tsup/{chunk-6F2NCX7R.js → chunk-AE7BB3M2.js} +2 -2
  6. package/dist/tsup/{chunk-XU4GGB6J.js → chunk-AHPMXTSB.js} +503 -180
  7. package/dist/tsup/chunk-AHPMXTSB.js.map +1 -0
  8. package/dist/tsup/{chunk-XNKWXMIT.cjs → chunk-CJLXW36F.cjs} +768 -292
  9. package/dist/tsup/chunk-CJLXW36F.cjs.map +1 -0
  10. package/dist/tsup/chunk-DATRTJVZ.js +891 -0
  11. package/dist/tsup/chunk-DATRTJVZ.js.map +1 -0
  12. package/dist/tsup/{chunk-C3UREFUI.js → chunk-EJXISR3H.js} +14 -5
  13. package/dist/tsup/chunk-EJXISR3H.js.map +1 -0
  14. package/dist/tsup/{chunk-GUH2PNPG.js → chunk-IDYDUETM.js} +3 -3
  15. package/dist/tsup/{chunk-2NNICHGY.js → chunk-ILK4JEMF.js} +2 -2
  16. package/dist/tsup/chunk-JALGQWHW.cjs +129 -0
  17. package/dist/tsup/chunk-JALGQWHW.cjs.map +1 -0
  18. package/dist/tsup/{chunk-BBTOBXEO.js → chunk-KXSSOVFA.js} +578 -102
  19. package/dist/tsup/chunk-KXSSOVFA.js.map +1 -0
  20. package/dist/tsup/{chunk-DRJCTDDT.cjs → chunk-M54KFQQP.cjs} +18 -9
  21. package/dist/tsup/chunk-M54KFQQP.cjs.map +1 -0
  22. package/dist/tsup/chunk-NQZ643FB.cjs +891 -0
  23. package/dist/tsup/chunk-NQZ643FB.cjs.map +1 -0
  24. package/dist/tsup/{chunk-LZADH4QA.cjs → chunk-NR2N4UA2.cjs} +10 -10
  25. package/dist/tsup/{chunk-LZADH4QA.cjs.map → chunk-NR2N4UA2.cjs.map} +1 -1
  26. package/dist/tsup/{chunk-KSQQU7NC.js → chunk-S5URQ3CI.js} +7 -6
  27. package/dist/tsup/chunk-S5URQ3CI.js.map +1 -0
  28. package/dist/tsup/{chunk-QC4AE54W.cjs → chunk-VQRYS6VW.cjs} +3 -3
  29. package/dist/tsup/{chunk-QC4AE54W.cjs.map → chunk-VQRYS6VW.cjs.map} +1 -1
  30. package/dist/tsup/{chunk-TJ2PJ5C7.cjs → chunk-Y2AKEZRY.cjs} +3 -3
  31. package/dist/tsup/{chunk-TJ2PJ5C7.cjs.map → chunk-Y2AKEZRY.cjs.map} +1 -1
  32. package/dist/tsup/{chunk-F3SQLO3X.cjs → chunk-Y5LN2XRH.cjs} +7 -6
  33. package/dist/tsup/chunk-Y5LN2XRH.cjs.map +1 -0
  34. package/dist/tsup/{chunk-G7YZSSWV.cjs → chunk-YW2E3UPH.cjs} +6 -6
  35. package/dist/tsup/{chunk-G7YZSSWV.cjs.map → chunk-YW2E3UPH.cjs.map} +1 -1
  36. package/dist/tsup/{chunk-VRZNWBDK.js → chunk-ZL3SUOIM.js} +45 -46
  37. package/dist/tsup/chunk-ZL3SUOIM.js.map +1 -0
  38. package/dist/tsup/client/mod.cjs +8 -8
  39. package/dist/tsup/client/mod.d.cts +3 -2
  40. package/dist/tsup/client/mod.d.ts +3 -2
  41. package/dist/tsup/client/mod.js +7 -7
  42. package/dist/tsup/common/log.cjs +2 -2
  43. package/dist/tsup/common/log.d.cts +9 -1
  44. package/dist/tsup/common/log.d.ts +9 -1
  45. package/dist/tsup/common/log.js +1 -1
  46. package/dist/tsup/common/websocket.cjs +3 -3
  47. package/dist/tsup/common/websocket.js +2 -2
  48. package/dist/tsup/{config-Bo-blHpJ.d.ts → config-CcMdKDv9.d.ts} +301 -899
  49. package/dist/tsup/{config-BRDYDraU.d.cts → config-DxlmiJS1.d.cts} +301 -899
  50. package/dist/tsup/driver-helpers/mod.cjs +4 -4
  51. package/dist/tsup/driver-helpers/mod.d.cts +2 -1
  52. package/dist/tsup/driver-helpers/mod.d.ts +2 -1
  53. package/dist/tsup/driver-helpers/mod.js +3 -3
  54. package/dist/tsup/driver-test-suite/mod.cjs +71 -71
  55. package/dist/tsup/driver-test-suite/mod.d.cts +2 -1
  56. package/dist/tsup/driver-test-suite/mod.d.ts +2 -1
  57. package/dist/tsup/driver-test-suite/mod.js +10 -10
  58. package/dist/tsup/inspector/mod.cjs +5 -5
  59. package/dist/tsup/inspector/mod.d.cts +5 -4
  60. package/dist/tsup/inspector/mod.d.ts +5 -4
  61. package/dist/tsup/inspector/mod.js +4 -4
  62. package/dist/tsup/mod.cjs +9 -9
  63. package/dist/tsup/mod.d.cts +3 -2
  64. package/dist/tsup/mod.d.ts +3 -2
  65. package/dist/tsup/mod.js +8 -8
  66. package/dist/tsup/test/mod.cjs +11 -10
  67. package/dist/tsup/test/mod.cjs.map +1 -1
  68. package/dist/tsup/test/mod.d.cts +2 -6
  69. package/dist/tsup/test/mod.d.ts +2 -6
  70. package/dist/tsup/test/mod.js +10 -9
  71. package/dist/tsup/utils.cjs +2 -2
  72. package/dist/tsup/utils.js +1 -1
  73. package/package.json +7 -6
  74. package/src/actor/config.ts +21 -20
  75. package/src/actor/conn/mod.ts +5 -1
  76. package/src/actor/instance/connection-manager.ts +5 -1
  77. package/src/actor/instance/event-manager.ts +5 -1
  78. package/src/actor/instance/state-manager.ts +19 -3
  79. package/src/actor/protocol/old.ts +3 -0
  80. package/src/actor/protocol/serde.ts +5 -1
  81. package/src/actor/router-endpoints.ts +2 -0
  82. package/src/client/actor-conn.ts +2 -0
  83. package/src/client/actor-handle.ts +3 -0
  84. package/src/client/config.ts +1 -1
  85. package/src/client/utils.ts +4 -1
  86. package/src/common/router.ts +5 -1
  87. package/src/driver-helpers/utils.ts +8 -2
  88. package/src/drivers/engine/config.ts +6 -3
  89. package/src/drivers/file-system/global-state.ts +46 -1
  90. package/src/drivers/file-system/manager.ts +4 -0
  91. package/src/inspector/config.ts +1 -2
  92. package/src/manager/driver.ts +4 -0
  93. package/src/manager/router-schema.ts +7 -7
  94. package/src/manager/router.ts +4 -4
  95. package/src/registry/run-config.ts +9 -5
  96. package/src/remote-manager-driver/actor-http-client.ts +1 -1
  97. package/src/remote-manager-driver/api-utils.ts +2 -0
  98. package/src/schemas/actor-persist/versioned.ts +126 -54
  99. package/src/schemas/client-protocol/versioned.ts +173 -42
  100. package/src/schemas/file-system-driver/mod.ts +1 -1
  101. package/src/schemas/file-system-driver/versioned.ts +129 -45
  102. package/src/serde.ts +9 -2
  103. package/src/test/config.ts +13 -12
  104. package/src/test/mod.ts +56 -82
  105. package/dist/tsup/chunk-2TZH6VO6.cjs +0 -514
  106. package/dist/tsup/chunk-2TZH6VO6.cjs.map +0 -1
  107. package/dist/tsup/chunk-4GJQDTAG.cjs.map +0 -1
  108. package/dist/tsup/chunk-5YDKTW6Y.js +0 -514
  109. package/dist/tsup/chunk-5YDKTW6Y.js.map +0 -1
  110. package/dist/tsup/chunk-BBTOBXEO.js.map +0 -1
  111. package/dist/tsup/chunk-C3UREFUI.js.map +0 -1
  112. package/dist/tsup/chunk-DRJCTDDT.cjs.map +0 -1
  113. package/dist/tsup/chunk-F3SQLO3X.cjs.map +0 -1
  114. package/dist/tsup/chunk-FYZLEH57.cjs +0 -130
  115. package/dist/tsup/chunk-FYZLEH57.cjs.map +0 -1
  116. package/dist/tsup/chunk-KSQQU7NC.js.map +0 -1
  117. package/dist/tsup/chunk-VRZNWBDK.js.map +0 -1
  118. package/dist/tsup/chunk-XNKWXMIT.cjs.map +0 -1
  119. package/dist/tsup/chunk-XU4GGB6J.js.map +0 -1
  120. package/src/common/versioned-data.ts +0 -95
  121. /package/dist/tsup/{chunk-D7A47BVR.js.map → chunk-7IAEY5UZ.js.map} +0 -0
  122. /package/dist/tsup/{chunk-6F2NCX7R.js.map → chunk-AE7BB3M2.js.map} +0 -0
  123. /package/dist/tsup/{chunk-GUH2PNPG.js.map → chunk-IDYDUETM.js.map} +0 -0
  124. /package/dist/tsup/{chunk-2NNICHGY.js.map → chunk-ILK4JEMF.js.map} +0 -0
@@ -1,514 +0,0 @@
1
- import {
2
- EncodingSchema
3
- } from "./chunk-C3UREFUI.js";
4
- import {
5
- LogLevelSchema,
6
- VERSION,
7
- bufferToArrayBuffer,
8
- getEnvUniversal
9
- } from "./chunk-KSQQU7NC.js";
10
-
11
- // src/registry/run-config.ts
12
- import { z as z4 } from "zod";
13
-
14
- // src/drivers/engine/config.ts
15
- import { z as z2 } from "zod";
16
-
17
- // src/client/config.ts
18
- import z from "zod";
19
- var ClientConfigSchema = z.object({
20
- /** Endpoint to connect to for Rivet Engine or RivetKit manager API. */
21
- endpoint: z.string().optional().transform(
22
- (x) => x ?? getEnvUniversal("RIVET_ENGINE") ?? getEnvUniversal("RIVET_ENDPOINT")
23
- ),
24
- /** Token to use to authenticate with the API. */
25
- token: z.string().optional().transform((x) => x ?? getEnvUniversal("RIVET_TOKEN")),
26
- /** Namespace to connect to. */
27
- namespace: z.string().default(() => getEnvUniversal("RIVET_NAMESPACE") ?? "default"),
28
- /** Name of the runner. This is used to group together runners in to different pools. */
29
- runnerName: z.string().default(() => getEnvUniversal("RIVET_RUNNER") ?? "default"),
30
- encoding: EncodingSchema.default("bare"),
31
- headers: z.record(z.string()).optional().default({}),
32
- // See RunConfig.getUpgradeWebSocket
33
- getUpgradeWebSocket: z.custom().optional(),
34
- /** Whether to automatically perform health checks when the client is created. */
35
- disableMetadataLookup: z.boolean().optional().default(false)
36
- });
37
-
38
- // src/drivers/engine/config.ts
39
- var EngingConfigSchema = z2.object({
40
- /** Unique key for this runner. Runners connecting a given key will replace any other runner connected with the same key. */
41
- runnerKey: z2.string().optional().transform((x) => x ?? getEnvUniversal("RIVET_RUNNER_KEY")),
42
- /** How many actors this runner can run. */
43
- totalSlots: z2.number().default(1e5)
44
- }).merge(ClientConfigSchema).default({});
45
-
46
- // src/inspector/config.ts
47
- import { z as z3 } from "zod";
48
- var defaultTokenFn = () => {
49
- const envToken = getEnvUniversal("RIVETKIT_INSPECTOR_TOKEN");
50
- if (envToken) {
51
- return envToken;
52
- }
53
- return "";
54
- };
55
- var defaultEnabled = () => {
56
- return getEnvUniversal("NODE_ENV") !== "production" || !getEnvUniversal("RIVETKIT_INSPECTOR_DISABLE");
57
- };
58
- var InspectorConfigSchema = z3.object({
59
- enabled: z3.boolean().or(
60
- z3.object({
61
- actor: z3.boolean().optional().default(true),
62
- manager: z3.boolean().optional().default(true)
63
- })
64
- ).optional().default(defaultEnabled),
65
- /**
66
- * Token used to access the Inspector.
67
- */
68
- token: z3.function().returns(z3.string()).optional().default(() => defaultTokenFn),
69
- /**
70
- * Default RivetKit server endpoint for Rivet Inspector to connect to. This should be the same endpoint as what you use for your Rivet client to connect to RivetKit.
71
- *
72
- * This is a convenience property just for printing out the inspector URL.
73
- */
74
- defaultEndpoint: z3.string().optional()
75
- }).optional().default(() => ({
76
- enabled: defaultEnabled(),
77
- token: defaultTokenFn
78
- }));
79
-
80
- // src/registry/run-config.ts
81
- var DriverConfigSchema = z4.object({
82
- /** Machine-readable name to identify this driver by. */
83
- name: z4.string(),
84
- manager: z4.custom(),
85
- actor: z4.custom()
86
- });
87
- var RunnerConfigSchema = z4.object({
88
- driver: DriverConfigSchema.optional(),
89
- /** @experimental */
90
- maxIncomingMessageSize: z4.number().optional().default(65536),
91
- /** @experimental */
92
- inspector: InspectorConfigSchema,
93
- /** @experimental */
94
- disableDefaultServer: z4.boolean().optional().default(false),
95
- /** @experimental */
96
- defaultServerPort: z4.number().default(6420),
97
- /** @experimental */
98
- runEngine: z4.boolean().optional().default(() => getEnvUniversal("RIVET_RUN_ENGINE") === "1"),
99
- /** @experimental */
100
- runEngineVersion: z4.string().optional().default(
101
- () => getEnvUniversal("RIVET_RUN_ENGINE_VERSION") ?? VERSION
102
- ),
103
- /** @experimental */
104
- overrideServerAddress: z4.string().optional(),
105
- /** @experimental */
106
- disableActorDriver: z4.boolean().optional().default(false),
107
- /**
108
- * @experimental
109
- *
110
- * Whether to run runners normally or have them managed
111
- * serverlessly (by the Rivet Engine for example).
112
- */
113
- runnerKind: z4.enum(["serverless", "normal"]).optional().default(
114
- () => getEnvUniversal("RIVET_RUNNER_KIND") === "serverless" ? "serverless" : "normal"
115
- ),
116
- totalSlots: z4.number().optional(),
117
- /**
118
- * @experimental
119
- *
120
- * Base path for the router. This is used to prefix all routes.
121
- * For example, if the base path is `/api`, then the route `/actors` will be
122
- * available at `/api/actors`.
123
- */
124
- basePath: z4.string().optional().default("/"),
125
- /**
126
- * @experimental
127
- *
128
- * Disable welcome message.
129
- * */
130
- noWelcome: z4.boolean().optional().default(false),
131
- /**
132
- * @experimental
133
- * */
134
- logging: z4.object({
135
- baseLogger: z4.custom().optional(),
136
- level: LogLevelSchema.optional()
137
- }).optional().default({}),
138
- /**
139
- * @experimental
140
- *
141
- * Automatically configure serverless runners in the engine.
142
- * Can only be used when runnerKind is "serverless".
143
- * If true, uses default configuration. Can also provide custom configuration.
144
- */
145
- autoConfigureServerless: z4.union([
146
- z4.boolean(),
147
- z4.object({
148
- url: z4.string().optional(),
149
- headers: z4.record(z4.string(), z4.string()).optional(),
150
- maxRunners: z4.number().optional(),
151
- minRunners: z4.number().optional(),
152
- requestLifespan: z4.number().optional(),
153
- runnersMargin: z4.number().optional(),
154
- slotsPerRunner: z4.number().optional(),
155
- metadata: z4.record(z4.unknown()).optional()
156
- })
157
- ]).optional(),
158
- // This is a function to allow for lazy configuration of upgradeWebSocket on the
159
- // fly. This is required since the dependencies that upgradeWebSocket
160
- // (specifically Node.js) can sometimes only be specified after the router is
161
- // created or must be imported async using `await import(...)`
162
- getUpgradeWebSocket: z4.custom().optional()
163
- }).merge(EngingConfigSchema.removeDefault()).default({});
164
-
165
- // src/driver-helpers/utils.ts
166
- import * as cbor from "cbor-x";
167
-
168
- // src/actor/instance/kv.ts
169
- var KEYS = {
170
- PERSIST_DATA: Uint8Array.from([1]),
171
- CONN_PREFIX: Uint8Array.from([2]),
172
- // Prefix for connection keys
173
- INSPECTOR_TOKEN: Uint8Array.from([3])
174
- // Inspector token key
175
- };
176
- function makeConnKey(connId) {
177
- const encoder = new TextEncoder();
178
- const connIdBytes = encoder.encode(connId);
179
- const key = new Uint8Array(KEYS.CONN_PREFIX.length + connIdBytes.length);
180
- key.set(KEYS.CONN_PREFIX, 0);
181
- key.set(connIdBytes, KEYS.CONN_PREFIX.length);
182
- return key;
183
- }
184
-
185
- // src/common/versioned-data.ts
186
- var VersionedDataHandler = class {
187
- constructor(config2) {
188
- this.config = config2;
189
- }
190
- serializeWithEmbeddedVersion(data) {
191
- const versioned = {
192
- version: this.config.currentVersion,
193
- data: this.config.serializeVersion(data)
194
- };
195
- return this.embedVersion(versioned);
196
- }
197
- deserializeWithEmbeddedVersion(bytes) {
198
- const versioned = this.extractVersion(bytes);
199
- return this.deserialize(versioned.data, versioned.version);
200
- }
201
- serialize(data, version) {
202
- return this.config.serializeVersion(data);
203
- }
204
- deserialize(bytes, version) {
205
- if (version === this.config.currentVersion) {
206
- return this.config.deserializeVersion(bytes);
207
- }
208
- if (version > this.config.currentVersion) {
209
- throw new Error(
210
- `Cannot decode data from version ${version}, current version is ${this.config.currentVersion}`
211
- );
212
- }
213
- let currentData = this.config.deserializeVersion(bytes);
214
- let currentVersion = version;
215
- while (currentVersion < this.config.currentVersion) {
216
- const migration = this.config.migrations.get(currentVersion);
217
- if (!migration) {
218
- throw new Error(
219
- `No migration found from version ${currentVersion} to ${currentVersion + 1}`
220
- );
221
- }
222
- currentData = migration(currentData);
223
- currentVersion++;
224
- }
225
- return currentData;
226
- }
227
- embedVersion(data) {
228
- const versionBytes = new Uint8Array(2);
229
- new DataView(versionBytes.buffer).setUint16(0, data.version, true);
230
- const result = new Uint8Array(versionBytes.length + data.data.length);
231
- result.set(versionBytes);
232
- result.set(data.data, versionBytes.length);
233
- return result;
234
- }
235
- extractVersion(bytes) {
236
- if (bytes.length < 2) {
237
- throw new Error("Invalid versioned data: too short");
238
- }
239
- const version = new DataView(bytes.buffer, bytes.byteOffset).getUint16(
240
- 0,
241
- true
242
- );
243
- const data = bytes.slice(2);
244
- return { version, data };
245
- }
246
- };
247
- function createVersionedDataHandler(config2) {
248
- return new VersionedDataHandler(config2);
249
- }
250
-
251
- // dist/schemas/actor-persist/v3.ts
252
- import * as bare from "@bare-ts/lib";
253
- var config = /* @__PURE__ */ bare.Config({});
254
- function readGatewayId(bc) {
255
- return bare.readFixedData(bc, 4);
256
- }
257
- function writeGatewayId(bc, x) {
258
- assert(x.byteLength === 4);
259
- bare.writeFixedData(bc, x);
260
- }
261
- function readRequestId(bc) {
262
- return bare.readFixedData(bc, 4);
263
- }
264
- function writeRequestId(bc, x) {
265
- assert(x.byteLength === 4);
266
- bare.writeFixedData(bc, x);
267
- }
268
- function readCbor(bc) {
269
- return bare.readData(bc);
270
- }
271
- function writeCbor(bc, x) {
272
- bare.writeData(bc, x);
273
- }
274
- function readSubscription(bc) {
275
- return {
276
- eventName: bare.readString(bc)
277
- };
278
- }
279
- function writeSubscription(bc, x) {
280
- bare.writeString(bc, x.eventName);
281
- }
282
- function read0(bc) {
283
- const len = bare.readUintSafe(bc);
284
- if (len === 0) {
285
- return [];
286
- }
287
- const result = [readSubscription(bc)];
288
- for (let i = 1; i < len; i++) {
289
- result[i] = readSubscription(bc);
290
- }
291
- return result;
292
- }
293
- function write0(bc, x) {
294
- bare.writeUintSafe(bc, x.length);
295
- for (let i = 0; i < x.length; i++) {
296
- writeSubscription(bc, x[i]);
297
- }
298
- }
299
- function read1(bc) {
300
- const len = bare.readUintSafe(bc);
301
- const result = /* @__PURE__ */ new Map();
302
- for (let i = 0; i < len; i++) {
303
- const offset = bc.offset;
304
- const key = bare.readString(bc);
305
- if (result.has(key)) {
306
- bc.offset = offset;
307
- throw new bare.BareError(offset, "duplicated key");
308
- }
309
- result.set(key, bare.readString(bc));
310
- }
311
- return result;
312
- }
313
- function write1(bc, x) {
314
- bare.writeUintSafe(bc, x.size);
315
- for (const kv of x) {
316
- bare.writeString(bc, kv[0]);
317
- bare.writeString(bc, kv[1]);
318
- }
319
- }
320
- function readConn(bc) {
321
- return {
322
- id: bare.readString(bc),
323
- parameters: readCbor(bc),
324
- state: readCbor(bc),
325
- subscriptions: read0(bc),
326
- gatewayId: readGatewayId(bc),
327
- requestId: readRequestId(bc),
328
- serverMessageIndex: bare.readU16(bc),
329
- clientMessageIndex: bare.readU16(bc),
330
- requestPath: bare.readString(bc),
331
- requestHeaders: read1(bc)
332
- };
333
- }
334
- function writeConn(bc, x) {
335
- bare.writeString(bc, x.id);
336
- writeCbor(bc, x.parameters);
337
- writeCbor(bc, x.state);
338
- write0(bc, x.subscriptions);
339
- writeGatewayId(bc, x.gatewayId);
340
- writeRequestId(bc, x.requestId);
341
- bare.writeU16(bc, x.serverMessageIndex);
342
- bare.writeU16(bc, x.clientMessageIndex);
343
- bare.writeString(bc, x.requestPath);
344
- write1(bc, x.requestHeaders);
345
- }
346
- function encodeConn(x) {
347
- const bc = new bare.ByteCursor(
348
- new Uint8Array(config.initialBufferLength),
349
- config
350
- );
351
- writeConn(bc, x);
352
- return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
353
- }
354
- function decodeConn(bytes) {
355
- const bc = new bare.ByteCursor(bytes, config);
356
- const result = readConn(bc);
357
- if (bc.offset < bc.view.byteLength) {
358
- throw new bare.BareError(bc.offset, "remaining bytes");
359
- }
360
- return result;
361
- }
362
- function read2(bc) {
363
- return bare.readBool(bc) ? readCbor(bc) : null;
364
- }
365
- function write2(bc, x) {
366
- bare.writeBool(bc, x !== null);
367
- if (x !== null) {
368
- writeCbor(bc, x);
369
- }
370
- }
371
- function readScheduleEvent(bc) {
372
- return {
373
- eventId: bare.readString(bc),
374
- timestamp: bare.readI64(bc),
375
- action: bare.readString(bc),
376
- args: read2(bc)
377
- };
378
- }
379
- function writeScheduleEvent(bc, x) {
380
- bare.writeString(bc, x.eventId);
381
- bare.writeI64(bc, x.timestamp);
382
- bare.writeString(bc, x.action);
383
- write2(bc, x.args);
384
- }
385
- function read3(bc) {
386
- const len = bare.readUintSafe(bc);
387
- if (len === 0) {
388
- return [];
389
- }
390
- const result = [readScheduleEvent(bc)];
391
- for (let i = 1; i < len; i++) {
392
- result[i] = readScheduleEvent(bc);
393
- }
394
- return result;
395
- }
396
- function write3(bc, x) {
397
- bare.writeUintSafe(bc, x.length);
398
- for (let i = 0; i < x.length; i++) {
399
- writeScheduleEvent(bc, x[i]);
400
- }
401
- }
402
- function readActor(bc) {
403
- return {
404
- input: read2(bc),
405
- hasInitialized: bare.readBool(bc),
406
- state: readCbor(bc),
407
- scheduledEvents: read3(bc)
408
- };
409
- }
410
- function writeActor(bc, x) {
411
- write2(bc, x.input);
412
- bare.writeBool(bc, x.hasInitialized);
413
- writeCbor(bc, x.state);
414
- write3(bc, x.scheduledEvents);
415
- }
416
- function encodeActor(x) {
417
- const bc = new bare.ByteCursor(
418
- new Uint8Array(config.initialBufferLength),
419
- config
420
- );
421
- writeActor(bc, x);
422
- return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset);
423
- }
424
- function decodeActor(bytes) {
425
- const bc = new bare.ByteCursor(bytes, config);
426
- const result = readActor(bc);
427
- if (bc.offset < bc.view.byteLength) {
428
- throw new bare.BareError(bc.offset, "remaining bytes");
429
- }
430
- return result;
431
- }
432
- function assert(condition, message) {
433
- if (!condition) throw new Error(message ?? "Assertion failed");
434
- }
435
-
436
- // src/schemas/actor-persist/versioned.ts
437
- var CURRENT_VERSION = 3;
438
- var migrations = /* @__PURE__ */ new Map([
439
- [
440
- 1,
441
- (v1Data) => ({
442
- ...v1Data,
443
- connections: v1Data.connections.map((conn) => ({
444
- ...conn,
445
- hibernatableRequestId: null
446
- })),
447
- hibernatableWebSockets: []
448
- })
449
- ],
450
- [
451
- 2,
452
- (v2Data) => {
453
- const scheduledEvents = v2Data.scheduledEvents.map((event) => {
454
- if (event.kind.tag === "GenericPersistedScheduleEvent") {
455
- return {
456
- eventId: event.eventId,
457
- timestamp: event.timestamp,
458
- action: event.kind.val.action,
459
- args: event.kind.val.args
460
- };
461
- }
462
- throw new Error(
463
- `Unknown schedule event kind: ${event.kind.tag}`
464
- );
465
- });
466
- return {
467
- input: v2Data.input,
468
- hasInitialized: v2Data.hasInitialized,
469
- state: v2Data.state,
470
- scheduledEvents
471
- };
472
- }
473
- ]
474
- ]);
475
- var ACTOR_VERSIONED = createVersionedDataHandler({
476
- currentVersion: CURRENT_VERSION,
477
- migrations,
478
- serializeVersion: (data) => encodeActor(data),
479
- deserializeVersion: (bytes) => decodeActor(bytes)
480
- });
481
- var CONN_VERSIONED = createVersionedDataHandler({
482
- currentVersion: CURRENT_VERSION,
483
- migrations: /* @__PURE__ */ new Map(),
484
- serializeVersion: (data) => encodeConn(data),
485
- deserializeVersion: (bytes) => decodeConn(bytes)
486
- });
487
-
488
- // src/driver-helpers/utils.ts
489
- function serializeEmptyPersistData(input) {
490
- const persistData = {
491
- input: input !== void 0 ? bufferToArrayBuffer(cbor.encode(input)) : null,
492
- hasInitialized: false,
493
- state: bufferToArrayBuffer(cbor.encode(void 0)),
494
- scheduledEvents: []
495
- };
496
- return ACTOR_VERSIONED.serializeWithEmbeddedVersion(persistData);
497
- }
498
- function getInitialActorKvState(input) {
499
- const persistData = serializeEmptyPersistData(input);
500
- return [[KEYS.PERSIST_DATA, persistData]];
501
- }
502
-
503
- export {
504
- createVersionedDataHandler,
505
- ACTOR_VERSIONED,
506
- CONN_VERSIONED,
507
- KEYS,
508
- makeConnKey,
509
- ClientConfigSchema,
510
- DriverConfigSchema,
511
- RunnerConfigSchema,
512
- getInitialActorKvState
513
- };
514
- //# sourceMappingURL=chunk-5YDKTW6Y.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/registry/run-config.ts","../../src/drivers/engine/config.ts","../../src/client/config.ts","../../src/inspector/config.ts","../../src/driver-helpers/utils.ts","../../src/actor/instance/kv.ts","../../src/common/versioned-data.ts","../schemas/actor-persist/v3.ts","../../src/schemas/actor-persist/versioned.ts"],"sourcesContent":["import type { Logger } from \"pino\";\nimport { z } from \"zod\";\nimport type { ActorDriverBuilder } from \"@/actor/driver\";\nimport { LogLevelSchema } from \"@/common/log\";\nimport { EngingConfigSchema as EngineConfigSchema } from \"@/drivers/engine/config\";\nimport { InspectorConfigSchema } from \"@/inspector/config\";\nimport type { ManagerDriverBuilder } from \"@/manager/driver\";\nimport type { GetUpgradeWebSocket } from \"@/utils\";\nimport { getEnvUniversal, VERSION } from \"@/utils\";\n\nexport const DriverConfigSchema = z.object({\n\t/** Machine-readable name to identify this driver by. */\n\tname: z.string(),\n\tmanager: z.custom<ManagerDriverBuilder>(),\n\tactor: z.custom<ActorDriverBuilder>(),\n});\n\nexport type DriverConfig = z.infer<typeof DriverConfigSchema>;\n\n/** Base config used for the actor config across all platforms. */\nexport const RunnerConfigSchema = z\n\t.object({\n\t\tdriver: DriverConfigSchema.optional(),\n\n\t\t/** @experimental */\n\t\tmaxIncomingMessageSize: z.number().optional().default(65_536),\n\n\t\t/** @experimental */\n\t\tinspector: InspectorConfigSchema,\n\n\t\t/** @experimental */\n\t\tdisableDefaultServer: z.boolean().optional().default(false),\n\n\t\t/** @experimental */\n\t\tdefaultServerPort: z.number().default(6420),\n\n\t\t/** @experimental */\n\t\trunEngine: z\n\t\t\t.boolean()\n\t\t\t.optional()\n\t\t\t.default(() => getEnvUniversal(\"RIVET_RUN_ENGINE\") === \"1\"),\n\n\t\t/** @experimental */\n\t\trunEngineVersion: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.default(\n\t\t\t\t() => getEnvUniversal(\"RIVET_RUN_ENGINE_VERSION\") ?? VERSION,\n\t\t\t),\n\n\t\t/** @experimental */\n\t\toverrideServerAddress: z.string().optional(),\n\n\t\t/** @experimental */\n\t\tdisableActorDriver: z.boolean().optional().default(false),\n\n\t\t/**\n\t\t * @experimental\n\t\t *\n\t\t * Whether to run runners normally or have them managed\n\t\t * serverlessly (by the Rivet Engine for example).\n\t\t */\n\t\trunnerKind: z\n\t\t\t.enum([\"serverless\", \"normal\"])\n\t\t\t.optional()\n\t\t\t.default(() =>\n\t\t\t\tgetEnvUniversal(\"RIVET_RUNNER_KIND\") === \"serverless\"\n\t\t\t\t\t? \"serverless\"\n\t\t\t\t\t: \"normal\",\n\t\t\t),\n\t\ttotalSlots: z.number().optional(),\n\n\t\t/**\n\t\t * @experimental\n\t\t *\n\t\t * Base path for the router. This is used to prefix all routes.\n\t\t * For example, if the base path is `/api`, then the route `/actors` will be\n\t\t * available at `/api/actors`.\n\t\t */\n\t\tbasePath: z.string().optional().default(\"/\"),\n\n\t\t/**\n\t\t * @experimental\n\t\t *\n\t\t * Disable welcome message.\n\t\t * */\n\t\tnoWelcome: z.boolean().optional().default(false),\n\n\t\t/**\n\t\t * @experimental\n\t\t * */\n\t\tlogging: z\n\t\t\t.object({\n\t\t\t\tbaseLogger: z.custom<Logger>().optional(),\n\t\t\t\tlevel: LogLevelSchema.optional(),\n\t\t\t})\n\t\t\t.optional()\n\t\t\t.default({}),\n\n\t\t/**\n\t\t * @experimental\n\t\t *\n\t\t * Automatically configure serverless runners in the engine.\n\t\t * Can only be used when runnerKind is \"serverless\".\n\t\t * If true, uses default configuration. Can also provide custom configuration.\n\t\t */\n\t\tautoConfigureServerless: z\n\t\t\t.union([\n\t\t\t\tz.boolean(),\n\t\t\t\tz.object({\n\t\t\t\t\turl: z.string().optional(),\n\t\t\t\t\theaders: z.record(z.string(), z.string()).optional(),\n\t\t\t\t\tmaxRunners: z.number().optional(),\n\t\t\t\t\tminRunners: z.number().optional(),\n\t\t\t\t\trequestLifespan: z.number().optional(),\n\t\t\t\t\trunnersMargin: z.number().optional(),\n\t\t\t\t\tslotsPerRunner: z.number().optional(),\n\t\t\t\t\tmetadata: z.record(z.unknown()).optional(),\n\t\t\t\t}),\n\t\t\t])\n\t\t\t.optional(),\n\n\t\t// This is a function to allow for lazy configuration of upgradeWebSocket on the\n\t\t// fly. This is required since the dependencies that upgradeWebSocket\n\t\t// (specifically Node.js) can sometimes only be specified after the router is\n\t\t// created or must be imported async using `await import(...)`\n\t\tgetUpgradeWebSocket: z.custom<GetUpgradeWebSocket>().optional(),\n\t})\n\t.merge(EngineConfigSchema.removeDefault())\n\t.default({});\n\nexport type RunnerConfig = z.infer<typeof RunnerConfigSchema>;\nexport type RunnerConfigInput = z.input<typeof RunnerConfigSchema>;\n","import { z } from \"zod\";\nimport { ClientConfigSchema } from \"@/client/config\";\nimport { getEnvUniversal } from \"@/utils\";\n\nexport const EngingConfigSchema = z\n\t.object({\n\t\t/** Unique key for this runner. Runners connecting a given key will replace any other runner connected with the same key. */\n\t\trunnerKey: z\n\t\t\t.string()\n\t\t\t.optional()\n\t\t\t.transform((x) => x ?? getEnvUniversal(\"RIVET_RUNNER_KEY\")),\n\n\t\t/** How many actors this runner can run. */\n\t\ttotalSlots: z.number().default(100_000),\n\t})\n\t// We include the client config since this includes the common properties like endpoint, namespace, etc.\n\t.merge(ClientConfigSchema)\n\t.default({});\n\nexport type EngineConfig = z.infer<typeof EngingConfigSchema>;\nexport type EngineConfigInput = z.input<typeof EngingConfigSchema>;\n","import z from \"zod\";\nimport { EncodingSchema } from \"@/actor/protocol/serde\";\nimport { type GetUpgradeWebSocket, getEnvUniversal } from \"@/utils\";\n\nexport const ClientConfigSchema = z.object({\n\t/** Endpoint to connect to for Rivet Engine or RivetKit manager API. */\n\tendpoint: z\n\t\t.string()\n\t\t.optional()\n\t\t.transform(\n\t\t\t(x) =>\n\t\t\t\tx ??\n\t\t\t\tgetEnvUniversal(\"RIVET_ENGINE\") ??\n\t\t\t\tgetEnvUniversal(\"RIVET_ENDPOINT\"),\n\t\t),\n\n\t/** Token to use to authenticate with the API. */\n\ttoken: z\n\t\t.string()\n\t\t.optional()\n\t\t.transform((x) => x ?? getEnvUniversal(\"RIVET_TOKEN\")),\n\n\t/** Namespace to connect to. */\n\tnamespace: z\n\t\t.string()\n\t\t.default(() => getEnvUniversal(\"RIVET_NAMESPACE\") ?? \"default\"),\n\n\t/** Name of the runner. This is used to group together runners in to different pools. */\n\trunnerName: z\n\t\t.string()\n\t\t.default(() => getEnvUniversal(\"RIVET_RUNNER\") ?? \"default\"),\n\n\tencoding: EncodingSchema.default(\"bare\"),\n\n\theaders: z.record(z.string()).optional().default({}),\n\n\t// See RunConfig.getUpgradeWebSocket\n\tgetUpgradeWebSocket: z.custom<GetUpgradeWebSocket>().optional(),\n\n\t/** Whether to automatically perform health checks when the client is created. */\n\tdisableMetadataLookup: z.boolean().optional().default(false),\n});\n\nexport type ClientConfig = z.infer<typeof ClientConfigSchema>;\n\nexport type ClientConfigInput = z.input<typeof ClientConfigSchema>;\n","import { z } from \"zod\";\nimport { getEnvUniversal } from \"@/utils\";\n\nconst defaultTokenFn = () => {\n\tconst envToken = getEnvUniversal(\"RIVETKIT_INSPECTOR_TOKEN\");\n\n\tif (envToken) {\n\t\treturn envToken;\n\t}\n\n\treturn \"\";\n};\n\nconst defaultEnabled = () => {\n\treturn (\n\t\tgetEnvUniversal(\"NODE_ENV\") !== \"production\" ||\n\t\t!getEnvUniversal(\"RIVETKIT_INSPECTOR_DISABLE\")\n\t);\n};\n\nexport const InspectorConfigSchema = z\n\t.object({\n\t\tenabled: z\n\t\t\t.boolean()\n\t\t\t.or(\n\t\t\t\tz.object({\n\t\t\t\t\tactor: z.boolean().optional().default(true),\n\t\t\t\t\tmanager: z.boolean().optional().default(true),\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.optional()\n\t\t\t.default(defaultEnabled),\n\n\t\t/**\n\t\t * Token used to access the Inspector.\n\t\t */\n\t\ttoken: z\n\t\t\t.function()\n\t\t\t.returns(z.string())\n\t\t\t.optional()\n\t\t\t.default(() => defaultTokenFn),\n\n\t\t/**\n\t\t * Default RivetKit server endpoint for Rivet Inspector to connect to. This should be the same endpoint as what you use for your Rivet client to connect to RivetKit.\n\t\t *\n\t\t * This is a convenience property just for printing out the inspector URL.\n\t\t */\n\t\tdefaultEndpoint: z.string().optional(),\n\t})\n\t.optional()\n\t.default(() => ({\n\t\tenabled: defaultEnabled(),\n\t\ttoken: defaultTokenFn,\n\t}));\nexport type InspectorConfig = z.infer<typeof InspectorConfigSchema>;\n","import * as cbor from \"cbor-x\";\nimport { KEYS } from \"@/actor/instance/kv\";\nimport type * as persistSchema from \"@/schemas/actor-persist/mod\";\nimport { ACTOR_VERSIONED } from \"@/schemas/actor-persist/versioned\";\nimport { bufferToArrayBuffer } from \"@/utils\";\nimport type { ActorDriver } from \"./mod\";\n\nfunction serializeEmptyPersistData(input: unknown | undefined): Uint8Array {\n\tconst persistData: persistSchema.Actor = {\n\t\tinput:\n\t\t\tinput !== undefined\n\t\t\t\t? bufferToArrayBuffer(cbor.encode(input))\n\t\t\t\t: null,\n\t\thasInitialized: false,\n\t\tstate: bufferToArrayBuffer(cbor.encode(undefined)),\n\t\tscheduledEvents: [],\n\t};\n\treturn ACTOR_VERSIONED.serializeWithEmbeddedVersion(persistData);\n}\n\n/**\n * Returns the initial KV state for a new actor. This is ued by the drivers to\n * write the initial state in to KV storage before starting the actor.\n */\nexport function getInitialActorKvState(\n\tinput: unknown | undefined,\n): [Uint8Array, Uint8Array][] {\n\tconst persistData = serializeEmptyPersistData(input);\n\treturn [[KEYS.PERSIST_DATA, persistData]];\n}\n","export const KEYS = {\n\tPERSIST_DATA: Uint8Array.from([1]),\n\tCONN_PREFIX: Uint8Array.from([2]), // Prefix for connection keys\n\tINSPECTOR_TOKEN: Uint8Array.from([3]), // Inspector token key\n};\n\n// Helper to create a connection key\nexport function makeConnKey(connId: string): Uint8Array {\n\tconst encoder = new TextEncoder();\n\tconst connIdBytes = encoder.encode(connId);\n\tconst key = new Uint8Array(KEYS.CONN_PREFIX.length + connIdBytes.length);\n\tkey.set(KEYS.CONN_PREFIX, 0);\n\tkey.set(connIdBytes, KEYS.CONN_PREFIX.length);\n\treturn key;\n}\n","export interface VersionedData<T> {\n\tversion: number;\n\tdata: T;\n}\n\nexport type MigrationFn<TFrom, TTo> = (data: TFrom) => TTo;\n\nexport interface VersionedDataConfig<T> {\n\tcurrentVersion: number;\n\tmigrations: Map<number, MigrationFn<any, any>>;\n\tserializeVersion: (data: T) => Uint8Array;\n\tdeserializeVersion: (bytes: Uint8Array) => T;\n}\n\nexport class VersionedDataHandler<T> {\n\tconstructor(private config: VersionedDataConfig<T>) {}\n\n\tserializeWithEmbeddedVersion(data: T): Uint8Array {\n\t\tconst versioned: VersionedData<Uint8Array> = {\n\t\t\tversion: this.config.currentVersion,\n\t\t\tdata: this.config.serializeVersion(data),\n\t\t};\n\n\t\treturn this.embedVersion(versioned);\n\t}\n\n\tdeserializeWithEmbeddedVersion(bytes: Uint8Array): T {\n\t\tconst versioned = this.extractVersion(bytes);\n\t\treturn this.deserialize(versioned.data, versioned.version);\n\t}\n\n\tserialize(data: T, version: number): Uint8Array {\n\t\treturn this.config.serializeVersion(data);\n\t}\n\n\tdeserialize(bytes: Uint8Array, version: number): T {\n\t\tif (version === this.config.currentVersion) {\n\t\t\treturn this.config.deserializeVersion(bytes);\n\t\t}\n\n\t\tif (version > this.config.currentVersion) {\n\t\t\tthrow new Error(\n\t\t\t\t`Cannot decode data from version ${version}, current version is ${this.config.currentVersion}`,\n\t\t\t);\n\t\t}\n\n\t\tlet currentData: any = this.config.deserializeVersion(bytes);\n\t\tlet currentVersion = version;\n\n\t\twhile (currentVersion < this.config.currentVersion) {\n\t\t\tconst migration = this.config.migrations.get(currentVersion);\n\t\t\tif (!migration) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`No migration found from version ${currentVersion} to ${currentVersion + 1}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tcurrentData = migration(currentData);\n\t\t\tcurrentVersion++;\n\t\t}\n\n\t\treturn currentData;\n\t}\n\n\tprivate embedVersion(data: VersionedData<Uint8Array>): Uint8Array {\n\t\tconst versionBytes = new Uint8Array(2);\n\t\tnew DataView(versionBytes.buffer).setUint16(0, data.version, true);\n\n\t\tconst result = new Uint8Array(versionBytes.length + data.data.length);\n\t\tresult.set(versionBytes);\n\t\tresult.set(data.data, versionBytes.length);\n\n\t\treturn result;\n\t}\n\n\tprivate extractVersion(bytes: Uint8Array): VersionedData<Uint8Array> {\n\t\tif (bytes.length < 2) {\n\t\t\tthrow new Error(\"Invalid versioned data: too short\");\n\t\t}\n\n\t\tconst version = new DataView(bytes.buffer, bytes.byteOffset).getUint16(\n\t\t\t0,\n\t\t\ttrue,\n\t\t);\n\t\tconst data = bytes.slice(2);\n\n\t\treturn { version, data };\n\t}\n}\n\nexport function createVersionedDataHandler<T>(\n\tconfig: VersionedDataConfig<T>,\n): VersionedDataHandler<T> {\n\treturn new VersionedDataHandler(config);\n}\n","\nimport * as bare from \"@bare-ts/lib\"\n\nconst config = /* @__PURE__ */ bare.Config({})\n\nexport type i64 = bigint\nexport type u16 = number\n\nexport type GatewayId = ArrayBuffer\n\nexport function readGatewayId(bc: bare.ByteCursor): GatewayId {\n return bare.readFixedData(bc, 4)\n}\n\nexport function writeGatewayId(bc: bare.ByteCursor, x: GatewayId): void {\n assert(x.byteLength === 4)\n bare.writeFixedData(bc, x)\n}\n\nexport type RequestId = ArrayBuffer\n\nexport function readRequestId(bc: bare.ByteCursor): RequestId {\n return bare.readFixedData(bc, 4)\n}\n\nexport function writeRequestId(bc: bare.ByteCursor, x: RequestId): void {\n assert(x.byteLength === 4)\n bare.writeFixedData(bc, x)\n}\n\nexport type MessageIndex = u16\n\nexport function readMessageIndex(bc: bare.ByteCursor): MessageIndex {\n return bare.readU16(bc)\n}\n\nexport function writeMessageIndex(bc: bare.ByteCursor, x: MessageIndex): void {\n bare.writeU16(bc, x)\n}\n\nexport function encodeMessageIndex(x: MessageIndex): Uint8Array {\n const bc = new bare.ByteCursor(\n new Uint8Array(config.initialBufferLength),\n config\n )\n writeMessageIndex(bc, x)\n return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset)\n}\n\nexport function decodeMessageIndex(bytes: Uint8Array): MessageIndex {\n const bc = new bare.ByteCursor(bytes, config)\n const result = readMessageIndex(bc)\n if (bc.offset < bc.view.byteLength) {\n throw new bare.BareError(bc.offset, \"remaining bytes\")\n }\n return result\n}\n\nexport type Cbor = ArrayBuffer\n\nexport function readCbor(bc: bare.ByteCursor): Cbor {\n return bare.readData(bc)\n}\n\nexport function writeCbor(bc: bare.ByteCursor, x: Cbor): void {\n bare.writeData(bc, x)\n}\n\nexport type Subscription = {\n readonly eventName: string,\n}\n\nexport function readSubscription(bc: bare.ByteCursor): Subscription {\n return {\n eventName: bare.readString(bc),\n }\n}\n\nexport function writeSubscription(bc: bare.ByteCursor, x: Subscription): void {\n bare.writeString(bc, x.eventName)\n}\n\nfunction read0(bc: bare.ByteCursor): readonly Subscription[] {\n const len = bare.readUintSafe(bc)\n if (len === 0) { return [] }\n const result = [readSubscription(bc)]\n for (let i = 1; i < len; i++) {\n result[i] = readSubscription(bc)\n }\n return result\n}\n\nfunction write0(bc: bare.ByteCursor, x: readonly Subscription[]): void {\n bare.writeUintSafe(bc, x.length)\n for (let i = 0; i < x.length; i++) {\n writeSubscription(bc, x[i])\n }\n}\n\nfunction read1(bc: bare.ByteCursor): ReadonlyMap<string, string> {\n const len = bare.readUintSafe(bc)\n const result = new Map<string, string>()\n for (let i = 0; i < len; i++) {\n const offset = bc.offset\n const key = bare.readString(bc)\n if (result.has(key)) {\n bc.offset = offset\n throw new bare.BareError(offset, \"duplicated key\")\n }\n result.set(key, bare.readString(bc))\n }\n return result\n}\n\nfunction write1(bc: bare.ByteCursor, x: ReadonlyMap<string, string>): void {\n bare.writeUintSafe(bc, x.size)\n for(const kv of x) {\n bare.writeString(bc, kv[0])\n bare.writeString(bc, kv[1])\n }\n}\n\nexport type Conn = {\n readonly id: string,\n readonly parameters: Cbor,\n readonly state: Cbor,\n readonly subscriptions: readonly Subscription[],\n readonly gatewayId: GatewayId,\n readonly requestId: RequestId,\n readonly serverMessageIndex: u16,\n readonly clientMessageIndex: u16,\n readonly requestPath: string,\n readonly requestHeaders: ReadonlyMap<string, string>,\n}\n\nexport function readConn(bc: bare.ByteCursor): Conn {\n return {\n id: bare.readString(bc),\n parameters: readCbor(bc),\n state: readCbor(bc),\n subscriptions: read0(bc),\n gatewayId: readGatewayId(bc),\n requestId: readRequestId(bc),\n serverMessageIndex: bare.readU16(bc),\n clientMessageIndex: bare.readU16(bc),\n requestPath: bare.readString(bc),\n requestHeaders: read1(bc),\n }\n}\n\nexport function writeConn(bc: bare.ByteCursor, x: Conn): void {\n bare.writeString(bc, x.id)\n writeCbor(bc, x.parameters)\n writeCbor(bc, x.state)\n write0(bc, x.subscriptions)\n writeGatewayId(bc, x.gatewayId)\n writeRequestId(bc, x.requestId)\n bare.writeU16(bc, x.serverMessageIndex)\n bare.writeU16(bc, x.clientMessageIndex)\n bare.writeString(bc, x.requestPath)\n write1(bc, x.requestHeaders)\n}\n\nexport function encodeConn(x: Conn): Uint8Array {\n const bc = new bare.ByteCursor(\n new Uint8Array(config.initialBufferLength),\n config\n )\n writeConn(bc, x)\n return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset)\n}\n\nexport function decodeConn(bytes: Uint8Array): Conn {\n const bc = new bare.ByteCursor(bytes, config)\n const result = readConn(bc)\n if (bc.offset < bc.view.byteLength) {\n throw new bare.BareError(bc.offset, \"remaining bytes\")\n }\n return result\n}\n\nfunction read2(bc: bare.ByteCursor): Cbor | null {\n return bare.readBool(bc)\n ? readCbor(bc)\n : null\n}\n\nfunction write2(bc: bare.ByteCursor, x: Cbor | null): void {\n bare.writeBool(bc, x !== null)\n if (x !== null) {\n writeCbor(bc, x)\n }\n}\n\nexport type ScheduleEvent = {\n readonly eventId: string,\n readonly timestamp: i64,\n readonly action: string,\n readonly args: Cbor | null,\n}\n\nexport function readScheduleEvent(bc: bare.ByteCursor): ScheduleEvent {\n return {\n eventId: bare.readString(bc),\n timestamp: bare.readI64(bc),\n action: bare.readString(bc),\n args: read2(bc),\n }\n}\n\nexport function writeScheduleEvent(bc: bare.ByteCursor, x: ScheduleEvent): void {\n bare.writeString(bc, x.eventId)\n bare.writeI64(bc, x.timestamp)\n bare.writeString(bc, x.action)\n write2(bc, x.args)\n}\n\nfunction read3(bc: bare.ByteCursor): readonly ScheduleEvent[] {\n const len = bare.readUintSafe(bc)\n if (len === 0) { return [] }\n const result = [readScheduleEvent(bc)]\n for (let i = 1; i < len; i++) {\n result[i] = readScheduleEvent(bc)\n }\n return result\n}\n\nfunction write3(bc: bare.ByteCursor, x: readonly ScheduleEvent[]): void {\n bare.writeUintSafe(bc, x.length)\n for (let i = 0; i < x.length; i++) {\n writeScheduleEvent(bc, x[i])\n }\n}\n\nexport type Actor = {\n readonly input: Cbor | null,\n readonly hasInitialized: boolean,\n readonly state: Cbor,\n readonly scheduledEvents: readonly ScheduleEvent[],\n}\n\nexport function readActor(bc: bare.ByteCursor): Actor {\n return {\n input: read2(bc),\n hasInitialized: bare.readBool(bc),\n state: readCbor(bc),\n scheduledEvents: read3(bc),\n }\n}\n\nexport function writeActor(bc: bare.ByteCursor, x: Actor): void {\n write2(bc, x.input)\n bare.writeBool(bc, x.hasInitialized)\n writeCbor(bc, x.state)\n write3(bc, x.scheduledEvents)\n}\n\nexport function encodeActor(x: Actor): Uint8Array {\n const bc = new bare.ByteCursor(\n new Uint8Array(config.initialBufferLength),\n config\n )\n writeActor(bc, x)\n return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset)\n}\n\nexport function decodeActor(bytes: Uint8Array): Actor {\n const bc = new bare.ByteCursor(bytes, config)\n const result = readActor(bc)\n if (bc.offset < bc.view.byteLength) {\n throw new bare.BareError(bc.offset, \"remaining bytes\")\n }\n return result\n}\n\n\nfunction assert(condition: boolean, message?: string): asserts condition {\n if (!condition) throw new Error(message ?? \"Assertion failed\")\n}\n\n","import {\n\tcreateVersionedDataHandler,\n\ttype MigrationFn,\n} from \"@/common/versioned-data\";\nimport type * as v1 from \"../../../dist/schemas/actor-persist/v1\";\nimport type * as v2 from \"../../../dist/schemas/actor-persist/v2\";\nimport * as v3 from \"../../../dist/schemas/actor-persist/v3\";\n\nexport const CURRENT_VERSION = 3;\n\nconst migrations = new Map<number, MigrationFn<any, any>>([\n\t[\n\t\t1,\n\t\t(v1Data: v1.PersistedActor): v2.PersistedActor => ({\n\t\t\t...v1Data,\n\t\t\tconnections: v1Data.connections.map((conn) => ({\n\t\t\t\t...conn,\n\t\t\t\thibernatableRequestId: null,\n\t\t\t})),\n\t\t\thibernatableWebSockets: [],\n\t\t}),\n\t],\n\t[\n\t\t2,\n\t\t(v2Data: v2.PersistedActor): v3.Actor => {\n\t\t\t// Transform scheduled events from nested structure to flat structure\n\t\t\tconst scheduledEvents: v3.ScheduleEvent[] =\n\t\t\t\tv2Data.scheduledEvents.map((event) => {\n\t\t\t\t\t// Extract action and args from the kind wrapper\n\t\t\t\t\tif (event.kind.tag === \"GenericPersistedScheduleEvent\") {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\teventId: event.eventId,\n\t\t\t\t\t\t\ttimestamp: event.timestamp,\n\t\t\t\t\t\t\taction: event.kind.val.action,\n\t\t\t\t\t\t\targs: event.kind.val.args,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\t// Fallback for unknown kinds\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Unknown schedule event kind: ${event.kind.tag}`,\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tinput: v2Data.input,\n\t\t\t\thasInitialized: v2Data.hasInitialized,\n\t\t\t\tstate: v2Data.state,\n\t\t\t\tscheduledEvents,\n\t\t\t};\n\t\t},\n\t],\n]);\n\nexport const ACTOR_VERSIONED = createVersionedDataHandler<v3.Actor>({\n\tcurrentVersion: CURRENT_VERSION,\n\tmigrations,\n\tserializeVersion: (data) => v3.encodeActor(data),\n\tdeserializeVersion: (bytes) => v3.decodeActor(bytes),\n});\n\nexport const CONN_VERSIONED = createVersionedDataHandler<v3.Conn>({\n\tcurrentVersion: CURRENT_VERSION,\n\tmigrations: new Map(),\n\tserializeVersion: (data) => v3.encodeConn(data),\n\tdeserializeVersion: (bytes) => v3.decodeConn(bytes),\n});\n"],"mappings":"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","names":["z","z","z","z","z","z","config"]}