@rivetkit/core
Version:
456 lines (438 loc) • 12.6 kB
JavaScript
;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