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.
- package/README.md +11 -0
- package/dist/schemas/actor-persist/v1.ts +21 -24
- package/dist/schemas/client-protocol/v1.ts +6 -0
- package/dist/tsup/actor/errors.cjs +10 -2
- package/dist/tsup/actor/errors.cjs.map +1 -1
- package/dist/tsup/actor/errors.d.cts +17 -4
- package/dist/tsup/actor/errors.d.ts +17 -4
- package/dist/tsup/actor/errors.js +11 -3
- package/dist/tsup/{chunk-6PDXBYI5.js → chunk-3F2YSRJL.js} +8 -23
- package/dist/tsup/chunk-3F2YSRJL.js.map +1 -0
- package/dist/tsup/chunk-4CXBCT26.cjs +250 -0
- package/dist/tsup/chunk-4CXBCT26.cjs.map +1 -0
- package/dist/tsup/chunk-4R73YDN3.cjs +20 -0
- package/dist/tsup/chunk-4R73YDN3.cjs.map +1 -0
- package/dist/tsup/{chunk-OGAPU3UG.cjs → chunk-6LJT3QRL.cjs} +39 -25
- package/dist/tsup/chunk-6LJT3QRL.cjs.map +1 -0
- package/dist/tsup/{chunk-6WKQDDUD.cjs → chunk-GICQ3YCU.cjs} +143 -141
- package/dist/tsup/chunk-GICQ3YCU.cjs.map +1 -0
- package/dist/tsup/{chunk-FLMTTN27.js → chunk-H26RP6GD.js} +15 -8
- package/dist/tsup/chunk-H26RP6GD.js.map +1 -0
- package/dist/tsup/chunk-HI3HWJRC.js +20 -0
- package/dist/tsup/chunk-HI3HWJRC.js.map +1 -0
- package/dist/tsup/{chunk-4NSUQZ2H.js → chunk-HLLF4B4Q.js} +116 -114
- package/dist/tsup/chunk-HLLF4B4Q.js.map +1 -0
- package/dist/tsup/{chunk-FCCPJNMA.cjs → chunk-IH6CKNDW.cjs} +12 -27
- package/dist/tsup/chunk-IH6CKNDW.cjs.map +1 -0
- package/dist/tsup/chunk-LV2S3OU3.js +250 -0
- package/dist/tsup/chunk-LV2S3OU3.js.map +1 -0
- package/dist/tsup/{chunk-R2OPSKIV.cjs → chunk-LWNKVZG5.cjs} +20 -13
- package/dist/tsup/chunk-LWNKVZG5.cjs.map +1 -0
- package/dist/tsup/{chunk-INGJP237.js → chunk-NFU2BBT5.js} +102 -43
- package/dist/tsup/chunk-NFU2BBT5.js.map +1 -0
- package/dist/tsup/{chunk-3H7O2A7I.js → chunk-PQY7KKTL.js} +33 -19
- package/dist/tsup/chunk-PQY7KKTL.js.map +1 -0
- package/dist/tsup/{chunk-PO4VLDWA.js → chunk-QK72M5JB.js} +3 -5
- package/dist/tsup/chunk-QK72M5JB.js.map +1 -0
- package/dist/tsup/{chunk-TZJKSBUQ.cjs → chunk-QNNXFOQV.cjs} +3 -5
- package/dist/tsup/chunk-QNNXFOQV.cjs.map +1 -0
- package/dist/tsup/{chunk-GIR3AFFI.cjs → chunk-SBHHJ6QS.cjs} +102 -43
- package/dist/tsup/chunk-SBHHJ6QS.cjs.map +1 -0
- package/dist/tsup/chunk-TQ62L3X7.js +325 -0
- package/dist/tsup/chunk-TQ62L3X7.js.map +1 -0
- package/dist/tsup/chunk-VO7ZRVVD.cjs +6293 -0
- package/dist/tsup/chunk-VO7ZRVVD.cjs.map +1 -0
- package/dist/tsup/chunk-WHBPJNGW.cjs +325 -0
- package/dist/tsup/chunk-WHBPJNGW.cjs.map +1 -0
- package/dist/tsup/chunk-XJQHKJ4P.js +6293 -0
- package/dist/tsup/chunk-XJQHKJ4P.js.map +1 -0
- package/dist/tsup/client/mod.cjs +10 -10
- package/dist/tsup/client/mod.d.cts +7 -13
- package/dist/tsup/client/mod.d.ts +7 -13
- package/dist/tsup/client/mod.js +9 -9
- package/dist/tsup/common/log.cjs +12 -4
- package/dist/tsup/common/log.cjs.map +1 -1
- package/dist/tsup/common/log.d.cts +23 -17
- package/dist/tsup/common/log.d.ts +23 -17
- package/dist/tsup/common/log.js +15 -7
- package/dist/tsup/common/websocket.cjs +5 -5
- package/dist/tsup/common/websocket.js +4 -4
- package/dist/tsup/{common-CpqORuCq.d.cts → common-CXCe7s6i.d.cts} +2 -2
- package/dist/tsup/{common-CpqORuCq.d.ts → common-CXCe7s6i.d.ts} +2 -2
- package/dist/tsup/{connection-BwUMoe6n.d.ts → connection-BI-6UIBJ.d.ts} +196 -226
- package/dist/tsup/{connection-BR_Ve4ku.d.cts → connection-Dyd4NLGW.d.cts} +196 -226
- package/dist/tsup/driver-helpers/mod.cjs +6 -9
- package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
- package/dist/tsup/driver-helpers/mod.d.cts +5 -6
- package/dist/tsup/driver-helpers/mod.d.ts +5 -6
- package/dist/tsup/driver-helpers/mod.js +6 -9
- package/dist/tsup/driver-test-suite/mod.cjs +155 -1363
- package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/driver-test-suite/mod.d.cts +11 -5
- package/dist/tsup/driver-test-suite/mod.d.ts +11 -5
- package/dist/tsup/driver-test-suite/mod.js +876 -2084
- package/dist/tsup/driver-test-suite/mod.js.map +1 -1
- package/dist/tsup/inspector/mod.cjs +6 -8
- package/dist/tsup/inspector/mod.cjs.map +1 -1
- package/dist/tsup/inspector/mod.d.cts +3 -3
- package/dist/tsup/inspector/mod.d.ts +3 -3
- package/dist/tsup/inspector/mod.js +8 -10
- package/dist/tsup/mod.cjs +9 -15
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +47 -42
- package/dist/tsup/mod.d.ts +47 -42
- package/dist/tsup/mod.js +10 -16
- package/dist/tsup/{router-endpoints-DAbqVFx2.d.ts → router-endpoints-BTe_Rsdn.d.cts} +2 -3
- package/dist/tsup/{router-endpoints-AYkXG8Tl.d.cts → router-endpoints-CBSrKHmo.d.ts} +2 -3
- package/dist/tsup/test/mod.cjs +10 -14
- package/dist/tsup/test/mod.cjs.map +1 -1
- package/dist/tsup/test/mod.d.cts +4 -5
- package/dist/tsup/test/mod.d.ts +4 -5
- package/dist/tsup/test/mod.js +9 -13
- package/dist/tsup/{utils-CT0cv4jd.d.ts → utils-fwx3o3K9.d.cts} +1 -0
- package/dist/tsup/{utils-CT0cv4jd.d.cts → utils-fwx3o3K9.d.ts} +1 -0
- package/dist/tsup/utils.cjs +3 -3
- package/dist/tsup/utils.d.cts +1 -1
- package/dist/tsup/utils.d.ts +1 -1
- package/dist/tsup/utils.js +2 -2
- package/package.json +4 -4
- package/src/actor/action.ts +1 -5
- package/src/actor/config.ts +27 -295
- package/src/actor/connection.ts +9 -12
- package/src/actor/context.ts +1 -4
- package/src/actor/definition.ts +7 -11
- package/src/actor/errors.ts +97 -35
- package/src/actor/generic-conn-driver.ts +28 -16
- package/src/actor/instance.ts +177 -133
- package/src/actor/log.ts +4 -13
- package/src/actor/mod.ts +0 -5
- package/src/actor/protocol/old.ts +42 -26
- package/src/actor/protocol/serde.ts +1 -1
- package/src/actor/router-endpoints.ts +41 -38
- package/src/actor/router.ts +20 -18
- package/src/actor/unstable-react.ts +1 -1
- package/src/actor/utils.ts +6 -2
- package/src/client/actor-common.ts +1 -1
- package/src/client/actor-conn.ts +152 -91
- package/src/client/actor-handle.ts +85 -25
- package/src/client/actor-query.ts +65 -0
- package/src/client/client.ts +29 -98
- package/src/client/config.ts +44 -0
- package/src/client/errors.ts +1 -0
- package/src/client/log.ts +2 -4
- package/src/client/mod.ts +16 -12
- package/src/client/raw-utils.ts +82 -25
- package/src/client/utils.ts +5 -3
- package/src/common/fake-event-source.ts +10 -9
- package/src/common/inline-websocket-adapter2.ts +39 -30
- package/src/common/log.ts +176 -101
- package/src/common/logfmt.ts +21 -30
- package/src/common/router.ts +12 -19
- package/src/common/utils.ts +27 -13
- package/src/common/websocket.ts +0 -1
- package/src/driver-helpers/mod.ts +1 -1
- package/src/driver-test-suite/log.ts +1 -3
- package/src/driver-test-suite/mod.ts +86 -60
- package/src/driver-test-suite/tests/actor-handle.ts +33 -0
- package/src/driver-test-suite/tests/manager-driver.ts +5 -3
- package/src/driver-test-suite/tests/raw-http-direct-registry.ts +227 -226
- package/src/driver-test-suite/tests/raw-websocket-direct-registry.ts +393 -392
- package/src/driver-test-suite/tests/request-access.ts +112 -126
- package/src/driver-test-suite/utils.ts +13 -10
- package/src/drivers/default.ts +7 -4
- package/src/drivers/engine/actor-driver.ts +22 -13
- package/src/drivers/engine/config.ts +2 -10
- package/src/drivers/engine/kv.ts +1 -1
- package/src/drivers/engine/log.ts +1 -3
- package/src/drivers/engine/mod.ts +2 -3
- package/src/drivers/file-system/actor.ts +1 -1
- package/src/drivers/file-system/global-state.ts +33 -20
- package/src/drivers/file-system/log.ts +1 -3
- package/src/drivers/file-system/manager.ts +31 -8
- package/src/inspector/config.ts +9 -4
- package/src/inspector/log.ts +1 -1
- package/src/inspector/manager.ts +2 -2
- package/src/inspector/utils.ts +1 -1
- package/src/manager/driver.ts +10 -2
- package/src/manager/hono-websocket-adapter.ts +21 -12
- package/src/manager/log.ts +2 -4
- package/src/manager/mod.ts +1 -1
- package/src/manager/router.ts +277 -1657
- package/src/manager-api/routes/actors-create.ts +16 -0
- package/src/manager-api/routes/actors-delete.ts +4 -0
- package/src/manager-api/routes/actors-get-by-id.ts +7 -0
- package/src/manager-api/routes/actors-get-or-create-by-id.ts +29 -0
- package/src/manager-api/routes/actors-get.ts +7 -0
- package/src/manager-api/routes/common.ts +18 -0
- package/src/mod.ts +0 -2
- package/src/registry/config.ts +1 -1
- package/src/registry/log.ts +2 -4
- package/src/registry/mod.ts +57 -24
- package/src/registry/run-config.ts +31 -33
- package/src/registry/serve.ts +4 -5
- package/src/remote-manager-driver/actor-http-client.ts +72 -0
- package/src/remote-manager-driver/actor-websocket-client.ts +63 -0
- package/src/remote-manager-driver/api-endpoints.ts +79 -0
- package/src/remote-manager-driver/api-utils.ts +43 -0
- package/src/remote-manager-driver/log.ts +5 -0
- package/src/remote-manager-driver/mod.ts +274 -0
- package/src/{drivers/engine → remote-manager-driver}/ws-proxy.ts +24 -14
- package/src/serde.ts +8 -2
- package/src/test/log.ts +1 -3
- package/src/test/mod.ts +17 -16
- package/dist/tsup/chunk-2CRLFV6Z.cjs +0 -202
- package/dist/tsup/chunk-2CRLFV6Z.cjs.map +0 -1
- package/dist/tsup/chunk-3H7O2A7I.js.map +0 -1
- package/dist/tsup/chunk-42I3OZ3Q.js +0 -15
- package/dist/tsup/chunk-42I3OZ3Q.js.map +0 -1
- package/dist/tsup/chunk-4NSUQZ2H.js.map +0 -1
- package/dist/tsup/chunk-6PDXBYI5.js.map +0 -1
- package/dist/tsup/chunk-6WKQDDUD.cjs.map +0 -1
- package/dist/tsup/chunk-CTBOSFUH.cjs +0 -116
- package/dist/tsup/chunk-CTBOSFUH.cjs.map +0 -1
- package/dist/tsup/chunk-EGVZZFE2.js +0 -2857
- package/dist/tsup/chunk-EGVZZFE2.js.map +0 -1
- package/dist/tsup/chunk-FCCPJNMA.cjs.map +0 -1
- package/dist/tsup/chunk-FLMTTN27.js.map +0 -1
- package/dist/tsup/chunk-GIR3AFFI.cjs.map +0 -1
- package/dist/tsup/chunk-INGJP237.js.map +0 -1
- package/dist/tsup/chunk-KJCJLKRM.js +0 -116
- package/dist/tsup/chunk-KJCJLKRM.js.map +0 -1
- package/dist/tsup/chunk-KUPQZYUQ.cjs +0 -15
- package/dist/tsup/chunk-KUPQZYUQ.cjs.map +0 -1
- package/dist/tsup/chunk-O2MBYIXO.cjs +0 -2857
- package/dist/tsup/chunk-O2MBYIXO.cjs.map +0 -1
- package/dist/tsup/chunk-OGAPU3UG.cjs.map +0 -1
- package/dist/tsup/chunk-OV6AYD4S.js +0 -4406
- package/dist/tsup/chunk-OV6AYD4S.js.map +0 -1
- package/dist/tsup/chunk-PO4VLDWA.js.map +0 -1
- package/dist/tsup/chunk-R2OPSKIV.cjs.map +0 -1
- package/dist/tsup/chunk-TZJKSBUQ.cjs.map +0 -1
- package/dist/tsup/chunk-UBUC5C3G.cjs +0 -189
- package/dist/tsup/chunk-UBUC5C3G.cjs.map +0 -1
- package/dist/tsup/chunk-UIM22YJL.cjs +0 -4406
- package/dist/tsup/chunk-UIM22YJL.cjs.map +0 -1
- package/dist/tsup/chunk-URVFQMYI.cjs +0 -230
- package/dist/tsup/chunk-URVFQMYI.cjs.map +0 -1
- package/dist/tsup/chunk-UVUPOS46.js +0 -230
- package/dist/tsup/chunk-UVUPOS46.js.map +0 -1
- package/dist/tsup/chunk-VRRHBNJC.js +0 -189
- package/dist/tsup/chunk-VRRHBNJC.js.map +0 -1
- package/dist/tsup/chunk-XFSS33EQ.js +0 -202
- package/dist/tsup/chunk-XFSS33EQ.js.map +0 -1
- package/src/client/http-client-driver.ts +0 -326
- package/src/driver-test-suite/test-inline-client-driver.ts +0 -402
- package/src/driver-test-suite/tests/actor-auth.ts +0 -591
- package/src/drivers/engine/api-endpoints.ts +0 -128
- package/src/drivers/engine/api-utils.ts +0 -70
- package/src/drivers/engine/manager-driver.ts +0 -391
- package/src/inline-client-driver/log.ts +0 -7
- package/src/inline-client-driver/mod.ts +0 -385
- package/src/manager/auth.ts +0 -121
- /package/src/{drivers/engine → actor}/keys.test.ts +0 -0
- /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":"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","names":[]}
|