UNPKG

@rivetkit/core

Version:

216 lines (191 loc) 7.85 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _chunkQAYICQKZcjs = require('./chunk-QAYICQKZ.cjs'); var _chunkDSGTB57Jcjs = require('./chunk-DSGTB57J.cjs'); var _chunkOBXZ7YJ7cjs = require('./chunk-OBXZ7YJ7.cjs'); var _chunkON577KNDcjs = require('./chunk-ON577KND.cjs'); var _chunkHIB3AS73cjs = require('./chunk-HIB3AS73.cjs'); // src/client/http-client-driver.ts function createHttpClientDriver(managerEndpoint) { const dynamicImports = (async () => { const [WebSocket, EventSource] = await Promise.all([ _chunkQAYICQKZcjs.importWebSocket.call(void 0, ), _chunkDSGTB57Jcjs.importEventSource.call(void 0, ) ]); return { WebSocket, EventSource }; })(); const driver = { action: async (_c, actorQuery, encoding, params, name, args, opts) => { _chunkON577KNDcjs.logger.call(void 0, ).debug("actor handle action", { name, args, query: actorQuery }); const responseData = await _chunkDSGTB57Jcjs.sendHttpRequest.call(void 0, { url: `${managerEndpoint}/registry/actors/actions/${encodeURIComponent(name)}`, method: "POST", headers: { [_chunkOBXZ7YJ7cjs.HEADER_ENCODING]: encoding, [_chunkOBXZ7YJ7cjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery), ...params !== void 0 ? { [_chunkOBXZ7YJ7cjs.HEADER_CONN_PARAMS]: JSON.stringify(params) } : {} }, body: { a: args }, encoding, signal: opts == null ? void 0 : opts.signal } ); return responseData.o; }, resolveActorId: async (_c, actorQuery, encodingKind, params) => { _chunkON577KNDcjs.logger.call(void 0, ).debug("resolving actor ID", { query: actorQuery }); try { const result = await _chunkDSGTB57Jcjs.sendHttpRequest.call(void 0, { url: `${managerEndpoint}/registry/actors/resolve`, method: "POST", headers: { [_chunkOBXZ7YJ7cjs.HEADER_ENCODING]: encodingKind, [_chunkOBXZ7YJ7cjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery), ...params !== void 0 ? { [_chunkOBXZ7YJ7cjs.HEADER_CONN_PARAMS]: JSON.stringify(params) } : {} }, body: {}, encoding: encodingKind }); _chunkON577KNDcjs.logger.call(void 0, ).debug("resolved actor ID", { actorId: result.i }); return result.i; } catch (error) { _chunkON577KNDcjs.logger.call(void 0, ).error("failed to resolve actor ID", { error }); if (error instanceof _chunkDSGTB57Jcjs.ActorError) { throw error; } else { throw new (0, _chunkDSGTB57Jcjs.InternalError)( `Failed to resolve actor ID: ${String(error)}` ); } } }, connectWebSocket: async (_c, actorQuery, encodingKind, params) => { const { WebSocket } = await dynamicImports; const endpoint = managerEndpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:"); const url = `${endpoint}/registry/actors/connect/websocket`; const protocol = [ `query.${encodeURIComponent(JSON.stringify(actorQuery))}`, `encoding.${encodingKind}` ]; if (params) protocol.push( `conn_params.${encodeURIComponent(JSON.stringify(params))}` ); protocol.push("rivetkit"); _chunkON577KNDcjs.logger.call(void 0, ).debug("connecting to websocket", { url }); const ws = new WebSocket(url, protocol); if (encodingKind === "cbor") { ws.binaryType = "arraybuffer"; } else if (encodingKind === "json") { try { ws.binaryType = "blob"; } catch (error) { } } else { _chunkHIB3AS73cjs.assertUnreachable.call(void 0, encodingKind); } return ws; }, connectSse: async (_c, actorQuery, encodingKind, params) => { const { EventSource } = await dynamicImports; const url = `${managerEndpoint}/registry/actors/connect/sse`; _chunkON577KNDcjs.logger.call(void 0, ).debug("connecting to sse", { url }); const eventSource = new EventSource(url, { fetch: (input, init) => { return fetch(input, { ...init, headers: { ...init == null ? void 0 : init.headers, "User-Agent": _chunkHIB3AS73cjs.httpUserAgent.call(void 0, ), [_chunkOBXZ7YJ7cjs.HEADER_ENCODING]: encodingKind, [_chunkOBXZ7YJ7cjs.HEADER_ACTOR_QUERY]: JSON.stringify(actorQuery), ...params !== void 0 ? { [_chunkOBXZ7YJ7cjs.HEADER_CONN_PARAMS]: JSON.stringify(params) } : {} }, credentials: "include" }); } }); return eventSource; }, sendHttpMessage: async (_c, actorId, encoding, connectionId, connectionToken, message) => { const messageSerialized = _chunkDSGTB57Jcjs.serializeWithEncoding.call(void 0, encoding, message); const res = await fetch(`${managerEndpoint}/registry/actors/message`, { method: "POST", headers: { "User-Agent": _chunkHIB3AS73cjs.httpUserAgent.call(void 0, ), [_chunkOBXZ7YJ7cjs.HEADER_ENCODING]: encoding, [_chunkOBXZ7YJ7cjs.HEADER_ACTOR_ID]: actorId, [_chunkOBXZ7YJ7cjs.HEADER_CONN_ID]: connectionId, [_chunkOBXZ7YJ7cjs.HEADER_CONN_TOKEN]: connectionToken }, body: messageSerialized, credentials: "include" }); return res; }, rawHttpRequest: async (_c, actorQuery, encoding, params, path, init) => { const normalizedPath = path.startsWith("/") ? path.slice(1) : path; const url = `${managerEndpoint}/registry/actors/raw/http/${normalizedPath}`; _chunkON577KNDcjs.logger.call(void 0, ).debug("rewriting http url", { from: path, to: url }); const headers = new Headers(init.headers); headers.set("User-Agent", _chunkHIB3AS73cjs.httpUserAgent.call(void 0, )); headers.set(_chunkOBXZ7YJ7cjs.HEADER_ACTOR_QUERY, JSON.stringify(actorQuery)); headers.set(_chunkOBXZ7YJ7cjs.HEADER_ENCODING, encoding); if (params !== void 0) { headers.set(_chunkOBXZ7YJ7cjs.HEADER_CONN_PARAMS, JSON.stringify(params)); } return await fetch(url, { ...init, headers }); }, rawWebSocket: async (_c, actorQuery, encoding, params, path, protocols) => { const { WebSocket } = await dynamicImports; const wsEndpoint = managerEndpoint.replace(/^http:/, "ws:").replace(/^https:/, "wss:"); const normalizedPath = path.startsWith("/") ? path.slice(1) : path; const url = `${wsEndpoint}/registry/actors/raw/websocket/${normalizedPath}`; _chunkON577KNDcjs.logger.call(void 0, ).debug("rewriting websocket url", { from: path, to: url }); const protocolList = []; protocolList.push( `query.${encodeURIComponent(JSON.stringify(actorQuery))}` ); protocolList.push(`encoding.${encoding}`); if (params) { protocolList.push( `conn_params.${encodeURIComponent(JSON.stringify(params))}` ); } protocolList.push("rivetkit"); if (protocols) { if (Array.isArray(protocols)) { protocolList.push(...protocols); } else { protocolList.push(protocols); } } _chunkON577KNDcjs.logger.call(void 0, ).debug("opening raw websocket", { url }); return new WebSocket(url, protocolList); } }; return driver; } // src/client/mod.ts function createClient(endpoint, opts) { const driver = createHttpClientDriver(endpoint); return _chunkDSGTB57Jcjs.createClientWithDriver.call(void 0, driver, opts); } exports.createClient = createClient; //# sourceMappingURL=chunk-ZCUB7MR5.cjs.map