rivetkit 2.0.37 → 2.0.39

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 (104) hide show
  1. package/dist/tsup/{chunk-G4N7FZMM.cjs → chunk-7E3RWMR6.cjs} +195 -93
  2. package/dist/tsup/chunk-7E3RWMR6.cjs.map +1 -0
  3. package/dist/tsup/{chunk-J6TX5EFW.js → chunk-BQ36VTSB.js} +108 -6
  4. package/dist/tsup/chunk-BQ36VTSB.js.map +1 -0
  5. package/dist/tsup/{chunk-4V7MS7SO.cjs → chunk-C64FV764.cjs} +3 -3
  6. package/dist/tsup/{chunk-4V7MS7SO.cjs.map → chunk-C64FV764.cjs.map} +1 -1
  7. package/dist/tsup/{chunk-XI335ZED.js → chunk-CDK6DRO2.js} +6 -4
  8. package/dist/tsup/chunk-CDK6DRO2.js.map +1 -0
  9. package/dist/tsup/{chunk-LYYTV7DN.cjs → chunk-DY4H3ASE.cjs} +50 -46
  10. package/dist/tsup/chunk-DY4H3ASE.cjs.map +1 -0
  11. package/dist/tsup/{chunk-B6BP74X3.cjs → chunk-KMYFL3OL.cjs} +318 -92
  12. package/dist/tsup/chunk-KMYFL3OL.cjs.map +1 -0
  13. package/dist/tsup/{chunk-22NKW7F5.cjs → chunk-MZPYVTVG.cjs} +9 -9
  14. package/dist/tsup/{chunk-22NKW7F5.cjs.map → chunk-MZPYVTVG.cjs.map} +1 -1
  15. package/dist/tsup/{chunk-RBA5AQTB.js → chunk-OJZRCEIA.js} +5 -5
  16. package/dist/tsup/{chunk-RXA3ZMCL.js → chunk-PHCD25XO.js} +2 -2
  17. package/dist/tsup/{chunk-5XGZXH74.js → chunk-PVKUXMOA.js} +264 -38
  18. package/dist/tsup/chunk-PVKUXMOA.js.map +1 -0
  19. package/dist/tsup/{chunk-FIUSIG6J.js → chunk-T7IPDBWH.js} +8 -4
  20. package/dist/tsup/{chunk-FIUSIG6J.js.map → chunk-T7IPDBWH.js.map} +1 -1
  21. package/dist/tsup/{chunk-5VVIFC6M.cjs → chunk-UAX5E3EU.cjs} +443 -369
  22. package/dist/tsup/chunk-UAX5E3EU.cjs.map +1 -0
  23. package/dist/tsup/{chunk-X5IX3YPO.cjs → chunk-X72X7I7T.cjs} +6 -4
  24. package/dist/tsup/chunk-X72X7I7T.cjs.map +1 -0
  25. package/dist/tsup/{chunk-ZQBSQ6H3.js → chunk-XU74APB4.js} +208 -134
  26. package/dist/tsup/chunk-XU74APB4.js.map +1 -0
  27. package/dist/tsup/client/mod.cjs +5 -5
  28. package/dist/tsup/client/mod.d.cts +3 -3
  29. package/dist/tsup/client/mod.d.ts +3 -3
  30. package/dist/tsup/client/mod.js +4 -4
  31. package/dist/tsup/common/log.cjs +2 -2
  32. package/dist/tsup/common/log.js +1 -1
  33. package/dist/tsup/common/websocket.cjs +3 -3
  34. package/dist/tsup/common/websocket.js +2 -2
  35. package/dist/tsup/{config--NjwiYlS.d.cts → config-BuBlMs6C.d.cts} +238 -60
  36. package/dist/tsup/{config-CRuzI6n4.d.ts → config-CBwo4ooA.d.ts} +238 -60
  37. package/dist/tsup/{driver-yKjYx9Yy.d.cts → driver-CPXmh8f8.d.cts} +1 -1
  38. package/dist/tsup/{driver-BcmckRaF.d.ts → driver-DxWa6HUO.d.ts} +1 -1
  39. package/dist/tsup/driver-helpers/mod.cjs +3 -3
  40. package/dist/tsup/driver-helpers/mod.d.cts +2 -2
  41. package/dist/tsup/driver-helpers/mod.d.ts +2 -2
  42. package/dist/tsup/driver-helpers/mod.js +2 -2
  43. package/dist/tsup/driver-test-suite/mod.cjs +81 -35
  44. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  45. package/dist/tsup/driver-test-suite/mod.d.cts +2 -2
  46. package/dist/tsup/driver-test-suite/mod.d.ts +2 -2
  47. package/dist/tsup/driver-test-suite/mod.js +407 -361
  48. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  49. package/dist/tsup/{kv-CTM8sCvx.d.cts → keys-Chhy4ylv.d.cts} +1 -0
  50. package/dist/tsup/{kv-CTM8sCvx.d.ts → keys-Chhy4ylv.d.ts} +1 -0
  51. package/dist/tsup/mod.cjs +19 -7
  52. package/dist/tsup/mod.cjs.map +1 -1
  53. package/dist/tsup/mod.d.cts +5 -5
  54. package/dist/tsup/mod.d.ts +5 -5
  55. package/dist/tsup/mod.js +18 -6
  56. package/dist/tsup/test/mod.cjs +7 -7
  57. package/dist/tsup/test/mod.d.cts +1 -1
  58. package/dist/tsup/test/mod.d.ts +1 -1
  59. package/dist/tsup/test/mod.js +6 -6
  60. package/dist/tsup/utils.cjs +2 -2
  61. package/dist/tsup/utils.js +1 -1
  62. package/package.json +6 -4
  63. package/src/actor/config.ts +198 -2
  64. package/src/actor/contexts/base/actor.ts +12 -0
  65. package/src/actor/instance/connection-manager.ts +1 -1
  66. package/src/actor/instance/keys.ts +29 -0
  67. package/src/actor/instance/kv.ts +240 -14
  68. package/src/actor/instance/mod.ts +5 -4
  69. package/src/actor/instance/state-manager.ts +1 -1
  70. package/src/actor/mod.ts +2 -1
  71. package/src/actor/router-websocket-endpoints.ts +2 -1
  72. package/src/client/actor-conn.ts +70 -81
  73. package/src/client/actor-handle.ts +35 -15
  74. package/src/client/actor-query.ts +47 -0
  75. package/src/client/errors.ts +22 -58
  76. package/src/client/mod.ts +1 -1
  77. package/src/client/utils.ts +33 -0
  78. package/src/driver-helpers/utils.ts +1 -1
  79. package/src/driver-test-suite/mod.ts +3 -0
  80. package/src/driver-test-suite/test-inline-client-driver.ts +3 -0
  81. package/src/driver-test-suite/tests/actor-kv.ts +44 -0
  82. package/src/driver-test-suite/utils.ts +4 -0
  83. package/src/drivers/engine/actor-driver.ts +3 -3
  84. package/src/drivers/file-system/manager.ts +5 -0
  85. package/src/manager/driver.ts +8 -3
  86. package/src/manager-api/actors.ts +1 -20
  87. package/src/registry/config/index.ts +68 -0
  88. package/src/remote-manager-driver/actor-http-client.ts +5 -3
  89. package/src/remote-manager-driver/actor-websocket-client.ts +18 -7
  90. package/src/remote-manager-driver/mod.ts +21 -1
  91. package/src/serverless/router.test.ts +166 -0
  92. package/src/serverless/router.ts +58 -5
  93. package/src/utils/env-vars.ts +4 -1
  94. package/dist/tsup/chunk-5VVIFC6M.cjs.map +0 -1
  95. package/dist/tsup/chunk-5XGZXH74.js.map +0 -1
  96. package/dist/tsup/chunk-B6BP74X3.cjs.map +0 -1
  97. package/dist/tsup/chunk-G4N7FZMM.cjs.map +0 -1
  98. package/dist/tsup/chunk-J6TX5EFW.js.map +0 -1
  99. package/dist/tsup/chunk-LYYTV7DN.cjs.map +0 -1
  100. package/dist/tsup/chunk-X5IX3YPO.cjs.map +0 -1
  101. package/dist/tsup/chunk-XI335ZED.js.map +0 -1
  102. package/dist/tsup/chunk-ZQBSQ6H3.js.map +0 -1
  103. /package/dist/tsup/{chunk-RBA5AQTB.js.map → chunk-OJZRCEIA.js.map} +0 -0
  104. /package/dist/tsup/{chunk-RXA3ZMCL.js.map → chunk-PHCD25XO.js.map} +0 -0
@@ -2,6 +2,7 @@ declare const KEYS: {
2
2
  PERSIST_DATA: Uint8Array<ArrayBuffer>;
3
3
  CONN_PREFIX: Uint8Array<ArrayBuffer>;
4
4
  INSPECTOR_TOKEN: Uint8Array<ArrayBuffer>;
5
+ KV: Uint8Array<ArrayBuffer>;
5
6
  };
6
7
 
7
8
  export { KEYS as K };
@@ -2,6 +2,7 @@ declare const KEYS: {
2
2
  PERSIST_DATA: Uint8Array<ArrayBuffer>;
3
3
  CONN_PREFIX: Uint8Array<ArrayBuffer>;
4
4
  INSPECTOR_TOKEN: Uint8Array<ArrayBuffer>;
5
+ KV: Uint8Array<ArrayBuffer>;
5
6
  };
6
7
 
7
8
  export { KEYS as K };
package/dist/tsup/mod.cjs CHANGED
@@ -3,18 +3,18 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkG4N7FZMMcjs = require('./chunk-G4N7FZMM.cjs');
6
+ var _chunk7E3RWMR6cjs = require('./chunk-7E3RWMR6.cjs');
7
7
 
8
8
 
9
9
 
10
10
 
11
11
 
12
- var _chunkLYYTV7DNcjs = require('./chunk-LYYTV7DN.cjs');
12
+ var _chunkDY4H3ASEcjs = require('./chunk-DY4H3ASE.cjs');
13
13
 
14
14
 
15
15
 
16
- var _chunk5VVIFC6Mcjs = require('./chunk-5VVIFC6M.cjs');
17
- require('./chunk-4V7MS7SO.cjs');
16
+ var _chunkUAX5E3EUcjs = require('./chunk-UAX5E3EU.cjs');
17
+ require('./chunk-C64FV764.cjs');
18
18
 
19
19
 
20
20
 
@@ -26,12 +26,18 @@ require('./chunk-4V7MS7SO.cjs');
26
26
 
27
27
 
28
28
 
29
- var _chunkB6BP74X3cjs = require('./chunk-B6BP74X3.cjs');
29
+
30
+
31
+
32
+
33
+
34
+
35
+ var _chunkKMYFL3OLcjs = require('./chunk-KMYFL3OL.cjs');
30
36
  require('./chunk-KDFWJKMJ.cjs');
31
37
 
32
38
 
33
39
 
34
- var _chunkX5IX3YPOcjs = require('./chunk-X5IX3YPO.cjs');
40
+ var _chunkX72X7I7Tcjs = require('./chunk-X72X7I7T.cjs');
35
41
 
36
42
 
37
43
  var _chunkSNAUKDDKcjs = require('./chunk-SNAUKDDK.cjs');
@@ -60,5 +66,11 @@ require('./chunk-GBENOENJ.cjs');
60
66
 
61
67
 
62
68
 
63
- exports.ALLOWED_PUBLIC_HEADERS = _chunkB6BP74X3cjs.ALLOWED_PUBLIC_HEADERS; exports.ActorsSchema = _chunkB6BP74X3cjs.ActorsSchema; exports.DriverConfigSchema = _chunkB6BP74X3cjs.DriverConfigSchema; exports.InlineWebSocketAdapter = _chunkLYYTV7DNcjs.InlineWebSocketAdapter; exports.KV_KEYS = _chunkB6BP74X3cjs.KEYS; exports.PATH_CONNECT = _chunkB6BP74X3cjs.PATH_CONNECT; exports.PATH_WEBSOCKET_PREFIX = _chunkB6BP74X3cjs.PATH_WEBSOCKET_PREFIX; exports.Registry = _chunkG4N7FZMMcjs.Registry; exports.RegistryConfigSchema = _chunkB6BP74X3cjs.RegistryConfigSchema; exports.TestConfigSchema = _chunkB6BP74X3cjs.TestConfigSchema; exports.UserError = _chunkSNAUKDDKcjs.UserError; exports.actor = _chunkG4N7FZMMcjs.actor; exports.buildActorNames = _chunkB6BP74X3cjs.buildActorNames; exports.createActorRouter = _chunkLYYTV7DNcjs.createActorRouter; exports.createClientWithDriver = _chunk5VVIFC6Mcjs.createClientWithDriver; exports.createEngineDriver = _chunkG4N7FZMMcjs.createEngineDriver; exports.createFileSystemDriver = _chunkLYYTV7DNcjs.createFileSystemDriver; exports.createMemoryDriver = _chunkLYYTV7DNcjs.createMemoryDriver; exports.lookupInRegistry = _chunk5VVIFC6Mcjs.lookupInRegistry; exports.noopNext = _chunkX5IX3YPOcjs.noopNext; exports.routeWebSocket = _chunkB6BP74X3cjs.routeWebSocket; exports.setup = _chunkG4N7FZMMcjs.setup; exports.toUint8Array = _chunkX5IX3YPOcjs.toUint8Array;
69
+
70
+
71
+
72
+
73
+
74
+
75
+ exports.ALLOWED_PUBLIC_HEADERS = _chunkKMYFL3OLcjs.ALLOWED_PUBLIC_HEADERS; exports.ActorKv = _chunkKMYFL3OLcjs.ActorKv; exports.ActorsSchema = _chunkKMYFL3OLcjs.ActorsSchema; exports.DocConfigureRunnerPoolSchema = _chunkKMYFL3OLcjs.DocConfigureRunnerPoolSchema; exports.DocInspectorConfigSchema = _chunkKMYFL3OLcjs.DocInspectorConfigSchema; exports.DocRegistryConfigSchema = _chunkKMYFL3OLcjs.DocRegistryConfigSchema; exports.DocRunnerConfigSchema = _chunkKMYFL3OLcjs.DocRunnerConfigSchema; exports.DocServerlessConfigSchema = _chunkKMYFL3OLcjs.DocServerlessConfigSchema; exports.DriverConfigSchema = _chunkKMYFL3OLcjs.DriverConfigSchema; exports.InlineWebSocketAdapter = _chunkDY4H3ASEcjs.InlineWebSocketAdapter; exports.KV_KEYS = _chunkKMYFL3OLcjs.KEYS; exports.PATH_CONNECT = _chunkKMYFL3OLcjs.PATH_CONNECT; exports.PATH_WEBSOCKET_PREFIX = _chunkKMYFL3OLcjs.PATH_WEBSOCKET_PREFIX; exports.Registry = _chunk7E3RWMR6cjs.Registry; exports.RegistryConfigSchema = _chunkKMYFL3OLcjs.RegistryConfigSchema; exports.TestConfigSchema = _chunkKMYFL3OLcjs.TestConfigSchema; exports.UserError = _chunkSNAUKDDKcjs.UserError; exports.actor = _chunk7E3RWMR6cjs.actor; exports.buildActorNames = _chunkKMYFL3OLcjs.buildActorNames; exports.createActorRouter = _chunkDY4H3ASEcjs.createActorRouter; exports.createClientWithDriver = _chunkUAX5E3EUcjs.createClientWithDriver; exports.createEngineDriver = _chunk7E3RWMR6cjs.createEngineDriver; exports.createFileSystemDriver = _chunkDY4H3ASEcjs.createFileSystemDriver; exports.createMemoryDriver = _chunkDY4H3ASEcjs.createMemoryDriver; exports.lookupInRegistry = _chunkUAX5E3EUcjs.lookupInRegistry; exports.noopNext = _chunkX72X7I7Tcjs.noopNext; exports.routeWebSocket = _chunkKMYFL3OLcjs.routeWebSocket; exports.setup = _chunk7E3RWMR6cjs.setup; exports.toUint8Array = _chunkX72X7I7Tcjs.toUint8Array;
64
76
  //# sourceMappingURL=mod.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/mod.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,22CAAC","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/mod.cjs"}
1
+ {"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/mod.cjs"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACF,wDAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACF,wDAA6B;AAC7B;AACE;AACF,wDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,qyDAAC","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/mod.cjs"}
@@ -1,16 +1,16 @@
1
- import { R as RegistryConfig, A as ActorDriver, a as AnyConn, b as AnyActorInstance, E as Encoding, c as AnyDatabaseProvider, d as Actions, e as ActorConfigInput, f as ActorDefinition } from './config--NjwiYlS.cjs';
2
- export { y as ActionContext, z as ActionContextOf, q as ActorConfig, o as ActorConfigSchema, r as ActorContext, s as ActorContextOf, j as ActorKey, i as ActorQuery, n as ActorTypes, a9 as ActorsSchema, l as AnyActorDefinition, g as AnyClient, p as AuthIntent, B as BeforeActionResponseContext, D as BeforeActionResponseContextOf, F as BeforeConnectContext, G as BeforeConnectContextOf, C as Client, k as Conn, u as ConnContext, v as ConnContextOf, w as ConnInitContext, x as ConnInitContextOf, H as ConnectContext, I as ConnectContextOf, L as CreateConnStateContext, M as CreateConnStateContextOf, J as CreateContext, K as CreateContextOf, N as CreateVarsContext, O as CreateVarsContextOf, P as DestroyContext, Q as DestroyContextOf, S as DisconnectContext, T as DisconnectContextOf, a4 as FetchHandler, a6 as LegacyStartServerOutput, a7 as Registry, a2 as RegistryActors, ac as RegistryConfigInput, a3 as RegistryConfigSchema, U as RequestContext, V as RequestContextOf, a5 as ServerlessHandler, W as SleepContext, X as SleepContextOf, Y as StateChangeContext, Z as StateChangeContextOf, ab as TestConfig, aa as TestConfigSchema, _ as WakeContext, $ as WakeContextOf, a0 as WebSocketContext, a1 as WebSocketContextOf, ad as buildActorNames, h as createClientWithDriver, m as lookupInRegistry, a8 as setup, t as test } from './config--NjwiYlS.cjs';
1
+ import { R as RegistryConfig, A as ActorDriver, a as AnyConn, b as AnyActorInstance, E as Encoding, c as AnyDatabaseProvider, d as Actions, e as ActorConfigInput, f as ActorDefinition } from './config-BuBlMs6C.cjs';
2
+ export { B as ActionContext, F as ActionContextOf, r as ActorConfig, p as ActorConfigSchema, u as ActorContext, v as ActorContextOf, j as ActorKey, n as ActorKv, i as ActorQuery, o as ActorTypes, ac as ActorsSchema, l as AnyActorDefinition, g as AnyClient, q as AuthIntent, G as BeforeActionResponseContext, H as BeforeActionResponseContextOf, I as BeforeConnectContext, J as BeforeConnectContextOf, C as Client, k as Conn, w as ConnContext, x as ConnContextOf, y as ConnInitContext, z as ConnInitContextOf, K as ConnectContext, L as ConnectContextOf, O as CreateConnStateContext, P as CreateConnStateContextOf, M as CreateContext, N as CreateContextOf, Q as CreateVarsContext, S as CreateVarsContextOf, T as DestroyContext, U as DestroyContextOf, V as DisconnectContext, W as DisconnectContextOf, s as DocActorConfigSchema, D as DocActorOptionsSchema, ai as DocConfigureRunnerPoolSchema, ah as DocInspectorConfigSchema, al as DocRegistryConfigSchema, ak as DocRunnerConfigSchema, aj as DocServerlessConfigSchema, a7 as FetchHandler, a9 as LegacyStartServerOutput, aa as Registry, a5 as RegistryActors, af as RegistryConfigInput, a6 as RegistryConfigSchema, X as RequestContext, Y as RequestContextOf, a8 as ServerlessHandler, Z as SleepContext, _ as SleepContextOf, $ as StateChangeContext, a0 as StateChangeContextOf, ae as TestConfig, ad as TestConfigSchema, a1 as WakeContext, a2 as WakeContextOf, a3 as WebSocketContext, a4 as WebSocketContextOf, ag as buildActorNames, h as createClientWithDriver, m as lookupInRegistry, ab as setup, t as test } from './config-BuBlMs6C.cjs';
3
3
  import { WSContext } from 'hono/ws';
4
4
  import { UniversalWebSocket } from '@rivetkit/virtual-websocket';
5
5
  export { RivetCloseEvent, RivetEvent, RivetMessageEvent, UniversalWebSocket } from '@rivetkit/virtual-websocket';
6
6
  export { n as noopNext } from './utils-fwx3o3K9.cjs';
7
- import { D as DriverConfig } from './driver-yKjYx9Yy.cjs';
8
- export { a as DriverConfigSchema } from './driver-yKjYx9Yy.cjs';
7
+ import { D as DriverConfig } from './driver-CPXmh8f8.cjs';
8
+ export { a as DriverConfigSchema } from './driver-CPXmh8f8.cjs';
9
9
  import { GetUpgradeWebSocket } from './utils.cjs';
10
10
  export { toUint8Array } from './utils.cjs';
11
11
  export { A as ALLOWED_PUBLIC_HEADERS, P as PATH_CONNECT, a as PATH_WEBSOCKET_PREFIX } from './actor-router-consts-DzI2szci.cjs';
12
12
  export { UserError, UserErrorOptions } from './actor/errors.cjs';
13
- export { K as KV_KEYS } from './kv-CTM8sCvx.cjs';
13
+ export { K as KV_KEYS } from './keys-Chhy4ylv.cjs';
14
14
  import { Hono } from 'hono';
15
15
  import 'zod';
16
16
  import 'vbare';
@@ -1,16 +1,16 @@
1
- import { R as RegistryConfig, A as ActorDriver, a as AnyConn, b as AnyActorInstance, E as Encoding, c as AnyDatabaseProvider, d as Actions, e as ActorConfigInput, f as ActorDefinition } from './config-CRuzI6n4.js';
2
- export { y as ActionContext, z as ActionContextOf, q as ActorConfig, o as ActorConfigSchema, r as ActorContext, s as ActorContextOf, j as ActorKey, i as ActorQuery, n as ActorTypes, a9 as ActorsSchema, l as AnyActorDefinition, g as AnyClient, p as AuthIntent, B as BeforeActionResponseContext, D as BeforeActionResponseContextOf, F as BeforeConnectContext, G as BeforeConnectContextOf, C as Client, k as Conn, u as ConnContext, v as ConnContextOf, w as ConnInitContext, x as ConnInitContextOf, H as ConnectContext, I as ConnectContextOf, L as CreateConnStateContext, M as CreateConnStateContextOf, J as CreateContext, K as CreateContextOf, N as CreateVarsContext, O as CreateVarsContextOf, P as DestroyContext, Q as DestroyContextOf, S as DisconnectContext, T as DisconnectContextOf, a4 as FetchHandler, a6 as LegacyStartServerOutput, a7 as Registry, a2 as RegistryActors, ac as RegistryConfigInput, a3 as RegistryConfigSchema, U as RequestContext, V as RequestContextOf, a5 as ServerlessHandler, W as SleepContext, X as SleepContextOf, Y as StateChangeContext, Z as StateChangeContextOf, ab as TestConfig, aa as TestConfigSchema, _ as WakeContext, $ as WakeContextOf, a0 as WebSocketContext, a1 as WebSocketContextOf, ad as buildActorNames, h as createClientWithDriver, m as lookupInRegistry, a8 as setup, t as test } from './config-CRuzI6n4.js';
1
+ import { R as RegistryConfig, A as ActorDriver, a as AnyConn, b as AnyActorInstance, E as Encoding, c as AnyDatabaseProvider, d as Actions, e as ActorConfigInput, f as ActorDefinition } from './config-CBwo4ooA.js';
2
+ export { B as ActionContext, F as ActionContextOf, r as ActorConfig, p as ActorConfigSchema, u as ActorContext, v as ActorContextOf, j as ActorKey, n as ActorKv, i as ActorQuery, o as ActorTypes, ac as ActorsSchema, l as AnyActorDefinition, g as AnyClient, q as AuthIntent, G as BeforeActionResponseContext, H as BeforeActionResponseContextOf, I as BeforeConnectContext, J as BeforeConnectContextOf, C as Client, k as Conn, w as ConnContext, x as ConnContextOf, y as ConnInitContext, z as ConnInitContextOf, K as ConnectContext, L as ConnectContextOf, O as CreateConnStateContext, P as CreateConnStateContextOf, M as CreateContext, N as CreateContextOf, Q as CreateVarsContext, S as CreateVarsContextOf, T as DestroyContext, U as DestroyContextOf, V as DisconnectContext, W as DisconnectContextOf, s as DocActorConfigSchema, D as DocActorOptionsSchema, ai as DocConfigureRunnerPoolSchema, ah as DocInspectorConfigSchema, al as DocRegistryConfigSchema, ak as DocRunnerConfigSchema, aj as DocServerlessConfigSchema, a7 as FetchHandler, a9 as LegacyStartServerOutput, aa as Registry, a5 as RegistryActors, af as RegistryConfigInput, a6 as RegistryConfigSchema, X as RequestContext, Y as RequestContextOf, a8 as ServerlessHandler, Z as SleepContext, _ as SleepContextOf, $ as StateChangeContext, a0 as StateChangeContextOf, ae as TestConfig, ad as TestConfigSchema, a1 as WakeContext, a2 as WakeContextOf, a3 as WebSocketContext, a4 as WebSocketContextOf, ag as buildActorNames, h as createClientWithDriver, m as lookupInRegistry, ab as setup, t as test } from './config-CBwo4ooA.js';
3
3
  import { WSContext } from 'hono/ws';
4
4
  import { UniversalWebSocket } from '@rivetkit/virtual-websocket';
5
5
  export { RivetCloseEvent, RivetEvent, RivetMessageEvent, UniversalWebSocket } from '@rivetkit/virtual-websocket';
6
6
  export { n as noopNext } from './utils-fwx3o3K9.js';
7
- import { D as DriverConfig } from './driver-BcmckRaF.js';
8
- export { a as DriverConfigSchema } from './driver-BcmckRaF.js';
7
+ import { D as DriverConfig } from './driver-DxWa6HUO.js';
8
+ export { a as DriverConfigSchema } from './driver-DxWa6HUO.js';
9
9
  import { GetUpgradeWebSocket } from './utils.js';
10
10
  export { toUint8Array } from './utils.js';
11
11
  export { A as ALLOWED_PUBLIC_HEADERS, P as PATH_CONNECT, a as PATH_WEBSOCKET_PREFIX } from './actor-router-consts-DzI2szci.js';
12
12
  export { UserError, UserErrorOptions } from './actor/errors.js';
13
- export { K as KV_KEYS } from './kv-CTM8sCvx.js';
13
+ export { K as KV_KEYS } from './keys-Chhy4ylv.js';
14
14
  import { Hono } from 'hono';
15
15
  import 'zod';
16
16
  import 'vbare';
package/dist/tsup/mod.js CHANGED
@@ -3,21 +3,27 @@ import {
3
3
  actor,
4
4
  createEngineDriver,
5
5
  setup
6
- } from "./chunk-J6TX5EFW.js";
6
+ } from "./chunk-BQ36VTSB.js";
7
7
  import {
8
8
  InlineWebSocketAdapter,
9
9
  createActorRouter,
10
10
  createFileSystemDriver,
11
11
  createMemoryDriver
12
- } from "./chunk-FIUSIG6J.js";
12
+ } from "./chunk-T7IPDBWH.js";
13
13
  import {
14
14
  createClientWithDriver,
15
15
  lookupInRegistry
16
- } from "./chunk-ZQBSQ6H3.js";
17
- import "./chunk-RXA3ZMCL.js";
16
+ } from "./chunk-XU74APB4.js";
17
+ import "./chunk-PHCD25XO.js";
18
18
  import {
19
19
  ALLOWED_PUBLIC_HEADERS,
20
+ ActorKv,
20
21
  ActorsSchema,
22
+ DocConfigureRunnerPoolSchema,
23
+ DocInspectorConfigSchema,
24
+ DocRegistryConfigSchema,
25
+ DocRunnerConfigSchema,
26
+ DocServerlessConfigSchema,
21
27
  DriverConfigSchema,
22
28
  KEYS,
23
29
  PATH_CONNECT,
@@ -26,18 +32,24 @@ import {
26
32
  TestConfigSchema,
27
33
  buildActorNames,
28
34
  routeWebSocket
29
- } from "./chunk-5XGZXH74.js";
35
+ } from "./chunk-PVKUXMOA.js";
30
36
  import "./chunk-E6ZE2YEA.js";
31
37
  import {
32
38
  noopNext,
33
39
  toUint8Array
34
- } from "./chunk-XI335ZED.js";
40
+ } from "./chunk-CDK6DRO2.js";
35
41
  import {
36
42
  UserError
37
43
  } from "./chunk-2YHR67M4.js";
38
44
  export {
39
45
  ALLOWED_PUBLIC_HEADERS,
46
+ ActorKv,
40
47
  ActorsSchema,
48
+ DocConfigureRunnerPoolSchema,
49
+ DocInspectorConfigSchema,
50
+ DocRegistryConfigSchema,
51
+ DocRunnerConfigSchema,
52
+ DocServerlessConfigSchema,
41
53
  DriverConfigSchema,
42
54
  InlineWebSocketAdapter,
43
55
  KEYS as KV_KEYS,
@@ -1,17 +1,17 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunk22NKW7F5cjs = require('../chunk-22NKW7F5.cjs');
5
- require('../chunk-LYYTV7DN.cjs');
6
- require('../chunk-5VVIFC6M.cjs');
7
- require('../chunk-4V7MS7SO.cjs');
8
- require('../chunk-B6BP74X3.cjs');
4
+ var _chunkMZPYVTVGcjs = require('../chunk-MZPYVTVG.cjs');
5
+ require('../chunk-DY4H3ASE.cjs');
6
+ require('../chunk-UAX5E3EU.cjs');
7
+ require('../chunk-C64FV764.cjs');
8
+ require('../chunk-KMYFL3OL.cjs');
9
9
  require('../chunk-KDFWJKMJ.cjs');
10
- require('../chunk-X5IX3YPO.cjs');
10
+ require('../chunk-X72X7I7T.cjs');
11
11
  require('../chunk-SNAUKDDK.cjs');
12
12
  require('../chunk-GBENOENJ.cjs');
13
13
 
14
14
 
15
15
 
16
- exports.getPort = _chunk22NKW7F5cjs.getPort; exports.setupTest = _chunk22NKW7F5cjs.setupTest;
16
+ exports.getPort = _chunkMZPYVTVGcjs.getPort; exports.setupTest = _chunkMZPYVTVGcjs.setupTest;
17
17
  //# sourceMappingURL=mod.cjs.map
@@ -1,5 +1,5 @@
1
1
  import { TestContext } from 'vitest';
2
- import { a7 as Registry, C as Client } from '../config--NjwiYlS.cjs';
2
+ import { aa as Registry, C as Client } from '../config-BuBlMs6C.cjs';
3
3
  import 'zod';
4
4
  import '@rivetkit/virtual-websocket';
5
5
  import 'hono';
@@ -1,5 +1,5 @@
1
1
  import { TestContext } from 'vitest';
2
- import { a7 as Registry, C as Client } from '../config-CRuzI6n4.js';
2
+ import { aa as Registry, C as Client } from '../config-CBwo4ooA.js';
3
3
  import 'zod';
4
4
  import '@rivetkit/virtual-websocket';
5
5
  import 'hono';
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  getPort,
3
3
  setupTest
4
- } from "../chunk-RBA5AQTB.js";
5
- import "../chunk-FIUSIG6J.js";
6
- import "../chunk-ZQBSQ6H3.js";
7
- import "../chunk-RXA3ZMCL.js";
8
- import "../chunk-5XGZXH74.js";
4
+ } from "../chunk-OJZRCEIA.js";
5
+ import "../chunk-T7IPDBWH.js";
6
+ import "../chunk-XU74APB4.js";
7
+ import "../chunk-PHCD25XO.js";
8
+ import "../chunk-PVKUXMOA.js";
9
9
  import "../chunk-E6ZE2YEA.js";
10
- import "../chunk-XI335ZED.js";
10
+ import "../chunk-CDK6DRO2.js";
11
11
  import "../chunk-2YHR67M4.js";
12
12
  export {
13
13
  getPort,
@@ -14,7 +14,7 @@
14
14
 
15
15
 
16
16
 
17
- var _chunkX5IX3YPOcjs = require('./chunk-X5IX3YPO.cjs');
17
+ var _chunkX72X7I7Tcjs = require('./chunk-X72X7I7T.cjs');
18
18
  require('./chunk-SNAUKDDK.cjs');
19
19
  require('./chunk-GBENOENJ.cjs');
20
20
 
@@ -33,5 +33,5 @@ require('./chunk-GBENOENJ.cjs');
33
33
 
34
34
 
35
35
 
36
- exports.EXTRA_ERROR_LOG = _chunkX5IX3YPOcjs.EXTRA_ERROR_LOG; exports.SinglePromiseQueue = _chunkX5IX3YPOcjs.SinglePromiseQueue; exports.VERSION = _chunkX5IX3YPOcjs.VERSION; exports.arrayBuffersEqual = _chunkX5IX3YPOcjs.arrayBuffersEqual; exports.assertUnreachable = _chunkX5IX3YPOcjs.assertUnreachable; exports.bufferToArrayBuffer = _chunkX5IX3YPOcjs.bufferToArrayBuffer; exports.combineUrlPath = _chunkX5IX3YPOcjs.combineUrlPath; exports.dbg = _chunkX5IX3YPOcjs.dbg; exports.detectRuntime = _chunkX5IX3YPOcjs.detectRuntime; exports.getEnvUniversal = _chunkX5IX3YPOcjs.getEnvUniversal; exports.httpUserAgent = _chunkX5IX3YPOcjs.httpUserAgent; exports.promiseWithResolvers = _chunkX5IX3YPOcjs.promiseWithResolvers; exports.setLongTimeout = _chunkX5IX3YPOcjs.setLongTimeout; exports.stringifyError = _chunkX5IX3YPOcjs.stringifyError; exports.toUint8Array = _chunkX5IX3YPOcjs.toUint8Array;
36
+ exports.EXTRA_ERROR_LOG = _chunkX72X7I7Tcjs.EXTRA_ERROR_LOG; exports.SinglePromiseQueue = _chunkX72X7I7Tcjs.SinglePromiseQueue; exports.VERSION = _chunkX72X7I7Tcjs.VERSION; exports.arrayBuffersEqual = _chunkX72X7I7Tcjs.arrayBuffersEqual; exports.assertUnreachable = _chunkX72X7I7Tcjs.assertUnreachable; exports.bufferToArrayBuffer = _chunkX72X7I7Tcjs.bufferToArrayBuffer; exports.combineUrlPath = _chunkX72X7I7Tcjs.combineUrlPath; exports.dbg = _chunkX72X7I7Tcjs.dbg; exports.detectRuntime = _chunkX72X7I7Tcjs.detectRuntime; exports.getEnvUniversal = _chunkX72X7I7Tcjs.getEnvUniversal; exports.httpUserAgent = _chunkX72X7I7Tcjs.httpUserAgent; exports.promiseWithResolvers = _chunkX72X7I7Tcjs.promiseWithResolvers; exports.setLongTimeout = _chunkX72X7I7Tcjs.setLongTimeout; exports.stringifyError = _chunkX72X7I7Tcjs.stringifyError; exports.toUint8Array = _chunkX72X7I7Tcjs.toUint8Array;
37
37
  //# sourceMappingURL=utils.cjs.map
@@ -14,7 +14,7 @@ import {
14
14
  setLongTimeout,
15
15
  stringifyError,
16
16
  toUint8Array
17
- } from "./chunk-XI335ZED.js";
17
+ } from "./chunk-CDK6DRO2.js";
18
18
  import "./chunk-2YHR67M4.js";
19
19
  export {
20
20
  EXTRA_ERROR_LOG,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rivetkit",
3
- "version": "2.0.37",
3
+ "version": "2.0.39",
4
4
  "description": "Lightweight libraries for building stateful actors on edge platforms",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -167,7 +167,7 @@
167
167
  "uuid": "^12.0.0",
168
168
  "vbare": "^0.0.4",
169
169
  "zod": "^4.1.0",
170
- "@rivetkit/engine-runner": "2.0.37",
170
+ "@rivetkit/engine-runner": "2.0.39",
171
171
  "@rivetkit/virtual-websocket": "2.0.33"
172
172
  },
173
173
  "devDependencies": {
@@ -221,7 +221,9 @@
221
221
  "format:write": "biome format --write .",
222
222
  "test": "vitest run",
223
223
  "test:watch": "vitest",
224
- "dump-openapi": "tsx scripts/dump-openapi.ts",
225
- "dump-asyncapi": "tsx scripts/dump-asyncapi.ts"
224
+ "manager-openapi-gen": "tsx scripts/manager-openapi-gen.ts",
225
+ "dump-asyncapi": "tsx scripts/dump-asyncapi.ts",
226
+ "registry-config-schema-gen": "tsx scripts/registry-config-schema-gen.ts",
227
+ "actor-config-schema-gen": "tsx scripts/actor-config-schema-gen.ts"
226
228
  }
227
229
  }
@@ -132,7 +132,14 @@ export const ActorConfigSchema = z
132
132
  // This must have only one or the other or else TState will not be able to be inferred
133
133
  //
134
134
  // Data returned from this handler will be available on `c.state`.
135
- type CreateState<TState, TConnParams, TConnState, TVars, TInput, TDatabase extends AnyDatabaseProvider> =
135
+ type CreateState<
136
+ TState,
137
+ TConnParams,
138
+ TConnState,
139
+ TVars,
140
+ TInput,
141
+ TDatabase extends AnyDatabaseProvider,
142
+ > =
136
143
  | { state: TState }
137
144
  | {
138
145
  createState: (
@@ -458,7 +465,7 @@ interface BaseActorConfig<
458
465
  websocket: UniversalWebSocket,
459
466
  ) => void | Promise<void>;
460
467
 
461
- actions: TActions;
468
+ actions?: TActions;
462
469
  }
463
470
 
464
471
  type ActorDatabaseConfig<TDatabase extends AnyDatabaseProvider> =
@@ -613,3 +620,192 @@ export function test<
613
620
  >;
614
621
  return config;
615
622
  }
623
+
624
+ // MARK: Documentation Schema
625
+ // This schema is JSON-serializable for documentation generation.
626
+ // It excludes function types and focuses on the configurable options.
627
+
628
+ export const DocActorOptionsSchema = z
629
+ .object({
630
+ createVarsTimeout: z
631
+ .number()
632
+ .optional()
633
+ .describe("Timeout in ms for createVars handler. Default: 5000"),
634
+ createConnStateTimeout: z
635
+ .number()
636
+ .optional()
637
+ .describe(
638
+ "Timeout in ms for createConnState handler. Default: 5000",
639
+ ),
640
+ onConnectTimeout: z
641
+ .number()
642
+ .optional()
643
+ .describe("Timeout in ms for onConnect handler. Default: 5000"),
644
+ onSleepTimeout: z
645
+ .number()
646
+ .optional()
647
+ .describe(
648
+ "Timeout in ms for onSleep handler. Must be less than ACTOR_STOP_THRESHOLD_MS. Default: 5000",
649
+ ),
650
+ onDestroyTimeout: z
651
+ .number()
652
+ .optional()
653
+ .describe("Timeout in ms for onDestroy handler. Default: 5000"),
654
+ stateSaveInterval: z
655
+ .number()
656
+ .optional()
657
+ .describe(
658
+ "Interval in ms between automatic state saves. Default: 10000",
659
+ ),
660
+ actionTimeout: z
661
+ .number()
662
+ .optional()
663
+ .describe("Timeout in ms for action handlers. Default: 60000"),
664
+ waitUntilTimeout: z
665
+ .number()
666
+ .optional()
667
+ .describe(
668
+ "Max time in ms to wait for waitUntil background promises during shutdown. Default: 15000",
669
+ ),
670
+ connectionLivenessTimeout: z
671
+ .number()
672
+ .optional()
673
+ .describe(
674
+ "Timeout in ms for connection liveness checks. Default: 2500",
675
+ ),
676
+ connectionLivenessInterval: z
677
+ .number()
678
+ .optional()
679
+ .describe(
680
+ "Interval in ms between connection liveness checks. Default: 5000",
681
+ ),
682
+ noSleep: z
683
+ .boolean()
684
+ .optional()
685
+ .describe("If true, the actor will never sleep. Default: false"),
686
+ sleepTimeout: z
687
+ .number()
688
+ .optional()
689
+ .describe(
690
+ "Time in ms of inactivity before the actor sleeps. Default: 30000",
691
+ ),
692
+ canHibernateWebSocket: z
693
+ .boolean()
694
+ .optional()
695
+ .describe(
696
+ "Whether WebSockets using onWebSocket can be hibernated. WebSockets using actions/events are hibernatable by default. Default: false",
697
+ ),
698
+ })
699
+ .describe("Actor options for timeouts and behavior configuration.");
700
+
701
+ export const DocActorConfigSchema = z
702
+ .object({
703
+ state: z
704
+ .unknown()
705
+ .optional()
706
+ .describe(
707
+ "Initial state value for the actor. Cannot be used with createState.",
708
+ ),
709
+ createState: z
710
+ .unknown()
711
+ .optional()
712
+ .describe(
713
+ "Function to create initial state. Receives context and input. Cannot be used with state.",
714
+ ),
715
+ connState: z
716
+ .unknown()
717
+ .optional()
718
+ .describe(
719
+ "Initial connection state value. Cannot be used with createConnState.",
720
+ ),
721
+ createConnState: z
722
+ .unknown()
723
+ .optional()
724
+ .describe(
725
+ "Function to create connection state. Receives context and connection params. Cannot be used with connState.",
726
+ ),
727
+ vars: z
728
+ .unknown()
729
+ .optional()
730
+ .describe(
731
+ "Initial ephemeral variables value. Cannot be used with createVars.",
732
+ ),
733
+ createVars: z
734
+ .unknown()
735
+ .optional()
736
+ .describe(
737
+ "Function to create ephemeral variables. Receives context and driver context. Cannot be used with vars.",
738
+ ),
739
+ db: z
740
+ .unknown()
741
+ .optional()
742
+ .describe("Database provider instance for the actor."),
743
+ onCreate: z
744
+ .unknown()
745
+ .optional()
746
+ .describe(
747
+ "Called when the actor is first initialized. Use to initialize state.",
748
+ ),
749
+ onDestroy: z
750
+ .unknown()
751
+ .optional()
752
+ .describe("Called when the actor is destroyed."),
753
+ onWake: z
754
+ .unknown()
755
+ .optional()
756
+ .describe(
757
+ "Called when the actor wakes up and is ready to receive connections and actions.",
758
+ ),
759
+ onSleep: z
760
+ .unknown()
761
+ .optional()
762
+ .describe(
763
+ "Called when the actor is stopping or sleeping. Use to clean up resources.",
764
+ ),
765
+ onStateChange: z
766
+ .unknown()
767
+ .optional()
768
+ .describe(
769
+ "Called when the actor's state changes. State changes within this hook won't trigger recursion.",
770
+ ),
771
+ onBeforeConnect: z
772
+ .unknown()
773
+ .optional()
774
+ .describe(
775
+ "Called before a client connects. Throw an error to reject the connection.",
776
+ ),
777
+ onConnect: z
778
+ .unknown()
779
+ .optional()
780
+ .describe("Called when a client successfully connects."),
781
+ onDisconnect: z
782
+ .unknown()
783
+ .optional()
784
+ .describe("Called when a client disconnects."),
785
+ onBeforeActionResponse: z
786
+ .unknown()
787
+ .optional()
788
+ .describe(
789
+ "Called before sending an action response. Use to transform output.",
790
+ ),
791
+ onRequest: z
792
+ .unknown()
793
+ .optional()
794
+ .describe(
795
+ "Called for raw HTTP requests to /actors/{name}/http/* endpoints.",
796
+ ),
797
+ onWebSocket: z
798
+ .unknown()
799
+ .optional()
800
+ .describe(
801
+ "Called for raw WebSocket connections to /actors/{name}/websocket/* endpoints.",
802
+ ),
803
+ actions: z
804
+ .record(z.string(), z.unknown())
805
+ .optional()
806
+ .describe(
807
+ "Map of action name to handler function. Defaults to an empty object.",
808
+ ),
809
+ options: DocActorOptionsSchema.optional(),
810
+ })
811
+ .describe("Actor configuration passed to the actor() function.");
@@ -6,6 +6,7 @@ import type { Conn, ConnId } from "../../conn/mod";
6
6
  import type { AnyDatabaseProvider, InferDatabaseClient } from "../../database";
7
7
  import type { ActorDefinition, AnyActorDefinition } from "../../definition";
8
8
  import type { ActorInstance, SaveStateOptions } from "../../instance/mod";
9
+ import { ActorKv } from "../../instance/kv";
9
10
  import type { Schedule } from "../../schedule";
10
11
 
11
12
  /**
@@ -27,6 +28,7 @@ export class ActorContext<
27
28
  TInput,
28
29
  TDatabase
29
30
  >;
31
+ #kv: ActorKv | undefined;
30
32
 
31
33
  constructor(
32
34
  actor: ActorInstance<
@@ -41,6 +43,16 @@ export class ActorContext<
41
43
  this.#actor = actor;
42
44
  }
43
45
 
46
+ /**
47
+ * Gets the KV storage interface.
48
+ */
49
+ get kv(): ActorKv {
50
+ if (!this.#kv) {
51
+ this.#kv = new ActorKv(this.#actor.driver, this.#actor.id);
52
+ }
53
+ return this.#kv;
54
+ }
55
+
44
56
  /**
45
57
  * Get the actor state
46
58
  *
@@ -31,7 +31,7 @@ import {
31
31
  import type { AnyDatabaseProvider } from "../database";
32
32
  import { CachedSerializer } from "../protocol/serde";
33
33
  import { deadline } from "../utils";
34
- import { makeConnKey } from "./kv";
34
+ import { makeConnKey } from "./keys";
35
35
  import type { ActorInstance } from "./mod";
36
36
  /**
37
37
  * Manages all connection-related operations for an actor instance.
@@ -0,0 +1,29 @@
1
+ export const KEYS = {
2
+ PERSIST_DATA: Uint8Array.from([1]),
3
+ CONN_PREFIX: Uint8Array.from([2]), // Prefix for connection keys
4
+ INSPECTOR_TOKEN: Uint8Array.from([3]), // Inspector token key
5
+ KV: Uint8Array.from([4]), // Prefix for user-facing KV storage
6
+ };
7
+
8
+ // Helper to create a prefixed key for user-facing KV storage
9
+ export function makePrefixedKey(key: Uint8Array): Uint8Array {
10
+ const prefixed = new Uint8Array(KEYS.KV.length + key.length);
11
+ prefixed.set(KEYS.KV, 0);
12
+ prefixed.set(key, KEYS.KV.length);
13
+ return prefixed;
14
+ }
15
+
16
+ // Helper to remove the prefix from a key
17
+ export function removePrefixFromKey(prefixedKey: Uint8Array): Uint8Array {
18
+ return prefixedKey.slice(KEYS.KV.length);
19
+ }
20
+
21
+ // Helper to create a connection key
22
+ export function makeConnKey(connId: string): Uint8Array {
23
+ const encoder = new TextEncoder();
24
+ const connIdBytes = encoder.encode(connId);
25
+ const key = new Uint8Array(KEYS.CONN_PREFIX.length + connIdBytes.length);
26
+ key.set(KEYS.CONN_PREFIX, 0);
27
+ key.set(connIdBytes, KEYS.CONN_PREFIX.length);
28
+ return key;
29
+ }