rivetkit 2.0.3 → 2.0.5

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 (237) hide show
  1. package/README.md +11 -0
  2. package/dist/schemas/actor-persist/v1.ts +21 -24
  3. package/dist/schemas/client-protocol/v1.ts +6 -0
  4. package/dist/tsup/actor/errors.cjs +10 -2
  5. package/dist/tsup/actor/errors.cjs.map +1 -1
  6. package/dist/tsup/actor/errors.d.cts +17 -4
  7. package/dist/tsup/actor/errors.d.ts +17 -4
  8. package/dist/tsup/actor/errors.js +11 -3
  9. package/dist/tsup/{chunk-4NSUQZ2H.js → chunk-2MD57QF4.js} +119 -115
  10. package/dist/tsup/chunk-2MD57QF4.js.map +1 -0
  11. package/dist/tsup/{chunk-GIR3AFFI.cjs → chunk-5QGQK44L.cjs} +103 -44
  12. package/dist/tsup/chunk-5QGQK44L.cjs.map +1 -0
  13. package/dist/tsup/chunk-5YTI25C3.cjs +250 -0
  14. package/dist/tsup/chunk-5YTI25C3.cjs.map +1 -0
  15. package/dist/tsup/chunk-B2QGJGZQ.js +338 -0
  16. package/dist/tsup/chunk-B2QGJGZQ.js.map +1 -0
  17. package/dist/tsup/{chunk-3H7O2A7I.js → chunk-CFFKMUYH.js} +61 -22
  18. package/dist/tsup/chunk-CFFKMUYH.js.map +1 -0
  19. package/dist/tsup/{chunk-FLMTTN27.js → chunk-CKA54YQN.js} +15 -8
  20. package/dist/tsup/chunk-CKA54YQN.js.map +1 -0
  21. package/dist/tsup/chunk-D7NWUCRK.cjs +20 -0
  22. package/dist/tsup/chunk-D7NWUCRK.cjs.map +1 -0
  23. package/dist/tsup/{chunk-FCCPJNMA.cjs → chunk-FGFT4FVX.cjs} +12 -27
  24. package/dist/tsup/chunk-FGFT4FVX.cjs.map +1 -0
  25. package/dist/tsup/chunk-I5VTWPHW.js +20 -0
  26. package/dist/tsup/chunk-I5VTWPHW.js.map +1 -0
  27. package/dist/tsup/{chunk-6WKQDDUD.cjs → chunk-IRMBWX36.cjs} +146 -142
  28. package/dist/tsup/chunk-IRMBWX36.cjs.map +1 -0
  29. package/dist/tsup/chunk-L7QRXNWP.js +6562 -0
  30. package/dist/tsup/chunk-L7QRXNWP.js.map +1 -0
  31. package/dist/tsup/{chunk-R2OPSKIV.cjs → chunk-LZIBTLEY.cjs} +20 -13
  32. package/dist/tsup/chunk-LZIBTLEY.cjs.map +1 -0
  33. package/dist/tsup/chunk-MRZS2J4X.cjs +6562 -0
  34. package/dist/tsup/chunk-MRZS2J4X.cjs.map +1 -0
  35. package/dist/tsup/{chunk-PO4VLDWA.js → chunk-PG3K2LI7.js} +3 -5
  36. package/dist/tsup/chunk-PG3K2LI7.js.map +1 -0
  37. package/dist/tsup/{chunk-TZJKSBUQ.cjs → chunk-PHSQJ6QI.cjs} +3 -5
  38. package/dist/tsup/chunk-PHSQJ6QI.cjs.map +1 -0
  39. package/dist/tsup/chunk-RM2SVURR.cjs +338 -0
  40. package/dist/tsup/chunk-RM2SVURR.cjs.map +1 -0
  41. package/dist/tsup/{chunk-OGAPU3UG.cjs → chunk-WADSS5X4.cjs} +66 -27
  42. package/dist/tsup/chunk-WADSS5X4.cjs.map +1 -0
  43. package/dist/tsup/chunk-WNGOBAA7.js +250 -0
  44. package/dist/tsup/chunk-WNGOBAA7.js.map +1 -0
  45. package/dist/tsup/{chunk-INGJP237.js → chunk-YPZFLUO6.js} +103 -44
  46. package/dist/tsup/chunk-YPZFLUO6.js.map +1 -0
  47. package/dist/tsup/{chunk-6PDXBYI5.js → chunk-YW6Y6VNE.js} +8 -23
  48. package/dist/tsup/chunk-YW6Y6VNE.js.map +1 -0
  49. package/dist/tsup/client/mod.cjs +10 -10
  50. package/dist/tsup/client/mod.d.cts +7 -13
  51. package/dist/tsup/client/mod.d.ts +7 -13
  52. package/dist/tsup/client/mod.js +9 -9
  53. package/dist/tsup/common/log.cjs +12 -4
  54. package/dist/tsup/common/log.cjs.map +1 -1
  55. package/dist/tsup/common/log.d.cts +23 -17
  56. package/dist/tsup/common/log.d.ts +23 -17
  57. package/dist/tsup/common/log.js +15 -7
  58. package/dist/tsup/common/websocket.cjs +5 -5
  59. package/dist/tsup/common/websocket.js +4 -4
  60. package/dist/tsup/{common-CpqORuCq.d.cts → common-CXCe7s6i.d.cts} +2 -2
  61. package/dist/tsup/{common-CpqORuCq.d.ts → common-CXCe7s6i.d.ts} +2 -2
  62. package/dist/tsup/{connection-BwUMoe6n.d.ts → connection-BvE-Oq7t.d.ts} +215 -234
  63. package/dist/tsup/{connection-BR_Ve4ku.d.cts → connection-DTzmWwU5.d.cts} +215 -234
  64. package/dist/tsup/driver-helpers/mod.cjs +6 -9
  65. package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
  66. package/dist/tsup/driver-helpers/mod.d.cts +5 -6
  67. package/dist/tsup/driver-helpers/mod.d.ts +5 -6
  68. package/dist/tsup/driver-helpers/mod.js +6 -9
  69. package/dist/tsup/driver-test-suite/mod.cjs +615 -1357
  70. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  71. package/dist/tsup/driver-test-suite/mod.d.cts +12 -6
  72. package/dist/tsup/driver-test-suite/mod.d.ts +12 -6
  73. package/dist/tsup/driver-test-suite/mod.js +1334 -2076
  74. package/dist/tsup/driver-test-suite/mod.js.map +1 -1
  75. package/dist/tsup/inspector/mod.cjs +6 -8
  76. package/dist/tsup/inspector/mod.cjs.map +1 -1
  77. package/dist/tsup/inspector/mod.d.cts +3 -3
  78. package/dist/tsup/inspector/mod.d.ts +3 -3
  79. package/dist/tsup/inspector/mod.js +8 -10
  80. package/dist/tsup/mod.cjs +9 -15
  81. package/dist/tsup/mod.cjs.map +1 -1
  82. package/dist/tsup/mod.d.cts +47 -42
  83. package/dist/tsup/mod.d.ts +47 -42
  84. package/dist/tsup/mod.js +10 -16
  85. package/dist/tsup/{router-endpoints-DAbqVFx2.d.ts → router-endpoints-CctffZNL.d.cts} +2 -3
  86. package/dist/tsup/{router-endpoints-AYkXG8Tl.d.cts → router-endpoints-DFm1BglJ.d.ts} +2 -3
  87. package/dist/tsup/test/mod.cjs +10 -14
  88. package/dist/tsup/test/mod.cjs.map +1 -1
  89. package/dist/tsup/test/mod.d.cts +4 -5
  90. package/dist/tsup/test/mod.d.ts +4 -5
  91. package/dist/tsup/test/mod.js +9 -13
  92. package/dist/tsup/{utils-CT0cv4jd.d.ts → utils-fwx3o3K9.d.cts} +1 -0
  93. package/dist/tsup/{utils-CT0cv4jd.d.cts → utils-fwx3o3K9.d.ts} +1 -0
  94. package/dist/tsup/utils.cjs +5 -3
  95. package/dist/tsup/utils.cjs.map +1 -1
  96. package/dist/tsup/utils.d.cts +19 -2
  97. package/dist/tsup/utils.d.ts +19 -2
  98. package/dist/tsup/utils.js +4 -2
  99. package/package.json +6 -6
  100. package/src/actor/action.ts +1 -5
  101. package/src/actor/config.ts +27 -295
  102. package/src/actor/connection.ts +9 -12
  103. package/src/actor/context.ts +1 -4
  104. package/src/actor/definition.ts +7 -11
  105. package/src/actor/errors.ts +98 -36
  106. package/src/actor/generic-conn-driver.ts +28 -16
  107. package/src/actor/instance.ts +177 -133
  108. package/src/actor/log.ts +4 -13
  109. package/src/actor/mod.ts +0 -5
  110. package/src/actor/protocol/old.ts +42 -26
  111. package/src/actor/protocol/serde.ts +1 -1
  112. package/src/actor/router-endpoints.ts +47 -39
  113. package/src/actor/router.ts +22 -19
  114. package/src/actor/unstable-react.ts +1 -1
  115. package/src/actor/utils.ts +6 -2
  116. package/src/client/actor-common.ts +1 -1
  117. package/src/client/actor-conn.ts +152 -91
  118. package/src/client/actor-handle.ts +85 -25
  119. package/src/client/actor-query.ts +65 -0
  120. package/src/client/client.ts +29 -98
  121. package/src/client/config.ts +44 -0
  122. package/src/client/errors.ts +1 -0
  123. package/src/client/log.ts +2 -4
  124. package/src/client/mod.ts +16 -12
  125. package/src/client/raw-utils.ts +82 -25
  126. package/src/client/utils.ts +5 -3
  127. package/src/common/fake-event-source.ts +10 -9
  128. package/src/common/inline-websocket-adapter2.ts +39 -30
  129. package/src/common/log.ts +176 -101
  130. package/src/common/logfmt.ts +21 -30
  131. package/src/common/router.ts +12 -19
  132. package/src/common/utils.ts +27 -13
  133. package/src/common/websocket.ts +0 -1
  134. package/src/driver-helpers/mod.ts +1 -1
  135. package/src/driver-test-suite/log.ts +1 -3
  136. package/src/driver-test-suite/mod.ts +87 -61
  137. package/src/driver-test-suite/test-inline-client-driver.ts +441 -255
  138. package/src/driver-test-suite/tests/actor-error-handling.ts +4 -12
  139. package/src/driver-test-suite/tests/actor-handle.ts +33 -0
  140. package/src/driver-test-suite/tests/actor-inspector.ts +2 -1
  141. package/src/driver-test-suite/tests/manager-driver.ts +5 -3
  142. package/src/driver-test-suite/tests/raw-http-direct-registry.ts +227 -226
  143. package/src/driver-test-suite/tests/raw-websocket-direct-registry.ts +393 -392
  144. package/src/driver-test-suite/tests/request-access.ts +112 -126
  145. package/src/driver-test-suite/utils.ts +10 -6
  146. package/src/drivers/default.ts +7 -4
  147. package/src/drivers/engine/actor-driver.ts +22 -13
  148. package/src/drivers/engine/config.ts +2 -10
  149. package/src/drivers/engine/kv.ts +1 -1
  150. package/src/drivers/engine/log.ts +1 -3
  151. package/src/drivers/engine/mod.ts +2 -3
  152. package/src/drivers/file-system/actor.ts +1 -1
  153. package/src/drivers/file-system/global-state.ts +36 -21
  154. package/src/drivers/file-system/log.ts +1 -3
  155. package/src/drivers/file-system/manager.ts +33 -15
  156. package/src/inspector/config.ts +9 -4
  157. package/src/inspector/log.ts +1 -1
  158. package/src/inspector/manager.ts +2 -2
  159. package/src/inspector/utils.ts +1 -1
  160. package/src/manager/driver.ts +10 -2
  161. package/src/manager/hono-websocket-adapter.ts +21 -12
  162. package/src/manager/log.ts +2 -4
  163. package/src/manager/mod.ts +1 -1
  164. package/src/manager/router.ts +378 -1390
  165. package/src/manager-api/routes/actors-create.ts +16 -0
  166. package/src/manager-api/routes/actors-delete.ts +4 -0
  167. package/src/manager-api/routes/actors-get-by-id.ts +7 -0
  168. package/src/manager-api/routes/actors-get-or-create-by-id.ts +29 -0
  169. package/src/manager-api/routes/actors-get.ts +7 -0
  170. package/src/manager-api/routes/common.ts +18 -0
  171. package/src/mod.ts +0 -2
  172. package/src/registry/config.ts +1 -1
  173. package/src/registry/log.ts +2 -4
  174. package/src/registry/mod.ts +63 -34
  175. package/src/registry/run-config.ts +39 -26
  176. package/src/registry/serve.ts +4 -5
  177. package/src/remote-manager-driver/actor-http-client.ts +74 -0
  178. package/src/remote-manager-driver/actor-websocket-client.ts +64 -0
  179. package/src/remote-manager-driver/api-endpoints.ts +79 -0
  180. package/src/remote-manager-driver/api-utils.ts +46 -0
  181. package/src/remote-manager-driver/log.ts +5 -0
  182. package/src/remote-manager-driver/mod.ts +275 -0
  183. package/src/{drivers/engine → remote-manager-driver}/ws-proxy.ts +24 -14
  184. package/src/serde.ts +8 -2
  185. package/src/test/log.ts +1 -3
  186. package/src/test/mod.ts +17 -16
  187. package/src/utils.ts +53 -0
  188. package/dist/tsup/chunk-2CRLFV6Z.cjs +0 -202
  189. package/dist/tsup/chunk-2CRLFV6Z.cjs.map +0 -1
  190. package/dist/tsup/chunk-3H7O2A7I.js.map +0 -1
  191. package/dist/tsup/chunk-42I3OZ3Q.js +0 -15
  192. package/dist/tsup/chunk-42I3OZ3Q.js.map +0 -1
  193. package/dist/tsup/chunk-4NSUQZ2H.js.map +0 -1
  194. package/dist/tsup/chunk-6PDXBYI5.js.map +0 -1
  195. package/dist/tsup/chunk-6WKQDDUD.cjs.map +0 -1
  196. package/dist/tsup/chunk-CTBOSFUH.cjs +0 -116
  197. package/dist/tsup/chunk-CTBOSFUH.cjs.map +0 -1
  198. package/dist/tsup/chunk-EGVZZFE2.js +0 -2857
  199. package/dist/tsup/chunk-EGVZZFE2.js.map +0 -1
  200. package/dist/tsup/chunk-FCCPJNMA.cjs.map +0 -1
  201. package/dist/tsup/chunk-FLMTTN27.js.map +0 -1
  202. package/dist/tsup/chunk-GIR3AFFI.cjs.map +0 -1
  203. package/dist/tsup/chunk-INGJP237.js.map +0 -1
  204. package/dist/tsup/chunk-KJCJLKRM.js +0 -116
  205. package/dist/tsup/chunk-KJCJLKRM.js.map +0 -1
  206. package/dist/tsup/chunk-KUPQZYUQ.cjs +0 -15
  207. package/dist/tsup/chunk-KUPQZYUQ.cjs.map +0 -1
  208. package/dist/tsup/chunk-O2MBYIXO.cjs +0 -2857
  209. package/dist/tsup/chunk-O2MBYIXO.cjs.map +0 -1
  210. package/dist/tsup/chunk-OGAPU3UG.cjs.map +0 -1
  211. package/dist/tsup/chunk-OV6AYD4S.js +0 -4406
  212. package/dist/tsup/chunk-OV6AYD4S.js.map +0 -1
  213. package/dist/tsup/chunk-PO4VLDWA.js.map +0 -1
  214. package/dist/tsup/chunk-R2OPSKIV.cjs.map +0 -1
  215. package/dist/tsup/chunk-TZJKSBUQ.cjs.map +0 -1
  216. package/dist/tsup/chunk-UBUC5C3G.cjs +0 -189
  217. package/dist/tsup/chunk-UBUC5C3G.cjs.map +0 -1
  218. package/dist/tsup/chunk-UIM22YJL.cjs +0 -4406
  219. package/dist/tsup/chunk-UIM22YJL.cjs.map +0 -1
  220. package/dist/tsup/chunk-URVFQMYI.cjs +0 -230
  221. package/dist/tsup/chunk-URVFQMYI.cjs.map +0 -1
  222. package/dist/tsup/chunk-UVUPOS46.js +0 -230
  223. package/dist/tsup/chunk-UVUPOS46.js.map +0 -1
  224. package/dist/tsup/chunk-VRRHBNJC.js +0 -189
  225. package/dist/tsup/chunk-VRRHBNJC.js.map +0 -1
  226. package/dist/tsup/chunk-XFSS33EQ.js +0 -202
  227. package/dist/tsup/chunk-XFSS33EQ.js.map +0 -1
  228. package/src/client/http-client-driver.ts +0 -326
  229. package/src/driver-test-suite/tests/actor-auth.ts +0 -591
  230. package/src/drivers/engine/api-endpoints.ts +0 -128
  231. package/src/drivers/engine/api-utils.ts +0 -70
  232. package/src/drivers/engine/manager-driver.ts +0 -391
  233. package/src/inline-client-driver/log.ts +0 -7
  234. package/src/inline-client-driver/mod.ts +0 -385
  235. package/src/manager/auth.ts +0 -121
  236. /package/src/{drivers/engine → actor}/keys.test.ts +0 -0
  237. /package/src/{drivers/engine → actor}/keys.ts +0 -0
@@ -1,44 +1,38 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
2
2
 
3
- var _chunkFCCPJNMAcjs = require('../chunk-FCCPJNMA.cjs');
3
+ var _chunkFGFT4FVXcjs = require('../chunk-FGFT4FVX.cjs');
4
4
 
5
5
 
6
+ var _chunkD7NWUCRKcjs = require('../chunk-D7NWUCRK.cjs');
6
7
 
7
8
 
8
- var _chunkUIM22YJLcjs = require('../chunk-UIM22YJL.cjs');
9
9
 
10
10
 
11
11
 
12
- var _chunkKUPQZYUQcjs = require('../chunk-KUPQZYUQ.cjs');
12
+ var _chunkMRZS2J4Xcjs = require('../chunk-MRZS2J4X.cjs');
13
13
 
14
14
 
15
- var _chunkURVFQMYIcjs = require('../chunk-URVFQMYI.cjs');
16
15
 
16
+ var _chunkLZIBTLEYcjs = require('../chunk-LZIBTLEY.cjs');
17
17
 
18
18
 
19
- var _chunkO2MBYIXOcjs = require('../chunk-O2MBYIXO.cjs');
20
- require('../chunk-R2OPSKIV.cjs');
19
+ var _chunkPHSQJ6QIcjs = require('../chunk-PHSQJ6QI.cjs');
21
20
 
22
21
 
23
- var _chunkTZJKSBUQcjs = require('../chunk-TZJKSBUQ.cjs');
22
+ var _chunkRM2SVURRcjs = require('../chunk-RM2SVURR.cjs');
24
23
 
25
24
 
26
- var _chunkCTBOSFUHcjs = require('../chunk-CTBOSFUH.cjs');
27
- require('../chunk-UBUC5C3G.cjs');
28
25
 
29
26
 
27
+ var _chunkIRMBWX36cjs = require('../chunk-IRMBWX36.cjs');
30
28
 
31
29
 
30
+ var _chunk5YTI25C3cjs = require('../chunk-5YTI25C3.cjs');
31
+ require('../chunk-WADSS5X4.cjs');
32
32
 
33
- var _chunk6WKQDDUDcjs = require('../chunk-6WKQDDUD.cjs');
34
33
 
35
34
 
36
- var _chunk2CRLFV6Zcjs = require('../chunk-2CRLFV6Z.cjs');
37
- require('../chunk-OGAPU3UG.cjs');
38
-
39
-
40
-
41
- var _chunkGIR3AFFIcjs = require('../chunk-GIR3AFFI.cjs');
35
+ var _chunk5QGQK44Lcjs = require('../chunk-5QGQK44L.cjs');
42
36
 
43
37
  // src/driver-test-suite/mod.ts
44
38
  var _nodeserver = require('@hono/node-server');
@@ -47,168 +41,75 @@ var _bundlerequire = require('bundle-require');
47
41
  var _invariant = require('invariant'); var _invariant2 = _interopRequireDefault(_invariant);
48
42
  var _vitest = require('vitest');
49
43
 
44
+ // src/driver-test-suite/log.ts
45
+ function logger() {
46
+ return _chunk5YTI25C3cjs.getLogger.call(void 0, "test-suite");
47
+ }
48
+
50
49
  // src/driver-test-suite/tests/action-features.ts
51
50
 
52
51
 
53
52
  // src/driver-test-suite/utils.ts
54
- var _path = require('path');
55
53
 
56
54
 
57
55
  // src/driver-test-suite/test-inline-client-driver.ts
58
56
  var _cborx = require('cbor-x'); var cbor = _interopRequireWildcard(_cborx);
59
-
60
- // src/driver-test-suite/log.ts
61
- var LOGGER_NAME = "test-suite";
62
- function logger() {
63
- return _chunk2CRLFV6Zcjs.getLogger.call(void 0, LOGGER_NAME);
64
- }
65
-
66
- // src/driver-test-suite/test-inline-client-driver.ts
67
- function createTestInlineClientDriver(endpoint, transport) {
57
+ function createTestInlineClientDriver(endpoint, encoding, transport) {
68
58
  return {
69
- action: async (_c, actorQuery, encoding, params, name, args) => {
70
- return makeInlineRequest(
71
- endpoint,
72
- encoding,
73
- transport,
74
- "action",
75
- [void 0, actorQuery, encoding, params, name, args]
76
- );
59
+ getForId(input) {
60
+ return makeInlineRequest(endpoint, encoding, transport, "getForId", [
61
+ input
62
+ ]);
63
+ },
64
+ getWithKey(input) {
65
+ return makeInlineRequest(endpoint, encoding, transport, "getWithKey", [
66
+ input
67
+ ]);
77
68
  },
78
- resolveActorId: async (_c, actorQuery, encodingKind, params) => {
69
+ getOrCreateWithKey(input) {
79
70
  return makeInlineRequest(
80
71
  endpoint,
81
- encodingKind,
72
+ encoding,
82
73
  transport,
83
- "resolveActorId",
84
- [void 0, actorQuery, encodingKind, params]
74
+ "getOrCreateWithKey",
75
+ [input]
85
76
  );
86
77
  },
87
- connectWebSocket: async (_c, actorQuery, encodingKind, params) => {
88
- const WebSocket2 = await _chunkTZJKSBUQcjs.importWebSocket.call(void 0, );
89
- logger().debug("creating websocket connection via test inline driver", {
90
- actorQuery,
91
- encodingKind
92
- });
93
- const wsUrl = new URL(
94
- `${endpoint}/registry/.test/inline-driver/connect-websocket`
95
- );
96
- wsUrl.searchParams.set("actorQuery", JSON.stringify(actorQuery));
97
- if (params !== void 0)
98
- wsUrl.searchParams.set("params", JSON.stringify(params));
99
- wsUrl.searchParams.set("encodingKind", encodingKind);
100
- const wsProtocol = wsUrl.protocol === "https:" ? "wss:" : "ws:";
101
- const finalWsUrl = `${wsProtocol}//${wsUrl.host}${wsUrl.pathname}${wsUrl.search}`;
102
- logger().debug("connecting to websocket", { url: finalWsUrl });
103
- const ws = new WebSocket2(finalWsUrl, [
104
- // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
105
- "rivetkit"
78
+ createActor(input) {
79
+ return makeInlineRequest(endpoint, encoding, transport, "createActor", [
80
+ input
106
81
  ]);
107
- return ws;
108
- },
109
- connectSse: async (_c, actorQuery, encodingKind, params) => {
110
- logger().debug("creating sse connection via test inline driver", {
111
- actorQuery,
112
- encodingKind,
113
- params
114
- });
115
- const EventSourceImport = await Promise.resolve().then(() => _interopRequireWildcard(require("eventsource")));
116
- const EventSourceConstructor = EventSourceImport.default || EventSourceImport;
117
- const actorQueryParam = encodeURIComponent(JSON.stringify(actorQuery));
118
- const encodingParam = encodeURIComponent(encodingKind);
119
- const paramsParam = params ? encodeURIComponent(JSON.stringify(params)) : null;
120
- const sseUrl = new URL(
121
- `${endpoint}/registry/.test/inline-driver/connect-sse`
122
- );
123
- sseUrl.searchParams.set("actorQueryRaw", actorQueryParam);
124
- sseUrl.searchParams.set("encodingKind", encodingParam);
125
- if (paramsParam) {
126
- sseUrl.searchParams.set("params", paramsParam);
127
- }
128
- logger().debug("connecting to sse", { url: sseUrl.toString() });
129
- const eventSource = new EventSourceConstructor(sseUrl.toString());
130
- await new Promise((resolve2, reject) => {
131
- eventSource.onopen = () => {
132
- logger().debug("sse connection established");
133
- resolve2();
134
- };
135
- eventSource.onerror = (event) => {
136
- logger().error("sse connection failed", { event });
137
- reject(new Error("Failed to establish SSE connection"));
138
- };
139
- setTimeout(() => {
140
- if (eventSource.readyState !== EventSourceConstructor.OPEN) {
141
- reject(new Error("SSE connection timed out"));
142
- }
143
- }, 1e4);
144
- });
145
- return eventSource;
146
82
  },
147
- sendHttpMessage: async (_c, actorId, encoding, connectionId, connectionToken, message) => {
83
+ async sendRequest(actorId, actorRequest) {
148
84
  var _a;
149
- logger().debug("sending http message via test inline driver", {
85
+ const oldUrl = new URL(actorRequest.url);
86
+ const normalizedPath = oldUrl.pathname.startsWith("/") ? oldUrl.pathname.slice(1) : oldUrl.pathname;
87
+ const pathWithQuery = normalizedPath + oldUrl.search;
88
+ logger().debug({
89
+ msg: "sending raw http request via test inline driver",
150
90
  actorId,
151
91
  encoding,
152
- connectionId,
153
- transport
92
+ path: pathWithQuery
154
93
  });
155
- const result = await fetch(
156
- `${endpoint}/registry/.test/inline-driver/call`,
157
- {
158
- method: "POST",
159
- headers: {
160
- "Content-Type": "application/json"
161
- },
162
- body: JSON.stringify({
163
- encoding,
164
- transport,
165
- method: "sendHttpMessage",
166
- args: [
167
- void 0,
168
- actorId,
169
- encoding,
170
- connectionId,
171
- connectionToken,
172
- message
173
- ]
174
- })
175
- }
94
+ const url = `${endpoint}/.test/inline-driver/send-request/${pathWithQuery}`;
95
+ logger().debug({ msg: "rewriting http url", from: oldUrl, to: url });
96
+ const headers = new Headers(actorRequest.headers);
97
+ headers.set(_chunkIRMBWX36cjs.HEADER_ACTOR_ID, actorId);
98
+ const response = await fetch(
99
+ new Request(url, {
100
+ method: actorRequest.method,
101
+ headers,
102
+ body: actorRequest.body,
103
+ signal: actorRequest.signal
104
+ })
176
105
  );
177
- if (!result.ok) {
178
- throw new Error(`Failed to send HTTP message: ${result.statusText}`);
179
- }
180
- await ((_a = result.body) == null ? void 0 : _a.cancel());
181
- },
182
- rawHttpRequest: async (_c, actorQuery, encoding, params, path, init) => {
183
- var _a;
184
- const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
185
- logger().debug("sending raw http request via test inline driver", {
186
- actorQuery,
187
- encoding,
188
- path: normalizedPath
189
- });
190
- const url = `${endpoint}/registry/.test/inline-driver/raw-http/${normalizedPath}`;
191
- logger().debug("rewriting http url", {
192
- from: path,
193
- to: url
194
- });
195
- const headers = new Headers(init.headers);
196
- headers.set(_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY, JSON.stringify(actorQuery));
197
- headers.set(_chunk6WKQDDUDcjs.HEADER_ENCODING, encoding);
198
- if (params !== void 0) {
199
- headers.set(_chunk6WKQDDUDcjs.HEADER_CONN_PARAMS, JSON.stringify(params));
200
- }
201
- const response = await fetch(url, {
202
- ...init,
203
- headers
204
- });
205
106
  if (!response.ok && ((_a = response.headers.get("content-type")) == null ? void 0 : _a.includes("application/json"))) {
206
107
  try {
207
108
  const clonedResponse = response.clone();
208
109
  const errorData = await clonedResponse.json();
209
110
  if (errorData.error) {
210
111
  if (typeof errorData.error === "object") {
211
- throw new (0, _chunkO2MBYIXOcjs.ActorError)(
112
+ throw new (0, _chunkMRZS2J4Xcjs.ActorError)(
212
113
  errorData.error.code,
213
114
  errorData.error.message,
214
115
  errorData.error.metadata
@@ -216,7 +117,7 @@ function createTestInlineClientDriver(endpoint, transport) {
216
117
  }
217
118
  }
218
119
  } catch (e) {
219
- if (!(e instanceof _chunkO2MBYIXOcjs.ActorError)) {
120
+ if (!(e instanceof _chunkMRZS2J4Xcjs.ActorError)) {
220
121
  return response;
221
122
  }
222
123
  throw e;
@@ -224,70 +125,375 @@ function createTestInlineClientDriver(endpoint, transport) {
224
125
  }
225
126
  return response;
226
127
  },
227
- rawWebSocket: async (_c, actorQuery, encoding, params, path, protocols) => {
228
- logger().debug("test inline driver rawWebSocket called");
229
- const WebSocket2 = await _chunkTZJKSBUQcjs.importWebSocket.call(void 0, );
128
+ async openWebSocket(path, actorId, encoding2, params) {
129
+ const WebSocket2 = await _chunkPHSQJ6QIcjs.importWebSocket.call(void 0, );
230
130
  const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
231
- logger().debug(
232
- "creating raw websocket connection via test inline driver",
233
- {
234
- actorQuery,
235
- encoding,
236
- path: normalizedPath,
237
- protocols
238
- }
239
- );
131
+ logger().debug({
132
+ msg: "creating websocket connection via test inline driver"
133
+ });
240
134
  const wsUrl = new URL(
241
- `${endpoint}/registry/.test/inline-driver/raw-websocket`
135
+ `${endpoint}/.test/inline-driver/connect-websocket/ws`
242
136
  );
243
- wsUrl.searchParams.set("actorQuery", JSON.stringify(actorQuery));
137
+ wsUrl.searchParams.set("path", normalizedPath);
138
+ wsUrl.searchParams.set("actorId", actorId);
244
139
  if (params !== void 0)
245
140
  wsUrl.searchParams.set("params", JSON.stringify(params));
246
- wsUrl.searchParams.set("encodingKind", encoding);
247
- wsUrl.searchParams.set("path", normalizedPath);
248
- if (protocols !== void 0)
249
- wsUrl.searchParams.set("protocols", JSON.stringify(protocols));
141
+ wsUrl.searchParams.set("encodingKind", encoding2);
250
142
  const wsProtocol = wsUrl.protocol === "https:" ? "wss:" : "ws:";
251
143
  const finalWsUrl = `${wsProtocol}//${wsUrl.host}${wsUrl.pathname}${wsUrl.search}`;
252
- logger().debug("connecting to raw websocket", { url: finalWsUrl });
253
- logger().debug("rewriting websocket url", {
254
- from: path,
255
- to: finalWsUrl
256
- });
144
+ logger().debug({ msg: "connecting to websocket", url: finalWsUrl });
257
145
  const ws = new WebSocket2(finalWsUrl, [
258
146
  // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
259
147
  "rivetkit"
260
148
  ]);
261
- logger().debug("test inline driver created websocket", {
262
- readyState: ws.readyState,
263
- url: ws.url
264
- });
265
149
  return ws;
150
+ },
151
+ async proxyRequest(c, actorRequest, actorId) {
152
+ return await this.sendRequest(actorId, actorRequest);
153
+ },
154
+ proxyWebSocket(_c, _path, _actorId, _encoding, _params, _authData) {
155
+ throw "UNIMPLEMENTED";
156
+ },
157
+ displayInformation() {
158
+ return { name: "Test Inline", properties: {} };
266
159
  }
160
+ // action: async <Args extends Array<unknown> = unknown[], Response = unknown>(
161
+ // _c: HonoContext | undefined,
162
+ // actorQuery: ActorQuery,
163
+ // encoding: Encoding,
164
+ // params: unknown,
165
+ // name: string,
166
+ // args: Args,
167
+ // ): Promise<Response> => {
168
+ // return makeInlineRequest<Response>(
169
+ // endpoint,
170
+ // encoding,
171
+ // transport,
172
+ // "action",
173
+ // [undefined, actorQuery, encoding, params, name, args],
174
+ // );
175
+ // },
176
+ //
177
+ // resolveActorId: async (
178
+ // _c: HonoContext | undefined,
179
+ // actorQuery: ActorQuery,
180
+ // encodingKind: Encoding,
181
+ // params: unknown,
182
+ // ): Promise<string> => {
183
+ // return makeInlineRequest<string>(
184
+ // endpoint,
185
+ // encodingKind,
186
+ // transport,
187
+ // "resolveActorId",
188
+ // [undefined, actorQuery, encodingKind, params],
189
+ // );
190
+ // },
191
+ //
192
+ // connectWebSocket: async (
193
+ // _c: HonoContext | undefined,
194
+ // actorQuery: ActorQuery,
195
+ // encodingKind: Encoding,
196
+ // params: unknown,
197
+ // ): Promise<WebSocket> => {
198
+ // const WebSocket = await importWebSocket();
199
+ //
200
+ // logger().debug({
201
+ // msg: "creating websocket connection via test inline driver",
202
+ // actorQuery,
203
+ // encodingKind,
204
+ // });
205
+ //
206
+ // // Create WebSocket connection to the test endpoint
207
+ // const wsUrl = new URL(
208
+ // `${endpoint}/registry/.test/inline-driver/connect-websocket`,
209
+ // );
210
+ // wsUrl.searchParams.set("actorQuery", JSON.stringify(actorQuery));
211
+ // if (params !== undefined)
212
+ // wsUrl.searchParams.set("params", JSON.stringify(params));
213
+ // wsUrl.searchParams.set("encodingKind", encodingKind);
214
+ //
215
+ // // Convert http/https to ws/wss
216
+ // const wsProtocol = wsUrl.protocol === "https:" ? "wss:" : "ws:";
217
+ // const finalWsUrl = `${wsProtocol}//${wsUrl.host}${wsUrl.pathname}${wsUrl.search}`;
218
+ //
219
+ // logger().debug({ msg: "connecting to websocket", url: finalWsUrl });
220
+ //
221
+ // // Create and return the WebSocket
222
+ // // Node & browser WebSocket types are incompatible
223
+ // const ws = new WebSocket(finalWsUrl, [
224
+ // // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
225
+ // "rivetkit",
226
+ // ]) as any;
227
+ //
228
+ // return ws;
229
+ // },
230
+ //
231
+ // connectSse: async (
232
+ // _c: HonoContext | undefined,
233
+ // actorQuery: ActorQuery,
234
+ // encodingKind: Encoding,
235
+ // params: unknown,
236
+ // ): Promise<UniversalEventSource> => {
237
+ // logger().debug({
238
+ // msg: "creating sse connection via test inline driver",
239
+ // actorQuery,
240
+ // encodingKind,
241
+ // params,
242
+ // });
243
+ //
244
+ // // Dynamically import EventSource if needed
245
+ // const EventSourceImport = await import("eventsource");
246
+ // // Handle both ES modules (default) and CommonJS export patterns
247
+ // const EventSourceConstructor =
248
+ // (EventSourceImport as any).default || EventSourceImport;
249
+ //
250
+ // // Encode parameters for the URL
251
+ // const actorQueryParam = encodeURIComponent(JSON.stringify(actorQuery));
252
+ // const encodingParam = encodeURIComponent(encodingKind);
253
+ // const paramsParam = params
254
+ // ? encodeURIComponent(JSON.stringify(params))
255
+ // : null;
256
+ //
257
+ // // Create SSE connection URL
258
+ // const sseUrl = new URL(
259
+ // `${endpoint}/registry/.test/inline-driver/connect-sse`,
260
+ // );
261
+ // sseUrl.searchParams.set("actorQueryRaw", actorQueryParam);
262
+ // sseUrl.searchParams.set("encodingKind", encodingParam);
263
+ // if (paramsParam) {
264
+ // sseUrl.searchParams.set("params", paramsParam);
265
+ // }
266
+ //
267
+ // logger().debug({ msg: "connecting to sse", url: sseUrl.toString() });
268
+ //
269
+ // // Create and return the EventSource
270
+ // const eventSource = new EventSourceConstructor(sseUrl.toString());
271
+ //
272
+ // // Wait for the connection to be established before returning
273
+ // await new Promise<void>((resolve, reject) => {
274
+ // eventSource.onopen = () => {
275
+ // logger().debug({ msg: "sse connection established" });
276
+ // resolve();
277
+ // };
278
+ //
279
+ // eventSource.onerror = (event: Event) => {
280
+ // logger().error({ msg: "sse connection failed", event });
281
+ // reject(new Error("Failed to establish SSE connection"));
282
+ // };
283
+ //
284
+ // // Set a timeout in case the connection never establishes
285
+ // setTimeout(() => {
286
+ // if (eventSource.readyState !== EventSourceConstructor.OPEN) {
287
+ // reject(new Error("SSE connection timed out"));
288
+ // }
289
+ // }, 10000); // 10 second timeout
290
+ // });
291
+ //
292
+ // return eventSource as UniversalEventSource;
293
+ // },
294
+ //
295
+ // sendHttpMessage: async (
296
+ // _c: HonoContext | undefined,
297
+ // actorId: string,
298
+ // encoding: Encoding,
299
+ // connectionId: string,
300
+ // connectionToken: string,
301
+ // message: protocol.ToServer,
302
+ // ): Promise<void> => {
303
+ // logger().debug({
304
+ // msg: "sending http message via test inline driver",
305
+ // actorId,
306
+ // encoding,
307
+ // connectionId,
308
+ // transport,
309
+ // });
310
+ //
311
+ // const result = await fetch(
312
+ // `${endpoint}/registry/.test/inline-driver/call`,
313
+ // {
314
+ // method: "POST",
315
+ // headers: {
316
+ // "Content-Type": "application/json",
317
+ // },
318
+ // body: JSON.stringify({
319
+ // encoding,
320
+ // transport,
321
+ // method: "sendHttpMessage",
322
+ // args: [
323
+ // undefined,
324
+ // actorId,
325
+ // encoding,
326
+ // connectionId,
327
+ // connectionToken,
328
+ // message,
329
+ // ],
330
+ // } satisfies TestInlineDriverCallRequest),
331
+ // },
332
+ // );
333
+ //
334
+ // if (!result.ok) {
335
+ // throw new Error(`Failed to send HTTP message: ${result.statusText}`);
336
+ // }
337
+ //
338
+ // // Discard response
339
+ // await result.body?.cancel();
340
+ // },
341
+ //
342
+ // rawHttpRequest: async (
343
+ // _c: HonoContext | undefined,
344
+ // actorQuery: ActorQuery,
345
+ // encoding: Encoding,
346
+ // params: unknown,
347
+ // path: string,
348
+ // init: RequestInit,
349
+ // ): Promise<Response> => {
350
+ // // Normalize path to match other drivers
351
+ // const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
352
+ //
353
+ // logger().debug({
354
+ // msg: "sending raw http request via test inline driver",
355
+ // actorQuery,
356
+ // encoding,
357
+ // path: normalizedPath,
358
+ // });
359
+ //
360
+ // // Use the dedicated raw HTTP endpoint
361
+ // const url = `${endpoint}/registry/.test/inline-driver/raw-http/${normalizedPath}`;
362
+ //
363
+ // logger().debug({ msg: "rewriting http url", from: path, to: url });
364
+ //
365
+ // // Merge headers with our metadata
366
+ // const headers = new Headers(init.headers);
367
+ // headers.set(HEADER_ACTOR_QUERY, JSON.stringify(actorQuery));
368
+ // headers.set(HEADER_ENCODING, encoding);
369
+ // if (params !== undefined) {
370
+ // headers.set(HEADER_CONN_PARAMS, JSON.stringify(params));
371
+ // }
372
+ //
373
+ // // Forward the request directly
374
+ // const response = await fetch(url, {
375
+ // ...init,
376
+ // headers,
377
+ // });
378
+ //
379
+ // // Check if it's an error response from our handler
380
+ // if (
381
+ // !response.ok &&
382
+ // response.headers.get("content-type")?.includes("application/json")
383
+ // ) {
384
+ // try {
385
+ // // Clone the response to avoid consuming the body
386
+ // const clonedResponse = response.clone();
387
+ // const errorData = (await clonedResponse.json()) as any;
388
+ // if (errorData.error) {
389
+ // // Handle both error formats:
390
+ // // 1. { error: { code, message, metadata } } - structured format
391
+ // // 2. { error: "message" } - simple string format (from custom onFetch handlers)
392
+ // if (typeof errorData.error === "object") {
393
+ // throw new ClientActorError(
394
+ // errorData.error.code,
395
+ // errorData.error.message,
396
+ // errorData.error.metadata,
397
+ // );
398
+ // }
399
+ // // For simple string errors, just return the response as-is
400
+ // // This allows custom onFetch handlers to return their own error formats
401
+ // }
402
+ // } catch (e) {
403
+ // // If it's not our error format, just return the response as-is
404
+ // if (!(e instanceof ClientActorError)) {
405
+ // return response;
406
+ // }
407
+ // throw e;
408
+ // }
409
+ // }
410
+ //
411
+ // return response;
412
+ // },
413
+ //
414
+ // rawWebSocket: async (
415
+ // _c: HonoContext | undefined,
416
+ // actorQuery: ActorQuery,
417
+ // encoding: Encoding,
418
+ // params: unknown,
419
+ // path: string,
420
+ // protocols: string | string[] | undefined,
421
+ // ): Promise<WebSocket> => {
422
+ // logger().debug({ msg: "test inline driver rawWebSocket called" });
423
+ // const WebSocket = await importWebSocket();
424
+ //
425
+ // // Normalize path to match other drivers
426
+ // const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
427
+ //
428
+ // logger().debug({
429
+ // msg: "creating raw websocket connection via test inline driver",
430
+ // actorQuery,
431
+ // encoding,
432
+ // path: normalizedPath,
433
+ // protocols,
434
+ // });
435
+ //
436
+ // // Create WebSocket connection to the test endpoint
437
+ // const wsUrl = new URL(
438
+ // `${endpoint}/registry/.test/inline-driver/raw-websocket`,
439
+ // );
440
+ // wsUrl.searchParams.set("actorQuery", JSON.stringify(actorQuery));
441
+ // if (params !== undefined)
442
+ // wsUrl.searchParams.set("params", JSON.stringify(params));
443
+ // wsUrl.searchParams.set("encodingKind", encoding);
444
+ // wsUrl.searchParams.set("path", normalizedPath);
445
+ // if (protocols !== undefined)
446
+ // wsUrl.searchParams.set("protocols", JSON.stringify(protocols));
447
+ //
448
+ // // Convert http/https to ws/wss
449
+ // const wsProtocol = wsUrl.protocol === "https:" ? "wss:" : "ws:";
450
+ // const finalWsUrl = `${wsProtocol}//${wsUrl.host}${wsUrl.pathname}${wsUrl.search}`;
451
+ //
452
+ // logger().debug({ msg: "connecting to raw websocket", url: finalWsUrl });
453
+ //
454
+ // logger().debug({
455
+ // msg: "rewriting websocket url",
456
+ // from: path,
457
+ // to: finalWsUrl,
458
+ // });
459
+ //
460
+ // // Create and return the WebSocket
461
+ // // Node & browser WebSocket types are incompatible
462
+ // const ws = new WebSocket(finalWsUrl, [
463
+ // // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
464
+ // "rivetkit",
465
+ // ]) as any;
466
+ //
467
+ // logger().debug({
468
+ // msg: "test inline driver created websocket",
469
+ // readyState: ws.readyState,
470
+ // url: ws.url,
471
+ // });
472
+ //
473
+ // return ws;
474
+ // },
267
475
  };
268
476
  }
269
477
  async function makeInlineRequest(endpoint, encoding, transport, method, args) {
270
- logger().debug("sending inline request", {
478
+ logger().debug({
479
+ msg: "sending inline request",
271
480
  encoding,
272
481
  transport,
273
482
  method,
274
483
  args
275
484
  });
276
- const response = await fetch(
277
- `${endpoint}/registry/.test/inline-driver/call`,
278
- {
279
- method: "POST",
280
- headers: {
281
- "Content-Type": "application/json"
282
- },
283
- body: cbor.encode({
284
- encoding,
285
- transport,
286
- method,
287
- args
288
- })
289
- }
290
- );
485
+ const response = await fetch(`${endpoint}/.test/inline-driver/call`, {
486
+ method: "POST",
487
+ headers: {
488
+ "Content-Type": "application/json"
489
+ },
490
+ body: cbor.encode({
491
+ encoding,
492
+ transport,
493
+ method,
494
+ args
495
+ })
496
+ });
291
497
  if (!response.ok) {
292
498
  throw new Error(`Failed to call inline ${method}: ${response.statusText}`);
293
499
  }
@@ -298,13 +504,14 @@ async function makeInlineRequest(endpoint, encoding, transport, method, args) {
298
504
  if ("ok" in callResponse) {
299
505
  return callResponse.ok;
300
506
  } else if ("err" in callResponse) {
301
- throw new (0, _chunkO2MBYIXOcjs.ActorError)(
507
+ throw new (0, _chunkMRZS2J4Xcjs.ActorError)(
508
+ callResponse.err.group,
302
509
  callResponse.err.code,
303
510
  callResponse.err.message,
304
511
  callResponse.err.metadata
305
512
  );
306
513
  } else {
307
- _chunk6WKQDDUDcjs.assertUnreachable.call(void 0, callResponse);
514
+ _chunkIRMBWX36cjs.assertUnreachable.call(void 0, callResponse);
308
515
  }
309
516
  }
310
517
 
@@ -315,22 +522,25 @@ async function setupDriverTest(c, driverTestConfig) {
315
522
  _vitest.vi.useFakeTimers();
316
523
  _vitest.vi.setSystemTime(FAKE_TIME);
317
524
  }
318
- const projectPath = _path.resolve.call(void 0, __dirname, "../../fixtures/driver-test-suite");
319
- const { endpoint, cleanup } = await driverTestConfig.start(projectPath);
525
+ const { endpoint, namespace, runnerName, cleanup } = await driverTestConfig.start();
320
526
  c.onTestFinished(cleanup);
321
527
  let client;
322
528
  if (driverTestConfig.clientType === "http") {
323
- client = _chunkURVFQMYIcjs.createClient.call(void 0, endpoint, {
529
+ client = _chunkD7NWUCRKcjs.createClient.call(void 0, {
530
+ endpoint,
531
+ namespace,
532
+ runnerName,
324
533
  transport: driverTestConfig.transport
325
534
  });
326
535
  } else if (driverTestConfig.clientType === "inline") {
327
- const clientDriver = createTestInlineClientDriver(
536
+ const managerDriver = createTestInlineClientDriver(
328
537
  endpoint,
538
+ "bare",
329
539
  _nullishCoalesce(driverTestConfig.transport, () => ( "websocket"))
330
540
  );
331
- client = _chunkO2MBYIXOcjs.createClientWithDriver.call(void 0, clientDriver);
541
+ client = _chunkMRZS2J4Xcjs.createClientWithDriver.call(void 0, managerDriver);
332
542
  } else {
333
- _chunk6WKQDDUDcjs.assertUnreachable.call(void 0, driverTestConfig.clientType);
543
+ _chunkIRMBWX36cjs.assertUnreachable.call(void 0, driverTestConfig.clientType);
334
544
  }
335
545
  if (!driverTestConfig.HACK_skipCleanupNet) {
336
546
  c.onTestFinished(async () => await client.dispose());
@@ -342,7 +552,7 @@ async function setupDriverTest(c, driverTestConfig) {
342
552
  }
343
553
  async function waitFor(driverTestConfig, ms) {
344
554
  if (driverTestConfig.useRealTimers) {
345
- return new Promise((resolve2) => setTimeout(resolve2, ms));
555
+ return new Promise((resolve) => setTimeout(resolve, ms));
346
556
  } else {
347
557
  _vitest.vi.advanceTimersByTime(ms);
348
558
  return Promise.resolve();
@@ -430,432 +640,6 @@ function runActionFeaturesTests(driverTestConfig) {
430
640
  });
431
641
  }
432
642
 
433
- // src/driver-test-suite/tests/actor-auth.ts
434
-
435
- function runActorAuthTests(driverTestConfig) {
436
- _vitest.describe.call(void 0, "Actor Authentication Tests", () => {
437
- _vitest.describe.call(void 0, "Basic Authentication", () => {
438
- _vitest.test.call(void 0, "should allow access with valid auth", async (c) => {
439
- const { client } = await setupDriverTest(c, driverTestConfig);
440
- const instance = client.authActor.getOrCreate(void 0, {
441
- params: { apiKey: "valid-api-key" }
442
- });
443
- const authData = await instance.getUserAuth();
444
- if (driverTestConfig.clientType === "inline") {
445
- _vitest.expect.call(void 0, authData).toBeUndefined();
446
- } else {
447
- _vitest.expect.call(void 0, authData).toEqual({
448
- userId: "user123",
449
- token: "valid-api-key"
450
- });
451
- }
452
- const requests = await instance.getRequests();
453
- _vitest.expect.call(void 0, requests).toBe(1);
454
- });
455
- _vitest.test.call(void 0, "should deny access with invalid auth", async (c) => {
456
- const { client } = await setupDriverTest(c, driverTestConfig);
457
- const instance = client.authActor.getOrCreate();
458
- if (driverTestConfig.clientType === "inline") {
459
- const requests = await instance.getRequests();
460
- _vitest.expect.call(void 0, typeof requests).toBe("number");
461
- } else {
462
- try {
463
- await instance.getRequests();
464
- _vitest.expect.fail("Expected authentication error");
465
- } catch (error) {
466
- _vitest.expect.call(void 0, error.code).toBe("missing_auth");
467
- }
468
- }
469
- });
470
- _vitest.test.call(void 0, "should expose auth data on connection", async (c) => {
471
- const { client } = await setupDriverTest(c, driverTestConfig);
472
- const instance = client.authActor.getOrCreate(void 0, {
473
- params: { apiKey: "valid-api-key" }
474
- });
475
- const authData = await instance.getUserAuth();
476
- if (driverTestConfig.clientType === "inline") {
477
- _vitest.expect.call(void 0, authData).toBeUndefined();
478
- } else {
479
- _vitest.expect.call(void 0, authData).toBeDefined();
480
- _vitest.expect.call(void 0, authData.userId).toBe("user123");
481
- _vitest.expect.call(void 0, authData.token).toBe("valid-api-key");
482
- }
483
- });
484
- });
485
- _vitest.describe.call(void 0, "Intent-Based Authentication", () => {
486
- _vitest.test.call(void 0, "should allow get operations for any role", async (c) => {
487
- const { client } = await setupDriverTest(c, driverTestConfig);
488
- const createdInstance = await client.intentAuthActor.create(["foo"], {
489
- params: { role: "admin" }
490
- });
491
- const actorId = await createdInstance.resolve();
492
- if (driverTestConfig.clientType === "inline") {
493
- const instance = client.intentAuthActor.getForId(actorId);
494
- const value = await instance.getValue();
495
- _vitest.expect.call(void 0, value).toBe(0);
496
- } else {
497
- const instance = client.intentAuthActor.getForId(actorId, {
498
- params: { role: "user" }
499
- // Actions require user or admin role
500
- });
501
- const value = await instance.getValue();
502
- _vitest.expect.call(void 0, value).toBe(0);
503
- }
504
- });
505
- _vitest.test.call(void 0, "should require admin role for create operations", async (c) => {
506
- const { client } = await setupDriverTest(c, driverTestConfig);
507
- if (driverTestConfig.clientType === "inline") {
508
- const instance = client.intentAuthActor.getOrCreate(void 0, {
509
- params: { role: "user" }
510
- });
511
- const value = await instance.getValue();
512
- _vitest.expect.call(void 0, value).toBe(0);
513
- } else {
514
- try {
515
- const instance = client.intentAuthActor.getOrCreate(void 0, {
516
- params: { role: "user" }
517
- });
518
- await instance.getValue();
519
- _vitest.expect.fail("Expected permission error for create operation");
520
- } catch (error) {
521
- _vitest.expect.call(void 0, error.code).toBe("insufficient_permissions");
522
- _vitest.expect.call(void 0, error.message).toContain(
523
- "Admin role required"
524
- );
525
- }
526
- }
527
- });
528
- _vitest.test.call(void 0, "should allow actions for user and admin roles", async (c) => {
529
- const { client } = await setupDriverTest(c, driverTestConfig);
530
- const createdInstance = await client.intentAuthActor.create(["foo"], {
531
- params: { role: "admin" }
532
- });
533
- const actorId = await createdInstance.resolve();
534
- const instance = client.intentAuthActor.getForId(actorId, {
535
- params: { role: "guest" }
536
- });
537
- if (driverTestConfig.clientType === "inline") {
538
- const result = await instance.setValue(42);
539
- _vitest.expect.call(void 0, result).toBe(42);
540
- } else {
541
- try {
542
- await instance.setValue(42);
543
- _vitest.expect.fail("Expected permission error for action");
544
- } catch (error) {
545
- _vitest.expect.call(void 0, error.code).toBe("insufficient_permissions");
546
- _vitest.expect.call(void 0, error.message).toContain(
547
- "User or admin role required"
548
- );
549
- }
550
- }
551
- });
552
- });
553
- _vitest.describe.call(void 0, "Public Access", () => {
554
- _vitest.test.call(void 0, "should allow access with empty onAuth", async (c) => {
555
- const { client } = await setupDriverTest(c, driverTestConfig);
556
- const instance = client.publicActor.getOrCreate();
557
- const visitors = await instance.visit();
558
- _vitest.expect.call(void 0, visitors).toBe(1);
559
- const visitors2 = await instance.visit();
560
- _vitest.expect.call(void 0, visitors2).toBe(2);
561
- });
562
- _vitest.test.call(void 0, "should deny access without onAuth defined", async (c) => {
563
- const { client } = await setupDriverTest(c, driverTestConfig);
564
- const instance = client.noAuthActor.getOrCreate();
565
- if (driverTestConfig.clientType === "inline") {
566
- const value = await instance.getValue();
567
- _vitest.expect.call(void 0, value).toBe(42);
568
- } else {
569
- try {
570
- await instance.getValue();
571
- _vitest.expect.fail(
572
- "Expected access to be denied for actor without onAuth"
573
- );
574
- } catch (error) {
575
- _vitest.expect.call(void 0, error.code).toBe("forbidden");
576
- }
577
- }
578
- });
579
- });
580
- _vitest.describe.call(void 0, "Async Authentication", () => {
581
- _vitest.test.call(void 0, "should handle promise-based auth", async (c) => {
582
- const { client } = await setupDriverTest(c, driverTestConfig);
583
- const instance = client.asyncAuthActor.getOrCreate(void 0, {
584
- params: { token: "valid" }
585
- });
586
- const result = await instance.increment();
587
- _vitest.expect.call(void 0, result).toBe(1);
588
- const authData = await instance.getAuthData();
589
- if (driverTestConfig.clientType === "inline") {
590
- _vitest.expect.call(void 0, authData).toBeUndefined();
591
- } else {
592
- _vitest.expect.call(void 0, authData).toBeDefined();
593
- _vitest.expect.call(void 0, authData.userId).toBe("user-valid");
594
- _vitest.expect.call(void 0, authData.validated).toBe(true);
595
- }
596
- });
597
- _vitest.test.call(void 0, "should handle async auth failures", async (c) => {
598
- const { client } = await setupDriverTest(c, driverTestConfig);
599
- const instance = client.asyncAuthActor.getOrCreate();
600
- if (driverTestConfig.clientType === "inline") {
601
- const result = await instance.increment();
602
- _vitest.expect.call(void 0, result).toBe(1);
603
- } else {
604
- try {
605
- await instance.increment();
606
- _vitest.expect.fail("Expected async auth failure");
607
- } catch (error) {
608
- _vitest.expect.call(void 0, error.code).toBe("missing_token");
609
- }
610
- }
611
- });
612
- });
613
- _vitest.describe.call(void 0, "Authentication Across Transports", () => {
614
- if (driverTestConfig.transport === "websocket") {
615
- _vitest.test.call(void 0, "should authenticate WebSocket connections", async (c) => {
616
- const { client } = await setupDriverTest(c, driverTestConfig);
617
- const instance = client.authActor.getOrCreate(void 0, {
618
- params: { apiKey: "valid-api-key" }
619
- });
620
- const authData = await instance.getUserAuth();
621
- _vitest.expect.call(void 0, authData).toBeDefined();
622
- _vitest.expect.call(void 0, authData.userId).toBe("user123");
623
- });
624
- }
625
- _vitest.test.call(void 0, "should authenticate HTTP actions", async (c) => {
626
- const { client } = await setupDriverTest(c, driverTestConfig);
627
- const instance = client.authActor.getOrCreate(void 0, {
628
- params: { apiKey: "valid-api-key" }
629
- });
630
- const requests = await instance.getRequests();
631
- _vitest.expect.call(void 0, typeof requests).toBe("number");
632
- });
633
- });
634
- _vitest.describe.call(void 0, "Error Handling", () => {
635
- _vitest.test.call(void 0, "should handle auth errors gracefully", async (c) => {
636
- const { client } = await setupDriverTest(c, driverTestConfig);
637
- const instance = client.authActor.getOrCreate();
638
- if (driverTestConfig.clientType === "inline") {
639
- const requests = await instance.getRequests();
640
- _vitest.expect.call(void 0, typeof requests).toBe("number");
641
- } else {
642
- try {
643
- await instance.getRequests();
644
- _vitest.expect.fail("Expected authentication error");
645
- } catch (error) {
646
- const actorError = error;
647
- _vitest.expect.call(void 0, actorError.code).toBeDefined();
648
- _vitest.expect.call(void 0, actorError.message).toBeDefined();
649
- }
650
- }
651
- });
652
- _vitest.test.call(void 0, "should preserve error details for debugging", async (c) => {
653
- const { client } = await setupDriverTest(c, driverTestConfig);
654
- const instance = client.asyncAuthActor.getOrCreate();
655
- if (driverTestConfig.clientType === "inline") {
656
- const result = await instance.increment();
657
- _vitest.expect.call(void 0, result).toBe(1);
658
- } else {
659
- try {
660
- await instance.increment();
661
- _vitest.expect.fail("Expected token error");
662
- } catch (error) {
663
- const actorError = error;
664
- _vitest.expect.call(void 0, actorError.code).toBe("missing_token");
665
- _vitest.expect.call(void 0, actorError.message).toBe("Token required");
666
- }
667
- }
668
- });
669
- });
670
- _vitest.describe.call(void 0, "Raw HTTP Authentication", () => {
671
- _vitest.test.call(void 0, "should allow raw HTTP access with valid auth", async (c) => {
672
- const { client } = await setupDriverTest(c, driverTestConfig);
673
- const instance = client.rawHttpAuthActor.getOrCreate(void 0, {
674
- params: { apiKey: "valid-api-key" }
675
- });
676
- const response = await instance.fetch("api/auth-info");
677
- _vitest.expect.call(void 0, response.ok).toBe(true);
678
- const data = await response.json();
679
- _vitest.expect.call(void 0, data.message).toBe("Authenticated request");
680
- _vitest.expect.call(void 0, data.requestCount).toBe(1);
681
- const count = await instance.getRequestCount();
682
- _vitest.expect.call(void 0, count).toBe(1);
683
- });
684
- _vitest.test.call(void 0, "should deny raw HTTP access without auth", async (c) => {
685
- const { client } = await setupDriverTest(c, driverTestConfig);
686
- const instance = client.rawHttpAuthActor.getOrCreate();
687
- const response = await instance.fetch("api/protected");
688
- if (driverTestConfig.clientType === "inline") {
689
- _vitest.expect.call(void 0, response.ok).toBe(true);
690
- _vitest.expect.call(void 0, response.status).toBe(200);
691
- } else {
692
- _vitest.expect.call(void 0, response.ok).toBe(false);
693
- _vitest.expect.call(void 0, response.status).toBe(400);
694
- }
695
- try {
696
- const errorData = await response.json();
697
- _vitest.expect.call(void 0, errorData.c || errorData.code).toBe("missing_auth");
698
- } catch (e2) {
699
- }
700
- });
701
- _vitest.test.call(void 0, "should deny raw HTTP for actors without onAuth", async (c) => {
702
- const { client } = await setupDriverTest(c, driverTestConfig);
703
- const instance = client.rawHttpNoAuthActor.getOrCreate();
704
- const response = await instance.fetch("api/test");
705
- if (driverTestConfig.clientType === "inline") {
706
- _vitest.expect.call(void 0, response.ok).toBe(true);
707
- _vitest.expect.call(void 0, response.status).toBe(200);
708
- } else {
709
- _vitest.expect.call(void 0, response.ok).toBe(false);
710
- _vitest.expect.call(void 0, response.status).toBe(403);
711
- }
712
- try {
713
- const errorData = await response.json();
714
- _vitest.expect.call(void 0, errorData.c || errorData.code).toBe("forbidden");
715
- } catch (e3) {
716
- }
717
- });
718
- _vitest.test.call(void 0, "should allow public raw HTTP access", async (c) => {
719
- const { client } = await setupDriverTest(c, driverTestConfig);
720
- const instance = client.rawHttpPublicActor.getOrCreate();
721
- const response = await instance.fetch("api/visit");
722
- _vitest.expect.call(void 0, response.ok).toBe(true);
723
- const data = await response.json();
724
- _vitest.expect.call(void 0, data.message).toBe("Welcome visitor!");
725
- _vitest.expect.call(void 0, data.count).toBe(1);
726
- const response2 = await instance.fetch("api/visit");
727
- const data2 = await response2.json();
728
- _vitest.expect.call(void 0, data2.count).toBe(2);
729
- });
730
- _vitest.test.call(void 0, "should handle custom auth in onFetch", async (c) => {
731
- const { client } = await setupDriverTest(c, driverTestConfig);
732
- const instance = client.rawHttpCustomAuthActor.getOrCreate();
733
- const response1 = await instance.fetch("api/data");
734
- _vitest.expect.call(void 0, response1.ok).toBe(false);
735
- _vitest.expect.call(void 0, response1.status).toBe(401);
736
- const error1 = await response1.json();
737
- _vitest.expect.call(void 0, error1.error).toBe("Unauthorized");
738
- const response2 = await instance.fetch("api/data", {
739
- headers: {
740
- Authorization: "Bearer wrong-token"
741
- }
742
- });
743
- _vitest.expect.call(void 0, response2.ok).toBe(false);
744
- _vitest.expect.call(void 0, response2.status).toBe(403);
745
- const response3 = await instance.fetch("api/data", {
746
- headers: {
747
- Authorization: "Bearer custom-token"
748
- }
749
- });
750
- _vitest.expect.call(void 0, response3.ok).toBe(true);
751
- const data = await response3.json();
752
- _vitest.expect.call(void 0, data.message).toBe("Authorized!");
753
- _vitest.expect.call(void 0, data.authorized).toBe(1);
754
- const stats = await instance.getStats();
755
- _vitest.expect.call(void 0, stats.authorized).toBe(1);
756
- _vitest.expect.call(void 0, stats.unauthorized).toBe(2);
757
- });
758
- });
759
- _vitest.describe.call(void 0, "Raw WebSocket Authentication", () => {
760
- _vitest.test.call(void 0, "should allow raw WebSocket access with valid auth", async (c) => {
761
- const { client } = await setupDriverTest(c, driverTestConfig);
762
- const instance = client.rawWebSocketAuthActor.getOrCreate(void 0, {
763
- params: { apiKey: "valid-api-key" }
764
- });
765
- const ws = await instance.websocket();
766
- const welcomePromise = new Promise((resolve2, reject) => {
767
- ws.addEventListener("message", (event) => {
768
- const data = JSON.parse(event.data);
769
- if (data.type === "welcome") {
770
- resolve2(data);
771
- }
772
- });
773
- ws.addEventListener("close", () => reject("closed"));
774
- });
775
- const welcomeData = await welcomePromise;
776
- _vitest.expect.call(void 0, welcomeData.message).toBe("Authenticated WebSocket connection");
777
- _vitest.expect.call(void 0, welcomeData.connectionCount).toBe(1);
778
- ws.close();
779
- });
780
- _vitest.test.call(void 0, "should deny raw WebSocket access without auth", async (c) => {
781
- const { client } = await setupDriverTest(c, driverTestConfig);
782
- const instance = client.rawWebSocketAuthActor.getOrCreate();
783
- try {
784
- await instance.websocket();
785
- _vitest.expect.fail("Expected authentication error");
786
- } catch (error) {
787
- _vitest.expect.call(void 0, error).toBeDefined();
788
- }
789
- });
790
- _vitest.test.call(void 0, "should deny raw WebSocket for actors without onAuth", async (c) => {
791
- const { client } = await setupDriverTest(c, driverTestConfig);
792
- const instance = client.rawWebSocketNoAuthActor.getOrCreate();
793
- try {
794
- await instance.websocket();
795
- _vitest.expect.fail("Expected forbidden error");
796
- } catch (error) {
797
- _vitest.expect.call(void 0, error).toBeDefined();
798
- }
799
- });
800
- _vitest.test.call(void 0, "should allow public raw WebSocket access", async (c) => {
801
- const { client } = await setupDriverTest(c, driverTestConfig);
802
- const instance = client.rawWebSocketPublicActor.getOrCreate();
803
- const ws = await instance.websocket();
804
- const welcomePromise = new Promise((resolve2, reject) => {
805
- ws.addEventListener("message", (event) => {
806
- const data = JSON.parse(event.data);
807
- if (data.type === "welcome") {
808
- resolve2(data);
809
- }
810
- });
811
- ws.addEventListener("close", reject);
812
- });
813
- const welcomeData = await welcomePromise;
814
- _vitest.expect.call(void 0, welcomeData.message).toBe("Public WebSocket connection");
815
- _vitest.expect.call(void 0, welcomeData.visitorNumber).toBe(1);
816
- ws.close();
817
- });
818
- _vitest.test.call(void 0, "should handle custom auth in onWebSocket", async (c) => {
819
- const { client } = await setupDriverTest(c, driverTestConfig);
820
- const instance = client.rawWebSocketCustomAuthActor.getOrCreate();
821
- try {
822
- const ws1 = await instance.websocket();
823
- const errorPromise = new Promise((resolve2, reject) => {
824
- ws1.addEventListener("message", (event) => {
825
- const data = JSON.parse(event.data);
826
- if (data.type === "error") {
827
- resolve2(data);
828
- }
829
- });
830
- ws1.addEventListener("close", reject);
831
- });
832
- const errorData = await errorPromise;
833
- _vitest.expect.call(void 0, errorData.type).toBe("error");
834
- _vitest.expect.call(void 0, errorData.message).toBe("Unauthorized");
835
- } catch (error) {
836
- _vitest.expect.call(void 0, error).toBeDefined();
837
- }
838
- const ws2 = await instance.websocket("?token=custom-ws-token");
839
- const authPromise = new Promise((resolve2, reject) => {
840
- ws2.addEventListener("message", (event) => {
841
- const data = JSON.parse(event.data);
842
- if (data.type === "authorized") {
843
- resolve2(data);
844
- }
845
- });
846
- ws2.addEventListener("close", reject);
847
- });
848
- const authData = await authPromise;
849
- _vitest.expect.call(void 0, authData.message).toBe("Welcome authenticated user!");
850
- ws2.close();
851
- const stats = await instance.getStats();
852
- _vitest.expect.call(void 0, stats.authorized).toBeGreaterThanOrEqual(1);
853
- _vitest.expect.call(void 0, stats.unauthorized).toBeGreaterThanOrEqual(1);
854
- });
855
- });
856
- });
857
- }
858
-
859
643
  // src/driver-test-suite/tests/actor-conn.ts
860
644
 
861
645
  function runActorConnTests(driverTestConfig) {
@@ -904,11 +688,11 @@ function runActorConnTests(driverTestConfig) {
904
688
  const handle = client.counter.getOrCreate(["test-mixed-rpc-ws"]);
905
689
  const connection = handle.connect();
906
690
  const receivedEvents = [];
907
- const receivedEventsPromise = new Promise((resolve2) => {
691
+ const receivedEventsPromise = new Promise((resolve) => {
908
692
  connection.on("newCount", (count) => {
909
693
  receivedEvents.push(count);
910
694
  if (receivedEvents.includes(1) && receivedEvents.includes(6) && receivedEvents.includes(9))
911
- resolve2(void 0);
695
+ resolve(void 0);
912
696
  });
913
697
  });
914
698
  await connection.increment(1);
@@ -1287,9 +1071,7 @@ function runActorScheduleTests(driverTestConfig) {
1287
1071
 
1288
1072
  // fixtures/driver-test-suite/sleep.ts
1289
1073
  var SLEEP_TIMEOUT = 500;
1290
- var sleep = _chunkUIM22YJLcjs.actor.call(void 0, {
1291
- onAuth: () => {
1292
- },
1074
+ var sleep = _chunkMRZS2J4Xcjs.actor.call(void 0, {
1293
1075
  state: { startCount: 0, sleepCount: 0 },
1294
1076
  onStart: (c) => {
1295
1077
  c.state.startCount += 1;
@@ -1315,9 +1097,7 @@ var sleep = _chunkUIM22YJLcjs.actor.call(void 0, {
1315
1097
  sleepTimeout: SLEEP_TIMEOUT
1316
1098
  }
1317
1099
  });
1318
- var sleepWithLongRpc = _chunkUIM22YJLcjs.actor.call(void 0, {
1319
- onAuth: () => {
1320
- },
1100
+ var sleepWithLongRpc = _chunkMRZS2J4Xcjs.actor.call(void 0, {
1321
1101
  state: { startCount: 0, sleepCount: 0 },
1322
1102
  createVars: () => ({}),
1323
1103
  onStart: (c) => {
@@ -1346,9 +1126,7 @@ var sleepWithLongRpc = _chunkUIM22YJLcjs.actor.call(void 0, {
1346
1126
  sleepTimeout: SLEEP_TIMEOUT
1347
1127
  }
1348
1128
  });
1349
- var sleepWithRawHttp = _chunkUIM22YJLcjs.actor.call(void 0, {
1350
- onAuth: () => {
1351
- },
1129
+ var sleepWithRawHttp = _chunkMRZS2J4Xcjs.actor.call(void 0, {
1352
1130
  state: { startCount: 0, sleepCount: 0, requestCount: 0 },
1353
1131
  onStart: (c) => {
1354
1132
  c.state.startCount += 1;
@@ -1361,8 +1139,8 @@ var sleepWithRawHttp = _chunkUIM22YJLcjs.actor.call(void 0, {
1361
1139
  const url = new URL(request.url);
1362
1140
  if (url.pathname === "/long-request") {
1363
1141
  const duration = parseInt(url.searchParams.get("duration") || "1000");
1364
- c.log.info("starting long fetch request", { duration });
1365
- await new Promise((resolve2) => setTimeout(resolve2, duration));
1142
+ c.log.info({ msg: "starting long fetch request", duration });
1143
+ await new Promise((resolve) => setTimeout(resolve, duration));
1366
1144
  c.log.info("finished long fetch request");
1367
1145
  return new Response(JSON.stringify({ completed: true }), {
1368
1146
  headers: { "Content-Type": "application/json" }
@@ -1383,9 +1161,7 @@ var sleepWithRawHttp = _chunkUIM22YJLcjs.actor.call(void 0, {
1383
1161
  sleepTimeout: SLEEP_TIMEOUT
1384
1162
  }
1385
1163
  });
1386
- var sleepWithRawWebSocket = _chunkUIM22YJLcjs.actor.call(void 0, {
1387
- onAuth: () => {
1388
- },
1164
+ var sleepWithRawWebSocket = _chunkMRZS2J4Xcjs.actor.call(void 0, {
1389
1165
  state: { startCount: 0, sleepCount: 0, connectionCount: 0 },
1390
1166
  onStart: (c) => {
1391
1167
  c.state.startCount += 1;
@@ -1395,7 +1171,8 @@ var sleepWithRawWebSocket = _chunkUIM22YJLcjs.actor.call(void 0, {
1395
1171
  },
1396
1172
  onWebSocket: (c, websocket, opts) => {
1397
1173
  c.state.connectionCount += 1;
1398
- c.log.info("websocket connected", {
1174
+ c.log.info({
1175
+ msg: "websocket connected",
1399
1176
  connectionCount: c.state.connectionCount
1400
1177
  });
1401
1178
  websocket.send(
@@ -1421,14 +1198,15 @@ var sleepWithRawWebSocket = _chunkUIM22YJLcjs.actor.call(void 0, {
1421
1198
  } else if (parsed.type === "keepAlive") {
1422
1199
  websocket.send(JSON.stringify({ type: "ack" }));
1423
1200
  }
1424
- } catch (e4) {
1201
+ } catch (e2) {
1425
1202
  websocket.send(data);
1426
1203
  }
1427
1204
  }
1428
1205
  });
1429
1206
  websocket.addEventListener("close", () => {
1430
1207
  c.state.connectionCount -= 1;
1431
- c.log.info("websocket disconnected", {
1208
+ c.log.info({
1209
+ msg: "websocket disconnected",
1432
1210
  connectionCount: c.state.connectionCount
1433
1211
  });
1434
1212
  });
@@ -1446,9 +1224,7 @@ var sleepWithRawWebSocket = _chunkUIM22YJLcjs.actor.call(void 0, {
1446
1224
  sleepTimeout: SLEEP_TIMEOUT
1447
1225
  }
1448
1226
  });
1449
- var sleepWithNoSleepOption = _chunkUIM22YJLcjs.actor.call(void 0, {
1450
- onAuth: () => {
1451
- },
1227
+ var sleepWithNoSleepOption = _chunkMRZS2J4Xcjs.actor.call(void 0, {
1452
1228
  state: { startCount: 0, sleepCount: 0 },
1453
1229
  onStart: (c) => {
1454
1230
  c.state.startCount += 1;
@@ -1605,7 +1381,7 @@ function runActorSleepTests(driverTestConfig) {
1605
1381
  _vitest.expect.call(void 0, startCount).toBe(1);
1606
1382
  }
1607
1383
  const waitPromise = new Promise(
1608
- (resolve2) => sleepActor.once("waiting", resolve2)
1384
+ (resolve) => sleepActor.once("waiting", resolve)
1609
1385
  );
1610
1386
  const longRunningPromise = sleepActor.longRunningRpc();
1611
1387
  await waitPromise;
@@ -1638,32 +1414,32 @@ function runActorSleepTests(driverTestConfig) {
1638
1414
  _vitest.expect.call(void 0, startCount).toBe(1);
1639
1415
  }
1640
1416
  const ws = await sleepActor.websocket();
1641
- await new Promise((resolve2, reject) => {
1642
- ws.onopen = () => resolve2();
1417
+ await new Promise((resolve, reject) => {
1418
+ ws.onopen = () => resolve();
1643
1419
  ws.onerror = reject;
1644
1420
  });
1645
- await new Promise((resolve2) => {
1421
+ await new Promise((resolve) => {
1646
1422
  ws.onmessage = (event) => {
1647
1423
  const data = JSON.parse(event.data);
1648
1424
  if (data.type === "connected") {
1649
- resolve2();
1425
+ resolve();
1650
1426
  }
1651
1427
  };
1652
1428
  });
1653
1429
  await waitFor(driverTestConfig, SLEEP_TIMEOUT + 100);
1654
1430
  ws.send(JSON.stringify({ type: "getCounts" }));
1655
- const counts = await new Promise((resolve2) => {
1431
+ const counts = await new Promise((resolve) => {
1656
1432
  ws.onmessage = (event) => {
1657
1433
  const data = JSON.parse(event.data);
1658
1434
  if (data.type === "counts") {
1659
- resolve2(data);
1435
+ resolve(data);
1660
1436
  }
1661
1437
  };
1662
1438
  });
1663
1439
  _vitest.expect.call(void 0, counts.sleepCount).toBe(0);
1664
1440
  _vitest.expect.call(void 0, counts.startCount).toBe(1);
1665
1441
  ws.close();
1666
- await new Promise((resolve2) => setTimeout(resolve2, 100));
1442
+ await new Promise((resolve) => setTimeout(resolve, 100));
1667
1443
  await waitFor(driverTestConfig, SLEEP_TIMEOUT + 100);
1668
1444
  {
1669
1445
  const { startCount, sleepCount } = await sleepActor.getCounts();
@@ -1816,15 +1592,8 @@ function runActorErrorHandlingTests(driverTestConfig) {
1816
1592
  await handle.throwInternalError();
1817
1593
  _vitest.expect.call(void 0, true).toBe(false);
1818
1594
  } catch (error) {
1819
- if (driverTestConfig.clientType === "http") {
1820
- _vitest.expect.call(void 0, error.code).toBe(_chunkGIR3AFFIcjs.INTERNAL_ERROR_CODE);
1821
- _vitest.expect.call(void 0, error.message).toBe(_chunkGIR3AFFIcjs.INTERNAL_ERROR_DESCRIPTION);
1822
- } else if (driverTestConfig.clientType === "inline") {
1823
- _vitest.expect.call(void 0, error.code).toBe(_chunkGIR3AFFIcjs.INTERNAL_ERROR_CODE);
1824
- _vitest.expect.call(void 0, error.message).toBe("This is an internal error");
1825
- } else {
1826
- _chunk6WKQDDUDcjs.assertUnreachable.call(void 0, driverTestConfig.clientType);
1827
- }
1595
+ _vitest.expect.call(void 0, error.code).toBe(_chunk5QGQK44Lcjs.INTERNAL_ERROR_CODE);
1596
+ _vitest.expect.call(void 0, error.message).toBe(_chunk5QGQK44Lcjs.INTERNAL_ERROR_DESCRIPTION);
1828
1597
  }
1829
1598
  });
1830
1599
  });
@@ -1919,6 +1688,29 @@ function runActorHandleTests(driverTestConfig) {
1919
1688
  const retrievedCount = await handle.getCount();
1920
1689
  _vitest.expect.call(void 0, retrievedCount).toBe(9);
1921
1690
  });
1691
+ _vitest.test.call(void 0, "errors when calling create twice with the same key", async (c) => {
1692
+ const { client } = await setupDriverTest(c, driverTestConfig);
1693
+ const key = ["duplicate-create-handle", crypto.randomUUID()];
1694
+ await client.counter.create(key);
1695
+ try {
1696
+ await client.counter.create(key);
1697
+ _vitest.expect.fail("did not error on duplicate create");
1698
+ } catch (err) {
1699
+ _vitest.expect.call(void 0, err.group).toBe("actor");
1700
+ _vitest.expect.call(void 0, err.code).toBe("already_exists");
1701
+ }
1702
+ });
1703
+ _vitest.test.call(void 0, ".get().resolve() errors for non-existent actor", async (c) => {
1704
+ const { client } = await setupDriverTest(c, driverTestConfig);
1705
+ const missingId = `nonexistent-${crypto.randomUUID()}`;
1706
+ try {
1707
+ await client.counter.get([missingId]).resolve();
1708
+ _vitest.expect.fail("did not error for get().resolve() on missing actor");
1709
+ } catch (err) {
1710
+ _vitest.expect.call(void 0, err.group).toBe("actor");
1711
+ _vitest.expect.call(void 0, err.code).toBe("not_found");
1712
+ }
1713
+ });
1922
1714
  });
1923
1715
  _vitest.describe.call(void 0, "Action Functionality", () => {
1924
1716
  _vitest.test.call(void 0, "should call actions directly on the handle", async (c) => {
@@ -2139,11 +1931,11 @@ function runActorInlineClientTests(driverTestConfig) {
2139
1931
  // src/driver-test-suite/tests/actor-inspector.ts
2140
1932
 
2141
1933
  function runActorInspectorTests(driverTestConfig) {
2142
- _vitest.describe.call(void 0, "Actor Inspector Tests", () => {
1934
+ _vitest.describe.skip("Actor Inspector Tests", () => {
2143
1935
  _vitest.describe.call(void 0, "Manager Inspector", () => {
2144
1936
  _vitest.test.call(void 0, "should respond to ping", async (c) => {
2145
1937
  const { endpoint } = await setupDriverTest(c, driverTestConfig);
2146
- const http = _chunkKUPQZYUQcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
1938
+ const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
2147
1939
  headers: {
2148
1940
  Authorization: `Bearer token`
2149
1941
  }
@@ -2157,7 +1949,7 @@ function runActorInspectorTests(driverTestConfig) {
2157
1949
  const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
2158
1950
  await client.counter.create(["test-actor-1"]);
2159
1951
  await client.counter.create(["test-actor-2"]);
2160
- const http = _chunkKUPQZYUQcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
1952
+ const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
2161
1953
  headers: {
2162
1954
  Authorization: `Bearer token`
2163
1955
  }
@@ -2180,7 +1972,7 @@ function runActorInspectorTests(driverTestConfig) {
2180
1972
  const actorKey2 = ["test-cursor-2"];
2181
1973
  await client.counter.create(actorKey1);
2182
1974
  await client.counter.create(actorKey2);
2183
- const http = _chunkKUPQZYUQcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
1975
+ const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
2184
1976
  headers: {
2185
1977
  Authorization: `Bearer token`
2186
1978
  }
@@ -2205,7 +1997,7 @@ function runActorInspectorTests(driverTestConfig) {
2205
1997
  });
2206
1998
  _vitest.test.call(void 0, "should handle invalid limit parameter", async (c) => {
2207
1999
  const { endpoint } = await setupDriverTest(c, driverTestConfig);
2208
- const http = _chunkKUPQZYUQcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
2000
+ const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
2209
2001
  headers: {
2210
2002
  Authorization: `Bearer token`
2211
2003
  }
@@ -2217,7 +2009,7 @@ function runActorInspectorTests(driverTestConfig) {
2217
2009
  });
2218
2010
  _vitest.test.call(void 0, "should create a new actor", async (c) => {
2219
2011
  const { endpoint } = await setupDriverTest(c, driverTestConfig);
2220
- const http = _chunkKUPQZYUQcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
2012
+ const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
2221
2013
  headers: {
2222
2014
  Authorization: `Bearer token`
2223
2015
  }
@@ -2241,7 +2033,7 @@ function runActorInspectorTests(driverTestConfig) {
2241
2033
  });
2242
2034
  _vitest.test.call(void 0, "should get builds", async (c) => {
2243
2035
  const { endpoint } = await setupDriverTest(c, driverTestConfig);
2244
- const http = _chunkKUPQZYUQcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
2036
+ const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
2245
2037
  headers: {
2246
2038
  Authorization: `Bearer token`
2247
2039
  }
@@ -2259,7 +2051,7 @@ function runActorInspectorTests(driverTestConfig) {
2259
2051
  const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
2260
2052
  const handle = await client.counter.create(["test-get-by-id"]);
2261
2053
  const actorId = await handle.resolve();
2262
- const http = _chunkKUPQZYUQcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
2054
+ const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
2263
2055
  headers: {
2264
2056
  Authorization: `Bearer token`
2265
2057
  }
@@ -2273,7 +2065,7 @@ function runActorInspectorTests(driverTestConfig) {
2273
2065
  });
2274
2066
  _vitest.test.call(void 0, "should return 404 for non-existent actor", async (c) => {
2275
2067
  const { endpoint } = await setupDriverTest(c, driverTestConfig);
2276
- const http = _chunkKUPQZYUQcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
2068
+ const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
2277
2069
  headers: {
2278
2070
  Authorization: `Bearer token`
2279
2071
  }
@@ -2289,7 +2081,7 @@ function runActorInspectorTests(driverTestConfig) {
2289
2081
  const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
2290
2082
  const handle = await client.counter.create(["test-bootstrap"]);
2291
2083
  await handle.resolve();
2292
- const http = _chunkKUPQZYUQcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
2084
+ const http = _chunkLZIBTLEYcjs.createManagerInspectorClient.call(void 0, `${endpoint}/inspect`, {
2293
2085
  headers: {
2294
2086
  Authorization: `Bearer token`
2295
2087
  }
@@ -2311,10 +2103,10 @@ function runActorInspectorTests(driverTestConfig) {
2311
2103
  _vitest.test.call(void 0, "should handle actor not found", async (c) => {
2312
2104
  const { endpoint } = await setupDriverTest(c, driverTestConfig);
2313
2105
  const actorId = "non-existing";
2314
- const http = _chunkKUPQZYUQcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2106
+ const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2315
2107
  headers: {
2316
2108
  Authorization: `Bearer token`,
2317
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2109
+ [_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2318
2110
  getForId: { name: "counter", actorId }
2319
2111
  })
2320
2112
  }
@@ -2326,10 +2118,10 @@ function runActorInspectorTests(driverTestConfig) {
2326
2118
  const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
2327
2119
  const handle = await client.counter.create(["test-ping"]);
2328
2120
  const actorId = await handle.resolve();
2329
- const http = _chunkKUPQZYUQcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2121
+ const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2330
2122
  headers: {
2331
2123
  Authorization: `Bearer token`,
2332
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2124
+ [_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2333
2125
  getForId: { name: "counter", actorId }
2334
2126
  })
2335
2127
  }
@@ -2344,10 +2136,10 @@ function runActorInspectorTests(driverTestConfig) {
2344
2136
  const handle = await client.counter.create(["test-state"]);
2345
2137
  const actorId = await handle.resolve();
2346
2138
  await handle.increment(5);
2347
- const http = _chunkKUPQZYUQcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2139
+ const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2348
2140
  headers: {
2349
2141
  Authorization: `Bearer token`,
2350
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2142
+ [_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2351
2143
  getForId: { name: "counter", actorId }
2352
2144
  })
2353
2145
  }
@@ -2366,10 +2158,10 @@ function runActorInspectorTests(driverTestConfig) {
2366
2158
  const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
2367
2159
  const handle = await client.counter.create(["test-state-replace"]);
2368
2160
  const actorId = await handle.resolve();
2369
- const http = _chunkKUPQZYUQcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2161
+ const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2370
2162
  headers: {
2371
2163
  Authorization: `Bearer token`,
2372
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2164
+ [_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2373
2165
  getForId: { name: "counter", actorId }
2374
2166
  })
2375
2167
  }
@@ -2391,10 +2183,10 @@ function runActorInspectorTests(driverTestConfig) {
2391
2183
  const handle = await client.counter.create(["test-state-patch"]);
2392
2184
  const actorId = await handle.resolve();
2393
2185
  await handle.increment(3);
2394
- const http = _chunkKUPQZYUQcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2186
+ const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2395
2187
  headers: {
2396
2188
  Authorization: `Bearer token`,
2397
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2189
+ [_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2398
2190
  getForId: { name: "counter", actorId }
2399
2191
  })
2400
2192
  }
@@ -2425,10 +2217,10 @@ function runActorInspectorTests(driverTestConfig) {
2425
2217
  const actorId = await handle.resolve();
2426
2218
  handle.connect();
2427
2219
  await handle.increment(10);
2428
- const http = _chunkKUPQZYUQcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2220
+ const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2429
2221
  headers: {
2430
2222
  Authorization: `Bearer token`,
2431
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2223
+ [_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2432
2224
  getForId: { name: "counter", actorId }
2433
2225
  })
2434
2226
  }
@@ -2450,10 +2242,10 @@ function runActorInspectorTests(driverTestConfig) {
2450
2242
  const actorId = await handle.resolve();
2451
2243
  handle.connect();
2452
2244
  await handle.increment(10);
2453
- const http = _chunkKUPQZYUQcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2245
+ const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2454
2246
  headers: {
2455
2247
  Authorization: `Bearer token`,
2456
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2248
+ [_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2457
2249
  getForId: { name: "counter", actorId }
2458
2250
  })
2459
2251
  }
@@ -2476,10 +2268,10 @@ function runActorInspectorTests(driverTestConfig) {
2476
2268
  const actorId = await handle.resolve();
2477
2269
  handle.connect();
2478
2270
  await handle.increment(10);
2479
- const http = _chunkKUPQZYUQcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2271
+ const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2480
2272
  headers: {
2481
2273
  Authorization: `Bearer token`,
2482
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2274
+ [_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2483
2275
  getForId: { name: "counter", actorId }
2484
2276
  })
2485
2277
  }
@@ -2504,10 +2296,10 @@ function runActorInspectorTests(driverTestConfig) {
2504
2296
  const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
2505
2297
  const handle = await client.counter.create(["test-rpcs"]);
2506
2298
  const actorId = await handle.resolve();
2507
- const http = _chunkKUPQZYUQcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2299
+ const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2508
2300
  headers: {
2509
2301
  Authorization: `Bearer token`,
2510
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2302
+ [_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2511
2303
  getForId: { name: "counter", actorId }
2512
2304
  })
2513
2305
  }
@@ -2525,10 +2317,10 @@ function runActorInspectorTests(driverTestConfig) {
2525
2317
  const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
2526
2318
  const handle = await client.counter.create(["test-db"]);
2527
2319
  const actorId = await handle.resolve();
2528
- const http = _chunkKUPQZYUQcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2320
+ const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2529
2321
  headers: {
2530
2322
  Authorization: `Bearer token`,
2531
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2323
+ [_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2532
2324
  getForId: { name: "counter", actorId }
2533
2325
  })
2534
2326
  }
@@ -2549,10 +2341,10 @@ function runActorInspectorTests(driverTestConfig) {
2549
2341
  const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
2550
2342
  const handle = await client.counter.create(["test-db-query"]);
2551
2343
  const actorId = await handle.resolve();
2552
- const http = _chunkKUPQZYUQcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2344
+ const http = _chunkLZIBTLEYcjs.createActorInspectorClient.call(void 0, `${endpoint}/actors/inspect`, {
2553
2345
  headers: {
2554
2346
  Authorization: `Bearer token`,
2555
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2347
+ [_chunkIRMBWX36cjs.HEADER_ACTOR_QUERY]: JSON.stringify({
2556
2348
  getForId: { name: "counter", actorId }
2557
2349
  })
2558
2350
  }
@@ -2801,7 +2593,8 @@ function runManagerDriverTests(driverTestConfig) {
2801
2593
  await client.counter.create(uniqueKey);
2802
2594
  _vitest.expect.fail("did not error on duplicate create");
2803
2595
  } catch (err) {
2804
- _vitest.expect.call(void 0, err.code).toBe("actor_already_exists");
2596
+ _vitest.expect.call(void 0, err.group).toBe("actor");
2597
+ _vitest.expect.call(void 0, err.code).toBe("already_exists");
2805
2598
  }
2806
2599
  const count = await counter.increment(0);
2807
2600
  _vitest.expect.call(void 0, count).toBe(5);
@@ -2815,7 +2608,8 @@ function runManagerDriverTests(driverTestConfig) {
2815
2608
  await client.counter.get([nonexistentId]).resolve();
2816
2609
  _vitest.expect.fail("did not error for get");
2817
2610
  } catch (err) {
2818
- _vitest.expect.call(void 0, err.code).toBe("actor_not_found");
2611
+ _vitest.expect.call(void 0, err.group).toBe("actor");
2612
+ _vitest.expect.call(void 0, err.code).toBe("not_found");
2819
2613
  }
2820
2614
  const createdCounter = client.counter.getOrCreate(nonexistentId);
2821
2615
  await createdCounter.increment(3);
@@ -3062,7 +2856,7 @@ function runRawHttpTests(driverTestConfig) {
3062
2856
  _vitest.expect.call(void 0, errorData.message).toContain(
3063
2857
  "onFetch handler must return a Response"
3064
2858
  );
3065
- } catch (e5) {
2859
+ } catch (e3) {
3066
2860
  }
3067
2861
  });
3068
2862
  _vitest.test.call(void 0, "should handle different HTTP methods", async (c) => {
@@ -3236,186 +3030,7 @@ function runRawHttpTests(driverTestConfig) {
3236
3030
  });
3237
3031
  }
3238
3032
 
3239
- // src/driver-test-suite/tests/raw-http-direct-registry.ts
3240
-
3241
- function runRawHttpDirectRegistryTests(driverTestConfig) {
3242
- _vitest.describe.call(void 0, "raw http - direct registry access", () => {
3243
- _vitest.test.call(void 0, "should handle direct fetch requests to registry with proper headers", async (c) => {
3244
- const { endpoint } = await setupDriverTest(c, driverTestConfig);
3245
- const actorQuery = {
3246
- getOrCreateForKey: {
3247
- name: "rawHttpActor",
3248
- key: ["direct-test"]
3249
- }
3250
- };
3251
- const response = await fetch(
3252
- `${endpoint}/registry/actors/raw/http/api/hello`,
3253
- {
3254
- method: "GET",
3255
- headers: {
3256
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery)
3257
- }
3258
- }
3259
- );
3260
- _vitest.expect.call(void 0, response.ok).toBe(true);
3261
- _vitest.expect.call(void 0, response.status).toBe(200);
3262
- const data = await response.json();
3263
- _vitest.expect.call(void 0, data).toEqual({ message: "Hello from actor!" });
3264
- });
3265
- _vitest.test.call(void 0, "should handle POST requests with body to registry", async (c) => {
3266
- const { endpoint } = await setupDriverTest(c, driverTestConfig);
3267
- const actorQuery = {
3268
- getOrCreateForKey: {
3269
- name: "rawHttpActor",
3270
- key: ["direct-post-test"]
3271
- }
3272
- };
3273
- const testData = { test: "direct", number: 456 };
3274
- const response = await fetch(
3275
- `${endpoint}/registry/actors/raw/http/api/echo`,
3276
- {
3277
- method: "POST",
3278
- headers: {
3279
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),
3280
- "Content-Type": "application/json"
3281
- },
3282
- body: JSON.stringify(testData)
3283
- }
3284
- );
3285
- _vitest.expect.call(void 0, response.ok).toBe(true);
3286
- _vitest.expect.call(void 0, response.status).toBe(200);
3287
- const data = await response.json();
3288
- _vitest.expect.call(void 0, data).toEqual(testData);
3289
- });
3290
- _vitest.test.call(void 0, "should pass custom headers through to actor", async (c) => {
3291
- const { endpoint } = await setupDriverTest(c, driverTestConfig);
3292
- const actorQuery = {
3293
- getOrCreateForKey: {
3294
- name: "rawHttpActor",
3295
- key: ["direct-headers-test"]
3296
- }
3297
- };
3298
- const customHeaders = {
3299
- "X-Custom-Header": "direct-test-value",
3300
- "X-Another-Header": "another-direct-value"
3301
- };
3302
- const response = await fetch(
3303
- `${endpoint}/registry/actors/raw/http/api/headers`,
3304
- {
3305
- method: "GET",
3306
- headers: {
3307
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),
3308
- ...customHeaders
3309
- }
3310
- }
3311
- );
3312
- _vitest.expect.call(void 0, response.ok).toBe(true);
3313
- const headers = await response.json();
3314
- _vitest.expect.call(void 0, headers["x-custom-header"]).toBe("direct-test-value");
3315
- _vitest.expect.call(void 0, headers["x-another-header"]).toBe("another-direct-value");
3316
- });
3317
- _vitest.test.call(void 0, "should handle connection parameters for authentication", async (c) => {
3318
- const { endpoint } = await setupDriverTest(c, driverTestConfig);
3319
- const actorQuery = {
3320
- getOrCreateForKey: {
3321
- name: "rawHttpActor",
3322
- key: ["direct-auth-test"]
3323
- }
3324
- };
3325
- const connParams = { token: "test-auth-token", userId: "user123" };
3326
- const response = await fetch(
3327
- `${endpoint}/registry/actors/raw/http/api/hello`,
3328
- {
3329
- method: "GET",
3330
- headers: {
3331
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),
3332
- [_chunk6WKQDDUDcjs.HEADER_CONN_PARAMS]: JSON.stringify(connParams)
3333
- }
3334
- }
3335
- );
3336
- _vitest.expect.call(void 0, response.ok).toBe(true);
3337
- const data = await response.json();
3338
- _vitest.expect.call(void 0, data).toEqual({ message: "Hello from actor!" });
3339
- });
3340
- _vitest.test.call(void 0, "should return 404 for actors without onFetch handler", async (c) => {
3341
- const { endpoint } = await setupDriverTest(c, driverTestConfig);
3342
- const actorQuery = {
3343
- getOrCreateForKey: {
3344
- name: "rawHttpNoHandlerActor",
3345
- key: ["direct-no-handler"]
3346
- }
3347
- };
3348
- const response = await fetch(
3349
- `${endpoint}/registry/actors/raw/http/api/anything`,
3350
- {
3351
- method: "GET",
3352
- headers: {
3353
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery)
3354
- }
3355
- }
3356
- );
3357
- _vitest.expect.call(void 0, response.ok).toBe(false);
3358
- _vitest.expect.call(void 0, response.status).toBe(404);
3359
- });
3360
- _vitest.test.call(void 0, "should handle different HTTP methods", async (c) => {
3361
- const { endpoint } = await setupDriverTest(c, driverTestConfig);
3362
- const actorQuery = {
3363
- getOrCreateForKey: {
3364
- name: "rawHttpActor",
3365
- key: ["direct-methods-test"]
3366
- }
3367
- };
3368
- const methods = ["GET", "POST", "PUT", "DELETE", "PATCH"];
3369
- for (const method of methods) {
3370
- const response = await fetch(
3371
- `${endpoint}/registry/actors/raw/http/api/echo`,
3372
- {
3373
- method,
3374
- headers: {
3375
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),
3376
- ...method !== "GET" ? { "Content-Type": "application/json" } : {}
3377
- },
3378
- body: ["POST", "PUT", "PATCH"].includes(method) ? JSON.stringify({ method }) : void 0
3379
- }
3380
- );
3381
- if (method === "POST") {
3382
- _vitest.expect.call(void 0, response.ok).toBe(true);
3383
- const data = await response.json();
3384
- _vitest.expect.call(void 0, data).toEqual({ method });
3385
- } else {
3386
- _vitest.expect.call(void 0, response.status).toBe(404);
3387
- }
3388
- }
3389
- });
3390
- _vitest.test.call(void 0, "should handle binary data", async (c) => {
3391
- const { endpoint } = await setupDriverTest(c, driverTestConfig);
3392
- const actorQuery = {
3393
- getOrCreateForKey: {
3394
- name: "rawHttpActor",
3395
- key: ["direct-binary-test"]
3396
- }
3397
- };
3398
- const binaryData = new Uint8Array([1, 2, 3, 4, 5]);
3399
- const response = await fetch(
3400
- `${endpoint}/registry/actors/raw/http/api/echo`,
3401
- {
3402
- method: "POST",
3403
- headers: {
3404
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),
3405
- "Content-Type": "application/octet-stream"
3406
- },
3407
- body: binaryData
3408
- }
3409
- );
3410
- _vitest.expect.call(void 0, response.ok).toBe(true);
3411
- const responseBuffer = await response.arrayBuffer();
3412
- const responseArray = new Uint8Array(responseBuffer);
3413
- _vitest.expect.call(void 0, Array.from(responseArray)).toEqual([1, 2, 3, 4, 5]);
3414
- });
3415
- });
3416
- }
3417
-
3418
- // src/driver-test-suite/tests/raw-http-request-properties.ts
3033
+ // src/driver-test-suite/tests/raw-http-request-properties.ts
3419
3034
 
3420
3035
  function runRawHttpRequestPropertiesTests(driverTestConfig) {
3421
3036
  _vitest.describe.call(void 0, "raw http request properties", () => {
@@ -3738,24 +3353,24 @@ function runRawWebSocketTests(driverTestConfig) {
3738
3353
  const { client } = await setupDriverTest(c, driverTestConfig);
3739
3354
  const actor2 = client.rawWebSocketActor.getOrCreate(["basic"]);
3740
3355
  const ws = await actor2.websocket();
3741
- await new Promise((resolve2) => {
3356
+ await new Promise((resolve) => {
3742
3357
  if (ws.readyState === WebSocket.OPEN) {
3743
- resolve2();
3358
+ resolve();
3744
3359
  } else {
3745
3360
  ws.addEventListener(
3746
3361
  "open",
3747
3362
  () => {
3748
- resolve2();
3363
+ resolve();
3749
3364
  },
3750
3365
  { once: true }
3751
3366
  );
3752
3367
  }
3753
3368
  });
3754
- const welcomeMessage = await new Promise((resolve2, reject) => {
3369
+ const welcomeMessage = await new Promise((resolve, reject) => {
3755
3370
  ws.addEventListener(
3756
3371
  "message",
3757
3372
  (event) => {
3758
- resolve2(JSON.parse(event.data));
3373
+ resolve(JSON.parse(event.data));
3759
3374
  },
3760
3375
  { once: true }
3761
3376
  );
@@ -3770,22 +3385,22 @@ function runRawWebSocketTests(driverTestConfig) {
3770
3385
  const actor2 = client.rawWebSocketActor.getOrCreate(["echo"]);
3771
3386
  const ws = await actor2.websocket();
3772
3387
  if (ws.readyState !== WebSocket.OPEN) {
3773
- await new Promise((resolve2, reject) => {
3774
- ws.addEventListener("open", () => resolve2(), { once: true });
3388
+ await new Promise((resolve, reject) => {
3389
+ ws.addEventListener("open", () => resolve(), { once: true });
3775
3390
  ws.addEventListener("close", reject);
3776
3391
  });
3777
3392
  }
3778
- await new Promise((resolve2, reject) => {
3779
- ws.addEventListener("message", () => resolve2(), { once: true });
3393
+ await new Promise((resolve, reject) => {
3394
+ ws.addEventListener("message", () => resolve(), { once: true });
3780
3395
  ws.addEventListener("close", reject);
3781
3396
  });
3782
3397
  const testMessage = { test: "data", timestamp: Date.now() };
3783
3398
  ws.send(JSON.stringify(testMessage));
3784
- const echoMessage = await new Promise((resolve2, reject) => {
3399
+ const echoMessage = await new Promise((resolve, reject) => {
3785
3400
  ws.addEventListener(
3786
3401
  "message",
3787
3402
  (event) => {
3788
- resolve2(JSON.parse(event.data));
3403
+ resolve(JSON.parse(event.data));
3789
3404
  },
3790
3405
  { once: true }
3791
3406
  );
@@ -3799,21 +3414,21 @@ function runRawWebSocketTests(driverTestConfig) {
3799
3414
  const actor2 = client.rawWebSocketActor.getOrCreate(["ping"]);
3800
3415
  const ws = await actor2.websocket();
3801
3416
  if (ws.readyState !== WebSocket.OPEN) {
3802
- await new Promise((resolve2, reject) => {
3803
- ws.addEventListener("open", () => resolve2(), { once: true });
3417
+ await new Promise((resolve, reject) => {
3418
+ ws.addEventListener("open", () => resolve(), { once: true });
3804
3419
  ws.addEventListener("close", reject);
3805
3420
  });
3806
3421
  }
3807
- await new Promise((resolve2, reject) => {
3808
- ws.addEventListener("message", () => resolve2(), { once: true });
3422
+ await new Promise((resolve, reject) => {
3423
+ ws.addEventListener("message", () => resolve(), { once: true });
3809
3424
  ws.addEventListener("close", reject);
3810
3425
  });
3811
3426
  ws.send(JSON.stringify({ type: "ping" }));
3812
- const pongMessage = await new Promise((resolve2, reject) => {
3427
+ const pongMessage = await new Promise((resolve, reject) => {
3813
3428
  ws.addEventListener("message", (event) => {
3814
3429
  const data = JSON.parse(event.data);
3815
3430
  if (data.type === "pong") {
3816
- resolve2(data);
3431
+ resolve(data);
3817
3432
  }
3818
3433
  });
3819
3434
  ws.addEventListener("close", reject);
@@ -3826,23 +3441,23 @@ function runRawWebSocketTests(driverTestConfig) {
3826
3441
  const { client } = await setupDriverTest(c, driverTestConfig);
3827
3442
  const actor1 = client.rawWebSocketActor.getOrCreate(["stats"]);
3828
3443
  const ws1 = await actor1.websocket();
3829
- const ws1MessagePromise = new Promise((resolve2, reject) => {
3830
- ws1.addEventListener("message", () => resolve2(), { once: true });
3444
+ const ws1MessagePromise = new Promise((resolve, reject) => {
3445
+ ws1.addEventListener("message", () => resolve(), { once: true });
3831
3446
  ws1.addEventListener("close", reject);
3832
3447
  });
3833
3448
  await ws1MessagePromise;
3834
3449
  const actor2 = client.rawWebSocketActor.get(["stats"]);
3835
3450
  const ws2 = await actor2.websocket();
3836
- const ws2MessagePromise = new Promise((resolve2, reject) => {
3837
- ws2.addEventListener("message", () => resolve2(), { once: true });
3451
+ const ws2MessagePromise = new Promise((resolve, reject) => {
3452
+ ws2.addEventListener("message", () => resolve(), { once: true });
3838
3453
  ws2.addEventListener("close", reject);
3839
3454
  });
3840
3455
  await Promise.all([ws1MessagePromise, ws2MessagePromise]);
3841
- const pingPromise = new Promise((resolve2, reject) => {
3456
+ const pingPromise = new Promise((resolve, reject) => {
3842
3457
  ws2.addEventListener("message", (event) => {
3843
3458
  const data = JSON.parse(event.data);
3844
3459
  if (data.type === "pong") {
3845
- resolve2(void 0);
3460
+ resolve(void 0);
3846
3461
  }
3847
3462
  });
3848
3463
  ws2.addEventListener("close", reject);
@@ -3851,11 +3466,11 @@ function runRawWebSocketTests(driverTestConfig) {
3851
3466
  ws1.send(JSON.stringify({ data: "test3" }));
3852
3467
  ws2.send(JSON.stringify({ type: "ping" }));
3853
3468
  await pingPromise;
3854
- const statsPromise = new Promise((resolve2, reject) => {
3469
+ const statsPromise = new Promise((resolve, reject) => {
3855
3470
  ws1.addEventListener("message", (event) => {
3856
3471
  const data = JSON.parse(event.data);
3857
3472
  if (data.type === "stats") {
3858
- resolve2(data);
3473
+ resolve(data);
3859
3474
  }
3860
3475
  });
3861
3476
  ws1.addEventListener("close", reject);
@@ -3875,18 +3490,18 @@ function runRawWebSocketTests(driverTestConfig) {
3875
3490
  const actor2 = client.rawWebSocketBinaryActor.getOrCreate(["binary"]);
3876
3491
  const ws = await actor2.websocket();
3877
3492
  if (ws.readyState !== WebSocket.OPEN) {
3878
- await new Promise((resolve2, reject) => {
3879
- ws.addEventListener("open", () => resolve2(), { once: true });
3493
+ await new Promise((resolve, reject) => {
3494
+ ws.addEventListener("open", () => resolve(), { once: true });
3880
3495
  ws.addEventListener("close", reject);
3881
3496
  });
3882
3497
  }
3883
3498
  const receiveBinaryMessage = async () => {
3884
3499
  const response = await new Promise(
3885
- (resolve2, reject) => {
3500
+ (resolve, reject) => {
3886
3501
  ws.addEventListener(
3887
3502
  "message",
3888
3503
  (event) => {
3889
- resolve2(event.data);
3504
+ resolve(event.data);
3890
3505
  },
3891
3506
  { once: true }
3892
3507
  );
@@ -3915,18 +3530,18 @@ function runRawWebSocketTests(driverTestConfig) {
3915
3530
  const { client } = await setupDriverTest(c, driverTestConfig);
3916
3531
  const actor2 = client.rawWebSocketActor.getOrCreate(["paths"]);
3917
3532
  const ws = await actor2.websocket("custom/path");
3918
- await new Promise((resolve2, reject) => {
3533
+ await new Promise((resolve, reject) => {
3919
3534
  ws.addEventListener("open", () => {
3920
- resolve2();
3535
+ resolve();
3921
3536
  });
3922
3537
  ws.addEventListener("error", reject);
3923
3538
  ws.addEventListener("close", reject);
3924
3539
  });
3925
- const welcomeMessage = await new Promise((resolve2) => {
3540
+ const welcomeMessage = await new Promise((resolve) => {
3926
3541
  ws.addEventListener(
3927
3542
  "message",
3928
3543
  (event) => {
3929
- resolve2(JSON.parse(event.data));
3544
+ resolve(JSON.parse(event.data));
3930
3545
  },
3931
3546
  { once: true }
3932
3547
  );
@@ -3941,15 +3556,15 @@ function runRawWebSocketTests(driverTestConfig) {
3941
3556
  params: testParams
3942
3557
  });
3943
3558
  const ws = await actor2.websocket();
3944
- await new Promise((resolve2) => {
3945
- ws.addEventListener("open", () => resolve2(), { once: true });
3559
+ await new Promise((resolve) => {
3560
+ ws.addEventListener("open", () => resolve(), { once: true });
3946
3561
  });
3947
3562
  ws.send(JSON.stringify({ type: "getAuthData" }));
3948
- const response = await new Promise((resolve2, reject) => {
3563
+ const response = await new Promise((resolve, reject) => {
3949
3564
  ws.addEventListener("message", (event) => {
3950
3565
  const data = JSON.parse(event.data);
3951
3566
  if (data.type === "authData") {
3952
- resolve2(data);
3567
+ resolve(data);
3953
3568
  }
3954
3569
  });
3955
3570
  ws.addEventListener("close", reject);
@@ -3962,15 +3577,15 @@ function runRawWebSocketTests(driverTestConfig) {
3962
3577
  const actor2 = client.rawWebSocketActor.getOrCreate(["close-test"]);
3963
3578
  const ws = await actor2.websocket();
3964
3579
  if (ws.readyState !== WebSocket.OPEN) {
3965
- await new Promise((resolve2, reject) => {
3966
- ws.addEventListener("open", () => resolve2(), { once: true });
3580
+ await new Promise((resolve, reject) => {
3581
+ ws.addEventListener("open", () => resolve(), { once: true });
3967
3582
  ws.addEventListener("close", reject);
3968
3583
  });
3969
3584
  }
3970
3585
  const initialStats = await actor2.getStats();
3971
3586
  _vitest.expect.call(void 0, initialStats.connectionCount).toBe(1);
3972
- const closePromise = new Promise((resolve2) => {
3973
- ws.addEventListener("close", () => resolve2(), { once: true });
3587
+ const closePromise = new Promise((resolve) => {
3588
+ ws.addEventListener("close", () => resolve(), { once: true });
3974
3589
  });
3975
3590
  ws.close();
3976
3591
  await closePromise;
@@ -3980,7 +3595,7 @@ function runRawWebSocketTests(driverTestConfig) {
3980
3595
  if (finalStats.connectionCount === 0) {
3981
3596
  break;
3982
3597
  }
3983
- await new Promise((resolve2) => setTimeout(resolve2, 50));
3598
+ await new Promise((resolve) => setTimeout(resolve, 50));
3984
3599
  }
3985
3600
  _vitest.expect.call(void 0, finalStats == null ? void 0 : finalStats.connectionCount).toBe(0);
3986
3601
  });
@@ -3988,15 +3603,15 @@ function runRawWebSocketTests(driverTestConfig) {
3988
3603
  const { client } = await setupDriverTest(c, driverTestConfig);
3989
3604
  const actor2 = client.rawWebSocketActor.getOrCreate(["open-close-test"]);
3990
3605
  const ws1 = await actor2.websocket();
3991
- await new Promise((resolve2, reject) => {
3992
- ws1.addEventListener("open", () => resolve2(), { once: true });
3606
+ await new Promise((resolve, reject) => {
3607
+ ws1.addEventListener("open", () => resolve(), { once: true });
3993
3608
  ws1.addEventListener("close", reject);
3994
3609
  });
3995
- const welcome1 = await new Promise((resolve2, reject) => {
3610
+ const welcome1 = await new Promise((resolve, reject) => {
3996
3611
  ws1.addEventListener(
3997
3612
  "message",
3998
3613
  (event) => {
3999
- resolve2(JSON.parse(event.data));
3614
+ resolve(JSON.parse(event.data));
4000
3615
  },
4001
3616
  { once: true }
4002
3617
  );
@@ -4005,15 +3620,15 @@ function runRawWebSocketTests(driverTestConfig) {
4005
3620
  _vitest.expect.call(void 0, welcome1.type).toBe("welcome");
4006
3621
  _vitest.expect.call(void 0, welcome1.connectionCount).toBe(1);
4007
3622
  const ws2 = await actor2.websocket();
4008
- await new Promise((resolve2, reject) => {
4009
- ws2.addEventListener("open", () => resolve2(), { once: true });
3623
+ await new Promise((resolve, reject) => {
3624
+ ws2.addEventListener("open", () => resolve(), { once: true });
4010
3625
  ws2.addEventListener("close", reject);
4011
3626
  });
4012
- const welcome2 = await new Promise((resolve2, reject) => {
3627
+ const welcome2 = await new Promise((resolve, reject) => {
4013
3628
  ws2.addEventListener(
4014
3629
  "message",
4015
3630
  (event) => {
4016
- resolve2(JSON.parse(event.data));
3631
+ resolve(JSON.parse(event.data));
4017
3632
  },
4018
3633
  { once: true }
4019
3634
  );
@@ -4024,8 +3639,8 @@ function runRawWebSocketTests(driverTestConfig) {
4024
3639
  const midStats = await actor2.getStats();
4025
3640
  _vitest.expect.call(void 0, midStats.connectionCount).toBe(2);
4026
3641
  ws1.close();
4027
- await new Promise((resolve2) => {
4028
- ws1.addEventListener("close", () => resolve2(), { once: true });
3642
+ await new Promise((resolve) => {
3643
+ ws1.addEventListener("close", () => resolve(), { once: true });
4029
3644
  });
4030
3645
  let afterFirstClose;
4031
3646
  for (let i = 0; i < 20; i++) {
@@ -4033,12 +3648,12 @@ function runRawWebSocketTests(driverTestConfig) {
4033
3648
  if (afterFirstClose.connectionCount === 1) {
4034
3649
  break;
4035
3650
  }
4036
- await new Promise((resolve2) => setTimeout(resolve2, 50));
3651
+ await new Promise((resolve) => setTimeout(resolve, 50));
4037
3652
  }
4038
3653
  _vitest.expect.call(void 0, afterFirstClose == null ? void 0 : afterFirstClose.connectionCount).toBe(1);
4039
3654
  ws2.close();
4040
- await new Promise((resolve2) => {
4041
- ws2.addEventListener("close", () => resolve2(), { once: true });
3655
+ await new Promise((resolve) => {
3656
+ ws2.addEventListener("close", () => resolve(), { once: true });
4042
3657
  });
4043
3658
  let finalStats;
4044
3659
  for (let i = 0; i < 20; i++) {
@@ -4046,7 +3661,7 @@ function runRawWebSocketTests(driverTestConfig) {
4046
3661
  if (finalStats.connectionCount === 0) {
4047
3662
  break;
4048
3663
  }
4049
- await new Promise((resolve2) => setTimeout(resolve2, 50));
3664
+ await new Promise((resolve) => setTimeout(resolve, 50));
4050
3665
  }
4051
3666
  _vitest.expect.call(void 0, finalStats == null ? void 0 : finalStats.connectionCount).toBe(0);
4052
3667
  });
@@ -4054,15 +3669,15 @@ function runRawWebSocketTests(driverTestConfig) {
4054
3669
  const { client } = await setupDriverTest(c, driverTestConfig);
4055
3670
  const actor2 = client.rawWebSocketActor.getOrCreate(["query-params"]);
4056
3671
  const ws = await actor2.websocket("api/v1/stream?token=abc123&user=test");
4057
- await new Promise((resolve2, reject) => {
4058
- ws.addEventListener("open", () => resolve2(), { once: true });
3672
+ await new Promise((resolve, reject) => {
3673
+ ws.addEventListener("open", () => resolve(), { once: true });
4059
3674
  ws.addEventListener("error", reject);
4060
3675
  });
4061
- const requestInfoPromise = new Promise((resolve2, reject) => {
3676
+ const requestInfoPromise = new Promise((resolve, reject) => {
4062
3677
  ws.addEventListener("message", (event) => {
4063
3678
  const data = JSON.parse(event.data);
4064
3679
  if (data.type === "requestInfo") {
4065
- resolve2(data);
3680
+ resolve(data);
4066
3681
  }
4067
3682
  });
4068
3683
  ws.addEventListener("close", reject);
@@ -4077,289 +3692,6 @@ function runRawWebSocketTests(driverTestConfig) {
4077
3692
  });
4078
3693
  }
4079
3694
 
4080
- // src/driver-test-suite/tests/raw-websocket-direct-registry.ts
4081
-
4082
- function runRawWebSocketDirectRegistryTests(driverTestConfig) {
4083
- _vitest.describe.call(void 0, "raw websocket - direct registry access", () => {
4084
- _vitest.test.call(void 0, "should establish vanilla WebSocket connection with proper subprotocols", async (c) => {
4085
- const { endpoint } = await setupDriverTest(c, driverTestConfig);
4086
- const WebSocket2 = await _chunkTZJKSBUQcjs.importWebSocket.call(void 0, );
4087
- const actorQuery = {
4088
- getOrCreateForKey: {
4089
- name: "rawWebSocketActor",
4090
- key: ["vanilla-test"]
4091
- }
4092
- };
4093
- const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
4094
- const wsEndpoint = endpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
4095
- const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
4096
- const ws = new WebSocket2(wsUrl, [
4097
- queryProtocol,
4098
- // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
4099
- "rivetkit"
4100
- ]);
4101
- await new Promise((resolve2, reject) => {
4102
- ws.addEventListener("open", () => {
4103
- resolve2();
4104
- });
4105
- ws.addEventListener("error", reject);
4106
- ws.addEventListener("close", reject);
4107
- });
4108
- const welcomeMessage = await new Promise((resolve2, reject) => {
4109
- ws.addEventListener(
4110
- "message",
4111
- (event) => {
4112
- resolve2(JSON.parse(event.data));
4113
- },
4114
- { once: true }
4115
- );
4116
- ws.addEventListener("close", reject);
4117
- });
4118
- _vitest.expect.call(void 0, welcomeMessage.type).toBe("welcome");
4119
- _vitest.expect.call(void 0, welcomeMessage.connectionCount).toBe(1);
4120
- ws.close();
4121
- });
4122
- _vitest.test.call(void 0, "should echo messages with vanilla WebSocket", async (c) => {
4123
- const { endpoint } = await setupDriverTest(c, driverTestConfig);
4124
- const WebSocket2 = await _chunkTZJKSBUQcjs.importWebSocket.call(void 0, );
4125
- const actorQuery = {
4126
- getOrCreateForKey: {
4127
- name: "rawWebSocketActor",
4128
- key: ["vanilla-echo"]
4129
- }
4130
- };
4131
- const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
4132
- const wsEndpoint = endpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
4133
- const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
4134
- const ws = new WebSocket2(wsUrl, [
4135
- queryProtocol,
4136
- // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
4137
- "rivetkit"
4138
- ]);
4139
- await new Promise((resolve2, reject) => {
4140
- ws.addEventListener("open", () => resolve2(), { once: true });
4141
- ws.addEventListener("close", reject);
4142
- });
4143
- await new Promise((resolve2, reject) => {
4144
- ws.addEventListener("message", () => resolve2(), { once: true });
4145
- ws.addEventListener("close", reject);
4146
- });
4147
- const testMessage = { test: "vanilla", timestamp: Date.now() };
4148
- ws.send(JSON.stringify(testMessage));
4149
- const echoMessage = await new Promise((resolve2, reject) => {
4150
- ws.addEventListener(
4151
- "message",
4152
- (event) => {
4153
- resolve2(JSON.parse(event.data));
4154
- },
4155
- { once: true }
4156
- );
4157
- ws.addEventListener("close", reject);
4158
- });
4159
- _vitest.expect.call(void 0, echoMessage).toEqual(testMessage);
4160
- ws.close();
4161
- });
4162
- _vitest.test.call(void 0, "should handle connection parameters for authentication", async (c) => {
4163
- const { endpoint } = await setupDriverTest(c, driverTestConfig);
4164
- const WebSocket2 = await _chunkTZJKSBUQcjs.importWebSocket.call(void 0, );
4165
- const actorQuery = {
4166
- getOrCreateForKey: {
4167
- name: "rawWebSocketActor",
4168
- key: ["vanilla-auth"]
4169
- }
4170
- };
4171
- const connParams = { token: "ws-auth-token", userId: "ws-user123" };
4172
- const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
4173
- const connParamsProtocol = `conn_params.${encodeURIComponent(JSON.stringify(connParams))}`;
4174
- const wsEndpoint = endpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
4175
- const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
4176
- const ws = new WebSocket2(wsUrl, [
4177
- queryProtocol,
4178
- connParamsProtocol,
4179
- // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
4180
- "rivetkit"
4181
- ]);
4182
- await new Promise((resolve2, reject) => {
4183
- ws.addEventListener("open", () => {
4184
- resolve2();
4185
- });
4186
- ws.addEventListener("error", reject);
4187
- ws.addEventListener("close", reject);
4188
- });
4189
- const welcomeMessage = await new Promise((resolve2, reject) => {
4190
- ws.addEventListener(
4191
- "message",
4192
- (event) => {
4193
- resolve2(JSON.parse(event.data));
4194
- },
4195
- { once: true }
4196
- );
4197
- ws.addEventListener("close", reject);
4198
- });
4199
- _vitest.expect.call(void 0, welcomeMessage.type).toBe("welcome");
4200
- ws.close();
4201
- });
4202
- _vitest.test.call(void 0, "should handle custom user protocols alongside rivetkit protocols", async (c) => {
4203
- const { endpoint } = await setupDriverTest(c, driverTestConfig);
4204
- const WebSocket2 = await _chunkTZJKSBUQcjs.importWebSocket.call(void 0, );
4205
- const actorQuery = {
4206
- getOrCreateForKey: {
4207
- name: "rawWebSocketActor",
4208
- key: ["vanilla-protocols"]
4209
- }
4210
- };
4211
- const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
4212
- const userProtocol1 = "chat-v1";
4213
- const userProtocol2 = "custom-protocol";
4214
- const wsEndpoint = endpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
4215
- const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
4216
- const ws = new WebSocket2(wsUrl, [
4217
- queryProtocol,
4218
- userProtocol1,
4219
- userProtocol2,
4220
- // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
4221
- "rivetkit"
4222
- ]);
4223
- await new Promise((resolve2, reject) => {
4224
- ws.addEventListener("open", () => {
4225
- resolve2();
4226
- });
4227
- ws.addEventListener("error", reject);
4228
- ws.addEventListener("close", reject);
4229
- });
4230
- const welcomeMessage = await new Promise((resolve2, reject) => {
4231
- ws.addEventListener(
4232
- "message",
4233
- (event) => {
4234
- resolve2(JSON.parse(event.data));
4235
- },
4236
- { once: true }
4237
- );
4238
- ws.addEventListener("close", reject);
4239
- });
4240
- _vitest.expect.call(void 0, welcomeMessage.type).toBe("welcome");
4241
- ws.close();
4242
- });
4243
- _vitest.test.call(void 0, "should handle different paths for WebSocket routes", async (c) => {
4244
- const { endpoint } = await setupDriverTest(c, driverTestConfig);
4245
- const WebSocket2 = await _chunkTZJKSBUQcjs.importWebSocket.call(void 0, );
4246
- const actorQuery = {
4247
- getOrCreateForKey: {
4248
- name: "rawWebSocketActor",
4249
- key: ["vanilla-paths"]
4250
- }
4251
- };
4252
- const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
4253
- const wsEndpoint = endpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
4254
- const paths = ["chat/room1", "updates/feed", "stream/events"];
4255
- for (const path of paths) {
4256
- const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/${path}`;
4257
- const ws = new WebSocket2(wsUrl, [
4258
- queryProtocol,
4259
- // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
4260
- "rivetkit"
4261
- ]);
4262
- await new Promise((resolve2, reject) => {
4263
- ws.addEventListener("open", () => {
4264
- resolve2();
4265
- });
4266
- ws.addEventListener("error", reject);
4267
- });
4268
- const welcomeMessage = await new Promise((resolve2, reject) => {
4269
- ws.addEventListener(
4270
- "message",
4271
- (event) => {
4272
- resolve2(JSON.parse(event.data));
4273
- },
4274
- { once: true }
4275
- );
4276
- ws.addEventListener("close", reject);
4277
- });
4278
- _vitest.expect.call(void 0, welcomeMessage.type).toBe("welcome");
4279
- ws.close();
4280
- }
4281
- });
4282
- _vitest.test.call(void 0, "should return error for actors without onWebSocket handler", async (c) => {
4283
- const { endpoint } = await setupDriverTest(c, driverTestConfig);
4284
- const WebSocket2 = await _chunkTZJKSBUQcjs.importWebSocket.call(void 0, );
4285
- const actorQuery = {
4286
- getOrCreateForKey: {
4287
- name: "rawWebSocketNoHandlerActor",
4288
- key: ["vanilla-no-handler"]
4289
- }
4290
- };
4291
- const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
4292
- const wsEndpoint = endpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
4293
- const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
4294
- const ws = new WebSocket2(wsUrl, [
4295
- queryProtocol,
4296
- // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
4297
- "rivetkit"
4298
- ]);
4299
- await new Promise((resolve2) => {
4300
- ws.addEventListener("error", () => resolve2(), { once: true });
4301
- ws.addEventListener("close", () => resolve2(), { once: true });
4302
- });
4303
- _vitest.expect.call(void 0, ws.readyState).toBe(ws.CLOSED || 3);
4304
- });
4305
- _vitest.test.call(void 0, "should handle binary data over vanilla WebSocket", async (c) => {
4306
- const { endpoint } = await setupDriverTest(c, driverTestConfig);
4307
- const WebSocket2 = await _chunkTZJKSBUQcjs.importWebSocket.call(void 0, );
4308
- const actorQuery = {
4309
- getOrCreateForKey: {
4310
- name: "rawWebSocketActor",
4311
- key: ["vanilla-binary"]
4312
- }
4313
- };
4314
- const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
4315
- const wsEndpoint = endpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
4316
- const wsUrl = `${wsEndpoint}/registry/actors/raw/websocket/`;
4317
- const ws = new WebSocket2(wsUrl, [
4318
- queryProtocol,
4319
- // HACK: See packages/drivers/cloudflare-workers/src/websocket.ts
4320
- "rivetkit"
4321
- ]);
4322
- ws.binaryType = "arraybuffer";
4323
- await new Promise((resolve2, reject) => {
4324
- ws.addEventListener("open", () => resolve2(), { once: true });
4325
- ws.addEventListener("close", reject);
4326
- });
4327
- await new Promise((resolve2, reject) => {
4328
- ws.addEventListener("message", () => resolve2(), { once: true });
4329
- ws.addEventListener("close", reject);
4330
- });
4331
- const binaryData = new Uint8Array([1, 2, 3, 4, 5]);
4332
- ws.send(binaryData.buffer);
4333
- const echoedData = await new Promise((resolve2, reject) => {
4334
- ws.addEventListener(
4335
- "message",
4336
- (event) => {
4337
- resolve2(event.data);
4338
- },
4339
- { once: true }
4340
- );
4341
- ws.addEventListener("close", reject);
4342
- });
4343
- const echoedArray = new Uint8Array(echoedData);
4344
- _vitest.expect.call(void 0, Array.from(echoedArray)).toEqual([1, 2, 3, 4, 5]);
4345
- ws.send(JSON.stringify({ type: "binary-test", size: binaryData.length }));
4346
- const echoMessage = await new Promise((resolve2, reject) => {
4347
- ws.addEventListener(
4348
- "message",
4349
- (event) => {
4350
- resolve2(JSON.parse(event.data));
4351
- },
4352
- { once: true }
4353
- );
4354
- ws.addEventListener("close", reject);
4355
- });
4356
- _vitest.expect.call(void 0, echoMessage.type).toBe("binary-test");
4357
- _vitest.expect.call(void 0, echoMessage.size).toBe(5);
4358
- ws.close();
4359
- });
4360
- });
4361
- }
4362
-
4363
3695
  // src/driver-test-suite/tests/request-access.ts
4364
3696
 
4365
3697
  function runRequestAccessTests(driverTestConfig) {
@@ -4434,95 +3766,6 @@ function runRequestAccessTests(driverTestConfig) {
4434
3766
  }
4435
3767
  await connection.dispose();
4436
3768
  });
4437
- _vitest.test.call(void 0, "should have access to request object in onAuth", async (c) => {
4438
- const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
4439
- if (driverTestConfig.clientType === "http") {
4440
- console.log("Skipping onAuth test - requires public endpoint setup");
4441
- }
4442
- });
4443
- _vitest.test.call(void 0, "should have access to request object in onFetch", async (c) => {
4444
- const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
4445
- const handle = client.requestAccessActor.getOrCreate(["test-fetch"]);
4446
- await handle.resolve();
4447
- const actorQuery = {
4448
- getOrCreateForKey: {
4449
- name: "requestAccessActor",
4450
- key: ["test-fetch"]
4451
- }
4452
- };
4453
- const url = `${endpoint}/registry/actors/raw/http/test-path`;
4454
- const response = await fetch(url, {
4455
- method: "POST",
4456
- headers: {
4457
- "Content-Type": "application/json",
4458
- "X-Test-Header": "test-value",
4459
- "X-RivetKit-Query": JSON.stringify(actorQuery)
4460
- },
4461
- body: JSON.stringify({ test: "data" })
4462
- });
4463
- if (!response.ok) {
4464
- const errorText = await response.text();
4465
- console.error(
4466
- `HTTP request failed: ${response.status} ${response.statusText}`,
4467
- errorText
4468
- );
4469
- }
4470
- _vitest.expect.call(void 0, response.ok).toBe(true);
4471
- const data = await response.json();
4472
- _vitest.expect.call(void 0, data.hasRequest).toBe(true);
4473
- _vitest.expect.call(void 0, data.requestUrl).toContain("/test-path");
4474
- _vitest.expect.call(void 0, data.requestMethod).toBe("POST");
4475
- _vitest.expect.call(void 0, data.requestHeaders).toBeDefined();
4476
- _vitest.expect.call(void 0, data.requestHeaders["content-type"]).toBe(
4477
- "application/json"
4478
- );
4479
- _vitest.expect.call(void 0, data.requestHeaders["x-test-header"]).toBe("test-value");
4480
- });
4481
- _vitest.test.call(void 0, "should have access to request object in onWebSocket", async (c) => {
4482
- const { client, endpoint } = await setupDriverTest(c, driverTestConfig);
4483
- if (typeof WebSocket !== "undefined") {
4484
- const handle = client.requestAccessActor.getOrCreate([
4485
- "test-websocket"
4486
- ]);
4487
- await handle.resolve();
4488
- const actorQuery = {
4489
- getOrCreateForKey: {
4490
- name: "requestAccessActor",
4491
- key: ["test-websocket"]
4492
- }
4493
- };
4494
- const queryProtocol = `query.${encodeURIComponent(JSON.stringify(actorQuery))}`;
4495
- const wsUrl = endpoint.replace("http://", "ws://").replace("https://", "wss://");
4496
- const ws = new WebSocket(
4497
- `${wsUrl}/registry/actors/raw/websocket/test-path`,
4498
- [
4499
- queryProtocol,
4500
- "rivetkit"
4501
- // Required protocol
4502
- ]
4503
- );
4504
- await new Promise((resolve2, reject) => {
4505
- ws.onopen = () => {
4506
- };
4507
- ws.onmessage = (event) => {
4508
- try {
4509
- const data = JSON.parse(event.data);
4510
- _vitest.expect.call(void 0, data.hasRequest).toBe(true);
4511
- _vitest.expect.call(void 0, data.requestUrl).toContain("/test-path");
4512
- _vitest.expect.call(void 0, data.requestMethod).toBe("GET");
4513
- _vitest.expect.call(void 0, data.requestHeaders).toBeDefined();
4514
- ws.close();
4515
- resolve2();
4516
- } catch (error) {
4517
- reject(error);
4518
- }
4519
- };
4520
- ws.onerror = (error) => {
4521
- reject(error);
4522
- };
4523
- });
4524
- }
4525
- });
4526
3769
  });
4527
3770
  }
4528
3771
 
@@ -4553,13 +3796,10 @@ function runDriverTests(driverTestConfigPartial) {
4553
3796
  runActorMetadataTests(driverTestConfig);
4554
3797
  runActorOnStateChangeTests(driverTestConfig);
4555
3798
  runActorErrorHandlingTests(driverTestConfig);
4556
- runActorAuthTests(driverTestConfig);
4557
3799
  runActorInlineClientTests(driverTestConfig);
4558
3800
  runRawHttpTests(driverTestConfig);
4559
3801
  runRawHttpRequestPropertiesTests(driverTestConfig);
4560
3802
  runRawWebSocketTests(driverTestConfig);
4561
- runRawHttpDirectRegistryTests(driverTestConfig);
4562
- runRawWebSocketDirectRegistryTests(driverTestConfig);
4563
3803
  runActorInspectorTests(driverTestConfig);
4564
3804
  });
4565
3805
  }
@@ -4571,46 +3811,64 @@ async function createTestRuntime(registryPath, driverFactory) {
4571
3811
  filepath: registryPath
4572
3812
  });
4573
3813
  registry.config.test.enabled = true;
4574
- const { driver, cleanup: driverCleanup } = await driverFactory(registry);
4575
- let injectWebSocket;
4576
- let upgradeWebSocket;
4577
- const config = _chunkCTBOSFUHcjs.RunConfigSchema.parse({
3814
+ const {
4578
3815
  driver,
4579
- getUpgradeWebSocket: () => upgradeWebSocket,
4580
- inspector: {
4581
- enabled: true,
4582
- token: () => "token"
4583
- }
4584
- });
4585
- const managerDriver = driver.manager(registry.config, config);
4586
- const inlineDriver = _chunkUIM22YJLcjs.createInlineClientDriver.call(void 0, managerDriver);
4587
- const { router } = _chunkUIM22YJLcjs.createManagerRouter.call(void 0,
4588
- registry.config,
4589
- config,
4590
- inlineDriver,
4591
- managerDriver,
4592
- false
4593
- );
4594
- const nodeWebSocket = _nodews.createNodeWebSocket.call(void 0, { app: router });
4595
- upgradeWebSocket = nodeWebSocket.upgradeWebSocket;
4596
- injectWebSocket = nodeWebSocket.injectWebSocket;
4597
- const port = await _chunkFCCPJNMAcjs.getPort.call(void 0, );
4598
- const server = _nodeserver.serve.call(void 0, {
4599
- fetch: router.fetch,
4600
- hostname: "127.0.0.1",
4601
- port
4602
- });
4603
- _invariant2.default.call(void 0, injectWebSocket !== void 0, "should have injectWebSocket");
4604
- injectWebSocket(server);
4605
- const endpoint = `http://127.0.0.1:${port}`;
4606
- const cleanup = async () => {
4607
- await new Promise((resolve2) => server.close(() => resolve2(void 0)));
4608
- await (driverCleanup == null ? void 0 : driverCleanup());
4609
- };
4610
- return {
4611
- endpoint,
4612
- cleanup
4613
- };
3816
+ cleanup: driverCleanup,
3817
+ rivetEngine
3818
+ } = await driverFactory(registry);
3819
+ if (rivetEngine) {
3820
+ const cleanup = async () => {
3821
+ await (driverCleanup == null ? void 0 : driverCleanup());
3822
+ };
3823
+ return {
3824
+ endpoint: rivetEngine.endpoint,
3825
+ namespace: rivetEngine.namespace,
3826
+ runnerName: rivetEngine.runnerName,
3827
+ cleanup
3828
+ };
3829
+ } else {
3830
+ let upgradeWebSocket;
3831
+ const config = _chunkRM2SVURRcjs.RunConfigSchema.parse({
3832
+ driver,
3833
+ getUpgradeWebSocket: () => upgradeWebSocket,
3834
+ inspector: {
3835
+ enabled: true,
3836
+ token: () => "token"
3837
+ }
3838
+ });
3839
+ const managerDriver = driver.manager(registry.config, config);
3840
+ const { router } = _chunkMRZS2J4Xcjs.createManagerRouter.call(void 0,
3841
+ registry.config,
3842
+ config,
3843
+ managerDriver,
3844
+ false
3845
+ );
3846
+ const nodeWebSocket = _nodews.createNodeWebSocket.call(void 0, { app: router });
3847
+ upgradeWebSocket = nodeWebSocket.upgradeWebSocket;
3848
+ const port = await _chunkFGFT4FVXcjs.getPort.call(void 0, );
3849
+ const server = _nodeserver.serve.call(void 0, {
3850
+ fetch: router.fetch,
3851
+ hostname: "127.0.0.1",
3852
+ port
3853
+ });
3854
+ _invariant2.default.call(void 0,
3855
+ nodeWebSocket.injectWebSocket !== void 0,
3856
+ "should have injectWebSocket"
3857
+ );
3858
+ nodeWebSocket.injectWebSocket(server);
3859
+ const serverEndpoint = `http://127.0.0.1:${port}`;
3860
+ logger().info({ msg: "test serer listening", port });
3861
+ const cleanup = async () => {
3862
+ await new Promise((resolve) => server.close(() => resolve(void 0)));
3863
+ await (driverCleanup == null ? void 0 : driverCleanup());
3864
+ };
3865
+ return {
3866
+ endpoint: serverEndpoint,
3867
+ namespace: "default",
3868
+ runnerName: "rivetkit",
3869
+ cleanup
3870
+ };
3871
+ }
4614
3872
  }
4615
3873
 
4616
3874