rivetkit 2.0.30 → 2.0.32

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 (131) hide show
  1. package/dist/schemas/actor-persist/v1.ts +2 -2
  2. package/dist/schemas/actor-persist/v2.ts +2 -2
  3. package/dist/schemas/actor-persist/v3.ts +2 -2
  4. package/dist/schemas/client-protocol/v1.ts +2 -2
  5. package/dist/schemas/client-protocol/v2.ts +2 -2
  6. package/dist/schemas/file-system-driver/v1.ts +2 -2
  7. package/dist/schemas/file-system-driver/v2.ts +2 -2
  8. package/dist/schemas/file-system-driver/v3.ts +2 -2
  9. package/dist/tsup/actor/errors.cjs +4 -2
  10. package/dist/tsup/actor/errors.cjs.map +1 -1
  11. package/dist/tsup/actor/errors.d.cts +5 -2
  12. package/dist/tsup/actor/errors.d.ts +5 -2
  13. package/dist/tsup/actor/errors.js +5 -3
  14. package/dist/tsup/{chunk-46DWBVYE.cjs → chunk-24MVWG2B.cjs} +15 -15
  15. package/dist/tsup/{chunk-46DWBVYE.cjs.map → chunk-24MVWG2B.cjs.map} +1 -1
  16. package/dist/tsup/{chunk-DGSYEC34.js → chunk-2E6QYC2Y.js} +18 -18
  17. package/dist/tsup/chunk-2E6QYC2Y.js.map +1 -0
  18. package/dist/tsup/{chunk-23EJLAOV.cjs → chunk-3YT2J462.cjs} +8 -8
  19. package/dist/tsup/{chunk-23EJLAOV.cjs.map → chunk-3YT2J462.cjs.map} +1 -1
  20. package/dist/tsup/{chunk-GOC4GSPT.js → chunk-46RC64TZ.js} +119 -32
  21. package/dist/tsup/chunk-46RC64TZ.js.map +1 -0
  22. package/dist/tsup/{chunk-REMOXAIW.cjs → chunk-4WDHG57J.cjs} +21 -10
  23. package/dist/tsup/chunk-4WDHG57J.cjs.map +1 -0
  24. package/dist/tsup/{chunk-YBOQOQZB.js → chunk-5MD6ZIUI.js} +172 -115
  25. package/dist/tsup/chunk-5MD6ZIUI.js.map +1 -0
  26. package/dist/tsup/{chunk-ZUJRXXQC.cjs → chunk-GDXRMMOY.cjs} +372 -315
  27. package/dist/tsup/chunk-GDXRMMOY.cjs.map +1 -0
  28. package/dist/tsup/{chunk-MAQSR26X.cjs → chunk-I2OKFOBV.cjs} +16 -5
  29. package/dist/tsup/chunk-I2OKFOBV.cjs.map +1 -0
  30. package/dist/tsup/{chunk-3WG6PXWE.cjs → chunk-JFUFZNBY.cjs} +3 -3
  31. package/dist/tsup/{chunk-3WG6PXWE.cjs.map → chunk-JFUFZNBY.cjs.map} +1 -1
  32. package/dist/tsup/{chunk-DI7LJEYL.cjs → chunk-JXZMBI2W.cjs} +6 -6
  33. package/dist/tsup/{chunk-DI7LJEYL.cjs.map → chunk-JXZMBI2W.cjs.map} +1 -1
  34. package/dist/tsup/{chunk-VROCBPWT.cjs → chunk-KCP36F62.cjs} +10 -10
  35. package/dist/tsup/{chunk-VROCBPWT.cjs.map → chunk-KCP36F62.cjs.map} +1 -1
  36. package/dist/tsup/{chunk-Z33UBLLH.js → chunk-KSKIKS4Q.js} +9 -9
  37. package/dist/tsup/{chunk-Z33UBLLH.js.map → chunk-KSKIKS4Q.js.map} +1 -1
  38. package/dist/tsup/{chunk-NYQJHQHK.cjs → chunk-MJX33BZM.cjs} +283 -196
  39. package/dist/tsup/chunk-MJX33BZM.cjs.map +1 -0
  40. package/dist/tsup/{chunk-FVSTM7QK.cjs → chunk-MR3O2TFJ.cjs} +3 -3
  41. package/dist/tsup/{chunk-FVSTM7QK.cjs.map → chunk-MR3O2TFJ.cjs.map} +1 -1
  42. package/dist/tsup/{chunk-EOXUA7SX.js → chunk-OKZQC52X.js} +2 -2
  43. package/dist/tsup/{chunk-K2UD42XA.js → chunk-QCVN5ZWE.js} +2 -2
  44. package/dist/tsup/{chunk-DQH5K5TL.js → chunk-RQEUDCBR.js} +3 -3
  45. package/dist/tsup/{chunk-DQH5K5TL.js.map → chunk-RQEUDCBR.js.map} +1 -1
  46. package/dist/tsup/{chunk-HPIRVETT.js → chunk-RSSAT5PN.js} +3 -3
  47. package/dist/tsup/{chunk-HPIRVETT.js.map → chunk-RSSAT5PN.js.map} +1 -1
  48. package/dist/tsup/{chunk-F4CRQFYG.cjs → chunk-TEDQEGUV.cjs} +30 -30
  49. package/dist/tsup/chunk-TEDQEGUV.cjs.map +1 -0
  50. package/dist/tsup/{chunk-OI6FEIRD.js → chunk-TK7XXGVD.js} +15 -4
  51. package/dist/tsup/chunk-TK7XXGVD.js.map +1 -0
  52. package/dist/tsup/{chunk-SLAUR4QB.js → chunk-UMVOVPLU.js} +2 -2
  53. package/dist/tsup/{chunk-P2RZJPYI.js → chunk-V35I3JSW.js} +16 -5
  54. package/dist/tsup/chunk-V35I3JSW.js.map +1 -0
  55. package/dist/tsup/client/mod.cjs +11 -9
  56. package/dist/tsup/client/mod.cjs.map +1 -1
  57. package/dist/tsup/client/mod.d.cts +2 -2
  58. package/dist/tsup/client/mod.d.ts +2 -2
  59. package/dist/tsup/client/mod.js +10 -8
  60. package/dist/tsup/common/log.cjs +3 -3
  61. package/dist/tsup/common/log.js +2 -2
  62. package/dist/tsup/common/websocket.cjs +4 -4
  63. package/dist/tsup/common/websocket.js +3 -3
  64. package/dist/tsup/{config-Dj5nTCrh.d.cts → config-D6nMVDna.d.cts} +36 -1
  65. package/dist/tsup/{config-Cs3B9xN9.d.ts → config-DN0AurPi.d.ts} +36 -1
  66. package/dist/tsup/driver-helpers/mod.cjs +5 -5
  67. package/dist/tsup/driver-helpers/mod.d.cts +1 -1
  68. package/dist/tsup/driver-helpers/mod.d.ts +1 -1
  69. package/dist/tsup/driver-helpers/mod.js +4 -4
  70. package/dist/tsup/driver-test-suite/mod.cjs +172 -74
  71. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  72. package/dist/tsup/driver-test-suite/mod.d.cts +1 -1
  73. package/dist/tsup/driver-test-suite/mod.d.ts +1 -1
  74. package/dist/tsup/driver-test-suite/mod.js +113 -15
  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 +2 -2
  78. package/dist/tsup/inspector/mod.d.ts +2 -2
  79. package/dist/tsup/inspector/mod.js +5 -5
  80. package/dist/tsup/mod.cjs +10 -10
  81. package/dist/tsup/mod.cjs.map +1 -1
  82. package/dist/tsup/mod.d.cts +2 -2
  83. package/dist/tsup/mod.d.ts +2 -2
  84. package/dist/tsup/mod.js +9 -9
  85. package/dist/tsup/test/mod.cjs +12 -12
  86. package/dist/tsup/test/mod.d.cts +1 -1
  87. package/dist/tsup/test/mod.d.ts +1 -1
  88. package/dist/tsup/test/mod.js +11 -11
  89. package/dist/tsup/utils.cjs +5 -3
  90. package/dist/tsup/utils.cjs.map +1 -1
  91. package/dist/tsup/utils.d.cts +3 -1
  92. package/dist/tsup/utils.d.ts +3 -1
  93. package/dist/tsup/utils.js +4 -2
  94. package/package.json +3 -3
  95. package/src/actor/config.ts +3 -2
  96. package/src/actor/conn/drivers/websocket.ts +15 -0
  97. package/src/actor/errors.ts +14 -3
  98. package/src/actor/instance/event-manager.ts +7 -0
  99. package/src/actor/instance/state-manager.ts +1 -1
  100. package/src/actor/protocol/old.ts +1 -1
  101. package/src/actor/protocol/serde.ts +1 -1
  102. package/src/actor/router-endpoints.ts +13 -1
  103. package/src/actor/router-websocket-endpoints.ts +5 -0
  104. package/src/client/actor-conn.ts +196 -133
  105. package/src/client/config.ts +4 -1
  106. package/src/client/mod.ts +3 -1
  107. package/src/client/utils.ts +1 -1
  108. package/src/driver-test-suite/tests/action-features.ts +63 -0
  109. package/src/driver-test-suite/tests/actor-conn.ts +91 -0
  110. package/src/drivers/file-system/global-state.ts +4 -5
  111. package/src/drivers/file-system/manager.ts +12 -4
  112. package/src/engine-process/mod.ts +16 -10
  113. package/src/registry/run-config.ts +3 -0
  114. package/src/registry/serve.ts +96 -7
  115. package/src/schemas/actor-persist/versioned.ts +3 -4
  116. package/src/serde.ts +1 -1
  117. package/src/test/mod.ts +1 -1
  118. package/src/utils.ts +14 -0
  119. package/dist/tsup/chunk-DGSYEC34.js.map +0 -1
  120. package/dist/tsup/chunk-F4CRQFYG.cjs.map +0 -1
  121. package/dist/tsup/chunk-GOC4GSPT.js.map +0 -1
  122. package/dist/tsup/chunk-MAQSR26X.cjs.map +0 -1
  123. package/dist/tsup/chunk-NYQJHQHK.cjs.map +0 -1
  124. package/dist/tsup/chunk-OI6FEIRD.js.map +0 -1
  125. package/dist/tsup/chunk-P2RZJPYI.js.map +0 -1
  126. package/dist/tsup/chunk-REMOXAIW.cjs.map +0 -1
  127. package/dist/tsup/chunk-YBOQOQZB.js.map +0 -1
  128. package/dist/tsup/chunk-ZUJRXXQC.cjs.map +0 -1
  129. /package/dist/tsup/{chunk-EOXUA7SX.js.map → chunk-OKZQC52X.js.map} +0 -0
  130. /package/dist/tsup/{chunk-K2UD42XA.js.map → chunk-QCVN5ZWE.js.map} +0 -0
  131. /package/dist/tsup/{chunk-SLAUR4QB.js.map → chunk-UMVOVPLU.js.map} +0 -0
@@ -501,5 +501,96 @@ export function runActorConnTests(driverTestConfig: DriverTestConfig) {
501
501
  expect(handler2Called).toBe(true);
502
502
  });
503
503
  });
504
+
505
+ describe("Large Payloads", () => {
506
+ test("should handle large request within size limit", async (c) => {
507
+ const { client } = await setupDriverTest(c, driverTestConfig);
508
+
509
+ const handle = client.largePayloadConnActor.getOrCreate([
510
+ "test-large-request",
511
+ ]);
512
+ const connection = handle.connect();
513
+
514
+ // Create a large payload that's under the default 64KB limit
515
+ // Each item is roughly 60 bytes, so 800 items ≈ 48KB
516
+ const items: string[] = [];
517
+ for (let i = 0; i < 800; i++) {
518
+ items.push(`Item ${i} with some additional text to increase size`);
519
+ }
520
+
521
+ const result = await connection.processLargeRequest({ items });
522
+
523
+ expect(result.itemCount).toBe(800);
524
+ expect(result.firstItem).toBe("Item 0 with some additional text to increase size");
525
+ expect(result.lastItem).toBe("Item 799 with some additional text to increase size");
526
+
527
+ // Verify connection state was updated
528
+ const lastRequestSize = await connection.getLastRequestSize();
529
+ expect(lastRequestSize).toBe(800);
530
+
531
+ // Clean up
532
+ await connection.dispose();
533
+ });
534
+
535
+ test("should reject request exceeding maxIncomingMessageSize", async (c) => {
536
+ const { client } = await setupDriverTest(c, driverTestConfig);
537
+
538
+ const handle = client.largePayloadConnActor.getOrCreate([
539
+ "test-large-request-exceed",
540
+ ]);
541
+ const connection = handle.connect();
542
+
543
+ // Create a payload that exceeds the default 64KB limit
544
+ // Each item is roughly 60 bytes, so 1500 items ≈ 90KB
545
+ const items: string[] = [];
546
+ for (let i = 0; i < 1500; i++) {
547
+ items.push(`Item ${i} with some additional text to increase size`);
548
+ }
549
+
550
+ await expect(
551
+ connection.processLargeRequest({ items })
552
+ ).rejects.toThrow();
553
+
554
+ // Clean up
555
+ await connection.dispose();
556
+ });
557
+
558
+ test("should handle large response", async (c) => {
559
+ const { client } = await setupDriverTest(c, driverTestConfig);
560
+
561
+ const handle = client.largePayloadConnActor.getOrCreate([
562
+ "test-large-response",
563
+ ]);
564
+ const connection = handle.connect();
565
+
566
+ // Request a large response (800 items ≈ 48KB)
567
+ const result = await connection.getLargeResponse(800);
568
+
569
+ expect(result.items).toHaveLength(800);
570
+ expect(result.items[0]).toBe("Item 0 with some additional text to increase size");
571
+ expect(result.items[799]).toBe("Item 799 with some additional text to increase size");
572
+
573
+ // Clean up
574
+ await connection.dispose();
575
+ });
576
+
577
+ test("should reject response exceeding maxOutgoingMessageSize", async (c) => {
578
+ const { client } = await setupDriverTest(c, driverTestConfig);
579
+
580
+ const handle = client.largePayloadConnActor.getOrCreate([
581
+ "test-large-response-exceed",
582
+ ]);
583
+ const connection = handle.connect();
584
+
585
+ // Request a response that exceeds the default 1MB limit
586
+ // Each item is roughly 60 bytes, so 20000 items ≈ 1.2MB
587
+ await expect(
588
+ connection.getLargeResponse(20000)
589
+ ).rejects.toThrow();
590
+
591
+ // Clean up
592
+ await connection.dispose();
593
+ });
594
+ });
504
595
  });
505
596
  }
@@ -585,11 +585,10 @@ export class FileSystemGlobalState {
585
585
  actorId,
586
586
  timestamp: BigInt(timestamp),
587
587
  };
588
- const data =
589
- ACTOR_ALARM_VERSIONED.serializeWithEmbeddedVersion(
590
- alarmData,
591
- FILE_SYSTEM_DRIVER_CURRENT_VERSION,
592
- );
588
+ const data = ACTOR_ALARM_VERSIONED.serializeWithEmbeddedVersion(
589
+ alarmData,
590
+ FILE_SYSTEM_DRIVER_CURRENT_VERSION,
591
+ );
593
592
  const fs = getNodeFs();
594
593
  await fs.writeFile(tempPath, data);
595
594
 
@@ -315,10 +315,18 @@ export class FileSystemManagerDriver implements ManagerDriver {
315
315
  name: actor.name,
316
316
  key: actor.key as string[],
317
317
  createTs: Number(actor.createdAt),
318
- startTs: actor.startTs !== null ? Number(actor.startTs) : null,
319
- connectableTs: actor.connectableTs !== null ? Number(actor.connectableTs) : null,
320
- sleepTs: actor.sleepTs !== null ? Number(actor.sleepTs) : null,
321
- destroyTs: actor.destroyTs !== null ? Number(actor.destroyTs) : null,
318
+ startTs:
319
+ actor.startTs !== null ? Number(actor.startTs) : null,
320
+ connectableTs:
321
+ actor.connectableTs !== null
322
+ ? Number(actor.connectableTs)
323
+ : null,
324
+ sleepTs:
325
+ actor.sleepTs !== null ? Number(actor.sleepTs) : null,
326
+ destroyTs:
327
+ actor.destroyTs !== null
328
+ ? Number(actor.destroyTs)
329
+ : null,
322
330
  });
323
331
  }
324
332
  }
@@ -52,10 +52,10 @@ export async function ensureEngineProcess(
52
52
  // Check if the engine is already running on the port
53
53
  if (await isEngineRunning()) {
54
54
  try {
55
- await waitForEngineHealth();
55
+ const health = await waitForEngineHealth();
56
56
  logger().debug({
57
57
  msg: "engine already running and healthy",
58
- version: options.version,
58
+ version: health.version,
59
59
  });
60
60
  return;
61
61
  } catch (error) {
@@ -315,11 +315,7 @@ async function checkIfEngineAlreadyRunningOnPort(
315
315
  }
316
316
 
317
317
  if (response.ok) {
318
- const health = (await response.json()) as {
319
- status?: string;
320
- runtime?: string;
321
- version?: string;
322
- };
318
+ const health = (await response.json()) as EngineHealthResponse;
323
319
 
324
320
  // Check what's running on this port
325
321
  if (health.runtime === "engine") {
@@ -359,20 +355,30 @@ async function fileExists(filePath: string): Promise<boolean> {
359
355
  const HEALTH_MAX_WAIT = 10_000;
360
356
  const HEALTH_INTERVAL = 100;
361
357
 
362
- async function waitForEngineHealth(): Promise<void> {
358
+ interface EngineHealthResponse {
359
+ status?: string;
360
+ runtime?: string;
361
+ version?: string;
362
+ }
363
+
364
+ async function waitForEngineHealth(): Promise<EngineHealthResponse> {
363
365
  const maxRetries = Math.ceil(HEALTH_MAX_WAIT / HEALTH_INTERVAL);
364
366
 
365
367
  logger().debug({ msg: "waiting for engine health check" });
366
368
 
367
369
  for (let i = 0; i < maxRetries; i++) {
368
370
  try {
369
- const response = await fetch(`${ENGINE_ENDPOINT}/health`);
371
+ const response = await fetch(`${ENGINE_ENDPOINT}/health`, {
372
+ signal: AbortSignal.timeout(1000),
373
+ });
370
374
  if (response.ok) {
375
+ const health = (await response.json()) as EngineHealthResponse;
371
376
  logger().debug({ msg: "engine health check passed" });
372
- return;
377
+ return health;
373
378
  }
374
379
  } catch (error) {
375
380
  // Expected to fail while engine is starting up
381
+ logger().debug({ msg: "engine health check failed", error });
376
382
  if (i === maxRetries - 1) {
377
383
  throw new Error(
378
384
  `engine health check failed after ${maxRetries} retries: ${error}`,
@@ -25,6 +25,9 @@ const RunnerConfigSchemaUnmerged = z
25
25
  /** @experimental */
26
26
  maxIncomingMessageSize: z.number().optional().default(65_536),
27
27
 
28
+ /** @experimental */
29
+ maxOutgoingMessageSize: z.number().optional().default(1_048_576),
30
+
28
31
  /** @experimental */
29
32
  inspector: InspectorConfigSchema,
30
33
 
@@ -1,11 +1,31 @@
1
1
  import type { Hono } from "hono";
2
+ import { detectRuntime, stringifyError } from "../utils";
2
3
  import { logger } from "./log";
3
4
  import type { RunnerConfig } from "./run-config";
4
5
 
5
6
  export async function crossPlatformServe(
6
7
  runConfig: RunnerConfig,
7
8
  app: Hono<any>,
8
- ) {
9
+ ): Promise<{ upgradeWebSocket: any }> {
10
+ const runtime = detectRuntime();
11
+ logger().debug({ msg: "detected runtime for serve", runtime });
12
+
13
+ switch (runtime) {
14
+ case "deno":
15
+ return serveDeno(runConfig, app);
16
+ case "bun":
17
+ return serveBun(runConfig, app);
18
+ case "node":
19
+ return serveNode(runConfig, app);
20
+ default:
21
+ return serveNode(runConfig, app);
22
+ }
23
+ }
24
+
25
+ async function serveNode(
26
+ runConfig: RunnerConfig,
27
+ app: Hono<any>,
28
+ ): Promise<{ upgradeWebSocket: any }> {
9
29
  // Import @hono/node-server using string variable to prevent static analysis
10
30
  const nodeServerModule = "@hono/node-server";
11
31
  let serve: any;
@@ -16,9 +36,10 @@ export async function crossPlatformServe(
16
36
  );
17
37
  serve = dep.serve;
18
38
  } catch (err) {
19
- logger().error(
20
- "failed to import @hono/node-server. please run 'npm install @hono/node-server @hono/node-ws'",
21
- );
39
+ logger().error({
40
+ msg: "failed to import @hono/node-server. please run 'npm install @hono/node-server @hono/node-ws'",
41
+ error: stringifyError(err),
42
+ });
22
43
  process.exit(1);
23
44
  }
24
45
 
@@ -32,9 +53,10 @@ export async function crossPlatformServe(
32
53
  );
33
54
  createNodeWebSocket = dep.createNodeWebSocket;
34
55
  } catch (err) {
35
- logger().error(
36
- "failed to import @hono/node-ws. please run 'npm install @hono/node-server @hono/node-ws'",
37
- );
56
+ logger().error({
57
+ msg: "failed to import @hono/node-ws. please run 'npm install @hono/node-server @hono/node-ws'",
58
+ error: stringifyError(err),
59
+ });
38
60
  process.exit(1);
39
61
  }
40
62
 
@@ -52,3 +74,70 @@ export async function crossPlatformServe(
52
74
 
53
75
  return { upgradeWebSocket };
54
76
  }
77
+
78
+ async function serveDeno(
79
+ runConfig: RunnerConfig,
80
+ app: Hono<any>,
81
+ ): Promise<{ upgradeWebSocket: any }> {
82
+ // Import hono/deno using string variable to prevent static analysis
83
+ const honoDenoModule = "hono/deno";
84
+ let upgradeWebSocket: any;
85
+ try {
86
+ const dep = await import(
87
+ /* webpackIgnore: true */
88
+ honoDenoModule
89
+ );
90
+ upgradeWebSocket = dep.upgradeWebSocket;
91
+ } catch (err) {
92
+ logger().error({
93
+ msg: "failed to import hono/deno",
94
+ error: stringifyError(err),
95
+ });
96
+ process.exit(1);
97
+ }
98
+
99
+ const port = runConfig.defaultServerPort;
100
+
101
+ // Use Deno.serve
102
+ Deno.serve({ port }, app.fetch);
103
+ logger().info({ msg: "server listening", port });
104
+
105
+ return { upgradeWebSocket };
106
+ }
107
+
108
+ async function serveBun(
109
+ runConfig: RunnerConfig,
110
+ app: Hono<any>,
111
+ ): Promise<{ upgradeWebSocket: any }> {
112
+ // Import hono/bun using string variable to prevent static analysis
113
+ const honoBunModule = "hono/bun";
114
+ let createBunWebSocket: any;
115
+ try {
116
+ const dep = await import(
117
+ /* webpackIgnore: true */
118
+ honoBunModule
119
+ );
120
+ createBunWebSocket = dep.createBunWebSocket;
121
+ } catch (err) {
122
+ logger().error({
123
+ msg: "failed to import hono/bun",
124
+ error: stringifyError(err),
125
+ });
126
+ process.exit(1);
127
+ }
128
+
129
+ const { websocket, upgradeWebSocket } = createBunWebSocket();
130
+
131
+ const port = runConfig.defaultServerPort;
132
+
133
+ // Use Bun.serve
134
+ // @ts-expect-error - Bun global
135
+ Bun.serve({
136
+ fetch: app.fetch,
137
+ port,
138
+ websocket,
139
+ });
140
+ logger().info({ msg: "server listening", port });
141
+
142
+ return { upgradeWebSocket };
143
+ }
@@ -45,8 +45,8 @@ const v2ToV3 = (v2Data: v2.PersistedActor): v3.Actor => {
45
45
  // Converter from v3 to v2
46
46
  const v3ToV2 = (v3Data: v3.Actor): v2.PersistedActor => {
47
47
  // Transform scheduled events from flat structure back to nested structure
48
- const scheduledEvents: v2.PersistedScheduleEvent[] = v3Data.scheduledEvents.map(
49
- (event) => ({
48
+ const scheduledEvents: v2.PersistedScheduleEvent[] =
49
+ v3Data.scheduledEvents.map((event) => ({
50
50
  eventId: event.eventId,
51
51
  timestamp: event.timestamp,
52
52
  kind: {
@@ -56,8 +56,7 @@ const v3ToV2 = (v3Data: v3.Actor): v2.PersistedActor => {
56
56
  args: event.args,
57
57
  },
58
58
  },
59
- }),
60
- );
59
+ }));
61
60
 
62
61
  return {
63
62
  input: v3Data.input,
package/src/serde.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import * as cbor from "cbor-x";
2
2
  import invariant from "invariant";
3
+ import type { VersionedDataHandler } from "vbare";
3
4
  import type { z } from "zod";
4
5
  import { assertUnreachable } from "@/common/utils";
5
- import type { VersionedDataHandler } from "vbare";
6
6
  import type { Encoding } from "@/mod";
7
7
  import { jsonParseCompat, jsonStringifyCompat } from "./actor/protocol/serde";
8
8
 
package/src/test/mod.ts CHANGED
@@ -3,12 +3,12 @@ import { serve as honoServe } from "@hono/node-server";
3
3
  import { createNodeWebSocket } from "@hono/node-ws";
4
4
  import invariant from "invariant";
5
5
  import { type TestContext, vi } from "vitest";
6
+ import { ClientConfigSchema } from "@/client/config";
6
7
  import { type Client, createClient } from "@/client/mod";
7
8
  import { createFileSystemOrMemoryDriver } from "@/drivers/file-system/mod";
8
9
  import { configureInspectorAccessToken } from "@/inspector/utils";
9
10
  import { createManagerRouter } from "@/manager/router";
10
11
  import { createClientWithDriver, type Registry, type RunConfig } from "@/mod";
11
- import { ClientConfigSchema } from "@/client/config";
12
12
  import { RunnerConfigSchema } from "@/registry/run-config";
13
13
  import { logger } from "./log";
14
14
 
package/src/utils.ts CHANGED
@@ -279,3 +279,17 @@ export const EXTRA_ERROR_LOG = {
279
279
  support: "https://rivet.dev/discord",
280
280
  version: VERSION,
281
281
  };
282
+
283
+ export type Runtime = "deno" | "bun" | "node";
284
+
285
+ export function detectRuntime(): Runtime {
286
+ const userAgent =
287
+ typeof navigator !== "undefined" ? navigator.userAgent : "";
288
+ if (userAgent.includes("Deno")) {
289
+ return "deno";
290
+ }
291
+ if (userAgent.includes("Bun")) {
292
+ return "bun";
293
+ }
294
+ return "node";
295
+ }
@@ -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/schemas/actor-persist/versioned.ts","../schemas/actor-persist/v1.ts","../schemas/actor-persist/v2.ts","../schemas/actor-persist/v3.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. */\nconst RunnerConfigSchemaUnmerged = 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.string(), 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\nconst RunnerConfigSchemaBase = RunnerConfigSchemaUnmerged;\nexport const RunnerConfigSchema = RunnerConfigSchemaBase.default(() =>\n\tRunnerConfigSchemaBase.parse({}),\n);\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\nconst EngineConfigSchemaBase = 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\nexport const EngingConfigSchema = EngineConfigSchemaBase.default(() =>\n\tEngineConfigSchemaBase.parse({}),\n);\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(), 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.custom<() => 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 {\n\tACTOR_VERSIONED,\n\tCURRENT_VERSION,\n} 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(\n\t\tpersistData,\n\t\tCURRENT_VERSION,\n\t);\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","import { createVersionedDataHandler } from \"vbare\";\nimport * as v1 from \"../../../dist/schemas/actor-persist/v1\";\nimport * as v2 from \"../../../dist/schemas/actor-persist/v2\";\nimport * as v3 from \"../../../dist/schemas/actor-persist/v3\";\n\nexport const CURRENT_VERSION = 3;\n\n// Converter from v1 to v2\nconst v1ToV2 = (v1Data: v1.PersistedActor): v2.PersistedActor => ({\n\t...v1Data,\n\tconnections: v1Data.connections.map((conn) => ({\n\t\t...conn,\n\t\thibernatableRequestId: null,\n\t})),\n\thibernatableWebSockets: [],\n});\n\n// Converter from v2 to v3\nconst v2ToV3 = (v2Data: v2.PersistedActor): v3.Actor => {\n\t// Transform scheduled events from nested structure to flat structure\n\tconst scheduledEvents: v3.ScheduleEvent[] = v2Data.scheduledEvents.map(\n\t\t(event) => {\n\t\t\t// Extract action and args from the kind wrapper\n\t\t\tif (event.kind.tag === \"GenericPersistedScheduleEvent\") {\n\t\t\t\treturn {\n\t\t\t\t\teventId: event.eventId,\n\t\t\t\t\ttimestamp: event.timestamp,\n\t\t\t\t\taction: event.kind.val.action,\n\t\t\t\t\targs: event.kind.val.args,\n\t\t\t\t};\n\t\t\t}\n\t\t\t// Fallback for unknown kinds\n\t\t\tthrow new Error(`Unknown schedule event kind: ${event.kind.tag}`);\n\t\t},\n\t);\n\n\treturn {\n\t\tinput: v2Data.input,\n\t\thasInitialized: v2Data.hasInitialized,\n\t\tstate: v2Data.state,\n\t\tscheduledEvents,\n\t};\n};\n\n// Converter from v3 to v2\nconst v3ToV2 = (v3Data: v3.Actor): v2.PersistedActor => {\n\t// Transform scheduled events from flat structure back to nested structure\n\tconst scheduledEvents: v2.PersistedScheduleEvent[] = v3Data.scheduledEvents.map(\n\t\t(event) => ({\n\t\t\teventId: event.eventId,\n\t\t\ttimestamp: event.timestamp,\n\t\t\tkind: {\n\t\t\t\ttag: \"GenericPersistedScheduleEvent\" as const,\n\t\t\t\tval: {\n\t\t\t\t\taction: event.action,\n\t\t\t\t\targs: event.args,\n\t\t\t\t},\n\t\t\t},\n\t\t}),\n\t);\n\n\treturn {\n\t\tinput: v3Data.input,\n\t\thasInitialized: v3Data.hasInitialized,\n\t\tstate: v3Data.state,\n\t\tscheduledEvents,\n\t\tconnections: [],\n\t\thibernatableWebSockets: [],\n\t};\n};\n\n// Converter from v2 to v1\nconst v2ToV1 = (v2Data: v2.PersistedActor): v1.PersistedActor => {\n\treturn {\n\t\tinput: v2Data.input,\n\t\thasInitialized: v2Data.hasInitialized,\n\t\tstate: v2Data.state,\n\t\tscheduledEvents: v2Data.scheduledEvents,\n\t\tconnections: v2Data.connections.map((conn) => {\n\t\t\tconst { hibernatableRequestId, ...rest } = conn;\n\t\t\treturn rest;\n\t\t}),\n\t};\n};\n\nexport const ACTOR_VERSIONED = createVersionedDataHandler<v3.Actor>({\n\tdeserializeVersion: (bytes, version) => {\n\t\tswitch (version) {\n\t\t\tcase 1:\n\t\t\t\treturn v1.decodePersistedActor(bytes);\n\t\t\tcase 2:\n\t\t\t\treturn v2.decodePersistedActor(bytes);\n\t\t\tcase 3:\n\t\t\t\treturn v3.decodeActor(bytes);\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unknown version ${version}`);\n\t\t}\n\t},\n\tserializeVersion: (data, version) => {\n\t\tswitch (version) {\n\t\t\tcase 1:\n\t\t\t\treturn v1.encodePersistedActor(data as v1.PersistedActor);\n\t\t\tcase 2:\n\t\t\t\treturn v2.encodePersistedActor(data as v2.PersistedActor);\n\t\t\tcase 3:\n\t\t\t\treturn v3.encodeActor(data as v3.Actor);\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unknown version ${version}`);\n\t\t}\n\t},\n\tdeserializeConverters: () => [v1ToV2, v2ToV3],\n\tserializeConverters: () => [v3ToV2, v2ToV1],\n});\n\nexport const CONN_VERSIONED = createVersionedDataHandler<v3.Conn>({\n\tdeserializeVersion: (bytes, version) => {\n\t\tswitch (version) {\n\t\t\tcase 3:\n\t\t\t\treturn v3.decodeConn(bytes);\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Conn type only exists in version 3+, got version ${version}`,\n\t\t\t\t);\n\t\t}\n\t},\n\tserializeVersion: (data, version) => {\n\t\tswitch (version) {\n\t\t\tcase 3:\n\t\t\t\treturn v3.encodeConn(data as v3.Conn);\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Conn type only exists in version 3+, got version ${version}`,\n\t\t\t\t);\n\t\t}\n\t},\n\tdeserializeConverters: () => [],\n\tserializeConverters: () => [],\n});\n","import * as bare from \"@bare-ts/lib\"\n\nconst config = /* @__PURE__ */ bare.Config({})\n\nexport type u64 = bigint\n\nexport type PersistedSubscription = {\n readonly eventName: string,\n}\n\nexport function readPersistedSubscription(bc: bare.ByteCursor): PersistedSubscription {\n return {\n eventName: bare.readString(bc),\n }\n}\n\nexport function writePersistedSubscription(bc: bare.ByteCursor, x: PersistedSubscription): void {\n bare.writeString(bc, x.eventName)\n}\n\nfunction read0(bc: bare.ByteCursor): readonly PersistedSubscription[] {\n const len = bare.readUintSafe(bc)\n if (len === 0) { return [] }\n const result = [readPersistedSubscription(bc)]\n for (let i = 1; i < len; i++) {\n result[i] = readPersistedSubscription(bc)\n }\n return result\n}\n\nfunction write0(bc: bare.ByteCursor, x: readonly PersistedSubscription[]): void {\n bare.writeUintSafe(bc, x.length)\n for (let i = 0; i < x.length; i++) {\n writePersistedSubscription(bc, x[i])\n }\n}\n\nexport type PersistedConnection = {\n readonly id: string,\n readonly token: string,\n readonly parameters: ArrayBuffer,\n readonly state: ArrayBuffer,\n readonly subscriptions: readonly PersistedSubscription[],\n readonly lastSeen: u64,\n}\n\nexport function readPersistedConnection(bc: bare.ByteCursor): PersistedConnection {\n return {\n id: bare.readString(bc),\n token: bare.readString(bc),\n parameters: bare.readData(bc),\n state: bare.readData(bc),\n subscriptions: read0(bc),\n lastSeen: bare.readU64(bc),\n }\n}\n\nexport function writePersistedConnection(bc: bare.ByteCursor, x: PersistedConnection): void {\n bare.writeString(bc, x.id)\n bare.writeString(bc, x.token)\n bare.writeData(bc, x.parameters)\n bare.writeData(bc, x.state)\n write0(bc, x.subscriptions)\n bare.writeU64(bc, x.lastSeen)\n}\n\nfunction read1(bc: bare.ByteCursor): ArrayBuffer | null {\n return bare.readBool(bc)\n ? bare.readData(bc)\n : null\n}\n\nfunction write1(bc: bare.ByteCursor, x: ArrayBuffer | null): void {\n bare.writeBool(bc, x !== null)\n if (x !== null) {\n bare.writeData(bc, x)\n }\n}\n\nexport type GenericPersistedScheduleEvent = {\n readonly action: string,\n readonly args: ArrayBuffer | null,\n}\n\nexport function readGenericPersistedScheduleEvent(bc: bare.ByteCursor): GenericPersistedScheduleEvent {\n return {\n action: bare.readString(bc),\n args: read1(bc),\n }\n}\n\nexport function writeGenericPersistedScheduleEvent(bc: bare.ByteCursor, x: GenericPersistedScheduleEvent): void {\n bare.writeString(bc, x.action)\n write1(bc, x.args)\n}\n\nexport type PersistedScheduleEventKind =\n | { readonly tag: \"GenericPersistedScheduleEvent\", readonly val: GenericPersistedScheduleEvent }\n\nexport function readPersistedScheduleEventKind(bc: bare.ByteCursor): PersistedScheduleEventKind {\n const offset = bc.offset\n const tag = bare.readU8(bc)\n switch (tag) {\n case 0:\n return { tag: \"GenericPersistedScheduleEvent\", val: readGenericPersistedScheduleEvent(bc) }\n default: {\n bc.offset = offset\n throw new bare.BareError(offset, \"invalid tag\")\n }\n }\n}\n\nexport function writePersistedScheduleEventKind(bc: bare.ByteCursor, x: PersistedScheduleEventKind): void {\n switch (x.tag) {\n case \"GenericPersistedScheduleEvent\": {\n bare.writeU8(bc, 0)\n writeGenericPersistedScheduleEvent(bc, x.val)\n break\n }\n }\n}\n\nexport type PersistedScheduleEvent = {\n readonly eventId: string,\n readonly timestamp: u64,\n readonly kind: PersistedScheduleEventKind,\n}\n\nexport function readPersistedScheduleEvent(bc: bare.ByteCursor): PersistedScheduleEvent {\n return {\n eventId: bare.readString(bc),\n timestamp: bare.readU64(bc),\n kind: readPersistedScheduleEventKind(bc),\n }\n}\n\nexport function writePersistedScheduleEvent(bc: bare.ByteCursor, x: PersistedScheduleEvent): void {\n bare.writeString(bc, x.eventId)\n bare.writeU64(bc, x.timestamp)\n writePersistedScheduleEventKind(bc, x.kind)\n}\n\nfunction read2(bc: bare.ByteCursor): readonly PersistedConnection[] {\n const len = bare.readUintSafe(bc)\n if (len === 0) { return [] }\n const result = [readPersistedConnection(bc)]\n for (let i = 1; i < len; i++) {\n result[i] = readPersistedConnection(bc)\n }\n return result\n}\n\nfunction write2(bc: bare.ByteCursor, x: readonly PersistedConnection[]): void {\n bare.writeUintSafe(bc, x.length)\n for (let i = 0; i < x.length; i++) {\n writePersistedConnection(bc, x[i])\n }\n}\n\nfunction read3(bc: bare.ByteCursor): readonly PersistedScheduleEvent[] {\n const len = bare.readUintSafe(bc)\n if (len === 0) { return [] }\n const result = [readPersistedScheduleEvent(bc)]\n for (let i = 1; i < len; i++) {\n result[i] = readPersistedScheduleEvent(bc)\n }\n return result\n}\n\nfunction write3(bc: bare.ByteCursor, x: readonly PersistedScheduleEvent[]): void {\n bare.writeUintSafe(bc, x.length)\n for (let i = 0; i < x.length; i++) {\n writePersistedScheduleEvent(bc, x[i])\n }\n}\n\nexport type PersistedActor = {\n readonly input: ArrayBuffer | null,\n readonly hasInitialized: boolean,\n readonly state: ArrayBuffer,\n readonly connections: readonly PersistedConnection[],\n readonly scheduledEvents: readonly PersistedScheduleEvent[],\n}\n\nexport function readPersistedActor(bc: bare.ByteCursor): PersistedActor {\n return {\n input: read1(bc),\n hasInitialized: bare.readBool(bc),\n state: bare.readData(bc),\n connections: read2(bc),\n scheduledEvents: read3(bc),\n }\n}\n\nexport function writePersistedActor(bc: bare.ByteCursor, x: PersistedActor): void {\n write1(bc, x.input)\n bare.writeBool(bc, x.hasInitialized)\n bare.writeData(bc, x.state)\n write2(bc, x.connections)\n write3(bc, x.scheduledEvents)\n}\n\nexport function encodePersistedActor(x: PersistedActor): Uint8Array {\n const bc = new bare.ByteCursor(\n new Uint8Array(config.initialBufferLength),\n config\n )\n writePersistedActor(bc, x)\n return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset)\n}\n\nexport function decodePersistedActor(bytes: Uint8Array): PersistedActor {\n const bc = new bare.ByteCursor(bytes, config)\n const result = readPersistedActor(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 * as bare from \"@bare-ts/lib\"\n\nconst config = /* @__PURE__ */ bare.Config({})\n\nexport type i64 = bigint\n\nexport type PersistedSubscription = {\n readonly eventName: string,\n}\n\nexport function readPersistedSubscription(bc: bare.ByteCursor): PersistedSubscription {\n return {\n eventName: bare.readString(bc),\n }\n}\n\nexport function writePersistedSubscription(bc: bare.ByteCursor, x: PersistedSubscription): void {\n bare.writeString(bc, x.eventName)\n}\n\nfunction read0(bc: bare.ByteCursor): readonly PersistedSubscription[] {\n const len = bare.readUintSafe(bc)\n if (len === 0) { return [] }\n const result = [readPersistedSubscription(bc)]\n for (let i = 1; i < len; i++) {\n result[i] = readPersistedSubscription(bc)\n }\n return result\n}\n\nfunction write0(bc: bare.ByteCursor, x: readonly PersistedSubscription[]): void {\n bare.writeUintSafe(bc, x.length)\n for (let i = 0; i < x.length; i++) {\n writePersistedSubscription(bc, x[i])\n }\n}\n\nfunction read1(bc: bare.ByteCursor): ArrayBuffer | null {\n return bare.readBool(bc)\n ? bare.readData(bc)\n : null\n}\n\nfunction write1(bc: bare.ByteCursor, x: ArrayBuffer | null): void {\n bare.writeBool(bc, x !== null)\n if (x !== null) {\n bare.writeData(bc, x)\n }\n}\n\nexport type PersistedConnection = {\n readonly id: string,\n readonly token: string,\n readonly parameters: ArrayBuffer,\n readonly state: ArrayBuffer,\n readonly subscriptions: readonly PersistedSubscription[],\n readonly lastSeen: i64,\n readonly hibernatableRequestId: ArrayBuffer | null,\n}\n\nexport function readPersistedConnection(bc: bare.ByteCursor): PersistedConnection {\n return {\n id: bare.readString(bc),\n token: bare.readString(bc),\n parameters: bare.readData(bc),\n state: bare.readData(bc),\n subscriptions: read0(bc),\n lastSeen: bare.readI64(bc),\n hibernatableRequestId: read1(bc),\n }\n}\n\nexport function writePersistedConnection(bc: bare.ByteCursor, x: PersistedConnection): void {\n bare.writeString(bc, x.id)\n bare.writeString(bc, x.token)\n bare.writeData(bc, x.parameters)\n bare.writeData(bc, x.state)\n write0(bc, x.subscriptions)\n bare.writeI64(bc, x.lastSeen)\n write1(bc, x.hibernatableRequestId)\n}\n\nexport type GenericPersistedScheduleEvent = {\n readonly action: string,\n readonly args: ArrayBuffer | null,\n}\n\nexport function readGenericPersistedScheduleEvent(bc: bare.ByteCursor): GenericPersistedScheduleEvent {\n return {\n action: bare.readString(bc),\n args: read1(bc),\n }\n}\n\nexport function writeGenericPersistedScheduleEvent(bc: bare.ByteCursor, x: GenericPersistedScheduleEvent): void {\n bare.writeString(bc, x.action)\n write1(bc, x.args)\n}\n\nexport type PersistedScheduleEventKind =\n | { readonly tag: \"GenericPersistedScheduleEvent\", readonly val: GenericPersistedScheduleEvent }\n\nexport function readPersistedScheduleEventKind(bc: bare.ByteCursor): PersistedScheduleEventKind {\n const offset = bc.offset\n const tag = bare.readU8(bc)\n switch (tag) {\n case 0:\n return { tag: \"GenericPersistedScheduleEvent\", val: readGenericPersistedScheduleEvent(bc) }\n default: {\n bc.offset = offset\n throw new bare.BareError(offset, \"invalid tag\")\n }\n }\n}\n\nexport function writePersistedScheduleEventKind(bc: bare.ByteCursor, x: PersistedScheduleEventKind): void {\n switch (x.tag) {\n case \"GenericPersistedScheduleEvent\": {\n bare.writeU8(bc, 0)\n writeGenericPersistedScheduleEvent(bc, x.val)\n break\n }\n }\n}\n\nexport type PersistedScheduleEvent = {\n readonly eventId: string,\n readonly timestamp: i64,\n readonly kind: PersistedScheduleEventKind,\n}\n\nexport function readPersistedScheduleEvent(bc: bare.ByteCursor): PersistedScheduleEvent {\n return {\n eventId: bare.readString(bc),\n timestamp: bare.readI64(bc),\n kind: readPersistedScheduleEventKind(bc),\n }\n}\n\nexport function writePersistedScheduleEvent(bc: bare.ByteCursor, x: PersistedScheduleEvent): void {\n bare.writeString(bc, x.eventId)\n bare.writeI64(bc, x.timestamp)\n writePersistedScheduleEventKind(bc, x.kind)\n}\n\nexport type PersistedHibernatableWebSocket = {\n readonly requestId: ArrayBuffer,\n readonly lastSeenTimestamp: i64,\n readonly msgIndex: i64,\n}\n\nexport function readPersistedHibernatableWebSocket(bc: bare.ByteCursor): PersistedHibernatableWebSocket {\n return {\n requestId: bare.readData(bc),\n lastSeenTimestamp: bare.readI64(bc),\n msgIndex: bare.readI64(bc),\n }\n}\n\nexport function writePersistedHibernatableWebSocket(bc: bare.ByteCursor, x: PersistedHibernatableWebSocket): void {\n bare.writeData(bc, x.requestId)\n bare.writeI64(bc, x.lastSeenTimestamp)\n bare.writeI64(bc, x.msgIndex)\n}\n\nfunction read2(bc: bare.ByteCursor): readonly PersistedConnection[] {\n const len = bare.readUintSafe(bc)\n if (len === 0) { return [] }\n const result = [readPersistedConnection(bc)]\n for (let i = 1; i < len; i++) {\n result[i] = readPersistedConnection(bc)\n }\n return result\n}\n\nfunction write2(bc: bare.ByteCursor, x: readonly PersistedConnection[]): void {\n bare.writeUintSafe(bc, x.length)\n for (let i = 0; i < x.length; i++) {\n writePersistedConnection(bc, x[i])\n }\n}\n\nfunction read3(bc: bare.ByteCursor): readonly PersistedScheduleEvent[] {\n const len = bare.readUintSafe(bc)\n if (len === 0) { return [] }\n const result = [readPersistedScheduleEvent(bc)]\n for (let i = 1; i < len; i++) {\n result[i] = readPersistedScheduleEvent(bc)\n }\n return result\n}\n\nfunction write3(bc: bare.ByteCursor, x: readonly PersistedScheduleEvent[]): void {\n bare.writeUintSafe(bc, x.length)\n for (let i = 0; i < x.length; i++) {\n writePersistedScheduleEvent(bc, x[i])\n }\n}\n\nfunction read4(bc: bare.ByteCursor): readonly PersistedHibernatableWebSocket[] {\n const len = bare.readUintSafe(bc)\n if (len === 0) { return [] }\n const result = [readPersistedHibernatableWebSocket(bc)]\n for (let i = 1; i < len; i++) {\n result[i] = readPersistedHibernatableWebSocket(bc)\n }\n return result\n}\n\nfunction write4(bc: bare.ByteCursor, x: readonly PersistedHibernatableWebSocket[]): void {\n bare.writeUintSafe(bc, x.length)\n for (let i = 0; i < x.length; i++) {\n writePersistedHibernatableWebSocket(bc, x[i])\n }\n}\n\nexport type PersistedActor = {\n readonly input: ArrayBuffer | null,\n readonly hasInitialized: boolean,\n readonly state: ArrayBuffer,\n readonly connections: readonly PersistedConnection[],\n readonly scheduledEvents: readonly PersistedScheduleEvent[],\n readonly hibernatableWebSockets: readonly PersistedHibernatableWebSocket[],\n}\n\nexport function readPersistedActor(bc: bare.ByteCursor): PersistedActor {\n return {\n input: read1(bc),\n hasInitialized: bare.readBool(bc),\n state: bare.readData(bc),\n connections: read2(bc),\n scheduledEvents: read3(bc),\n hibernatableWebSockets: read4(bc),\n }\n}\n\nexport function writePersistedActor(bc: bare.ByteCursor, x: PersistedActor): void {\n write1(bc, x.input)\n bare.writeBool(bc, x.hasInitialized)\n bare.writeData(bc, x.state)\n write2(bc, x.connections)\n write3(bc, x.scheduledEvents)\n write4(bc, x.hibernatableWebSockets)\n}\n\nexport function encodePersistedActor(x: PersistedActor): Uint8Array {\n const bc = new bare.ByteCursor(\n new Uint8Array(config.initialBufferLength),\n config\n )\n writePersistedActor(bc, x)\n return new Uint8Array(bc.view.buffer, bc.view.byteOffset, bc.offset)\n}\n\nexport function decodePersistedActor(bytes: Uint8Array): PersistedActor {\n const bc = new bare.ByteCursor(bytes, config)\n const result = readPersistedActor(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","\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"],"mappings":"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","names":["z","z","z","z","z","z","bare","config","readPersistedSubscription","writePersistedSubscription","read0","write0","read1","write1","readPersistedConnection","writePersistedConnection","readGenericPersistedScheduleEvent","writeGenericPersistedScheduleEvent","readPersistedScheduleEventKind","writePersistedScheduleEventKind","readPersistedScheduleEvent","writePersistedScheduleEvent","read2","write2","read3","write3","readPersistedActor","writePersistedActor","encodePersistedActor","decodePersistedActor","bare","config","read0","write0","read1","write1","config","read2","write2","read3","write3","decodePersistedActor","encodePersistedActor"]}