rivetkit 2.0.3 → 2.0.4

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 (233) 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-6PDXBYI5.js → chunk-3F2YSRJL.js} +8 -23
  10. package/dist/tsup/chunk-3F2YSRJL.js.map +1 -0
  11. package/dist/tsup/chunk-4CXBCT26.cjs +250 -0
  12. package/dist/tsup/chunk-4CXBCT26.cjs.map +1 -0
  13. package/dist/tsup/chunk-4R73YDN3.cjs +20 -0
  14. package/dist/tsup/chunk-4R73YDN3.cjs.map +1 -0
  15. package/dist/tsup/{chunk-OGAPU3UG.cjs → chunk-6LJT3QRL.cjs} +39 -25
  16. package/dist/tsup/chunk-6LJT3QRL.cjs.map +1 -0
  17. package/dist/tsup/{chunk-6WKQDDUD.cjs → chunk-GICQ3YCU.cjs} +143 -141
  18. package/dist/tsup/chunk-GICQ3YCU.cjs.map +1 -0
  19. package/dist/tsup/{chunk-FLMTTN27.js → chunk-H26RP6GD.js} +15 -8
  20. package/dist/tsup/chunk-H26RP6GD.js.map +1 -0
  21. package/dist/tsup/chunk-HI3HWJRC.js +20 -0
  22. package/dist/tsup/chunk-HI3HWJRC.js.map +1 -0
  23. package/dist/tsup/{chunk-4NSUQZ2H.js → chunk-HLLF4B4Q.js} +116 -114
  24. package/dist/tsup/chunk-HLLF4B4Q.js.map +1 -0
  25. package/dist/tsup/{chunk-FCCPJNMA.cjs → chunk-IH6CKNDW.cjs} +12 -27
  26. package/dist/tsup/chunk-IH6CKNDW.cjs.map +1 -0
  27. package/dist/tsup/chunk-LV2S3OU3.js +250 -0
  28. package/dist/tsup/chunk-LV2S3OU3.js.map +1 -0
  29. package/dist/tsup/{chunk-R2OPSKIV.cjs → chunk-LWNKVZG5.cjs} +20 -13
  30. package/dist/tsup/chunk-LWNKVZG5.cjs.map +1 -0
  31. package/dist/tsup/{chunk-INGJP237.js → chunk-NFU2BBT5.js} +102 -43
  32. package/dist/tsup/chunk-NFU2BBT5.js.map +1 -0
  33. package/dist/tsup/{chunk-3H7O2A7I.js → chunk-PQY7KKTL.js} +33 -19
  34. package/dist/tsup/chunk-PQY7KKTL.js.map +1 -0
  35. package/dist/tsup/{chunk-PO4VLDWA.js → chunk-QK72M5JB.js} +3 -5
  36. package/dist/tsup/chunk-QK72M5JB.js.map +1 -0
  37. package/dist/tsup/{chunk-TZJKSBUQ.cjs → chunk-QNNXFOQV.cjs} +3 -5
  38. package/dist/tsup/chunk-QNNXFOQV.cjs.map +1 -0
  39. package/dist/tsup/{chunk-GIR3AFFI.cjs → chunk-SBHHJ6QS.cjs} +102 -43
  40. package/dist/tsup/chunk-SBHHJ6QS.cjs.map +1 -0
  41. package/dist/tsup/chunk-TQ62L3X7.js +325 -0
  42. package/dist/tsup/chunk-TQ62L3X7.js.map +1 -0
  43. package/dist/tsup/chunk-VO7ZRVVD.cjs +6293 -0
  44. package/dist/tsup/chunk-VO7ZRVVD.cjs.map +1 -0
  45. package/dist/tsup/chunk-WHBPJNGW.cjs +325 -0
  46. package/dist/tsup/chunk-WHBPJNGW.cjs.map +1 -0
  47. package/dist/tsup/chunk-XJQHKJ4P.js +6293 -0
  48. package/dist/tsup/chunk-XJQHKJ4P.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-BI-6UIBJ.d.ts} +196 -226
  63. package/dist/tsup/{connection-BR_Ve4ku.d.cts → connection-Dyd4NLGW.d.cts} +196 -226
  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 +155 -1363
  70. package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
  71. package/dist/tsup/driver-test-suite/mod.d.cts +11 -5
  72. package/dist/tsup/driver-test-suite/mod.d.ts +11 -5
  73. package/dist/tsup/driver-test-suite/mod.js +876 -2084
  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-BTe_Rsdn.d.cts} +2 -3
  86. package/dist/tsup/{router-endpoints-AYkXG8Tl.d.cts → router-endpoints-CBSrKHmo.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 +3 -3
  95. package/dist/tsup/utils.d.cts +1 -1
  96. package/dist/tsup/utils.d.ts +1 -1
  97. package/dist/tsup/utils.js +2 -2
  98. package/package.json +4 -4
  99. package/src/actor/action.ts +1 -5
  100. package/src/actor/config.ts +27 -295
  101. package/src/actor/connection.ts +9 -12
  102. package/src/actor/context.ts +1 -4
  103. package/src/actor/definition.ts +7 -11
  104. package/src/actor/errors.ts +97 -35
  105. package/src/actor/generic-conn-driver.ts +28 -16
  106. package/src/actor/instance.ts +177 -133
  107. package/src/actor/log.ts +4 -13
  108. package/src/actor/mod.ts +0 -5
  109. package/src/actor/protocol/old.ts +42 -26
  110. package/src/actor/protocol/serde.ts +1 -1
  111. package/src/actor/router-endpoints.ts +41 -38
  112. package/src/actor/router.ts +20 -18
  113. package/src/actor/unstable-react.ts +1 -1
  114. package/src/actor/utils.ts +6 -2
  115. package/src/client/actor-common.ts +1 -1
  116. package/src/client/actor-conn.ts +152 -91
  117. package/src/client/actor-handle.ts +85 -25
  118. package/src/client/actor-query.ts +65 -0
  119. package/src/client/client.ts +29 -98
  120. package/src/client/config.ts +44 -0
  121. package/src/client/errors.ts +1 -0
  122. package/src/client/log.ts +2 -4
  123. package/src/client/mod.ts +16 -12
  124. package/src/client/raw-utils.ts +82 -25
  125. package/src/client/utils.ts +5 -3
  126. package/src/common/fake-event-source.ts +10 -9
  127. package/src/common/inline-websocket-adapter2.ts +39 -30
  128. package/src/common/log.ts +176 -101
  129. package/src/common/logfmt.ts +21 -30
  130. package/src/common/router.ts +12 -19
  131. package/src/common/utils.ts +27 -13
  132. package/src/common/websocket.ts +0 -1
  133. package/src/driver-helpers/mod.ts +1 -1
  134. package/src/driver-test-suite/log.ts +1 -3
  135. package/src/driver-test-suite/mod.ts +86 -60
  136. package/src/driver-test-suite/tests/actor-handle.ts +33 -0
  137. package/src/driver-test-suite/tests/manager-driver.ts +5 -3
  138. package/src/driver-test-suite/tests/raw-http-direct-registry.ts +227 -226
  139. package/src/driver-test-suite/tests/raw-websocket-direct-registry.ts +393 -392
  140. package/src/driver-test-suite/tests/request-access.ts +112 -126
  141. package/src/driver-test-suite/utils.ts +13 -10
  142. package/src/drivers/default.ts +7 -4
  143. package/src/drivers/engine/actor-driver.ts +22 -13
  144. package/src/drivers/engine/config.ts +2 -10
  145. package/src/drivers/engine/kv.ts +1 -1
  146. package/src/drivers/engine/log.ts +1 -3
  147. package/src/drivers/engine/mod.ts +2 -3
  148. package/src/drivers/file-system/actor.ts +1 -1
  149. package/src/drivers/file-system/global-state.ts +33 -20
  150. package/src/drivers/file-system/log.ts +1 -3
  151. package/src/drivers/file-system/manager.ts +31 -8
  152. package/src/inspector/config.ts +9 -4
  153. package/src/inspector/log.ts +1 -1
  154. package/src/inspector/manager.ts +2 -2
  155. package/src/inspector/utils.ts +1 -1
  156. package/src/manager/driver.ts +10 -2
  157. package/src/manager/hono-websocket-adapter.ts +21 -12
  158. package/src/manager/log.ts +2 -4
  159. package/src/manager/mod.ts +1 -1
  160. package/src/manager/router.ts +277 -1657
  161. package/src/manager-api/routes/actors-create.ts +16 -0
  162. package/src/manager-api/routes/actors-delete.ts +4 -0
  163. package/src/manager-api/routes/actors-get-by-id.ts +7 -0
  164. package/src/manager-api/routes/actors-get-or-create-by-id.ts +29 -0
  165. package/src/manager-api/routes/actors-get.ts +7 -0
  166. package/src/manager-api/routes/common.ts +18 -0
  167. package/src/mod.ts +0 -2
  168. package/src/registry/config.ts +1 -1
  169. package/src/registry/log.ts +2 -4
  170. package/src/registry/mod.ts +57 -24
  171. package/src/registry/run-config.ts +31 -33
  172. package/src/registry/serve.ts +4 -5
  173. package/src/remote-manager-driver/actor-http-client.ts +72 -0
  174. package/src/remote-manager-driver/actor-websocket-client.ts +63 -0
  175. package/src/remote-manager-driver/api-endpoints.ts +79 -0
  176. package/src/remote-manager-driver/api-utils.ts +43 -0
  177. package/src/remote-manager-driver/log.ts +5 -0
  178. package/src/remote-manager-driver/mod.ts +274 -0
  179. package/src/{drivers/engine → remote-manager-driver}/ws-proxy.ts +24 -14
  180. package/src/serde.ts +8 -2
  181. package/src/test/log.ts +1 -3
  182. package/src/test/mod.ts +17 -16
  183. package/dist/tsup/chunk-2CRLFV6Z.cjs +0 -202
  184. package/dist/tsup/chunk-2CRLFV6Z.cjs.map +0 -1
  185. package/dist/tsup/chunk-3H7O2A7I.js.map +0 -1
  186. package/dist/tsup/chunk-42I3OZ3Q.js +0 -15
  187. package/dist/tsup/chunk-42I3OZ3Q.js.map +0 -1
  188. package/dist/tsup/chunk-4NSUQZ2H.js.map +0 -1
  189. package/dist/tsup/chunk-6PDXBYI5.js.map +0 -1
  190. package/dist/tsup/chunk-6WKQDDUD.cjs.map +0 -1
  191. package/dist/tsup/chunk-CTBOSFUH.cjs +0 -116
  192. package/dist/tsup/chunk-CTBOSFUH.cjs.map +0 -1
  193. package/dist/tsup/chunk-EGVZZFE2.js +0 -2857
  194. package/dist/tsup/chunk-EGVZZFE2.js.map +0 -1
  195. package/dist/tsup/chunk-FCCPJNMA.cjs.map +0 -1
  196. package/dist/tsup/chunk-FLMTTN27.js.map +0 -1
  197. package/dist/tsup/chunk-GIR3AFFI.cjs.map +0 -1
  198. package/dist/tsup/chunk-INGJP237.js.map +0 -1
  199. package/dist/tsup/chunk-KJCJLKRM.js +0 -116
  200. package/dist/tsup/chunk-KJCJLKRM.js.map +0 -1
  201. package/dist/tsup/chunk-KUPQZYUQ.cjs +0 -15
  202. package/dist/tsup/chunk-KUPQZYUQ.cjs.map +0 -1
  203. package/dist/tsup/chunk-O2MBYIXO.cjs +0 -2857
  204. package/dist/tsup/chunk-O2MBYIXO.cjs.map +0 -1
  205. package/dist/tsup/chunk-OGAPU3UG.cjs.map +0 -1
  206. package/dist/tsup/chunk-OV6AYD4S.js +0 -4406
  207. package/dist/tsup/chunk-OV6AYD4S.js.map +0 -1
  208. package/dist/tsup/chunk-PO4VLDWA.js.map +0 -1
  209. package/dist/tsup/chunk-R2OPSKIV.cjs.map +0 -1
  210. package/dist/tsup/chunk-TZJKSBUQ.cjs.map +0 -1
  211. package/dist/tsup/chunk-UBUC5C3G.cjs +0 -189
  212. package/dist/tsup/chunk-UBUC5C3G.cjs.map +0 -1
  213. package/dist/tsup/chunk-UIM22YJL.cjs +0 -4406
  214. package/dist/tsup/chunk-UIM22YJL.cjs.map +0 -1
  215. package/dist/tsup/chunk-URVFQMYI.cjs +0 -230
  216. package/dist/tsup/chunk-URVFQMYI.cjs.map +0 -1
  217. package/dist/tsup/chunk-UVUPOS46.js +0 -230
  218. package/dist/tsup/chunk-UVUPOS46.js.map +0 -1
  219. package/dist/tsup/chunk-VRRHBNJC.js +0 -189
  220. package/dist/tsup/chunk-VRRHBNJC.js.map +0 -1
  221. package/dist/tsup/chunk-XFSS33EQ.js +0 -202
  222. package/dist/tsup/chunk-XFSS33EQ.js.map +0 -1
  223. package/src/client/http-client-driver.ts +0 -326
  224. package/src/driver-test-suite/test-inline-client-driver.ts +0 -402
  225. package/src/driver-test-suite/tests/actor-auth.ts +0 -591
  226. package/src/drivers/engine/api-endpoints.ts +0 -128
  227. package/src/drivers/engine/api-utils.ts +0 -70
  228. package/src/drivers/engine/manager-driver.ts +0 -391
  229. package/src/inline-client-driver/log.ts +0 -7
  230. package/src/inline-client-driver/mod.ts +0 -385
  231. package/src/manager/auth.ts +0 -121
  232. /package/src/{drivers/engine → actor}/keys.test.ts +0 -0
  233. /package/src/{drivers/engine → actor}/keys.ts +0 -0
@@ -1,230 +0,0 @@
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; } }
2
-
3
-
4
-
5
-
6
-
7
- var _chunkO2MBYIXOcjs = require('./chunk-O2MBYIXO.cjs');
8
-
9
-
10
-
11
- var _chunkTZJKSBUQcjs = require('./chunk-TZJKSBUQ.cjs');
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
- var _chunk6WKQDDUDcjs = require('./chunk-6WKQDDUD.cjs');
27
-
28
-
29
-
30
- var _chunkOGAPU3UGcjs = require('./chunk-OGAPU3UG.cjs');
31
-
32
- // src/client/http-client-driver.ts
33
- var _cborx = require('cbor-x'); var cbor = _interopRequireWildcard(_cborx);
34
- function createHttpClientDriver(managerEndpoint) {
35
- const dynamicImports = (async () => {
36
- const [WebSocket, EventSource] = await Promise.all([
37
- _chunkTZJKSBUQcjs.importWebSocket.call(void 0, ),
38
- _chunkO2MBYIXOcjs.importEventSource.call(void 0, )
39
- ]);
40
- return {
41
- WebSocket,
42
- EventSource
43
- };
44
- })();
45
- const driver = {
46
- action: async (_c, actorQuery, encoding, params, name, args, opts) => {
47
- _chunkTZJKSBUQcjs.logger.call(void 0, ).debug("actor handle action", {
48
- name,
49
- args,
50
- query: actorQuery
51
- });
52
- const responseData = await _chunkO2MBYIXOcjs.sendHttpRequest.call(void 0, {
53
- url: `${managerEndpoint}/registry/actors/actions/${encodeURIComponent(name)}`,
54
- method: "POST",
55
- headers: {
56
- [_chunk6WKQDDUDcjs.HEADER_ENCODING]: encoding,
57
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),
58
- ...params !== void 0 ? { [_chunk6WKQDDUDcjs.HEADER_CONN_PARAMS]: JSON.stringify(params) } : {}
59
- },
60
- body: {
61
- args: _chunkOGAPU3UGcjs.bufferToArrayBuffer.call(void 0, cbor.encode(args))
62
- },
63
- encoding,
64
- signal: opts == null ? void 0 : opts.signal,
65
- requestVersionedDataHandler: _chunk6WKQDDUDcjs.HTTP_ACTION_REQUEST_VERSIONED,
66
- responseVersionedDataHandler: _chunk6WKQDDUDcjs.HTTP_ACTION_RESPONSE_VERSIONED
67
- });
68
- return cbor.decode(new Uint8Array(responseData.output));
69
- },
70
- resolveActorId: async (_c, actorQuery, encodingKind, params) => {
71
- _chunkTZJKSBUQcjs.logger.call(void 0, ).debug("resolving actor ID", { query: actorQuery });
72
- try {
73
- const result = await _chunkO2MBYIXOcjs.sendHttpRequest.call(void 0, {
74
- url: `${managerEndpoint}/registry/actors/resolve`,
75
- method: "POST",
76
- headers: {
77
- [_chunk6WKQDDUDcjs.HEADER_ENCODING]: encodingKind,
78
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),
79
- ...params !== void 0 ? { [_chunk6WKQDDUDcjs.HEADER_CONN_PARAMS]: JSON.stringify(params) } : {}
80
- },
81
- body: null,
82
- encoding: encodingKind,
83
- requestVersionedDataHandler: _chunk6WKQDDUDcjs.HTTP_RESOLVE_REQUEST_VERSIONED,
84
- responseVersionedDataHandler: _chunk6WKQDDUDcjs.HTTP_RESOLVE_RESPONSE_VERSIONED
85
- });
86
- _chunkTZJKSBUQcjs.logger.call(void 0, ).debug("resolved actor ID", { actorId: result.actorId });
87
- return result.actorId;
88
- } catch (error) {
89
- _chunkTZJKSBUQcjs.logger.call(void 0, ).error("failed to resolve actor ID", { error });
90
- if (error instanceof _chunkO2MBYIXOcjs.ActorError) {
91
- throw error;
92
- } else {
93
- throw new (0, _chunkO2MBYIXOcjs.InternalError)(
94
- `Failed to resolve actor ID: ${String(error)}`
95
- );
96
- }
97
- }
98
- },
99
- connectWebSocket: async (_c, actorQuery, encodingKind, params) => {
100
- const { WebSocket } = await dynamicImports;
101
- const endpoint = managerEndpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
102
- const url = `${endpoint}/registry/actors/connect/websocket`;
103
- const protocol = [
104
- `query.${encodeURIComponent(JSON.stringify(actorQuery))}`,
105
- `encoding.${encodingKind}`
106
- ];
107
- if (params)
108
- protocol.push(
109
- `conn_params.${encodeURIComponent(JSON.stringify(params))}`
110
- );
111
- protocol.push("rivetkit");
112
- _chunkTZJKSBUQcjs.logger.call(void 0, ).debug("connecting to websocket", { url });
113
- const ws = new WebSocket(url, protocol);
114
- try {
115
- ws.binaryType = _chunk6WKQDDUDcjs.wsBinaryTypeForEncoding.call(void 0, encodingKind);
116
- } catch (error) {
117
- }
118
- return ws;
119
- },
120
- connectSse: async (_c, actorQuery, encodingKind, params) => {
121
- const { EventSource } = await dynamicImports;
122
- const url = `${managerEndpoint}/registry/actors/connect/sse`;
123
- _chunkTZJKSBUQcjs.logger.call(void 0, ).debug("connecting to sse", { url });
124
- const eventSource = new EventSource(url, {
125
- fetch: (input, init) => {
126
- return fetch(input, {
127
- ...init,
128
- headers: {
129
- ...init == null ? void 0 : init.headers,
130
- "User-Agent": _chunkOGAPU3UGcjs.httpUserAgent.call(void 0, ),
131
- [_chunk6WKQDDUDcjs.HEADER_ENCODING]: encodingKind,
132
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),
133
- ...params !== void 0 ? { [_chunk6WKQDDUDcjs.HEADER_CONN_PARAMS]: JSON.stringify(params) } : {}
134
- },
135
- credentials: "include"
136
- });
137
- }
138
- });
139
- return eventSource;
140
- },
141
- sendHttpMessage: async (_c, actorId, encoding, connectionId, connectionToken, message) => {
142
- var _a;
143
- const messageSerialized = _chunk6WKQDDUDcjs.serializeWithEncoding.call(void 0,
144
- encoding,
145
- message,
146
- _chunk6WKQDDUDcjs.TO_SERVER_VERSIONED
147
- );
148
- const res = await fetch(`${managerEndpoint}/registry/actors/message`, {
149
- method: "POST",
150
- headers: {
151
- "User-Agent": _chunkOGAPU3UGcjs.httpUserAgent.call(void 0, ),
152
- [_chunk6WKQDDUDcjs.HEADER_ENCODING]: encoding,
153
- [_chunk6WKQDDUDcjs.HEADER_ACTOR_ID]: actorId,
154
- [_chunk6WKQDDUDcjs.HEADER_CONN_ID]: connectionId,
155
- [_chunk6WKQDDUDcjs.HEADER_CONN_TOKEN]: connectionToken
156
- },
157
- body: messageSerialized,
158
- credentials: "include"
159
- });
160
- if (!res.ok) {
161
- throw new (0, _chunkO2MBYIXOcjs.InternalError)(
162
- `Publish message over HTTP error (${res.statusText}):
163
- ${await res.text()}`
164
- );
165
- }
166
- await ((_a = res.body) == null ? void 0 : _a.cancel());
167
- },
168
- rawHttpRequest: async (_c, actorQuery, encoding, params, path, init) => {
169
- const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
170
- const url = `${managerEndpoint}/registry/actors/raw/http/${normalizedPath}`;
171
- _chunkTZJKSBUQcjs.logger.call(void 0, ).debug("rewriting http url", {
172
- from: path,
173
- to: url
174
- });
175
- const headers = new Headers(init.headers);
176
- headers.set("User-Agent", _chunkOGAPU3UGcjs.httpUserAgent.call(void 0, ));
177
- headers.set(_chunk6WKQDDUDcjs.HEADER_ACTOR_QUERY, JSON.stringify(actorQuery));
178
- headers.set(_chunk6WKQDDUDcjs.HEADER_ENCODING, encoding);
179
- if (params !== void 0) {
180
- headers.set(_chunk6WKQDDUDcjs.HEADER_CONN_PARAMS, JSON.stringify(params));
181
- }
182
- return await fetch(url, {
183
- ...init,
184
- headers
185
- });
186
- },
187
- rawWebSocket: async (_c, actorQuery, encoding, params, path, protocols) => {
188
- const { WebSocket } = await dynamicImports;
189
- const wsEndpoint = managerEndpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
190
- const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
191
- const url = `${wsEndpoint}/registry/actors/raw/websocket/${normalizedPath}`;
192
- _chunkTZJKSBUQcjs.logger.call(void 0, ).debug("rewriting websocket url", {
193
- from: path,
194
- to: url
195
- });
196
- const protocolList = [];
197
- protocolList.push(
198
- `query.${encodeURIComponent(JSON.stringify(actorQuery))}`
199
- );
200
- protocolList.push(`encoding.${encoding}`);
201
- if (params) {
202
- protocolList.push(
203
- `conn_params.${encodeURIComponent(JSON.stringify(params))}`
204
- );
205
- }
206
- protocolList.push("rivetkit");
207
- if (protocols) {
208
- if (Array.isArray(protocols)) {
209
- protocolList.push(...protocols);
210
- } else {
211
- protocolList.push(protocols);
212
- }
213
- }
214
- _chunkTZJKSBUQcjs.logger.call(void 0, ).debug("opening raw websocket", { url });
215
- return new WebSocket(url, protocolList);
216
- }
217
- };
218
- return driver;
219
- }
220
-
221
- // src/client/mod.ts
222
- function createClient(endpoint, opts) {
223
- const driver = createHttpClientDriver(endpoint);
224
- return _chunkO2MBYIXOcjs.createClientWithDriver.call(void 0, driver, opts);
225
- }
226
-
227
-
228
-
229
- exports.createClient = createClient;
230
- //# sourceMappingURL=chunk-URVFQMYI.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/Users/nathan/rivetkit/packages/rivetkit/dist/tsup/chunk-URVFQMYI.cjs","../../src/client/http-client-driver.ts","../../src/client/mod.ts"],"names":[],"mappings":"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","file":"/Users/nathan/rivetkit/packages/rivetkit/dist/tsup/chunk-URVFQMYI.cjs","sourcesContent":[null,"import * as cbor from \"cbor-x\";\nimport type { Context as HonoContext } from \"hono\";\nimport type { WebSocket } from \"ws\";\nimport type { Encoding } from \"@/actor/protocol/serde\";\nimport {\n\tHEADER_ACTOR_ID,\n\tHEADER_ACTOR_QUERY,\n\tHEADER_CONN_ID,\n\tHEADER_CONN_PARAMS,\n\tHEADER_CONN_TOKEN,\n\tHEADER_ENCODING,\n} from \"@/actor/router-endpoints\";\nimport { importEventSource } from \"@/common/eventsource\";\nimport type { UniversalEventSource } from \"@/common/eventsource-interface\";\nimport { importWebSocket } from \"@/common/websocket\";\nimport type { ActorQuery } from \"@/manager/protocol/query\";\nimport type * as protocol from \"@/schemas/client-protocol/mod\";\nimport {\n\tHTTP_ACTION_REQUEST_VERSIONED,\n\tHTTP_ACTION_RESPONSE_VERSIONED,\n\tHTTP_RESOLVE_REQUEST_VERSIONED,\n\tHTTP_RESOLVE_RESPONSE_VERSIONED,\n\tTO_SERVER_VERSIONED,\n} from \"@/schemas/client-protocol/versioned\";\nimport { serializeWithEncoding, wsBinaryTypeForEncoding } from \"@/serde\";\nimport { assertUnreachable, bufferToArrayBuffer, httpUserAgent } from \"@/utils\";\nimport type { ClientDriver } from \"./client\";\nimport * as errors from \"./errors\";\nimport { logger } from \"./log\";\nimport { sendHttpRequest } from \"./utils\";\n\n/**\n * Client driver that communicates with the manager via HTTP.\n */\nexport function createHttpClientDriver(managerEndpoint: string): ClientDriver {\n\t// Lazily import the dynamic imports so we don't have to turn `createClient` in to an async fn\n\tconst dynamicImports = (async () => {\n\t\t// Import dynamic dependencies\n\t\tconst [WebSocket, EventSource] = await Promise.all([\n\t\t\timportWebSocket(),\n\t\t\timportEventSource(),\n\t\t]);\n\t\treturn {\n\t\t\tWebSocket,\n\t\t\tEventSource,\n\t\t};\n\t})();\n\n\tconst driver: ClientDriver = {\n\t\taction: async <Args extends Array<unknown> = unknown[], Response = unknown>(\n\t\t\t_c: HonoContext | undefined,\n\t\t\tactorQuery: ActorQuery,\n\t\t\tencoding: Encoding,\n\t\t\tparams: unknown,\n\t\t\tname: string,\n\t\t\targs: Args,\n\t\t\topts: { signal?: AbortSignal } | undefined,\n\t\t): Promise<Response> => {\n\t\t\tlogger().debug(\"actor handle action\", {\n\t\t\t\tname,\n\t\t\t\targs,\n\t\t\t\tquery: actorQuery,\n\t\t\t});\n\n\t\t\tconst responseData = await sendHttpRequest<\n\t\t\t\tprotocol.HttpActionRequest,\n\t\t\t\tprotocol.HttpActionResponse\n\t\t\t>({\n\t\t\t\turl: `${managerEndpoint}/registry/actors/actions/${encodeURIComponent(name)}`,\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\n\t\t\t\t\t[HEADER_ENCODING]: encoding,\n\t\t\t\t\t[HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),\n\t\t\t\t\t...(params !== undefined\n\t\t\t\t\t\t? { [HEADER_CONN_PARAMS]: JSON.stringify(params) }\n\t\t\t\t\t\t: {}),\n\t\t\t\t},\n\t\t\t\tbody: {\n\t\t\t\t\targs: bufferToArrayBuffer(cbor.encode(args)),\n\t\t\t\t} satisfies protocol.HttpActionRequest,\n\t\t\t\tencoding: encoding,\n\t\t\t\tsignal: opts?.signal,\n\t\t\t\trequestVersionedDataHandler: HTTP_ACTION_REQUEST_VERSIONED,\n\t\t\t\tresponseVersionedDataHandler: HTTP_ACTION_RESPONSE_VERSIONED,\n\t\t\t});\n\n\t\t\treturn cbor.decode(new Uint8Array(responseData.output));\n\t\t},\n\n\t\tresolveActorId: async (\n\t\t\t_c: HonoContext | undefined,\n\t\t\tactorQuery: ActorQuery,\n\t\t\tencodingKind: Encoding,\n\t\t\tparams: unknown,\n\t\t): Promise<string> => {\n\t\t\tlogger().debug(\"resolving actor ID\", { query: actorQuery });\n\n\t\t\ttry {\n\t\t\t\tconst result = await sendHttpRequest<\n\t\t\t\t\tnull,\n\t\t\t\t\tprotocol.HttpResolveResponse\n\t\t\t\t>({\n\t\t\t\t\turl: `${managerEndpoint}/registry/actors/resolve`,\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t[HEADER_ENCODING]: encodingKind,\n\t\t\t\t\t\t[HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),\n\t\t\t\t\t\t...(params !== undefined\n\t\t\t\t\t\t\t? { [HEADER_CONN_PARAMS]: JSON.stringify(params) }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t},\n\t\t\t\t\tbody: null,\n\t\t\t\t\tencoding: encodingKind,\n\t\t\t\t\trequestVersionedDataHandler: HTTP_RESOLVE_REQUEST_VERSIONED,\n\t\t\t\t\tresponseVersionedDataHandler: HTTP_RESOLVE_RESPONSE_VERSIONED,\n\t\t\t\t});\n\n\t\t\t\tlogger().debug(\"resolved actor ID\", { actorId: result.actorId });\n\t\t\t\treturn result.actorId;\n\t\t\t} catch (error) {\n\t\t\t\tlogger().error(\"failed to resolve actor ID\", { error });\n\t\t\t\tif (error instanceof errors.ActorError) {\n\t\t\t\t\tthrow error;\n\t\t\t\t} else {\n\t\t\t\t\tthrow new errors.InternalError(\n\t\t\t\t\t\t`Failed to resolve actor ID: ${String(error)}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tconnectWebSocket: async (\n\t\t\t_c: HonoContext | undefined,\n\t\t\tactorQuery: ActorQuery,\n\t\t\tencodingKind: Encoding,\n\t\t\tparams: unknown,\n\t\t): Promise<WebSocket> => {\n\t\t\tconst { WebSocket } = await dynamicImports;\n\n\t\t\tconst endpoint = managerEndpoint\n\t\t\t\t.replace(/^http:/, \"ws:\")\n\t\t\t\t.replace(/^https:/, \"wss:\");\n\t\t\tconst url = `${endpoint}/registry/actors/connect/websocket`;\n\n\t\t\t// Pass sensitive data via protocol\n\t\t\tconst protocol = [\n\t\t\t\t`query.${encodeURIComponent(JSON.stringify(actorQuery))}`,\n\t\t\t\t`encoding.${encodingKind}`,\n\t\t\t];\n\t\t\tif (params)\n\t\t\t\tprotocol.push(\n\t\t\t\t\t`conn_params.${encodeURIComponent(JSON.stringify(params))}`,\n\t\t\t\t);\n\n\t\t\t// HACK: See packages/drivers/cloudflare-workers/src/websocket.ts\n\t\t\tprotocol.push(\"rivetkit\");\n\n\t\t\tlogger().debug(\"connecting to websocket\", { url });\n\t\t\tconst ws = new WebSocket(url, protocol);\n\t\t\t// HACK: Bun bug prevents changing binary type, so we ignore the error https://github.com/oven-sh/bun/issues/17005\n\t\t\ttry {\n\t\t\t\tws.binaryType = wsBinaryTypeForEncoding(encodingKind);\n\t\t\t} catch (error) {}\n\n\t\t\t// Node & web WebSocket types not compatible\n\t\t\treturn ws as any;\n\t\t},\n\n\t\tconnectSse: async (\n\t\t\t_c: HonoContext | undefined,\n\t\t\tactorQuery: ActorQuery,\n\t\t\tencodingKind: Encoding,\n\t\t\tparams: unknown,\n\t\t): Promise<UniversalEventSource> => {\n\t\t\tconst { EventSource } = await dynamicImports;\n\n\t\t\tconst url = `${managerEndpoint}/registry/actors/connect/sse`;\n\n\t\t\tlogger().debug(\"connecting to sse\", { url });\n\t\t\tconst eventSource = new EventSource(url, {\n\t\t\t\tfetch: (input, init) => {\n\t\t\t\t\treturn fetch(input, {\n\t\t\t\t\t\t...init,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t...init?.headers,\n\t\t\t\t\t\t\t\"User-Agent\": httpUserAgent(),\n\t\t\t\t\t\t\t[HEADER_ENCODING]: encodingKind,\n\t\t\t\t\t\t\t[HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),\n\t\t\t\t\t\t\t...(params !== undefined\n\t\t\t\t\t\t\t\t? { [HEADER_CONN_PARAMS]: JSON.stringify(params) }\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcredentials: \"include\",\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn eventSource as UniversalEventSource;\n\t\t},\n\n\t\tsendHttpMessage: async (\n\t\t\t_c: HonoContext | undefined,\n\t\t\tactorId: string,\n\t\t\tencoding: Encoding,\n\t\t\tconnectionId: string,\n\t\t\tconnectionToken: string,\n\t\t\tmessage: protocol.ToServer,\n\t\t): Promise<void> => {\n\t\t\t// TODO: Implement ordered messages, this is not guaranteed order. Needs to use an index in order to ensure we can pipeline requests efficiently.\n\t\t\t// TODO: Validate that we're using HTTP/3 whenever possible for pipelining requests\n\t\t\tconst messageSerialized = serializeWithEncoding(\n\t\t\t\tencoding,\n\t\t\t\tmessage,\n\t\t\t\tTO_SERVER_VERSIONED,\n\t\t\t);\n\t\t\tconst res = await fetch(`${managerEndpoint}/registry/actors/message`, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"User-Agent\": httpUserAgent(),\n\t\t\t\t\t[HEADER_ENCODING]: encoding,\n\t\t\t\t\t[HEADER_ACTOR_ID]: actorId,\n\t\t\t\t\t[HEADER_CONN_ID]: connectionId,\n\t\t\t\t\t[HEADER_CONN_TOKEN]: connectionToken,\n\t\t\t\t},\n\t\t\t\tbody: messageSerialized,\n\t\t\t\tcredentials: \"include\",\n\t\t\t});\n\t\t\tif (!res.ok) {\n\t\t\t\tthrow new errors.InternalError(\n\t\t\t\t\t`Publish message over HTTP error (${res.statusText}):\\n${await res.text()}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Discard response\n\t\t\tawait res.body?.cancel();\n\t\t},\n\n\t\trawHttpRequest: async (\n\t\t\t_c: HonoContext | undefined,\n\t\t\tactorQuery: ActorQuery,\n\t\t\tencoding: Encoding,\n\t\t\tparams: unknown,\n\t\t\tpath: string,\n\t\t\tinit: RequestInit,\n\t\t): Promise<Response> => {\n\t\t\t// Build the full URL\n\t\t\t// Remove leading slash from path to avoid double slashes\n\t\t\tconst normalizedPath = path.startsWith(\"/\") ? path.slice(1) : path;\n\t\t\tconst url = `${managerEndpoint}/registry/actors/raw/http/${normalizedPath}`;\n\n\t\t\tlogger().debug(\"rewriting http url\", {\n\t\t\t\tfrom: path,\n\t\t\t\tto: url,\n\t\t\t});\n\n\t\t\t// Merge headers properly\n\t\t\tconst headers = new Headers(init.headers);\n\t\t\theaders.set(\"User-Agent\", httpUserAgent());\n\t\t\theaders.set(HEADER_ACTOR_QUERY, JSON.stringify(actorQuery));\n\t\t\theaders.set(HEADER_ENCODING, encoding);\n\t\t\tif (params !== undefined) {\n\t\t\t\theaders.set(HEADER_CONN_PARAMS, JSON.stringify(params));\n\t\t\t}\n\n\t\t\t// Forward the request with query in headers\n\t\t\treturn await fetch(url, {\n\t\t\t\t...init,\n\t\t\t\theaders,\n\t\t\t});\n\t\t},\n\n\t\trawWebSocket: async (\n\t\t\t_c: HonoContext | undefined,\n\t\t\tactorQuery: ActorQuery,\n\t\t\tencoding: Encoding,\n\t\t\tparams: unknown,\n\t\t\tpath: string,\n\t\t\tprotocols: string | string[] | undefined,\n\t\t): Promise<WebSocket> => {\n\t\t\tconst { WebSocket } = await dynamicImports;\n\n\t\t\t// Build the WebSocket URL with normalized path\n\t\t\tconst wsEndpoint = managerEndpoint\n\t\t\t\t.replace(/^http:/, \"ws:\")\n\t\t\t\t.replace(/^https:/, \"wss:\");\n\t\t\t// Normalize path to match raw HTTP behavior\n\t\t\tconst normalizedPath = path.startsWith(\"/\") ? path.slice(1) : path;\n\t\t\tconst url = `${wsEndpoint}/registry/actors/raw/websocket/${normalizedPath}`;\n\n\t\t\tlogger().debug(\"rewriting websocket url\", {\n\t\t\t\tfrom: path,\n\t\t\t\tto: url,\n\t\t\t});\n\n\t\t\t// Pass data via WebSocket protocol subprotocols\n\t\t\tconst protocolList: string[] = [];\n\t\t\tprotocolList.push(\n\t\t\t\t`query.${encodeURIComponent(JSON.stringify(actorQuery))}`,\n\t\t\t);\n\t\t\tprotocolList.push(`encoding.${encoding}`);\n\t\t\tif (params) {\n\t\t\t\tprotocolList.push(\n\t\t\t\t\t`conn_params.${encodeURIComponent(JSON.stringify(params))}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// HACK: See packages/drivers/cloudflare-workers/src/websocket.ts\n\t\t\tprotocolList.push(\"rivetkit\");\n\n\t\t\t// Add user protocols\n\t\t\tif (protocols) {\n\t\t\t\tif (Array.isArray(protocols)) {\n\t\t\t\t\tprotocolList.push(...protocols);\n\t\t\t\t} else {\n\t\t\t\t\tprotocolList.push(protocols);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Create WebSocket connection\n\t\t\tlogger().debug(\"opening raw websocket\", { url });\n\t\t\treturn new WebSocket(url, protocolList) as any;\n\t\t},\n\t};\n\n\treturn driver;\n}\n","import type { Registry } from \"@/registry/mod\";\nimport {\n\ttype Client,\n\ttype ClientOptions,\n\tcreateClientWithDriver,\n} from \"./client\";\nimport { createHttpClientDriver } from \"./http-client-driver\";\n\nexport {\n\tActorDefinition,\n\tAnyActorDefinition,\n} from \"@/actor/definition\";\nexport type { Transport } from \"@/actor/protocol/old\";\nexport type { Encoding } from \"@/actor/protocol/serde\";\nexport {\n\tActorClientError,\n\tActorError,\n\tInternalError,\n\tMalformedResponseMessage,\n\tManagerError,\n} from \"@/client/errors\";\nexport type { CreateRequest } from \"@/manager/protocol/query\";\nexport type { ActorActionFunction } from \"./actor-common\";\nexport type { ActorConn, EventUnsubscribe } from \"./actor-conn\";\nexport { ActorConnRaw } from \"./actor-conn\";\nexport type { ActorHandle } from \"./actor-handle\";\nexport { ActorHandleRaw } from \"./actor-handle\";\nexport type {\n\tActorAccessor,\n\tClient,\n\tClientOptions,\n\tClientRaw,\n\tCreateOptions,\n\tExtractActorsFromRegistry,\n\tExtractRegistryFromClient,\n\tGetOptions,\n\tGetWithIdOptions,\n\tQueryOptions,\n\tRegion,\n} from \"./client\";\n\n/**\n * Creates a client with the actor accessor proxy.\n *\n * @template A The actor application type.\n * @param {string} managerEndpoint - The manager endpoint.\n * @param {ClientOptions} [opts] - Options for configuring the client.\n * @returns {Client<A>} - A proxied client that supports the `client.myActor.connect()` syntax.\n */\nexport function createClient<A extends Registry<any>>(\n\tendpoint: string,\n\topts?: ClientOptions,\n): Client<A> {\n\tconst driver = createHttpClientDriver(endpoint);\n\treturn createClientWithDriver<A>(driver, opts);\n}\n"]}
@@ -1,230 +0,0 @@
1
- import {
2
- ActorError,
3
- InternalError,
4
- createClientWithDriver,
5
- importEventSource,
6
- sendHttpRequest
7
- } from "./chunk-EGVZZFE2.js";
8
- import {
9
- importWebSocket,
10
- logger
11
- } from "./chunk-PO4VLDWA.js";
12
- import {
13
- HEADER_ACTOR_ID,
14
- HEADER_ACTOR_QUERY,
15
- HEADER_CONN_ID,
16
- HEADER_CONN_PARAMS,
17
- HEADER_CONN_TOKEN,
18
- HEADER_ENCODING,
19
- HTTP_ACTION_REQUEST_VERSIONED,
20
- HTTP_ACTION_RESPONSE_VERSIONED,
21
- HTTP_RESOLVE_REQUEST_VERSIONED,
22
- HTTP_RESOLVE_RESPONSE_VERSIONED,
23
- TO_SERVER_VERSIONED,
24
- serializeWithEncoding,
25
- wsBinaryTypeForEncoding
26
- } from "./chunk-4NSUQZ2H.js";
27
- import {
28
- bufferToArrayBuffer,
29
- httpUserAgent
30
- } from "./chunk-3H7O2A7I.js";
31
-
32
- // src/client/http-client-driver.ts
33
- import * as cbor from "cbor-x";
34
- function createHttpClientDriver(managerEndpoint) {
35
- const dynamicImports = (async () => {
36
- const [WebSocket, EventSource] = await Promise.all([
37
- importWebSocket(),
38
- importEventSource()
39
- ]);
40
- return {
41
- WebSocket,
42
- EventSource
43
- };
44
- })();
45
- const driver = {
46
- action: async (_c, actorQuery, encoding, params, name, args, opts) => {
47
- logger().debug("actor handle action", {
48
- name,
49
- args,
50
- query: actorQuery
51
- });
52
- const responseData = await sendHttpRequest({
53
- url: `${managerEndpoint}/registry/actors/actions/${encodeURIComponent(name)}`,
54
- method: "POST",
55
- headers: {
56
- [HEADER_ENCODING]: encoding,
57
- [HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),
58
- ...params !== void 0 ? { [HEADER_CONN_PARAMS]: JSON.stringify(params) } : {}
59
- },
60
- body: {
61
- args: bufferToArrayBuffer(cbor.encode(args))
62
- },
63
- encoding,
64
- signal: opts == null ? void 0 : opts.signal,
65
- requestVersionedDataHandler: HTTP_ACTION_REQUEST_VERSIONED,
66
- responseVersionedDataHandler: HTTP_ACTION_RESPONSE_VERSIONED
67
- });
68
- return cbor.decode(new Uint8Array(responseData.output));
69
- },
70
- resolveActorId: async (_c, actorQuery, encodingKind, params) => {
71
- logger().debug("resolving actor ID", { query: actorQuery });
72
- try {
73
- const result = await sendHttpRequest({
74
- url: `${managerEndpoint}/registry/actors/resolve`,
75
- method: "POST",
76
- headers: {
77
- [HEADER_ENCODING]: encodingKind,
78
- [HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),
79
- ...params !== void 0 ? { [HEADER_CONN_PARAMS]: JSON.stringify(params) } : {}
80
- },
81
- body: null,
82
- encoding: encodingKind,
83
- requestVersionedDataHandler: HTTP_RESOLVE_REQUEST_VERSIONED,
84
- responseVersionedDataHandler: HTTP_RESOLVE_RESPONSE_VERSIONED
85
- });
86
- logger().debug("resolved actor ID", { actorId: result.actorId });
87
- return result.actorId;
88
- } catch (error) {
89
- logger().error("failed to resolve actor ID", { error });
90
- if (error instanceof ActorError) {
91
- throw error;
92
- } else {
93
- throw new InternalError(
94
- `Failed to resolve actor ID: ${String(error)}`
95
- );
96
- }
97
- }
98
- },
99
- connectWebSocket: async (_c, actorQuery, encodingKind, params) => {
100
- const { WebSocket } = await dynamicImports;
101
- const endpoint = managerEndpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
102
- const url = `${endpoint}/registry/actors/connect/websocket`;
103
- const protocol = [
104
- `query.${encodeURIComponent(JSON.stringify(actorQuery))}`,
105
- `encoding.${encodingKind}`
106
- ];
107
- if (params)
108
- protocol.push(
109
- `conn_params.${encodeURIComponent(JSON.stringify(params))}`
110
- );
111
- protocol.push("rivetkit");
112
- logger().debug("connecting to websocket", { url });
113
- const ws = new WebSocket(url, protocol);
114
- try {
115
- ws.binaryType = wsBinaryTypeForEncoding(encodingKind);
116
- } catch (error) {
117
- }
118
- return ws;
119
- },
120
- connectSse: async (_c, actorQuery, encodingKind, params) => {
121
- const { EventSource } = await dynamicImports;
122
- const url = `${managerEndpoint}/registry/actors/connect/sse`;
123
- logger().debug("connecting to sse", { url });
124
- const eventSource = new EventSource(url, {
125
- fetch: (input, init) => {
126
- return fetch(input, {
127
- ...init,
128
- headers: {
129
- ...init == null ? void 0 : init.headers,
130
- "User-Agent": httpUserAgent(),
131
- [HEADER_ENCODING]: encodingKind,
132
- [HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),
133
- ...params !== void 0 ? { [HEADER_CONN_PARAMS]: JSON.stringify(params) } : {}
134
- },
135
- credentials: "include"
136
- });
137
- }
138
- });
139
- return eventSource;
140
- },
141
- sendHttpMessage: async (_c, actorId, encoding, connectionId, connectionToken, message) => {
142
- var _a;
143
- const messageSerialized = serializeWithEncoding(
144
- encoding,
145
- message,
146
- TO_SERVER_VERSIONED
147
- );
148
- const res = await fetch(`${managerEndpoint}/registry/actors/message`, {
149
- method: "POST",
150
- headers: {
151
- "User-Agent": httpUserAgent(),
152
- [HEADER_ENCODING]: encoding,
153
- [HEADER_ACTOR_ID]: actorId,
154
- [HEADER_CONN_ID]: connectionId,
155
- [HEADER_CONN_TOKEN]: connectionToken
156
- },
157
- body: messageSerialized,
158
- credentials: "include"
159
- });
160
- if (!res.ok) {
161
- throw new InternalError(
162
- `Publish message over HTTP error (${res.statusText}):
163
- ${await res.text()}`
164
- );
165
- }
166
- await ((_a = res.body) == null ? void 0 : _a.cancel());
167
- },
168
- rawHttpRequest: async (_c, actorQuery, encoding, params, path, init) => {
169
- const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
170
- const url = `${managerEndpoint}/registry/actors/raw/http/${normalizedPath}`;
171
- logger().debug("rewriting http url", {
172
- from: path,
173
- to: url
174
- });
175
- const headers = new Headers(init.headers);
176
- headers.set("User-Agent", httpUserAgent());
177
- headers.set(HEADER_ACTOR_QUERY, JSON.stringify(actorQuery));
178
- headers.set(HEADER_ENCODING, encoding);
179
- if (params !== void 0) {
180
- headers.set(HEADER_CONN_PARAMS, JSON.stringify(params));
181
- }
182
- return await fetch(url, {
183
- ...init,
184
- headers
185
- });
186
- },
187
- rawWebSocket: async (_c, actorQuery, encoding, params, path, protocols) => {
188
- const { WebSocket } = await dynamicImports;
189
- const wsEndpoint = managerEndpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:");
190
- const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
191
- const url = `${wsEndpoint}/registry/actors/raw/websocket/${normalizedPath}`;
192
- logger().debug("rewriting websocket url", {
193
- from: path,
194
- to: url
195
- });
196
- const protocolList = [];
197
- protocolList.push(
198
- `query.${encodeURIComponent(JSON.stringify(actorQuery))}`
199
- );
200
- protocolList.push(`encoding.${encoding}`);
201
- if (params) {
202
- protocolList.push(
203
- `conn_params.${encodeURIComponent(JSON.stringify(params))}`
204
- );
205
- }
206
- protocolList.push("rivetkit");
207
- if (protocols) {
208
- if (Array.isArray(protocols)) {
209
- protocolList.push(...protocols);
210
- } else {
211
- protocolList.push(protocols);
212
- }
213
- }
214
- logger().debug("opening raw websocket", { url });
215
- return new WebSocket(url, protocolList);
216
- }
217
- };
218
- return driver;
219
- }
220
-
221
- // src/client/mod.ts
222
- function createClient(endpoint, opts) {
223
- const driver = createHttpClientDriver(endpoint);
224
- return createClientWithDriver(driver, opts);
225
- }
226
-
227
- export {
228
- createClient
229
- };
230
- //# sourceMappingURL=chunk-UVUPOS46.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/client/http-client-driver.ts","../../src/client/mod.ts"],"sourcesContent":["import * as cbor from \"cbor-x\";\nimport type { Context as HonoContext } from \"hono\";\nimport type { WebSocket } from \"ws\";\nimport type { Encoding } from \"@/actor/protocol/serde\";\nimport {\n\tHEADER_ACTOR_ID,\n\tHEADER_ACTOR_QUERY,\n\tHEADER_CONN_ID,\n\tHEADER_CONN_PARAMS,\n\tHEADER_CONN_TOKEN,\n\tHEADER_ENCODING,\n} from \"@/actor/router-endpoints\";\nimport { importEventSource } from \"@/common/eventsource\";\nimport type { UniversalEventSource } from \"@/common/eventsource-interface\";\nimport { importWebSocket } from \"@/common/websocket\";\nimport type { ActorQuery } from \"@/manager/protocol/query\";\nimport type * as protocol from \"@/schemas/client-protocol/mod\";\nimport {\n\tHTTP_ACTION_REQUEST_VERSIONED,\n\tHTTP_ACTION_RESPONSE_VERSIONED,\n\tHTTP_RESOLVE_REQUEST_VERSIONED,\n\tHTTP_RESOLVE_RESPONSE_VERSIONED,\n\tTO_SERVER_VERSIONED,\n} from \"@/schemas/client-protocol/versioned\";\nimport { serializeWithEncoding, wsBinaryTypeForEncoding } from \"@/serde\";\nimport { assertUnreachable, bufferToArrayBuffer, httpUserAgent } from \"@/utils\";\nimport type { ClientDriver } from \"./client\";\nimport * as errors from \"./errors\";\nimport { logger } from \"./log\";\nimport { sendHttpRequest } from \"./utils\";\n\n/**\n * Client driver that communicates with the manager via HTTP.\n */\nexport function createHttpClientDriver(managerEndpoint: string): ClientDriver {\n\t// Lazily import the dynamic imports so we don't have to turn `createClient` in to an async fn\n\tconst dynamicImports = (async () => {\n\t\t// Import dynamic dependencies\n\t\tconst [WebSocket, EventSource] = await Promise.all([\n\t\t\timportWebSocket(),\n\t\t\timportEventSource(),\n\t\t]);\n\t\treturn {\n\t\t\tWebSocket,\n\t\t\tEventSource,\n\t\t};\n\t})();\n\n\tconst driver: ClientDriver = {\n\t\taction: async <Args extends Array<unknown> = unknown[], Response = unknown>(\n\t\t\t_c: HonoContext | undefined,\n\t\t\tactorQuery: ActorQuery,\n\t\t\tencoding: Encoding,\n\t\t\tparams: unknown,\n\t\t\tname: string,\n\t\t\targs: Args,\n\t\t\topts: { signal?: AbortSignal } | undefined,\n\t\t): Promise<Response> => {\n\t\t\tlogger().debug(\"actor handle action\", {\n\t\t\t\tname,\n\t\t\t\targs,\n\t\t\t\tquery: actorQuery,\n\t\t\t});\n\n\t\t\tconst responseData = await sendHttpRequest<\n\t\t\t\tprotocol.HttpActionRequest,\n\t\t\t\tprotocol.HttpActionResponse\n\t\t\t>({\n\t\t\t\turl: `${managerEndpoint}/registry/actors/actions/${encodeURIComponent(name)}`,\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\n\t\t\t\t\t[HEADER_ENCODING]: encoding,\n\t\t\t\t\t[HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),\n\t\t\t\t\t...(params !== undefined\n\t\t\t\t\t\t? { [HEADER_CONN_PARAMS]: JSON.stringify(params) }\n\t\t\t\t\t\t: {}),\n\t\t\t\t},\n\t\t\t\tbody: {\n\t\t\t\t\targs: bufferToArrayBuffer(cbor.encode(args)),\n\t\t\t\t} satisfies protocol.HttpActionRequest,\n\t\t\t\tencoding: encoding,\n\t\t\t\tsignal: opts?.signal,\n\t\t\t\trequestVersionedDataHandler: HTTP_ACTION_REQUEST_VERSIONED,\n\t\t\t\tresponseVersionedDataHandler: HTTP_ACTION_RESPONSE_VERSIONED,\n\t\t\t});\n\n\t\t\treturn cbor.decode(new Uint8Array(responseData.output));\n\t\t},\n\n\t\tresolveActorId: async (\n\t\t\t_c: HonoContext | undefined,\n\t\t\tactorQuery: ActorQuery,\n\t\t\tencodingKind: Encoding,\n\t\t\tparams: unknown,\n\t\t): Promise<string> => {\n\t\t\tlogger().debug(\"resolving actor ID\", { query: actorQuery });\n\n\t\t\ttry {\n\t\t\t\tconst result = await sendHttpRequest<\n\t\t\t\t\tnull,\n\t\t\t\t\tprotocol.HttpResolveResponse\n\t\t\t\t>({\n\t\t\t\t\turl: `${managerEndpoint}/registry/actors/resolve`,\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t[HEADER_ENCODING]: encodingKind,\n\t\t\t\t\t\t[HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),\n\t\t\t\t\t\t...(params !== undefined\n\t\t\t\t\t\t\t? { [HEADER_CONN_PARAMS]: JSON.stringify(params) }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t},\n\t\t\t\t\tbody: null,\n\t\t\t\t\tencoding: encodingKind,\n\t\t\t\t\trequestVersionedDataHandler: HTTP_RESOLVE_REQUEST_VERSIONED,\n\t\t\t\t\tresponseVersionedDataHandler: HTTP_RESOLVE_RESPONSE_VERSIONED,\n\t\t\t\t});\n\n\t\t\t\tlogger().debug(\"resolved actor ID\", { actorId: result.actorId });\n\t\t\t\treturn result.actorId;\n\t\t\t} catch (error) {\n\t\t\t\tlogger().error(\"failed to resolve actor ID\", { error });\n\t\t\t\tif (error instanceof errors.ActorError) {\n\t\t\t\t\tthrow error;\n\t\t\t\t} else {\n\t\t\t\t\tthrow new errors.InternalError(\n\t\t\t\t\t\t`Failed to resolve actor ID: ${String(error)}`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tconnectWebSocket: async (\n\t\t\t_c: HonoContext | undefined,\n\t\t\tactorQuery: ActorQuery,\n\t\t\tencodingKind: Encoding,\n\t\t\tparams: unknown,\n\t\t): Promise<WebSocket> => {\n\t\t\tconst { WebSocket } = await dynamicImports;\n\n\t\t\tconst endpoint = managerEndpoint\n\t\t\t\t.replace(/^http:/, \"ws:\")\n\t\t\t\t.replace(/^https:/, \"wss:\");\n\t\t\tconst url = `${endpoint}/registry/actors/connect/websocket`;\n\n\t\t\t// Pass sensitive data via protocol\n\t\t\tconst protocol = [\n\t\t\t\t`query.${encodeURIComponent(JSON.stringify(actorQuery))}`,\n\t\t\t\t`encoding.${encodingKind}`,\n\t\t\t];\n\t\t\tif (params)\n\t\t\t\tprotocol.push(\n\t\t\t\t\t`conn_params.${encodeURIComponent(JSON.stringify(params))}`,\n\t\t\t\t);\n\n\t\t\t// HACK: See packages/drivers/cloudflare-workers/src/websocket.ts\n\t\t\tprotocol.push(\"rivetkit\");\n\n\t\t\tlogger().debug(\"connecting to websocket\", { url });\n\t\t\tconst ws = new WebSocket(url, protocol);\n\t\t\t// HACK: Bun bug prevents changing binary type, so we ignore the error https://github.com/oven-sh/bun/issues/17005\n\t\t\ttry {\n\t\t\t\tws.binaryType = wsBinaryTypeForEncoding(encodingKind);\n\t\t\t} catch (error) {}\n\n\t\t\t// Node & web WebSocket types not compatible\n\t\t\treturn ws as any;\n\t\t},\n\n\t\tconnectSse: async (\n\t\t\t_c: HonoContext | undefined,\n\t\t\tactorQuery: ActorQuery,\n\t\t\tencodingKind: Encoding,\n\t\t\tparams: unknown,\n\t\t): Promise<UniversalEventSource> => {\n\t\t\tconst { EventSource } = await dynamicImports;\n\n\t\t\tconst url = `${managerEndpoint}/registry/actors/connect/sse`;\n\n\t\t\tlogger().debug(\"connecting to sse\", { url });\n\t\t\tconst eventSource = new EventSource(url, {\n\t\t\t\tfetch: (input, init) => {\n\t\t\t\t\treturn fetch(input, {\n\t\t\t\t\t\t...init,\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t...init?.headers,\n\t\t\t\t\t\t\t\"User-Agent\": httpUserAgent(),\n\t\t\t\t\t\t\t[HEADER_ENCODING]: encodingKind,\n\t\t\t\t\t\t\t[HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery),\n\t\t\t\t\t\t\t...(params !== undefined\n\t\t\t\t\t\t\t\t? { [HEADER_CONN_PARAMS]: JSON.stringify(params) }\n\t\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcredentials: \"include\",\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn eventSource as UniversalEventSource;\n\t\t},\n\n\t\tsendHttpMessage: async (\n\t\t\t_c: HonoContext | undefined,\n\t\t\tactorId: string,\n\t\t\tencoding: Encoding,\n\t\t\tconnectionId: string,\n\t\t\tconnectionToken: string,\n\t\t\tmessage: protocol.ToServer,\n\t\t): Promise<void> => {\n\t\t\t// TODO: Implement ordered messages, this is not guaranteed order. Needs to use an index in order to ensure we can pipeline requests efficiently.\n\t\t\t// TODO: Validate that we're using HTTP/3 whenever possible for pipelining requests\n\t\t\tconst messageSerialized = serializeWithEncoding(\n\t\t\t\tencoding,\n\t\t\t\tmessage,\n\t\t\t\tTO_SERVER_VERSIONED,\n\t\t\t);\n\t\t\tconst res = await fetch(`${managerEndpoint}/registry/actors/message`, {\n\t\t\t\tmethod: \"POST\",\n\t\t\t\theaders: {\n\t\t\t\t\t\"User-Agent\": httpUserAgent(),\n\t\t\t\t\t[HEADER_ENCODING]: encoding,\n\t\t\t\t\t[HEADER_ACTOR_ID]: actorId,\n\t\t\t\t\t[HEADER_CONN_ID]: connectionId,\n\t\t\t\t\t[HEADER_CONN_TOKEN]: connectionToken,\n\t\t\t\t},\n\t\t\t\tbody: messageSerialized,\n\t\t\t\tcredentials: \"include\",\n\t\t\t});\n\t\t\tif (!res.ok) {\n\t\t\t\tthrow new errors.InternalError(\n\t\t\t\t\t`Publish message over HTTP error (${res.statusText}):\\n${await res.text()}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Discard response\n\t\t\tawait res.body?.cancel();\n\t\t},\n\n\t\trawHttpRequest: async (\n\t\t\t_c: HonoContext | undefined,\n\t\t\tactorQuery: ActorQuery,\n\t\t\tencoding: Encoding,\n\t\t\tparams: unknown,\n\t\t\tpath: string,\n\t\t\tinit: RequestInit,\n\t\t): Promise<Response> => {\n\t\t\t// Build the full URL\n\t\t\t// Remove leading slash from path to avoid double slashes\n\t\t\tconst normalizedPath = path.startsWith(\"/\") ? path.slice(1) : path;\n\t\t\tconst url = `${managerEndpoint}/registry/actors/raw/http/${normalizedPath}`;\n\n\t\t\tlogger().debug(\"rewriting http url\", {\n\t\t\t\tfrom: path,\n\t\t\t\tto: url,\n\t\t\t});\n\n\t\t\t// Merge headers properly\n\t\t\tconst headers = new Headers(init.headers);\n\t\t\theaders.set(\"User-Agent\", httpUserAgent());\n\t\t\theaders.set(HEADER_ACTOR_QUERY, JSON.stringify(actorQuery));\n\t\t\theaders.set(HEADER_ENCODING, encoding);\n\t\t\tif (params !== undefined) {\n\t\t\t\theaders.set(HEADER_CONN_PARAMS, JSON.stringify(params));\n\t\t\t}\n\n\t\t\t// Forward the request with query in headers\n\t\t\treturn await fetch(url, {\n\t\t\t\t...init,\n\t\t\t\theaders,\n\t\t\t});\n\t\t},\n\n\t\trawWebSocket: async (\n\t\t\t_c: HonoContext | undefined,\n\t\t\tactorQuery: ActorQuery,\n\t\t\tencoding: Encoding,\n\t\t\tparams: unknown,\n\t\t\tpath: string,\n\t\t\tprotocols: string | string[] | undefined,\n\t\t): Promise<WebSocket> => {\n\t\t\tconst { WebSocket } = await dynamicImports;\n\n\t\t\t// Build the WebSocket URL with normalized path\n\t\t\tconst wsEndpoint = managerEndpoint\n\t\t\t\t.replace(/^http:/, \"ws:\")\n\t\t\t\t.replace(/^https:/, \"wss:\");\n\t\t\t// Normalize path to match raw HTTP behavior\n\t\t\tconst normalizedPath = path.startsWith(\"/\") ? path.slice(1) : path;\n\t\t\tconst url = `${wsEndpoint}/registry/actors/raw/websocket/${normalizedPath}`;\n\n\t\t\tlogger().debug(\"rewriting websocket url\", {\n\t\t\t\tfrom: path,\n\t\t\t\tto: url,\n\t\t\t});\n\n\t\t\t// Pass data via WebSocket protocol subprotocols\n\t\t\tconst protocolList: string[] = [];\n\t\t\tprotocolList.push(\n\t\t\t\t`query.${encodeURIComponent(JSON.stringify(actorQuery))}`,\n\t\t\t);\n\t\t\tprotocolList.push(`encoding.${encoding}`);\n\t\t\tif (params) {\n\t\t\t\tprotocolList.push(\n\t\t\t\t\t`conn_params.${encodeURIComponent(JSON.stringify(params))}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// HACK: See packages/drivers/cloudflare-workers/src/websocket.ts\n\t\t\tprotocolList.push(\"rivetkit\");\n\n\t\t\t// Add user protocols\n\t\t\tif (protocols) {\n\t\t\t\tif (Array.isArray(protocols)) {\n\t\t\t\t\tprotocolList.push(...protocols);\n\t\t\t\t} else {\n\t\t\t\t\tprotocolList.push(protocols);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Create WebSocket connection\n\t\t\tlogger().debug(\"opening raw websocket\", { url });\n\t\t\treturn new WebSocket(url, protocolList) as any;\n\t\t},\n\t};\n\n\treturn driver;\n}\n","import type { Registry } from \"@/registry/mod\";\nimport {\n\ttype Client,\n\ttype ClientOptions,\n\tcreateClientWithDriver,\n} from \"./client\";\nimport { createHttpClientDriver } from \"./http-client-driver\";\n\nexport {\n\tActorDefinition,\n\tAnyActorDefinition,\n} from \"@/actor/definition\";\nexport type { Transport } from \"@/actor/protocol/old\";\nexport type { Encoding } from \"@/actor/protocol/serde\";\nexport {\n\tActorClientError,\n\tActorError,\n\tInternalError,\n\tMalformedResponseMessage,\n\tManagerError,\n} from \"@/client/errors\";\nexport type { CreateRequest } from \"@/manager/protocol/query\";\nexport type { ActorActionFunction } from \"./actor-common\";\nexport type { ActorConn, EventUnsubscribe } from \"./actor-conn\";\nexport { ActorConnRaw } from \"./actor-conn\";\nexport type { ActorHandle } from \"./actor-handle\";\nexport { ActorHandleRaw } from \"./actor-handle\";\nexport type {\n\tActorAccessor,\n\tClient,\n\tClientOptions,\n\tClientRaw,\n\tCreateOptions,\n\tExtractActorsFromRegistry,\n\tExtractRegistryFromClient,\n\tGetOptions,\n\tGetWithIdOptions,\n\tQueryOptions,\n\tRegion,\n} from \"./client\";\n\n/**\n * Creates a client with the actor accessor proxy.\n *\n * @template A The actor application type.\n * @param {string} managerEndpoint - The manager endpoint.\n * @param {ClientOptions} [opts] - Options for configuring the client.\n * @returns {Client<A>} - A proxied client that supports the `client.myActor.connect()` syntax.\n */\nexport function createClient<A extends Registry<any>>(\n\tendpoint: string,\n\topts?: ClientOptions,\n): Client<A> {\n\tconst driver = createHttpClientDriver(endpoint);\n\treturn createClientWithDriver<A>(driver, opts);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,YAAY,UAAU;AAkCf,SAAS,uBAAuB,iBAAuC;AAE7E,QAAM,kBAAkB,YAAY;AAEnC,UAAM,CAAC,WAAW,WAAW,IAAI,MAAM,QAAQ,IAAI;AAAA,MAClD,gBAAgB;AAAA,MAChB,kBAAkB;AAAA,IACnB,CAAC;AACD,WAAO;AAAA,MACN;AAAA,MACA;AAAA,IACD;AAAA,EACD,GAAG;AAEH,QAAM,SAAuB;AAAA,IAC5B,QAAQ,OACP,IACA,YACA,UACA,QACA,MACA,MACA,SACuB;AACvB,aAAO,EAAE,MAAM,uBAAuB;AAAA,QACrC;AAAA,QACA;AAAA,QACA,OAAO;AAAA,MACR,CAAC;AAED,YAAM,eAAe,MAAM,gBAGzB;AAAA,QACD,KAAK,GAAG,eAAe,4BAA4B,mBAAmB,IAAI,CAAC;AAAA,QAC3E,QAAQ;AAAA,QACR,SAAS;AAAA,UACR,CAAC,eAAe,GAAG;AAAA,UACnB,CAAC,kBAAkB,GAAG,KAAK,UAAU,UAAU;AAAA,UAC/C,GAAI,WAAW,SACZ,EAAE,CAAC,kBAAkB,GAAG,KAAK,UAAU,MAAM,EAAE,IAC/C,CAAC;AAAA,QACL;AAAA,QACA,MAAM;AAAA,UACL,MAAM,oBAAyB,YAAO,IAAI,CAAC;AAAA,QAC5C;AAAA,QACA;AAAA,QACA,QAAQ,6BAAM;AAAA,QACd,6BAA6B;AAAA,QAC7B,8BAA8B;AAAA,MAC/B,CAAC;AAED,aAAY,YAAO,IAAI,WAAW,aAAa,MAAM,CAAC;AAAA,IACvD;AAAA,IAEA,gBAAgB,OACf,IACA,YACA,cACA,WACqB;AACrB,aAAO,EAAE,MAAM,sBAAsB,EAAE,OAAO,WAAW,CAAC;AAE1D,UAAI;AACH,cAAM,SAAS,MAAM,gBAGnB;AAAA,UACD,KAAK,GAAG,eAAe;AAAA,UACvB,QAAQ;AAAA,UACR,SAAS;AAAA,YACR,CAAC,eAAe,GAAG;AAAA,YACnB,CAAC,kBAAkB,GAAG,KAAK,UAAU,UAAU;AAAA,YAC/C,GAAI,WAAW,SACZ,EAAE,CAAC,kBAAkB,GAAG,KAAK,UAAU,MAAM,EAAE,IAC/C,CAAC;AAAA,UACL;AAAA,UACA,MAAM;AAAA,UACN,UAAU;AAAA,UACV,6BAA6B;AAAA,UAC7B,8BAA8B;AAAA,QAC/B,CAAC;AAED,eAAO,EAAE,MAAM,qBAAqB,EAAE,SAAS,OAAO,QAAQ,CAAC;AAC/D,eAAO,OAAO;AAAA,MACf,SAAS,OAAO;AACf,eAAO,EAAE,MAAM,8BAA8B,EAAE,MAAM,CAAC;AACtD,YAAI,iBAAwB,YAAY;AACvC,gBAAM;AAAA,QACP,OAAO;AACN,gBAAM,IAAW;AAAA,YAChB,+BAA+B,OAAO,KAAK,CAAC;AAAA,UAC7C;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IAEA,kBAAkB,OACjB,IACA,YACA,cACA,WACwB;AACxB,YAAM,EAAE,UAAU,IAAI,MAAM;AAE5B,YAAM,WAAW,gBACf,QAAQ,UAAU,KAAK,EACvB,QAAQ,WAAW,MAAM;AAC3B,YAAM,MAAM,GAAG,QAAQ;AAGvB,YAAM,WAAW;AAAA,QAChB,SAAS,mBAAmB,KAAK,UAAU,UAAU,CAAC,CAAC;AAAA,QACvD,YAAY,YAAY;AAAA,MACzB;AACA,UAAI;AACH,iBAAS;AAAA,UACR,eAAe,mBAAmB,KAAK,UAAU,MAAM,CAAC,CAAC;AAAA,QAC1D;AAGD,eAAS,KAAK,UAAU;AAExB,aAAO,EAAE,MAAM,2BAA2B,EAAE,IAAI,CAAC;AACjD,YAAM,KAAK,IAAI,UAAU,KAAK,QAAQ;AAEtC,UAAI;AACH,WAAG,aAAa,wBAAwB,YAAY;AAAA,MACrD,SAAS,OAAO;AAAA,MAAC;AAGjB,aAAO;AAAA,IACR;AAAA,IAEA,YAAY,OACX,IACA,YACA,cACA,WACmC;AACnC,YAAM,EAAE,YAAY,IAAI,MAAM;AAE9B,YAAM,MAAM,GAAG,eAAe;AAE9B,aAAO,EAAE,MAAM,qBAAqB,EAAE,IAAI,CAAC;AAC3C,YAAM,cAAc,IAAI,YAAY,KAAK;AAAA,QACxC,OAAO,CAAC,OAAO,SAAS;AACvB,iBAAO,MAAM,OAAO;AAAA,YACnB,GAAG;AAAA,YACH,SAAS;AAAA,cACR,GAAG,6BAAM;AAAA,cACT,cAAc,cAAc;AAAA,cAC5B,CAAC,eAAe,GAAG;AAAA,cACnB,CAAC,kBAAkB,GAAG,KAAK,UAAU,UAAU;AAAA,cAC/C,GAAI,WAAW,SACZ,EAAE,CAAC,kBAAkB,GAAG,KAAK,UAAU,MAAM,EAAE,IAC/C,CAAC;AAAA,YACL;AAAA,YACA,aAAa;AAAA,UACd,CAAC;AAAA,QACF;AAAA,MACD,CAAC;AAED,aAAO;AAAA,IACR;AAAA,IAEA,iBAAiB,OAChB,IACA,SACA,UACA,cACA,iBACA,YACmB;AA/MtB;AAkNG,YAAM,oBAAoB;AAAA,QACzB;AAAA,QACA;AAAA,QACA;AAAA,MACD;AACA,YAAM,MAAM,MAAM,MAAM,GAAG,eAAe,4BAA4B;AAAA,QACrE,QAAQ;AAAA,QACR,SAAS;AAAA,UACR,cAAc,cAAc;AAAA,UAC5B,CAAC,eAAe,GAAG;AAAA,UACnB,CAAC,eAAe,GAAG;AAAA,UACnB,CAAC,cAAc,GAAG;AAAA,UAClB,CAAC,iBAAiB,GAAG;AAAA,QACtB;AAAA,QACA,MAAM;AAAA,QACN,aAAa;AAAA,MACd,CAAC;AACD,UAAI,CAAC,IAAI,IAAI;AACZ,cAAM,IAAW;AAAA,UAChB,oCAAoC,IAAI,UAAU;AAAA,EAAO,MAAM,IAAI,KAAK,CAAC;AAAA,QAC1E;AAAA,MACD;AAGA,cAAM,SAAI,SAAJ,mBAAU;AAAA,IACjB;AAAA,IAEA,gBAAgB,OACf,IACA,YACA,UACA,QACA,MACA,SACuB;AAGvB,YAAM,iBAAiB,KAAK,WAAW,GAAG,IAAI,KAAK,MAAM,CAAC,IAAI;AAC9D,YAAM,MAAM,GAAG,eAAe,6BAA6B,cAAc;AAEzE,aAAO,EAAE,MAAM,sBAAsB;AAAA,QACpC,MAAM;AAAA,QACN,IAAI;AAAA,MACL,CAAC;AAGD,YAAM,UAAU,IAAI,QAAQ,KAAK,OAAO;AACxC,cAAQ,IAAI,cAAc,cAAc,CAAC;AACzC,cAAQ,IAAI,oBAAoB,KAAK,UAAU,UAAU,CAAC;AAC1D,cAAQ,IAAI,iBAAiB,QAAQ;AACrC,UAAI,WAAW,QAAW;AACzB,gBAAQ,IAAI,oBAAoB,KAAK,UAAU,MAAM,CAAC;AAAA,MACvD;AAGA,aAAO,MAAM,MAAM,KAAK;AAAA,QACvB,GAAG;AAAA,QACH;AAAA,MACD,CAAC;AAAA,IACF;AAAA,IAEA,cAAc,OACb,IACA,YACA,UACA,QACA,MACA,cACwB;AACxB,YAAM,EAAE,UAAU,IAAI,MAAM;AAG5B,YAAM,aAAa,gBACjB,QAAQ,UAAU,KAAK,EACvB,QAAQ,WAAW,MAAM;AAE3B,YAAM,iBAAiB,KAAK,WAAW,GAAG,IAAI,KAAK,MAAM,CAAC,IAAI;AAC9D,YAAM,MAAM,GAAG,UAAU,kCAAkC,cAAc;AAEzE,aAAO,EAAE,MAAM,2BAA2B;AAAA,QACzC,MAAM;AAAA,QACN,IAAI;AAAA,MACL,CAAC;AAGD,YAAM,eAAyB,CAAC;AAChC,mBAAa;AAAA,QACZ,SAAS,mBAAmB,KAAK,UAAU,UAAU,CAAC,CAAC;AAAA,MACxD;AACA,mBAAa,KAAK,YAAY,QAAQ,EAAE;AACxC,UAAI,QAAQ;AACX,qBAAa;AAAA,UACZ,eAAe,mBAAmB,KAAK,UAAU,MAAM,CAAC,CAAC;AAAA,QAC1D;AAAA,MACD;AAGA,mBAAa,KAAK,UAAU;AAG5B,UAAI,WAAW;AACd,YAAI,MAAM,QAAQ,SAAS,GAAG;AAC7B,uBAAa,KAAK,GAAG,SAAS;AAAA,QAC/B,OAAO;AACN,uBAAa,KAAK,SAAS;AAAA,QAC5B;AAAA,MACD;AAGA,aAAO,EAAE,MAAM,yBAAyB,EAAE,IAAI,CAAC;AAC/C,aAAO,IAAI,UAAU,KAAK,YAAY;AAAA,IACvC;AAAA,EACD;AAEA,SAAO;AACR;;;ACpRO,SAAS,aACf,UACA,MACY;AACZ,QAAM,SAAS,uBAAuB,QAAQ;AAC9C,SAAO,uBAA0B,QAAQ,IAAI;AAC9C;","names":[]}