UNPKG

@rivetkit/core

Version:

456 lines (438 loc) 12.6 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _chunk53LWTTEXcjs = require('./chunk-53LWTTEX.cjs'); // src/common/utils.ts function assertUnreachable(x) { throw new Error(`Unreachable case: ${x}`); } function isCborSerializable(value, onInvalid, currentPath = "") { if (value === null || value === void 0) { return true; } if (typeof value === "number") { if (!Number.isFinite(value)) { onInvalid == null ? void 0 : onInvalid(currentPath); return false; } return true; } if (typeof value === "boolean" || typeof value === "string") { return true; } if (typeof value === "bigint") { return true; } if (value instanceof Date) { return true; } if (value instanceof Uint8Array || value instanceof Uint8ClampedArray || value instanceof Uint16Array || value instanceof Uint32Array || value instanceof BigUint64Array || value instanceof Int8Array || value instanceof Int16Array || value instanceof Int32Array || value instanceof BigInt64Array || value instanceof Float32Array || value instanceof Float64Array) { return true; } if (value instanceof Map) { for (const [key, val] of value.entries()) { const keyPath = currentPath ? `${currentPath}.key(${String(key)})` : `key(${String(key)})`; const valPath = currentPath ? `${currentPath}.value(${String(key)})` : `value(${String(key)})`; if (!isCborSerializable(key, onInvalid, keyPath) || !isCborSerializable(val, onInvalid, valPath)) { return false; } } return true; } if (value instanceof Set) { let index = 0; for (const item of value.values()) { const itemPath = currentPath ? `${currentPath}.set[${index}]` : `set[${index}]`; if (!isCborSerializable(item, onInvalid, itemPath)) { return false; } index++; } return true; } if (value instanceof RegExp) { return true; } if (value instanceof Error) { return true; } if (Array.isArray(value)) { for (let i = 0; i < value.length; i++) { const itemPath = currentPath ? `${currentPath}[${i}]` : `[${i}]`; if (!isCborSerializable(value[i], onInvalid, itemPath)) { return false; } } return true; } if (typeof value === "object") { const proto = Object.getPrototypeOf(value); if (proto !== null && proto !== Object.prototype) { const protoConstructor = value.constructor; if (protoConstructor && typeof protoConstructor.name === "string") { } } for (const key in value) { const propPath = currentPath ? `${currentPath}.${key}` : key; if (!isCborSerializable( value[key], onInvalid, propPath )) { return false; } } return true; } onInvalid == null ? void 0 : onInvalid(currentPath); return false; } function deconstructError(error, logger, extraLog, exposeInternalError = false) { let statusCode; let public_; let code; let message; let metadata; if (_chunk53LWTTEXcjs.ActorError.isActorError(error) && error.public) { statusCode = "statusCode" in error && error.statusCode ? error.statusCode : 400; public_ = true; code = error.code; message = getErrorMessage(error); metadata = error.metadata; logger.info("public error", { code, message, issues: "https://github.com/rivet-gg/rivetkit/issues", support: "https://rivet.gg/discord", ...extraLog }); } else if (exposeInternalError) { if (_chunk53LWTTEXcjs.ActorError.isActorError(error)) { statusCode = 500; public_ = false; code = error.code; message = getErrorMessage(error); metadata = error.metadata; logger.info("internal error", { code, message, issues: "https://github.com/rivet-gg/rivetkit/issues", support: "https://rivet.gg/discord", ...extraLog }); } else { statusCode = 500; public_ = false; code = _chunk53LWTTEXcjs.INTERNAL_ERROR_CODE; message = getErrorMessage(error); logger.info("internal error", { code, message, issues: "https://github.com/rivet-gg/rivetkit/issues", support: "https://rivet.gg/discord", ...extraLog }); } } else { statusCode = 500; public_ = false; code = _chunk53LWTTEXcjs.INTERNAL_ERROR_CODE; message = _chunk53LWTTEXcjs.INTERNAL_ERROR_DESCRIPTION; metadata = { //url: `https://hub.rivet.gg/projects/${actorMetadata.project.slug}/environments/${actorMetadata.environment.slug}/actors?actorId=${actorMetadata.actor.id}`, }; logger.warn("internal error", { error: getErrorMessage(error), stack: error == null ? void 0 : error.stack, issues: "https://github.com/rivet-gg/rivetkit/issues", support: "https://rivet.gg/discord", ...extraLog }); } return { __type: "ActorError", statusCode, public: public_, code, message, metadata }; } function stringifyError(error) { if (error instanceof Error) { if (typeof process !== "undefined" && getEnvUniversal("_RIVETKIT_ERROR_STACK") === "1") { return `${error.name}: ${error.message}${error.stack ? ` ${error.stack}` : ""}`; } else { return `${error.name}: ${error.message}`; } } else if (typeof error === "string") { return error; } else if (typeof error === "object" && error !== null) { try { return `${JSON.stringify(error)}`; } catch (e) { return "[cannot stringify error]"; } } else { return `Unknown error: ${getErrorMessage(error)}`; } } function getErrorMessage(err) { if (err && typeof err === "object" && "message" in err && typeof err.message === "string") { return err.message; } else { return String(err); } } function noopNext() { return async () => { }; } // package.json var package_default = { name: "@rivetkit/core", version: "0.9.9", license: "Apache-2.0", keywords: [ "rivetkit", "stateful", "serverless", "actors", "agents", "realtime", "websocket", "actors", "framework" ], files: [ "dist", "src", "deno.json", "bun.json", "package.json" ], type: "module", exports: { ".": { import: { types: "./dist/mod.d.ts", default: "./dist/mod.js" }, require: { types: "./dist/mod.d.cts", default: "./dist/mod.cjs" } }, "./client": { import: { types: "./dist/client/mod.d.ts", default: "./dist/client/mod.js" }, require: { types: "./dist/client/mod.d.cts", default: "./dist/client/mod.cjs" } }, "./log": { import: { types: "./dist/common/log.d.ts", default: "./dist/common/log.js" }, require: { types: "./dist/common/log.d.cts", default: "./dist/common/log.cjs" } }, "./errors": { import: { types: "./dist/actor/errors.d.ts", default: "./dist/actor/errors.js" }, require: { types: "./dist/actor/errors.d.cts", default: "./dist/actor/errors.cjs" } }, "./utils": { import: { types: "./dist/utils.d.ts", default: "./dist/utils.js" }, require: { types: "./dist/utils.d.cts", default: "./dist/utils.cjs" } }, "./driver-helpers": { import: { types: "./dist/driver-helpers/mod.d.ts", default: "./dist/driver-helpers/mod.js" }, require: { types: "./dist/driver-helpers/mod.d.cts", default: "./dist/driver-helpers/mod.cjs" } }, "./driver-helpers/websocket": { import: { types: "./dist/common/websocket.d.ts", default: "./dist/common/websocket.js" }, require: { types: "./dist/common/websocket.d.cts", default: "./dist/common/websocket.cjs" } }, "./driver-test-suite": { import: { types: "./dist/driver-test-suite/mod.d.ts", default: "./dist/driver-test-suite/mod.js" }, require: { types: "./dist/driver-test-suite/mod.d.cts", default: "./dist/driver-test-suite/mod.cjs" } }, "./topologies/coordinate": { import: { types: "./dist/topologies/coordinate/mod.d.ts", default: "./dist/topologies/coordinate/mod.js" }, require: { types: "./dist/topologies/coordinate/mod.d.cts", default: "./dist/topologies/coordinate/mod.cjs" } }, "./topologies/partition": { import: { types: "./dist/topologies/partition/mod.d.ts", default: "./dist/topologies/partition/mod.js" }, require: { types: "./dist/topologies/partition/mod.d.cts", default: "./dist/topologies/partition/mod.cjs" } }, "./test": { import: { types: "./dist/test/mod.d.ts", default: "./dist/test/mod.js" }, require: { types: "./dist/test/mod.d.cts", default: "./dist/test/mod.cjs" } }, "./inspector": { import: { types: "./dist/inspector/mod.d.ts", default: "./dist/inspector/mod.js" }, require: { types: "./dist/inspector/mod.d.cts", default: "./dist/inspector/mod.cjs" } } }, engines: { node: ">=22.0.0" }, sideEffects: false, scripts: { dev: "pnpm build --watch", build: "tsup src/mod.ts src/client/mod.ts src/common/log.ts src/common/websocket.ts src/actor/errors.ts src/topologies/coordinate/mod.ts src/topologies/partition/mod.ts src/utils.ts src/driver-helpers/mod.ts src/driver-test-suite/mod.ts src/test/mod.ts src/inspector/mod.ts", "check-types": "tsc --noEmit", boop: "tsc --outDir dist/test -d", test: "vitest run", "test:watch": "vitest", "dump-openapi": "tsx scripts/dump-openapi.ts" }, dependencies: { "@hono/standard-validator": "^0.1.3", "cbor-x": "^1.6.0", "@rivetkit/fast-json-patch": "^3.1.2", invariant: "^2.2.4", nanoevents: "^9.1.0", "on-change": "^5.0.1", "p-retry": "^6.2.1", zod: "^3.25.76", "@hono/zod-openapi": "^0.19.10", hono: "^4.7.0" }, devDependencies: { "@hono/node-server": "^1.14.0", "@hono/node-ws": "^1.1.1", "@rivet-gg/actor-core": "^25.1.0", "@types/invariant": "^2", "@types/node": "^22.13.1", "@types/ws": "^8", "@vitest/ui": "3.1.1", "bundle-require": "^5.1.0", eventsource: "^3.0.5", tsup: "^8.4.0", tsx: "^4.19.4", typescript: "^5.7.3", vitest: "^3.1.1", ws: "^8.18.1" }, peerDependencies: { "@hono/node-server": "^1.14.0", "@hono/node-ws": "^1.1.1", eventsource: "^3.0.5", ws: "^8.0.0" }, peerDependenciesMeta: { "@hono/node-server": { optional: true }, "@hono/node-ws": { optional: true }, eventsource: { optional: true }, ws: { optional: true } }, stableVersion: "0.8.0" }; // src/utils.ts var VERSION = package_default.version; var _userAgent; function httpUserAgent() { if (_userAgent !== void 0) { return _userAgent; } let userAgent = `RivetKit/${VERSION}`; const navigatorObj = typeof navigator !== "undefined" ? navigator : void 0; if (navigatorObj == null ? void 0 : navigatorObj.userAgent) userAgent += ` ${navigatorObj.userAgent}`; _userAgent = userAgent; return userAgent; } function getEnvUniversal(key) { if (typeof Deno !== "undefined") { return Deno.env.get(key); } else if (typeof process !== "undefined") { return process.env[key]; } } function dbg(x) { console.trace(`=== DEBUG === ${x}`); return x; } function toUint8Array(data) { if (data instanceof Uint8Array) { return data; } else if (data instanceof ArrayBuffer) { return new Uint8Array(data); } else if (ArrayBuffer.isView(data)) { return new Uint8Array( data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength) ); } else { throw new TypeError("Input must be ArrayBuffer or ArrayBufferView"); } } exports.assertUnreachable = assertUnreachable; exports.isCborSerializable = isCborSerializable; exports.deconstructError = deconstructError; exports.stringifyError = stringifyError; exports.noopNext = noopNext; exports.VERSION = VERSION; exports.httpUserAgent = httpUserAgent; exports.getEnvUniversal = getEnvUniversal; exports.dbg = dbg; exports.toUint8Array = toUint8Array; //# sourceMappingURL=chunk-HIB3AS73.cjs.map