UNPKG

@stagewise/toolbar

Version:

stagewise toolbar SDK for AI Agent interaction.

1,164 lines 725 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var define_MAIN_MODULES_default={"index-DsC5zpes.js":`import { jsx, jsxs } from "react/jsx-runtime"; import { createContext, useMemo, useContext, useState, useRef, useCallback, useEffect, createRef } from "react"; const ConfigContext = createContext({ config: void 0 }); function ConfigProvider({ children, config }) { const value = useMemo(() => ({ config }), [config]); return /* @__PURE__ */ jsx(ConfigContext.Provider, { value, children }); } function useConfig() { return useContext(ConfigContext); } var __create$1 = Object.create, __defProp$2 = Object.defineProperty, __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor, __getOwnPropNames$1 = Object.getOwnPropertyNames, __getProtoOf$1 = Object.getPrototypeOf, __hasOwnProp$1 = Object.prototype.hasOwnProperty, __commonJS$1 = (cb, mod) => function() { return mod || (0, cb[__getOwnPropNames$1(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }, __copyProps$1 = (to, from, except, desc) => { if (from && typeof from == "object" || typeof from == "function") for (var keys = __getOwnPropNames$1(from), i = 0, n = keys.length, key; i < n; i++) key = keys[i], !__hasOwnProp$1.call(to, key) && key !== except && __defProp$2(to, key, { get: ((k) => from[k]).bind(null, key), enumerable: !(desc = __getOwnPropDesc$1(from, key)) || desc.enumerable }); return to; }, __toESM$1 = (mod, isNodeMode, target) => (target = mod != null ? __create$1(__getProtoOf$1(mod)) : {}, __copyProps$1(__defProp$2(target, "default", { value: mod, enumerable: !0 }), mod)), require_typeof$1 = __commonJS$1({ "../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/typeof.js"(exports, module) { function _typeof$2(o) { "@babel/helpers - typeof"; return module.exports = _typeof$2 = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o$1) { return typeof o$1; } : function(o$1) { return o$1 && typeof Symbol == "function" && o$1.constructor === Symbol && o$1 !== Symbol.prototype ? "symbol" : typeof o$1; }, module.exports.__esModule = !0, module.exports.default = module.exports, _typeof$2(o); } module.exports = _typeof$2, module.exports.__esModule = !0, module.exports.default = module.exports; } }), require_toPrimitive$1 = __commonJS$1({ "../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js"(exports, module) { var _typeof$1 = require_typeof$1().default; function toPrimitive$1(t, r2) { if (_typeof$1(t) != "object" || !t) return t; var e = t[Symbol.toPrimitive]; if (e !== void 0) { var i = e.call(t, r2 || "default"); if (_typeof$1(i) != "object") return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return (r2 === "string" ? String : Number)(t); } module.exports = toPrimitive$1, module.exports.__esModule = !0, module.exports.default = module.exports; } }), require_toPropertyKey$1 = __commonJS$1({ "../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js"(exports, module) { var _typeof = require_typeof$1().default, toPrimitive = require_toPrimitive$1(); function toPropertyKey$1(t) { var i = toPrimitive(t, "string"); return _typeof(i) == "symbol" ? i : i + ""; } module.exports = toPropertyKey$1, module.exports.__esModule = !0, module.exports.default = module.exports; } }), require_defineProperty$1 = __commonJS$1({ "../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js"(exports, module) { var toPropertyKey = require_toPropertyKey$1(); function _defineProperty(e, r2, t) { return (r2 = toPropertyKey(r2)) in e ? Object.defineProperty(e, r2, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r2] = t, e; } module.exports = _defineProperty, module.exports.__esModule = !0, module.exports.default = module.exports; } }), require_objectSpread2$1 = __commonJS$1({ "../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/objectSpread2.js"(exports, module) { var defineProperty = require_defineProperty$1(); function ownKeys(e, r2) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r2 && (o = o.filter(function(r$1) { return Object.getOwnPropertyDescriptor(e, r$1).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread2(e) { for (var r2 = 1; r2 < arguments.length; r2++) { var t = arguments[r2] != null ? arguments[r2] : {}; r2 % 2 ? ownKeys(Object(t), !0).forEach(function(r$1) { defineProperty(e, r$1, t[r$1]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r$1) { Object.defineProperty(e, r$1, Object.getOwnPropertyDescriptor(t, r$1)); }); } return e; } module.exports = _objectSpread2, module.exports.__esModule = !0, module.exports.default = module.exports; } }); function observable(subscribe) { const self = { subscribe(observer) { let teardownRef = null, isDone = !1, unsubscribed = !1, teardownImmediately = !1; function unsubscribe() { if (teardownRef === null) { teardownImmediately = !0; return; } unsubscribed || (unsubscribed = !0, typeof teardownRef == "function" ? teardownRef() : teardownRef && teardownRef.unsubscribe()); } return teardownRef = subscribe({ next(value) { var _observer$next; isDone || (_observer$next = observer.next) === null || _observer$next === void 0 || _observer$next.call(observer, value); }, error(err) { var _observer$error; isDone || (isDone = !0, (_observer$error = observer.error) === null || _observer$error === void 0 || _observer$error.call(observer, err), unsubscribe()); }, complete() { var _observer$complete; isDone || (isDone = !0, (_observer$complete = observer.complete) === null || _observer$complete === void 0 || _observer$complete.call(observer), unsubscribe()); } }), teardownImmediately && unsubscribe(), { unsubscribe }; }, pipe(...operations) { return operations.reduce(pipeReducer, self); } }; return self; } function pipeReducer(prev, fn) { return fn(prev); } function observableToPromise(observable$1) { const ac = new AbortController(); return new Promise((resolve, reject) => { let isDone = !1; function onDone() { isDone || (isDone = !0, obs$.unsubscribe()); } ac.signal.addEventListener("abort", () => { reject(ac.signal.reason); }); const obs$ = observable$1.subscribe({ next(data) { isDone = !0, resolve(data), onDone(); }, error(data) { reject(data); }, complete() { ac.abort(), onDone(); } }); }); } function share(_opts) { return (source) => { let refCount = 0, subscription = null; const observers = []; function startIfNeeded() { subscription || (subscription = source.subscribe({ next(value) { for (const observer of observers) { var _observer$next; (_observer$next = observer.next) === null || _observer$next === void 0 || _observer$next.call(observer, value); } }, error(error) { for (const observer of observers) { var _observer$error; (_observer$error = observer.error) === null || _observer$error === void 0 || _observer$error.call(observer, error); } }, complete() { for (const observer of observers) { var _observer$complete; (_observer$complete = observer.complete) === null || _observer$complete === void 0 || _observer$complete.call(observer); } } })); } function resetIfNeeded() { if (refCount === 0 && subscription) { const _sub = subscription; subscription = null, _sub.unsubscribe(); } } return observable((subscriber) => (refCount++, observers.push(subscriber), startIfNeeded(), { unsubscribe() { refCount--, resetIfNeeded(); const index = observers.findIndex((v) => v === subscriber); index > -1 && observers.splice(index, 1); } })); }; } function behaviorSubject(initialValue) { let value = initialValue; const observerList = [], addObserver = (observer) => { value !== void 0 && observer.next(value), observerList.push(observer); }, removeObserver = (observer) => { observerList.splice(observerList.indexOf(observer), 1); }, obs = observable((observer) => (addObserver(observer), () => { removeObserver(observer); })); return obs.next = (nextValue) => { if (value !== nextValue) { value = nextValue; for (const observer of observerList) observer.next(nextValue); } }, obs.get = () => value, obs; } function createChain(opts) { return observable((observer) => { function execute(index = 0, op = opts.op) { const next = opts.links[index]; if (!next) throw new Error("No more links to execute - did you forget to add an ending link?"); return next({ op, next(nextOp) { return execute(index + 1, nextOp); } }); } return execute().subscribe(observer); }); } function isObject(value) { return !!value && !Array.isArray(value) && typeof value == "object"; } const run = (fn) => fn(); function sleep(ms = 0) { return new Promise((res) => setTimeout(res, ms)); } var __create = Object.create, __defProp$1 = Object.defineProperty, __getOwnPropDesc = Object.getOwnPropertyDescriptor, __getOwnPropNames = Object.getOwnPropertyNames, __getProtoOf = Object.getPrototypeOf, __hasOwnProp = Object.prototype.hasOwnProperty, __commonJS = (cb, mod) => function() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }, __copyProps = (to, from, except, desc) => { if (from && typeof from == "object" || typeof from == "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) key = keys[i], !__hasOwnProp.call(to, key) && key !== except && __defProp$1(to, key, { get: ((k) => from[k]).bind(null, key), enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); return to; }, __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(__defProp$1(target, "default", { value: mod, enumerable: !0 }), mod)); const noop = () => { }, freezeIfAvailable = (obj) => { Object.freeze && Object.freeze(obj); }; function createInnerProxy(callback, path, memo) { var _memo$cacheKey; const cacheKey = path.join("."); return (_memo$cacheKey = memo[cacheKey]) !== null && _memo$cacheKey !== void 0 || (memo[cacheKey] = new Proxy(noop, { get(_obj, key) { if (!(typeof key != "string" || key === "then")) return createInnerProxy(callback, [...path, key], memo); }, apply(_1, _2, args) { const lastOfPath = path[path.length - 1]; let opts = { args, path }; return lastOfPath === "call" ? opts = { args: args.length >= 2 ? [args[1]] : [], path: path.slice(0, -1) } : lastOfPath === "apply" && (opts = { args: args.length >= 2 ? args[1] : [], path: path.slice(0, -1) }), freezeIfAvailable(opts.args), freezeIfAvailable(opts.path), callback(opts); } })), memo[cacheKey]; } const createRecursiveProxy = (callback) => createInnerProxy(callback, [], /* @__PURE__ */ Object.create(null)), createFlatProxy = (callback) => new Proxy(noop, { get(_obj, name) { if (name !== "then") return callback(name); } }); var require_typeof = __commonJS({ "../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/typeof.js"(exports, module) { function _typeof$2(o) { "@babel/helpers - typeof"; return module.exports = _typeof$2 = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(o$1) { return typeof o$1; } : function(o$1) { return o$1 && typeof Symbol == "function" && o$1.constructor === Symbol && o$1 !== Symbol.prototype ? "symbol" : typeof o$1; }, module.exports.__esModule = !0, module.exports.default = module.exports, _typeof$2(o); } module.exports = _typeof$2, module.exports.__esModule = !0, module.exports.default = module.exports; } }), require_toPrimitive = __commonJS({ "../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPrimitive.js"(exports, module) { var _typeof$1 = require_typeof().default; function toPrimitive$1(t, r2) { if (_typeof$1(t) != "object" || !t) return t; var e = t[Symbol.toPrimitive]; if (e !== void 0) { var i = e.call(t, r2 || "default"); if (_typeof$1(i) != "object") return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return (r2 === "string" ? String : Number)(t); } module.exports = toPrimitive$1, module.exports.__esModule = !0, module.exports.default = module.exports; } }), require_toPropertyKey = __commonJS({ "../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/toPropertyKey.js"(exports, module) { var _typeof = require_typeof().default, toPrimitive = require_toPrimitive(); function toPropertyKey$1(t) { var i = toPrimitive(t, "string"); return _typeof(i) == "symbol" ? i : i + ""; } module.exports = toPropertyKey$1, module.exports.__esModule = !0, module.exports.default = module.exports; } }), require_defineProperty = __commonJS({ "../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/defineProperty.js"(exports, module) { var toPropertyKey = require_toPropertyKey(); function _defineProperty(e, r2, t) { return (r2 = toPropertyKey(r2)) in e ? Object.defineProperty(e, r2, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r2] = t, e; } module.exports = _defineProperty, module.exports.__esModule = !0, module.exports.default = module.exports; } }), require_objectSpread2 = __commonJS({ "../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/objectSpread2.js"(exports, module) { var defineProperty = require_defineProperty(); function ownKeys(e, r2) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r2 && (o = o.filter(function(r$1) { return Object.getOwnPropertyDescriptor(e, r$1).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread2(e) { for (var r2 = 1; r2 < arguments.length; r2++) { var t = arguments[r2] != null ? arguments[r2] : {}; r2 % 2 ? ownKeys(Object(t), !0).forEach(function(r$1) { defineProperty(e, r$1, t[r$1]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r$1) { Object.defineProperty(e, r$1, Object.getOwnPropertyDescriptor(t, r$1)); }); } return e; } module.exports = _objectSpread2, module.exports.__esModule = !0, module.exports.default = module.exports; } }); __toESM(require_objectSpread2()); __toESM(require_defineProperty()); var import_objectSpread2$1$1 = __toESM(require_objectSpread2()); function transformResultInner(response, transformer2) { if ("error" in response) { const error = transformer2.deserialize(response.error); return { ok: !1, error: (0, import_objectSpread2$1$1.default)((0, import_objectSpread2$1$1.default)({}, response), {}, { error }) }; } return { ok: !0, result: (0, import_objectSpread2$1$1.default)((0, import_objectSpread2$1$1.default)({}, response.result), (!response.result.type || response.result.type === "data") && { type: "data", data: transformer2.deserialize(response.result.data) }) }; } var TransformResultError = class extends Error { constructor() { super("Unable to transform response from server"); } }; function transformResult(response, transformer2) { let result; try { result = transformResultInner(response, transformer2); } catch { throw new TransformResultError(); } if (!result.ok && (!isObject(result.error.error) || typeof result.error.error.code != "number")) throw new TransformResultError(); if (result.ok && !isObject(result.result)) throw new TransformResultError(); return result; } __toESM(require_objectSpread2()); var import_defineProperty$5 = __toESM$1(require_defineProperty$1()), import_objectSpread2$1 = __toESM$1(require_objectSpread2$1()); function isTRPCClientError(cause) { return cause instanceof TRPCClientError; } function isTRPCErrorResponse(obj) { return isObject(obj) && isObject(obj.error) && typeof obj.error.code == "number" && typeof obj.error.message == "string"; } function getMessageFromUnknownError(err, fallback) { return typeof err == "string" ? err : isObject(err) && typeof err.message == "string" ? err.message : fallback; } var TRPCClientError = class TRPCClientError2 extends Error { constructor(message, opts) { var _opts$result, _opts$result2; const cause = opts == null ? void 0 : opts.cause; super(message, { cause }), (0, import_defineProperty$5.default)(this, "cause", void 0), (0, import_defineProperty$5.default)(this, "shape", void 0), (0, import_defineProperty$5.default)(this, "data", void 0), (0, import_defineProperty$5.default)(this, "meta", void 0), this.meta = opts == null ? void 0 : opts.meta, this.cause = cause, this.shape = opts == null || (_opts$result = opts.result) === null || _opts$result === void 0 ? void 0 : _opts$result.error, this.data = opts == null || (_opts$result2 = opts.result) === null || _opts$result2 === void 0 ? void 0 : _opts$result2.error.data, this.name = "TRPCClientError", Object.setPrototypeOf(this, TRPCClientError2.prototype); } static from(_cause, opts = {}) { const cause = _cause; return isTRPCClientError(cause) ? (opts.meta && (cause.meta = (0, import_objectSpread2$1.default)((0, import_objectSpread2$1.default)({}, cause.meta), opts.meta)), cause) : isTRPCErrorResponse(cause) ? new TRPCClientError2(cause.error.message, (0, import_objectSpread2$1.default)((0, import_objectSpread2$1.default)({}, opts), {}, { result: cause })) : new TRPCClientError2(getMessageFromUnknownError(cause, "Unknown error"), (0, import_objectSpread2$1.default)((0, import_objectSpread2$1.default)({}, opts), {}, { cause })); } }; function getTransformer(transformer2) { const _transformer = transformer2; return _transformer ? "input" in _transformer ? _transformer : { input: _transformer, output: _transformer } : { input: { serialize: (data) => data, deserialize: (data) => data }, output: { serialize: (data) => data, deserialize: (data) => data } }; } __toESM$1(require_objectSpread2$1()); __toESM$1(require_objectSpread2$1()); __toESM$1(require_objectSpread2$1()); __toESM$1(require_objectSpread2$1()); const lazyDefaults = { enabled: !1, closeMs: 0 }, keepAliveDefaults = { enabled: !1, pongTimeoutMs: 1e3, intervalMs: 5e3 }, exponentialBackoff = (attemptIndex) => attemptIndex === 0 ? 0 : Math.min(1e3 * 2 ** attemptIndex, 3e4), resultOf = (value, ...args) => typeof value == "function" ? value(...args) : value; var import_defineProperty$3 = __toESM$1(require_defineProperty$1()), TRPCWebSocketClosedError = class TRPCWebSocketClosedError2 extends Error { constructor(opts) { super(opts.message, { cause: opts.cause }), this.name = "TRPCWebSocketClosedError", Object.setPrototypeOf(this, TRPCWebSocketClosedError2.prototype); } }, ResettableTimeout = class { constructor(onTimeout, timeoutMs) { this.onTimeout = onTimeout, this.timeoutMs = timeoutMs, (0, import_defineProperty$3.default)(this, "timeout", void 0); } /** * Resets the current timeout, restarting it with the same duration. * Does nothing if no timeout is active. */ reset() { this.timeout && (clearTimeout(this.timeout), this.timeout = setTimeout(this.onTimeout, this.timeoutMs)); } start() { clearTimeout(this.timeout), this.timeout = setTimeout(this.onTimeout, this.timeoutMs); } stop() { clearTimeout(this.timeout), this.timeout = void 0; } }; function withResolvers() { let resolve, reject; return { promise: new Promise((res, rej) => { resolve = res, reject = rej; }), resolve, reject }; } async function prepareUrl(urlOptions) { const url = await resultOf(urlOptions.url); if (!urlOptions.connectionParams) return url; const connectionParams = \`\${url.includes("?") ? "&" : "?"}connectionParams=1\`; return url + connectionParams; } async function buildConnectionMessage(connectionParams) { const message = { method: "connectionParams", data: await resultOf(connectionParams) }; return JSON.stringify(message); } var import_defineProperty$2 = __toESM$1(require_defineProperty$1()), RequestManager = class { constructor() { (0, import_defineProperty$2.default)(this, "outgoingRequests", new Array()), (0, import_defineProperty$2.default)(this, "pendingRequests", {}); } /** * Registers a new request by adding it to the outgoing queue and setting up * callbacks for lifecycle events such as completion or error. * * @param message - The outgoing message to be sent. * @param callbacks - Callback functions to observe the request's state. * @returns A cleanup function to manually remove the request. */ register(message, callbacks) { const { promise: end, resolve } = withResolvers(); return this.outgoingRequests.push({ id: String(message.id), message, end, callbacks: { next: callbacks.next, complete: () => { callbacks.complete(), resolve(); }, error: (e) => { callbacks.error(e), resolve(); } } }), () => { this.delete(message.id), callbacks.complete(), resolve(); }; } /** * Deletes a request from both the outgoing and pending collections, if it exists. */ delete(messageId) { messageId !== null && (this.outgoingRequests = this.outgoingRequests.filter(({ id }) => id !== String(messageId)), delete this.pendingRequests[String(messageId)]); } /** * Moves all outgoing requests to the pending state and clears the outgoing queue. * * The caller is expected to handle the actual sending of the requests * (e.g., sending them over the network) after this method is called. * * @returns The list of requests that were transitioned to the pending state. */ flush() { const requests = this.outgoingRequests; this.outgoingRequests = []; for (const request of requests) this.pendingRequests[request.id] = request; return requests; } /** * Retrieves all currently pending requests, which are in flight awaiting responses * or handling ongoing subscriptions. */ getPendingRequests() { return Object.values(this.pendingRequests); } /** * Retrieves a specific pending request by its message ID. */ getPendingRequest(messageId) { return messageId === null ? null : this.pendingRequests[String(messageId)]; } /** * Retrieves all outgoing requests, which are waiting to be sent. */ getOutgoingRequests() { return this.outgoingRequests; } /** * Retrieves all requests, both outgoing and pending, with their respective states. * * @returns An array of all requests with their state ("outgoing" or "pending"). */ getRequests() { return [...this.getOutgoingRequests().map((request) => ({ state: "outgoing", message: request.message, end: request.end, callbacks: request.callbacks })), ...this.getPendingRequests().map((request) => ({ state: "pending", message: request.message, end: request.end, callbacks: request.callbacks }))]; } /** * Checks if there are any pending requests, including ongoing subscriptions. */ hasPendingRequests() { return this.getPendingRequests().length > 0; } /** * Checks if there are any pending subscriptions */ hasPendingSubscriptions() { return this.getPendingRequests().some((request) => request.message.method === "subscription"); } /** * Checks if there are any outgoing requests waiting to be sent. */ hasOutgoingRequests() { return this.outgoingRequests.length > 0; } }, import_defineProperty$1 = __toESM$1(require_defineProperty$1()); function asyncWsOpen(ws) { const { promise, resolve, reject } = withResolvers(); return ws.addEventListener("open", () => { ws.removeEventListener("error", reject), resolve(); }), ws.addEventListener("error", reject), promise; } function setupPingInterval(ws, { intervalMs, pongTimeoutMs }) { let pingTimeout, pongTimeout; function start() { pingTimeout = setTimeout(() => { ws.send("PING"), pongTimeout = setTimeout(() => { ws.close(); }, pongTimeoutMs); }, intervalMs); } function reset() { clearTimeout(pingTimeout), start(); } function pong() { clearTimeout(pongTimeout), reset(); } ws.addEventListener("open", start), ws.addEventListener("message", ({ data }) => { clearTimeout(pingTimeout), start(), data === "PONG" && pong(); }), ws.addEventListener("close", () => { clearTimeout(pingTimeout), clearTimeout(pongTimeout); }); } var WsConnection = class WsConnection2 { constructor(opts) { var _opts$WebSocketPonyfi; if ((0, import_defineProperty$1.default)(this, "id", ++WsConnection2.connectCount), (0, import_defineProperty$1.default)(this, "WebSocketPonyfill", void 0), (0, import_defineProperty$1.default)(this, "urlOptions", void 0), (0, import_defineProperty$1.default)(this, "keepAliveOpts", void 0), (0, import_defineProperty$1.default)(this, "wsObservable", behaviorSubject(null)), (0, import_defineProperty$1.default)(this, "openPromise", null), this.WebSocketPonyfill = (_opts$WebSocketPonyfi = opts.WebSocketPonyfill) !== null && _opts$WebSocketPonyfi !== void 0 ? _opts$WebSocketPonyfi : WebSocket, !this.WebSocketPonyfill) throw new Error("No WebSocket implementation found - you probably don't want to use this on the server, but if you do you need to pass a \`WebSocket\`-ponyfill"); this.urlOptions = opts.urlOptions, this.keepAliveOpts = opts.keepAlive; } get ws() { return this.wsObservable.get(); } set ws(ws) { this.wsObservable.next(ws); } /** * Checks if the WebSocket connection is open and ready to communicate. */ isOpen() { return !!this.ws && this.ws.readyState === this.WebSocketPonyfill.OPEN && !this.openPromise; } /** * Checks if the WebSocket connection is closed or in the process of closing. */ isClosed() { return !!this.ws && (this.ws.readyState === this.WebSocketPonyfill.CLOSING || this.ws.readyState === this.WebSocketPonyfill.CLOSED); } async open() { var _this = this; if (_this.openPromise) return _this.openPromise; _this.id = ++WsConnection2.connectCount; const wsPromise = prepareUrl(_this.urlOptions).then((url) => new _this.WebSocketPonyfill(url)); _this.openPromise = wsPromise.then(async (ws) => { _this.ws = ws, ws.addEventListener("message", function({ data }) { data === "PING" && this.send("PONG"); }), _this.keepAliveOpts.enabled && setupPingInterval(ws, _this.keepAliveOpts), ws.addEventListener("close", () => { _this.ws === ws && (_this.ws = null); }), await asyncWsOpen(ws), _this.urlOptions.connectionParams && ws.send(await buildConnectionMessage(_this.urlOptions.connectionParams)); }); try { await _this.openPromise; } finally { _this.openPromise = null; } } /** * Closes the WebSocket connection gracefully. * Waits for any ongoing open operation to complete before closing. */ async close() { var _this2 = this; try { await _this2.openPromise; } finally { var _this$ws; (_this$ws = _this2.ws) === null || _this$ws === void 0 || _this$ws.close(); } } }; (0, import_defineProperty$1.default)(WsConnection, "connectCount", 0); function backwardCompatibility(connection) { return connection.isOpen() ? { id: connection.id, state: "open", ws: connection.ws } : connection.isClosed() ? { id: connection.id, state: "closed", ws: connection.ws } : connection.ws ? { id: connection.id, state: "connecting", ws: connection.ws } : null; } var import_defineProperty$4 = __toESM$1(require_defineProperty$1()), import_objectSpread2 = __toESM$1(require_objectSpread2$1()), WsClient = class { constructor(opts) { var _opts$retryDelayMs; (0, import_defineProperty$4.default)(this, "connectionState", void 0), (0, import_defineProperty$4.default)(this, "allowReconnect", !1), (0, import_defineProperty$4.default)(this, "requestManager", new RequestManager()), (0, import_defineProperty$4.default)(this, "activeConnection", void 0), (0, import_defineProperty$4.default)(this, "reconnectRetryDelay", void 0), (0, import_defineProperty$4.default)(this, "inactivityTimeout", void 0), (0, import_defineProperty$4.default)(this, "callbacks", void 0), (0, import_defineProperty$4.default)(this, "lazyMode", void 0), (0, import_defineProperty$4.default)(this, "reconnecting", null), this.callbacks = { onOpen: opts.onOpen, onClose: opts.onClose, onError: opts.onError }; const lazyOptions = (0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, lazyDefaults), opts.lazy); this.inactivityTimeout = new ResettableTimeout(() => { if (this.requestManager.hasOutgoingRequests() || this.requestManager.hasPendingRequests()) { this.inactivityTimeout.reset(); return; } this.close().catch(() => null); }, lazyOptions.closeMs), this.activeConnection = new WsConnection({ WebSocketPonyfill: opts.WebSocket, urlOptions: opts, keepAlive: (0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, keepAliveDefaults), opts.keepAlive) }), this.activeConnection.wsObservable.subscribe({ next: (ws) => { ws && this.setupWebSocketListeners(ws); } }), this.reconnectRetryDelay = (_opts$retryDelayMs = opts.retryDelayMs) !== null && _opts$retryDelayMs !== void 0 ? _opts$retryDelayMs : exponentialBackoff, this.lazyMode = lazyOptions.enabled, this.connectionState = behaviorSubject({ type: "state", state: lazyOptions.enabled ? "idle" : "connecting", error: null }), this.lazyMode || this.open().catch(() => null); } /** * Opens the WebSocket connection. Handles reconnection attempts and updates * the connection state accordingly. */ async open() { var _this = this; _this.allowReconnect = !0, _this.connectionState.get().state !== "connecting" && _this.connectionState.next({ type: "state", state: "connecting", error: null }); try { await _this.activeConnection.open(); } catch (error) { return _this.reconnect(new TRPCWebSocketClosedError({ message: "Initialization error", cause: error })), _this.reconnecting; } } /** * Closes the WebSocket connection and stops managing requests. * Ensures all outgoing and pending requests are properly finalized. */ async close() { var _this2 = this; _this2.allowReconnect = !1, _this2.inactivityTimeout.stop(); const requestsToAwait = []; for (const request of _this2.requestManager.getRequests()) request.message.method === "subscription" ? request.callbacks.complete() : request.state === "outgoing" ? request.callbacks.error(TRPCClientError.from(new TRPCWebSocketClosedError({ message: "Closed before connection was established" }))) : requestsToAwait.push(request.end); await Promise.all(requestsToAwait).catch(() => null), await _this2.activeConnection.close().catch(() => null), _this2.connectionState.next({ type: "state", state: "idle", error: null }); } /** * Method to request the server. * Handles data transformation, batching of requests, and subscription lifecycle. * * @param op - The operation details including id, type, path, input and signal * @param transformer - Data transformer for serializing requests and deserializing responses * @param lastEventId - Optional ID of the last received event for subscriptions * * @returns An observable that emits operation results and handles cleanup */ request({ op: { id, type, path, input, signal }, transformer: transformer2, lastEventId }) { return observable((observer) => { const abort = this.batchSend({ id, method: type, params: { input: transformer2.input.serialize(input), path, lastEventId } }, (0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, observer), {}, { next(event) { const transformed = transformResult(event, transformer2.output); if (!transformed.ok) { observer.error(TRPCClientError.from(transformed.error)); return; } observer.next({ result: transformed.result }); } })); return () => { abort(), type === "subscription" && this.activeConnection.isOpen() && this.send({ id, method: "subscription.stop" }), signal == null || signal.removeEventListener("abort", abort); }; }); } get connection() { return backwardCompatibility(this.activeConnection); } reconnect(closedError) { var _this3 = this; if (this.connectionState.next({ type: "state", state: "connecting", error: TRPCClientError.from(closedError) }), this.reconnecting) return; const tryReconnect = async (attemptIndex) => { try { await sleep(_this3.reconnectRetryDelay(attemptIndex)), _this3.allowReconnect && (await _this3.activeConnection.close(), await _this3.activeConnection.open(), _this3.requestManager.hasPendingRequests() && _this3.send(_this3.requestManager.getPendingRequests().map(({ message }) => message))), _this3.reconnecting = null; } catch { await tryReconnect(attemptIndex + 1); } }; this.reconnecting = tryReconnect(0); } setupWebSocketListeners(ws) { var _this4 = this; const handleCloseOrError = (cause) => { const reqs = this.requestManager.getPendingRequests(); for (const { message, callbacks } of reqs) message.method !== "subscription" && (callbacks.error(TRPCClientError.from(cause ?? new TRPCWebSocketClosedError({ message: "WebSocket closed", cause }))), this.requestManager.delete(message.id)); }; ws.addEventListener("open", () => { run(async () => { var _this$callbacks$onOpe, _this$callbacks; _this4.lazyMode && _this4.inactivityTimeout.start(), (_this$callbacks$onOpe = (_this$callbacks = _this4.callbacks).onOpen) === null || _this$callbacks$onOpe === void 0 || _this$callbacks$onOpe.call(_this$callbacks), _this4.connectionState.next({ type: "state", state: "pending", error: null }); }).catch((error) => { ws.close(3e3), handleCloseOrError(error); }); }), ws.addEventListener("message", ({ data }) => { if (this.inactivityTimeout.reset(), typeof data != "string" || ["PING", "PONG"].includes(data)) return; const incomingMessage = JSON.parse(data); if ("method" in incomingMessage) { this.handleIncomingRequest(incomingMessage); return; } this.handleResponseMessage(incomingMessage); }), ws.addEventListener("close", (event) => { var _this$callbacks$onClo, _this$callbacks2; handleCloseOrError(event), (_this$callbacks$onClo = (_this$callbacks2 = this.callbacks).onClose) === null || _this$callbacks$onClo === void 0 || _this$callbacks$onClo.call(_this$callbacks2, event), (!this.lazyMode || this.requestManager.hasPendingSubscriptions()) && this.reconnect(new TRPCWebSocketClosedError({ message: "WebSocket closed", cause: event })); }), ws.addEventListener("error", (event) => { var _this$callbacks$onErr, _this$callbacks3; handleCloseOrError(event), (_this$callbacks$onErr = (_this$callbacks3 = this.callbacks).onError) === null || _this$callbacks$onErr === void 0 || _this$callbacks$onErr.call(_this$callbacks3, event), this.reconnect(new TRPCWebSocketClosedError({ message: "WebSocket closed", cause: event })); }); } handleResponseMessage(message) { const request = this.requestManager.getPendingRequest(message.id); if (!request) return; request.callbacks.next(message); let completed = !0; "result" in message && request.message.method === "subscription" && (message.result.type === "data" && (request.message.params.lastEventId = message.result.id), message.result.type !== "stopped" && (completed = !1)), completed && (request.callbacks.complete(), this.requestManager.delete(message.id)); } handleIncomingRequest(message) { message.method === "reconnect" && this.reconnect(new TRPCWebSocketClosedError({ message: "Server requested reconnect" })); } /** * Sends a message or batch of messages directly to the server. */ send(messageOrMessages) { if (!this.activeConnection.isOpen()) throw new Error("Active connection is not open"); const messages = messageOrMessages instanceof Array ? messageOrMessages : [messageOrMessages]; this.activeConnection.ws.send(JSON.stringify(messages.length === 1 ? messages[0] : messages)); } /** * Groups requests for batch sending. * * @returns A function to abort the batched request. */ batchSend(message, callbacks) { var _this5 = this; return this.inactivityTimeout.reset(), run(async () => { _this5.activeConnection.isOpen() || await _this5.open(), await sleep(0), _this5.requestManager.hasOutgoingRequests() && _this5.send(_this5.requestManager.flush().map(({ message: message$1 }) => message$1)); }).catch((err) => { this.requestManager.delete(message.id), callbacks.error(TRPCClientError.from(err)); }), this.requestManager.register(message, callbacks); } }; function createWSClient(opts) { return new WsClient(opts); } function wsLink(opts) { const { client } = opts, transformer2 = getTransformer(opts.transformer); return () => ({ op }) => observable((observer) => { const connStateSubscription = op.type === "subscription" ? client.connectionState.subscribe({ next(result) { observer.next({ result, context: op.context }); } }) : null, requestSubscription = client.request({ op, transformer: transformer2 }).subscribe(observer); return () => { requestSubscription.unsubscribe(), connStateSubscription == null || connStateSubscription.unsubscribe(); }; }); } var import_defineProperty = __toESM$1(require_defineProperty$1()), import_objectSpread2$4 = __toESM$1(require_objectSpread2$1()), TRPCUntypedClient = class { constructor(opts) { (0, import_defineProperty.default)(this, "links", void 0), (0, import_defineProperty.default)(this, "runtime", void 0), (0, import_defineProperty.default)(this, "requestId", void 0), this.requestId = 0, this.runtime = {}, this.links = opts.links.map((link) => link(this.runtime)); } $request(opts) { var _opts$context; return createChain({ links: this.links, op: (0, import_objectSpread2$4.default)((0, import_objectSpread2$4.default)({}, opts), {}, { context: (_opts$context = opts.context) !== null && _opts$context !== void 0 ? _opts$context : {}, id: ++this.requestId }) }).pipe(share()); } async requestAsPromise(opts) { var _this = this; try { const req$ = _this.$request(opts); return (await observableToPromise(req$)).result.data; } catch (err) { throw TRPCClientError.from(err); } } query(path, input, opts) { return this.requestAsPromise({ type: "query", path, input, context: opts == null ? void 0 : opts.context, signal: opts == null ? void 0 : opts.signal }); } mutation(path, input, opts) { return this.requestAsPromise({ type: "mutation", path, input, context: opts == null ? void 0 : opts.context, signal: opts == null ? void 0 : opts.signal }); } subscription(path, input, opts) { return this.$request({ type: "subscription", path, input, context: opts.context, signal: opts.signal }).subscribe({ next(envelope) { switch (envelope.result.type) { case "state": { var _opts$onConnectionSta; (_opts$onConnectionSta = opts.onConnectionStateChange) === null || _opts$onConnectionSta === void 0 || _opts$onConnectionSta.call(opts, envelope.result); break; } case "started": { var _opts$onStarted; (_opts$onStarted = opts.onStarted) === null || _opts$onStarted === void 0 || _opts$onStarted.call(opts, { context: envelope.context }); break; } case "stopped": { var _opts$onStopped; (_opts$onStopped = opts.onStopped) === null || _opts$onStopped === void 0 || _opts$onStopped.call(opts); break; } case "data": case void 0: { var _opts$onData; (_opts$onData = opts.onData) === null || _opts$onData === void 0 || _opts$onData.call(opts, envelope.result.data); break; } } }, error(err) { var _opts$onError; (_opts$onError = opts.onError) === null || _opts$onError === void 0 || _opts$onError.call(opts, err); }, complete() { var _opts$onComplete; (_opts$onComplete = opts.onComplete) === null || _opts$onComplete === void 0 || _opts$onComplete.call(opts); } }); } }; const untypedClientSymbol = Symbol.for("trpc_untypedClient"), clientCallTypeMap = { query: "query", mutate: "mutation", subscribe: "subscription" }, clientCallTypeToProcedureType = (clientCallType) => clientCallTypeMap[clientCallType]; function createTRPCClientProxy(client) { const proxy = createRecursiveProxy(({ path, args }) => { const pathCopy = [...path], procedureType = clientCallTypeToProcedureType(pathCopy.pop()), fullPath = pathCopy.join("."); return client[procedureType](fullPath, ...args); }); return createFlatProxy((key) => key === untypedClientSymbol ? client : proxy[key]); } function createTRPCClient(opts) { const client = new TRPCUntypedClient(opts); return createTRPCClientProxy(client); } __toESM$1(require_objectSpread2$1()); __toESM$1(require_objectSpread2$1()); var require_asyncIterator = __commonJS$1({ "../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/asyncIterator.js"(exports, module) { function _asyncIterator$1(r2) { var n, t, o, e = 2; for (typeof Symbol < "u" && (t = Symbol.asyncIterator, o = Symbol.iterator); e--; ) { if (t && (n = r2[t]) != null) return n.call(r2); if (o && (n = r2[o]) != null) return new AsyncFromSyncIterator(n.call(r2)); t = "@@asyncIterator", o = "@@iterator"; } throw new TypeError("Object is not async iterable"); } function AsyncFromSyncIterator(r2) { function AsyncFromSyncIteratorContinuation(r$1) { if (Object(r$1) !== r$1) return Promise.reject(new TypeError(r$1 + " is not an object.")); var n = r$1.done; return Promise.resolve(r$1.value).then(function(r$2) { return { value: r$2, done: n }; }); } return AsyncFromSyncIterator = function(r$1) { this.s = r$1, this.n = r$1.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function() { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, return: function(r$1) { var n = this.s.return; return n === void 0 ? Promise.resolve({ value: r$1, done: !0 }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); }, throw: function(r$1) { var n = this.s.return; return n === void 0 ? Promise.reject(r$1) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(r2); } module.exports = _asyncIterator$1, module.exports.__esModule = !0, module.exports.default = module.exports; } }); __toESM$1(require_asyncIterator()); __toESM$1(require_objectSpread2$1()); var require_usingCtx = __commonJS$1({ "../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/usingCtx.js"(exports, module) { function _usingCtx() { var r2 = typeof SuppressedError == "function" ? SuppressedError : function(r$1, e$1) { var n$1 = Error(); return n$1.name = "SuppressedError", n$1.error = r$1, n$1.suppressed = e$1, n$1; }, e = {}, n = []; function using(r$1, e$1) { if (e$1 != null) { if (Object(e$1) !== e$1) throw new TypeError("using declarations can only be used with objects, functions, null, or undefined."); if (r$1) var o = e$1[Symbol.asyncDispose || Symbol.for("Symbol.asyncDispose")]; if (o === void 0 && (o = e$1[Symbol.dispose || Symbol.for("Symbol.dispose")], r$1)) var t = o; if (typeof o != "function") throw new TypeError("Object is not disposable."); t && (o = function() { try { t.call(e$1); } catch (r$2) { return Promise.reject(r$2); } }), n.push({ v: e$1, d: o, a: r$1 }); } else r$1 && n.push({ d: e$1, a: r$1 }); return e$1; } return { e, u: using.bind(null, !1), a: using.bind(null, !0), d: function() { var o, t = this.e, s = 0; function next() { for (; o = n.pop(); ) try { if (!o.a && s === 1) return s = 0, n.push(o), Promise.resolve().then(next); if (o.d) { var r$1 = o.d.call(o.v); if (o.a) return s |= 2, Promise.resolve(r$1).then(next, err); } else s |= 1; } catch (r$2) { return err(r$2); } if (s === 1) return t !== e ? Promise.reject(t) : Promise.resolve(); if (t !== e) throw t; } function err(n$1) { return t = t !== e ? new r2(n$1, t) : n$1, next(); } return next(); } }; } module.exports = _usingCtx, module.exports.__esModule = !0, module.exports.default = module.exports; } }), require_OverloadYield = __commonJS$1({ "../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/OverloadYield.js"(exports, module) { function _OverloadYield(e, d) { this.v = e, this.k = d; } module.exports = _OverloadYield, module.exports.__esModule = !0, module.exports.default = module.exports; } }), require_awaitAsyncGenerator = __commonJS$1({ "../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/awaitAsyncGenerator.js"(exports, module) { var OverloadYield$1 = require_OverloadYield(); function _awaitAsyncGenerator$1(e) { return new OverloadYield$1(e, 0); } module.exports = _awaitAsyncGenerator$1, module.exports.__esModule = !0, module.exports.default = module.exports; } }), require_wrapAsyncGenerator = __commonJS$1({ "../../node_modules/.pnpm/@oxc-project+runtime@0.72.2/node_modules/@oxc-project/runtime/src/helpers/wrapAsyncGenerator.js"(exports, module) { var OverloadYield = require_OverloadYield(); function _wrapAsyncGenerator$1(e) { return function() { return new AsyncGenerator(e.apply(this, arguments)); }; } function AsyncGenerator(e) { var r2, t; function resume(r$1, t$1) { try { var n = e[r$1](t$1), o = n.value, u = o instanceof OverloadYield; Promise.resolve(u ? o.v : o).then(function(t$2) { if (u) { var i = r$1 === "return" ? "return" : "next"; if (!o.k || t$2.done) return resume(i, t$2); t$2 = e[i](t$2).value; } settle(n.done ? "return" : "normal", t$2); }, function(e$1) { resume("throw", e$1); }); } catch (e$1) { settle("throw", e$1); } } function settle(e$1, n) { switch (e$1) { case "return": r2.resolve({ value: n, done: !0 }); break; case "throw": r2.reject(n); break; default: r2.resolve({ value: n, done: !1 }); } (r2 = r2.next) ? resume(r2.key, r2.arg) : t = null; } this._invoke = function(e$1, n) { return new Promise(function(o, u) { var i = { key: e$1, arg: n, resolve: o, reject: u, next: null }; t ? t = t.next = i : (r2 = t = i, resume(e$1, n)); }); }, typeof e.return != "function" && (this.return = void 0); } AsyncGenerator.prototype[typeof Symbol == "function" && Symbol