rivetkit 2.3.0-rc.9 → 2.3.0
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/dist/browser/client.d.ts +498 -62
- package/dist/browser/client.js +227 -171
- package/dist/browser/client.js.map +1 -1
- package/dist/browser/inspector/client.js +50 -20
- package/dist/browser/inspector/client.js.map +1 -1
- package/dist/tsup/actor/errors.cjs +2 -2
- package/dist/tsup/actor/errors.d.cts +1 -1
- package/dist/tsup/actor/errors.d.ts +1 -1
- package/dist/tsup/actor/errors.js +1 -1
- package/dist/tsup/agent-os/index.cjs +2163 -2087
- package/dist/tsup/agent-os/index.cjs.map +1 -1
- package/dist/tsup/agent-os/index.d.cts +496 -69
- package/dist/tsup/agent-os/index.d.ts +496 -69
- package/dist/tsup/agent-os/index.js +2163 -2087
- package/dist/tsup/agent-os/index.js.map +1 -1
- package/dist/tsup/{chunk-W7EYSYVI.js → chunk-2OTRTA3J.js} +134 -20
- package/dist/tsup/chunk-2OTRTA3J.js.map +1 -0
- package/dist/tsup/{chunk-VJFRBJVQ.cjs → chunk-3677IIOV.cjs} +138 -24
- package/dist/tsup/chunk-3677IIOV.cjs.map +1 -0
- package/dist/tsup/{chunk-4CGA6QJO.cjs → chunk-47HHIEXH.cjs} +24 -9
- package/dist/tsup/chunk-47HHIEXH.cjs.map +1 -0
- package/dist/tsup/{chunk-F3Q5BFQ6.js → chunk-4JDSFJS5.js} +66 -79
- package/dist/tsup/chunk-4JDSFJS5.js.map +1 -0
- package/dist/tsup/{chunk-GVTOE34S.cjs → chunk-7QKCIVAY.cjs} +222 -235
- package/dist/tsup/chunk-7QKCIVAY.cjs.map +1 -0
- package/dist/tsup/{chunk-CPA4Y3RG.cjs → chunk-B6VUNZUD.cjs} +10 -10
- package/dist/tsup/chunk-B6VUNZUD.cjs.map +1 -0
- package/dist/tsup/{chunk-H37XQU3I.js → chunk-BEI24WTI.js} +2 -2
- package/dist/tsup/{chunk-KIWH5H3K.js → chunk-BRP62GZC.js} +3 -3
- package/dist/tsup/chunk-BRP62GZC.js.map +1 -0
- package/dist/tsup/{chunk-T6YVRM4K.js → chunk-DPIMKYNB.js} +63 -2
- package/dist/tsup/chunk-DPIMKYNB.js.map +1 -0
- package/dist/tsup/{chunk-Y5NSCZA2.cjs → chunk-DXXJPH55.cjs} +44 -15
- package/dist/tsup/chunk-DXXJPH55.cjs.map +1 -0
- package/dist/tsup/{chunk-3YY5S6TV.js → chunk-HXUEHHJF.js} +2 -2
- package/dist/tsup/chunk-HXUEHHJF.js.map +1 -0
- package/dist/tsup/{chunk-4WPEZBK4.cjs → chunk-I4LN3FNT.cjs} +10 -10
- package/dist/tsup/chunk-I4LN3FNT.cjs.map +1 -0
- package/dist/tsup/{chunk-PCBNKI2J.js → chunk-JZ7TWV65.js} +1 -1
- package/dist/tsup/chunk-JZ7TWV65.js.map +1 -0
- package/dist/tsup/{chunk-QAZLM4WT.cjs → chunk-KORQB2IR.cjs} +3 -3
- package/dist/tsup/{chunk-QAZLM4WT.cjs.map → chunk-KORQB2IR.cjs.map} +1 -1
- package/dist/tsup/{chunk-MALSPBAF.cjs → chunk-LVTBW2RE.cjs} +3 -3
- package/dist/tsup/{chunk-MALSPBAF.cjs.map → chunk-LVTBW2RE.cjs.map} +1 -1
- package/dist/tsup/{chunk-H7P7WR2Y.js → chunk-MEHBWPLJ.js} +6 -6
- package/dist/tsup/chunk-MEHBWPLJ.js.map +1 -0
- package/dist/tsup/{chunk-WQ4HNA4W.cjs → chunk-NIY3RSPX.cjs} +64 -3
- package/dist/tsup/chunk-NIY3RSPX.cjs.map +1 -0
- package/dist/tsup/{chunk-MMMEZM5J.js → chunk-P2GNQ4RN.js} +4 -4
- package/dist/tsup/chunk-P2GNQ4RN.js.map +1 -0
- package/dist/tsup/{chunk-KJTA3ATT.js → chunk-UMZVD6DQ.js} +22 -7
- package/dist/tsup/chunk-UMZVD6DQ.js.map +1 -0
- package/dist/tsup/{chunk-LD5YASJU.cjs → chunk-VE2X4KMG.cjs} +2 -2
- package/dist/tsup/{chunk-LD5YASJU.cjs.map → chunk-VE2X4KMG.cjs.map} +1 -1
- package/dist/tsup/{chunk-VRCIXJRN.js → chunk-VTTFNQQI.js} +36 -7
- package/dist/tsup/chunk-VTTFNQQI.js.map +1 -0
- package/dist/tsup/{chunk-2NDZ7JCR.cjs → chunk-ZA7FLHKH.cjs} +1 -1
- package/dist/tsup/chunk-ZA7FLHKH.cjs.map +1 -0
- package/dist/tsup/client/mod.cjs +9 -9
- package/dist/tsup/client/mod.d.cts +5 -5
- package/dist/tsup/client/mod.d.ts +5 -5
- package/dist/tsup/client/mod.js +8 -8
- package/dist/tsup/common/log.cjs +3 -3
- package/dist/tsup/common/log.js +2 -2
- package/dist/tsup/common/websocket.cjs +4 -4
- package/dist/tsup/common/websocket.js +3 -3
- package/dist/tsup/{config-0Ta55UV0.d.ts → config-BxWAw3iH.d.ts} +529 -23
- package/dist/tsup/{config-Ca8dN4cS.d.cts → config-CZQQ-mso.d.cts} +529 -23
- package/dist/tsup/{config-CxjGYf4K.d.cts → config-D49x8NpL.d.cts} +1 -2
- package/dist/tsup/{config-CxjGYf4K.d.ts → config-D49x8NpL.d.ts} +1 -2
- package/dist/tsup/{context-B_IWbWne.d.ts → context-Bw7xq8w3.d.cts} +8 -8
- package/dist/tsup/{context-CUrQ9MHc.d.cts → context-D8QA76sV.d.ts} +8 -8
- package/dist/tsup/db/drizzle.cjs +3 -3
- package/dist/tsup/db/drizzle.d.cts +1 -1
- package/dist/tsup/db/drizzle.d.ts +1 -1
- package/dist/tsup/db/drizzle.js +1 -1
- package/dist/tsup/db/mod.cjs +2 -2
- package/dist/tsup/db/mod.d.cts +2 -2
- package/dist/tsup/db/mod.d.ts +2 -2
- package/dist/tsup/db/mod.js +1 -1
- package/dist/tsup/dynamic/mod.cjs +24 -0
- package/dist/tsup/dynamic/mod.cjs.map +1 -0
- package/dist/tsup/dynamic/mod.d.cts +37 -0
- package/dist/tsup/dynamic/mod.d.ts +37 -0
- package/dist/tsup/dynamic/mod.js +24 -0
- package/dist/tsup/dynamic/mod.js.map +1 -0
- package/dist/tsup/inspector/mod.cjs +6 -6
- package/dist/tsup/inspector/mod.js +5 -5
- package/dist/tsup/inspector-tab/mod.cjs +173 -0
- package/dist/tsup/inspector-tab/mod.cjs.map +1 -0
- package/dist/tsup/inspector-tab/mod.d.cts +250 -0
- package/dist/tsup/inspector-tab/mod.d.ts +250 -0
- package/dist/tsup/inspector-tab/mod.js +173 -0
- package/dist/tsup/inspector-tab/mod.js.map +1 -0
- package/dist/tsup/mod.cjs +730 -336
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +5 -5
- package/dist/tsup/mod.d.ts +5 -5
- package/dist/tsup/mod.js +633 -239
- package/dist/tsup/mod.js.map +1 -1
- package/dist/tsup/test/mod.cjs +21 -18
- package/dist/tsup/test/mod.cjs.map +1 -1
- package/dist/tsup/test/mod.d.cts +4 -4
- package/dist/tsup/test/mod.d.ts +4 -4
- package/dist/tsup/test/mod.js +18 -15
- package/dist/tsup/test/mod.js.map +1 -1
- package/dist/tsup/{utils-DVekpm4I.d.cts → utils-DQosb24I.d.cts} +1 -1
- package/dist/tsup/{utils-DVekpm4I.d.ts → utils-DQosb24I.d.ts} +1 -1
- 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/dist/tsup/workflow/mod.cjs +307 -282
- package/dist/tsup/workflow/mod.cjs.map +1 -1
- package/dist/tsup/workflow/mod.d.cts +6 -6
- package/dist/tsup/workflow/mod.d.ts +6 -6
- package/dist/tsup/workflow/mod.js +501 -476
- package/dist/tsup/workflow/mod.js.map +1 -1
- package/package.json +32 -11
- package/src/actor/config.ts +159 -51
- package/src/actor/contexts/index.ts +7 -2
- package/src/actor/definition.ts +17 -19
- package/src/actor/driver.ts +3 -3
- package/src/actor/errors.ts +9 -3
- package/src/actor/instance/mod.ts +26 -34
- package/src/actor/keys.ts +1 -1
- package/src/actor/mod.ts +22 -20
- package/src/actor/schema.ts +2 -2
- package/src/agent-os/actor/index.ts +38 -18
- package/src/agent-os/actor/preview.ts +1 -2
- package/src/agent-os/actor/session.ts +2 -2
- package/src/agent-os/config.ts +1 -1
- package/src/agent-os/fs/database-vfs.ts +1 -1
- package/src/agent-os/index.ts +16 -15
- package/src/client/actor-common.ts +87 -54
- package/src/client/actor-conn.ts +8 -36
- package/src/client/actor-handle.ts +69 -51
- package/src/client/actor-query.ts +5 -5
- package/src/client/errors.ts +1 -1
- package/src/client/lifecycle-errors.ts +2 -4
- package/src/client/query.ts +1 -1
- package/src/client/queue.ts +8 -3
- package/src/client/raw-utils.ts +8 -6
- package/src/client/resolve-gateway-target.ts +1 -1
- package/src/client/utils.ts +2 -7
- package/src/common/actor-websocket.ts +3 -1
- package/src/common/bare/actor-persist/v1.ts +205 -163
- package/src/common/bare/actor-persist/v2.ts +265 -213
- package/src/common/bare/actor-persist/v3.ts +176 -172
- package/src/common/bare/actor-persist/v4.ts +254 -253
- package/src/common/bare/transport/v1.ts +659 -543
- package/src/common/client-protocol-versioned.ts +66 -64
- package/src/common/database/config.ts +2 -8
- package/src/common/database/native-database.ts +1 -1
- package/src/common/database/shared.ts +1 -0
- package/src/common/encoding.ts +250 -16
- package/src/common/engine.ts +28 -1
- package/src/common/eventsource.ts +1 -1
- package/src/common/inline-websocket-adapter.ts +14 -13
- package/src/common/log.ts +1 -0
- package/src/common/router.ts +13 -17
- package/src/common/utils.ts +1 -150
- package/src/common/websocket-interface.ts +1 -1
- package/src/db/mod.ts +1 -1
- package/src/devtools-loader/index.ts +4 -7
- package/src/devtools-loader/serve-devtools.ts +26 -0
- package/src/drivers/engine/actor-driver.ts +58 -56
- package/src/dynamic/instance.ts +32 -0
- package/src/dynamic/internal.ts +50 -0
- package/src/dynamic/isolate-runtime.ts +66 -0
- package/src/dynamic/mod.ts +32 -0
- package/src/engine-client/actor-http-client.ts +3 -3
- package/src/engine-client/actor-websocket-client.ts +6 -5
- package/src/engine-client/api-endpoints.ts +51 -2
- package/src/engine-client/api-utils.ts +2 -2
- package/src/engine-client/driver.ts +1 -1
- package/src/engine-client/mod.ts +6 -3
- package/src/engine-client/ws-proxy.ts +9 -4
- package/src/inspector/client.browser.ts +5 -11
- package/src/inspector/mod.ts +1 -3
- package/src/inspector-tab/mod.ts +315 -0
- package/src/registry/config/envoy.ts +1 -2
- package/src/registry/config/index.ts +40 -16
- package/src/registry/index.ts +154 -74
- package/src/registry/napi-runtime.ts +13 -2
- package/src/registry/native-validation.ts +10 -12
- package/src/registry/native.ts +367 -181
- package/src/registry/process-metrics.ts +250 -0
- package/src/registry/runtime.ts +41 -1
- package/src/registry/wasm-runtime.ts +18 -2
- package/src/registry/write-through-proxy.ts +40 -0
- package/src/serde.ts +2 -2
- package/src/serverless/configure.ts +18 -7
- package/src/test/mod.ts +11 -8
- package/src/utils/endpoint-parser.ts +1 -1
- package/src/utils/env-vars.ts +6 -0
- package/src/utils/router.ts +1 -1
- package/src/utils/serve.ts +4 -5
- package/src/utils.ts +1 -2
- package/src/workflow/context.ts +61 -33
- package/src/workflow/driver.ts +4 -6
- package/src/workflow/inspector.ts +4 -3
- package/src/workflow/mod.ts +15 -17
- package/dist/tsup/chunk-2NDZ7JCR.cjs.map +0 -1
- package/dist/tsup/chunk-3YY5S6TV.js.map +0 -1
- package/dist/tsup/chunk-4CGA6QJO.cjs.map +0 -1
- package/dist/tsup/chunk-4WPEZBK4.cjs.map +0 -1
- package/dist/tsup/chunk-CPA4Y3RG.cjs.map +0 -1
- package/dist/tsup/chunk-F3Q5BFQ6.js.map +0 -1
- package/dist/tsup/chunk-GVTOE34S.cjs.map +0 -1
- package/dist/tsup/chunk-H7P7WR2Y.js.map +0 -1
- package/dist/tsup/chunk-KIWH5H3K.js.map +0 -1
- package/dist/tsup/chunk-KJTA3ATT.js.map +0 -1
- package/dist/tsup/chunk-MMMEZM5J.js.map +0 -1
- package/dist/tsup/chunk-PCBNKI2J.js.map +0 -1
- package/dist/tsup/chunk-T6YVRM4K.js.map +0 -1
- package/dist/tsup/chunk-VJFRBJVQ.cjs.map +0 -1
- package/dist/tsup/chunk-VRCIXJRN.js.map +0 -1
- package/dist/tsup/chunk-W7EYSYVI.js.map +0 -1
- package/dist/tsup/chunk-WQ4HNA4W.cjs.map +0 -1
- package/dist/tsup/chunk-Y5NSCZA2.cjs.map +0 -1
- /package/dist/tsup/{chunk-H37XQU3I.js.map → chunk-BEI24WTI.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
assertUnreachable
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VTTFNQQI.js";
|
|
4
4
|
|
|
5
5
|
// src/serde.ts
|
|
6
6
|
import * as cbor from "cbor-x";
|
|
@@ -12,6 +12,83 @@ var JSON_COMPAT_BIGINT = "$BigInt";
|
|
|
12
12
|
var JSON_COMPAT_ARRAY_BUFFER = "$ArrayBuffer";
|
|
13
13
|
var JSON_COMPAT_UINT8_ARRAY = "$Uint8Array";
|
|
14
14
|
var JSON_COMPAT_UNDEFINED = "$Undefined";
|
|
15
|
+
var JSON_COMPAT_SET = "$Set";
|
|
16
|
+
function isTypedArray(value) {
|
|
17
|
+
return 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;
|
|
18
|
+
}
|
|
19
|
+
function assertJsonCompatValue(value, path = "") {
|
|
20
|
+
var _a;
|
|
21
|
+
if (value === null || value === void 0 || typeof value === "string" || typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (typeof value === "function") {
|
|
25
|
+
throw new TypeError(
|
|
26
|
+
`Value at ${path || "root"} is a function and is not CBOR serializable`
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
if (typeof value === "symbol") {
|
|
30
|
+
throw new TypeError(
|
|
31
|
+
`Value at ${path || "root"} is a symbol and is not CBOR serializable`
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
if (value instanceof Date || value instanceof RegExp || value instanceof Error || value instanceof ArrayBuffer || value instanceof Uint8Array || isTypedArray(value)) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (value instanceof WeakMap) {
|
|
38
|
+
throw new TypeError(
|
|
39
|
+
`Value at ${path || "root"} is a WeakMap and is not CBOR serializable`
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
if (value instanceof WeakSet) {
|
|
43
|
+
throw new TypeError(
|
|
44
|
+
`Value at ${path || "root"} is a WeakSet and is not CBOR serializable`
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
if (value instanceof WeakRef) {
|
|
48
|
+
throw new TypeError(
|
|
49
|
+
`Value at ${path || "root"} is a WeakRef and is not CBOR serializable`
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
if (value instanceof Promise) {
|
|
53
|
+
throw new TypeError(
|
|
54
|
+
`Value at ${path || "root"} is a Promise and is not CBOR serializable`
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
if (value instanceof Map) {
|
|
58
|
+
for (const [k, v] of value.entries()) {
|
|
59
|
+
assertJsonCompatValue(k, `${path || "root"}.key(${String(k)})`);
|
|
60
|
+
assertJsonCompatValue(v, `${path || "root"}.value(${String(k)})`);
|
|
61
|
+
}
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (value instanceof Set) {
|
|
65
|
+
let index = 0;
|
|
66
|
+
for (const item of value.values()) {
|
|
67
|
+
assertJsonCompatValue(item, `${path || "root"}.set[${index}]`);
|
|
68
|
+
index++;
|
|
69
|
+
}
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (Array.isArray(value)) {
|
|
73
|
+
for (let i = 0; i < value.length; i++) {
|
|
74
|
+
assertJsonCompatValue(value[i], `${path || "root"}[${i}]`);
|
|
75
|
+
}
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (isPlainObject(value)) {
|
|
79
|
+
for (const key in value) {
|
|
80
|
+
assertJsonCompatValue(
|
|
81
|
+
value[key],
|
|
82
|
+
path ? `${path}.${key}` : key
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const typeName = typeof value === "object" && value !== null ? ((_a = value.constructor) == null ? void 0 : _a.name) ?? typeof value : typeof value;
|
|
88
|
+
throw new TypeError(
|
|
89
|
+
`Value at ${path || "root"} of type "${typeName}" is not CBOR serializable`
|
|
90
|
+
);
|
|
91
|
+
}
|
|
15
92
|
var EncodingSchema = z.enum(["json", "cbor", "bare"]);
|
|
16
93
|
async function inputDataToBuffer(data) {
|
|
17
94
|
if (typeof data === "string") {
|
|
@@ -46,9 +123,16 @@ function isPlainObject(value) {
|
|
|
46
123
|
return proto === Object.prototype || proto === null;
|
|
47
124
|
}
|
|
48
125
|
function encodeJsonCompatValue(input) {
|
|
126
|
+
var _a;
|
|
127
|
+
if (input === null) {
|
|
128
|
+
return input;
|
|
129
|
+
}
|
|
49
130
|
if (input === void 0) {
|
|
50
131
|
return [JSON_COMPAT_UNDEFINED, 0];
|
|
51
132
|
}
|
|
133
|
+
if (typeof input === "string" || typeof input === "number" || typeof input === "boolean") {
|
|
134
|
+
return input;
|
|
135
|
+
}
|
|
52
136
|
if (typeof input === "bigint") {
|
|
53
137
|
return [JSON_COMPAT_BIGINT, input.toString()];
|
|
54
138
|
}
|
|
@@ -58,10 +142,34 @@ function encodeJsonCompatValue(input) {
|
|
|
58
142
|
if (input instanceof Uint8Array) {
|
|
59
143
|
return [JSON_COMPAT_UINT8_ARRAY, base64EncodeUint8Array(input)];
|
|
60
144
|
}
|
|
145
|
+
if (isTypedArray(input)) {
|
|
146
|
+
return input;
|
|
147
|
+
}
|
|
148
|
+
if (input instanceof Date || input instanceof RegExp || input instanceof Error) {
|
|
149
|
+
return input;
|
|
150
|
+
}
|
|
151
|
+
if (input instanceof Set) {
|
|
152
|
+
const encoded = [...input.values()].map(
|
|
153
|
+
(v) => encodeJsonCompatValue(v)
|
|
154
|
+
);
|
|
155
|
+
return [JSON_COMPAT_SET, encoded];
|
|
156
|
+
}
|
|
157
|
+
if (input instanceof Map) {
|
|
158
|
+
const encoded = /* @__PURE__ */ new Map();
|
|
159
|
+
for (const [k, v] of input.entries()) {
|
|
160
|
+
encoded.set(
|
|
161
|
+
encodeJsonCompatValue(k),
|
|
162
|
+
encodeJsonCompatValue(v)
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
return encoded;
|
|
166
|
+
}
|
|
61
167
|
if (Array.isArray(input)) {
|
|
62
|
-
const encoded = input.map(
|
|
168
|
+
const encoded = input.map(
|
|
169
|
+
(value) => encodeJsonCompatValue(value)
|
|
170
|
+
);
|
|
63
171
|
if (encoded.length === 2 && typeof encoded[0] === "string" && encoded[0].startsWith("$")) {
|
|
64
|
-
return [
|
|
172
|
+
return [`$${encoded[0]}`, encoded[1]];
|
|
65
173
|
}
|
|
66
174
|
return encoded;
|
|
67
175
|
}
|
|
@@ -72,7 +180,8 @@ function encodeJsonCompatValue(input) {
|
|
|
72
180
|
}
|
|
73
181
|
return encoded;
|
|
74
182
|
}
|
|
75
|
-
|
|
183
|
+
const typeName = typeof input === "object" && input !== null ? ((_a = input.constructor) == null ? void 0 : _a.name) ?? typeof input : typeof input;
|
|
184
|
+
throw new TypeError(`Value of type "${typeName}" is not CBOR serializable`);
|
|
76
185
|
}
|
|
77
186
|
function reviveJsonCompatValue(input, options = {}) {
|
|
78
187
|
if (typeof input === "bigint") {
|
|
@@ -81,6 +190,16 @@ function reviveJsonCompatValue(input, options = {}) {
|
|
|
81
190
|
}
|
|
82
191
|
return input;
|
|
83
192
|
}
|
|
193
|
+
if (input instanceof Map) {
|
|
194
|
+
const revived = /* @__PURE__ */ new Map();
|
|
195
|
+
for (const [k, v] of input.entries()) {
|
|
196
|
+
revived.set(
|
|
197
|
+
reviveJsonCompatValue(k, options),
|
|
198
|
+
reviveJsonCompatValue(v, options)
|
|
199
|
+
);
|
|
200
|
+
}
|
|
201
|
+
return revived;
|
|
202
|
+
}
|
|
84
203
|
if (Array.isArray(input)) {
|
|
85
204
|
if (input.length === 2 && typeof input[0] === "string" && input[0].startsWith("$")) {
|
|
86
205
|
if (input[0] === JSON_COMPAT_BIGINT) {
|
|
@@ -95,6 +214,12 @@ function reviveJsonCompatValue(input, options = {}) {
|
|
|
95
214
|
if (input[0] === JSON_COMPAT_UNDEFINED) {
|
|
96
215
|
return void 0;
|
|
97
216
|
}
|
|
217
|
+
if (input[0] === JSON_COMPAT_SET) {
|
|
218
|
+
const items = input[1].map(
|
|
219
|
+
(v) => reviveJsonCompatValue(v, options)
|
|
220
|
+
);
|
|
221
|
+
return new Set(items);
|
|
222
|
+
}
|
|
98
223
|
if (input[0].startsWith("$$")) {
|
|
99
224
|
return [
|
|
100
225
|
input[0].substring(1),
|
|
@@ -136,19 +261,13 @@ function jsonStringifyCompat(input) {
|
|
|
136
261
|
return [JSON_COMPAT_BIGINT, value.toString()];
|
|
137
262
|
}
|
|
138
263
|
if (value instanceof ArrayBuffer) {
|
|
139
|
-
return [
|
|
140
|
-
JSON_COMPAT_ARRAY_BUFFER,
|
|
141
|
-
base64EncodeArrayBuffer(value)
|
|
142
|
-
];
|
|
264
|
+
return [JSON_COMPAT_ARRAY_BUFFER, base64EncodeArrayBuffer(value)];
|
|
143
265
|
}
|
|
144
266
|
if (value instanceof Uint8Array) {
|
|
145
|
-
return [
|
|
146
|
-
JSON_COMPAT_UINT8_ARRAY,
|
|
147
|
-
base64EncodeUint8Array(value)
|
|
148
|
-
];
|
|
267
|
+
return [JSON_COMPAT_UINT8_ARRAY, base64EncodeUint8Array(value)];
|
|
149
268
|
}
|
|
150
269
|
if (Array.isArray(value) && value.length === 2 && typeof value[0] === "string" && value[0].startsWith("$")) {
|
|
151
|
-
return [
|
|
270
|
+
return [`$${value[0]}`, value[1]];
|
|
152
271
|
}
|
|
153
272
|
return value;
|
|
154
273
|
});
|
|
@@ -184,11 +303,6 @@ function encodeCborCompat(value) {
|
|
|
184
303
|
function decodeCborCompat(buffer) {
|
|
185
304
|
return reviveJsonCompatValue(cbor.decode(buffer));
|
|
186
305
|
}
|
|
187
|
-
function decodeCborJsonCompat(buffer) {
|
|
188
|
-
return reviveJsonCompatValue(cbor.decode(buffer), {
|
|
189
|
-
coerceSafeIntegerBigInts: true
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
306
|
function serializeWithEncoding(encoding, value, versionedDataHandler, version, zodSchema, toJson, toBare) {
|
|
193
307
|
if (encoding === "json") {
|
|
194
308
|
const jsonValue = toJson(value);
|
|
@@ -258,11 +372,11 @@ export {
|
|
|
258
372
|
contentTypeForEncoding,
|
|
259
373
|
encodeCborCompat,
|
|
260
374
|
decodeCborCompat,
|
|
261
|
-
decodeCborJsonCompat,
|
|
262
375
|
serializeWithEncoding,
|
|
263
376
|
deserializeWithEncoding,
|
|
377
|
+
assertJsonCompatValue,
|
|
264
378
|
EncodingSchema,
|
|
265
379
|
inputDataToBuffer,
|
|
266
380
|
jsonStringifyCompat
|
|
267
381
|
};
|
|
268
|
-
//# sourceMappingURL=chunk-
|
|
382
|
+
//# sourceMappingURL=chunk-2OTRTA3J.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/serde.ts","../../src/common/encoding.ts"],"sourcesContent":["import * as cbor from \"cbor-x\";\nimport invariant from \"invariant\";\nimport type { VersionedDataHandler } from \"vbare\";\nimport type { z } from \"zod/v4\";\nimport type { Encoding, JsonCompatValue } from \"@/common/encoding\";\nimport { assertUnreachable } from \"@/common/utils\";\nimport {\n\tencodeJsonCompatValue,\n\tjsonParseCompat,\n\tjsonStringifyCompat,\n\treviveJsonCompatValue,\n} from \"./common/encoding\";\n\nexport function uint8ArrayToBase64(uint8Array: Uint8Array): string {\n\t// Check if Buffer is available (Node.js)\n\tif (typeof Buffer !== \"undefined\") {\n\t\treturn Buffer.from(uint8Array).toString(\"base64\");\n\t}\n\n\t// Browser environment - use btoa\n\tlet binary = \"\";\n\tconst len = uint8Array.byteLength;\n\tfor (let i = 0; i < len; i++) {\n\t\tbinary += String.fromCharCode(uint8Array[i]);\n\t}\n\treturn btoa(binary);\n}\n\nexport function encodingIsBinary(encoding: Encoding): boolean {\n\tif (encoding === \"json\") {\n\t\treturn false;\n\t} else if (encoding === \"cbor\" || encoding === \"bare\") {\n\t\treturn true;\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function contentTypeForEncoding(encoding: Encoding): string {\n\tif (encoding === \"json\") {\n\t\treturn \"application/json\";\n\t} else if (encoding === \"cbor\" || encoding === \"bare\") {\n\t\treturn \"application/octet-stream\";\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function encodeCborCompat(value: JsonCompatValue): Uint8Array {\n\treturn cbor.encode(encodeJsonCompatValue(value));\n}\n\nexport function decodeCborCompat<T>(buffer: Uint8Array): T {\n\treturn reviveJsonCompatValue(cbor.decode(buffer)) as T;\n}\n\nexport function decodeCborJsonCompat<T>(buffer: Uint8Array): T {\n\treturn reviveJsonCompatValue(cbor.decode(buffer), {\n\t\tcoerceSafeIntegerBigInts: true,\n\t}) as T;\n}\n\nexport function wsBinaryTypeForEncoding(\n\tencoding: Encoding,\n): \"arraybuffer\" | \"blob\" {\n\tif (encoding === \"json\") {\n\t\treturn \"blob\";\n\t} else if (encoding === \"cbor\" || encoding === \"bare\") {\n\t\treturn \"arraybuffer\";\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function serializeWithEncoding<TBare, TJson, T = TBare>(\n\tencoding: Encoding,\n\tvalue: T,\n\tversionedDataHandler: VersionedDataHandler<TBare> | undefined,\n\tversion: number | undefined,\n\tzodSchema: z.ZodType<TJson>,\n\ttoJson: (value: T) => TJson,\n\ttoBare: (value: T) => TBare,\n): Uint8Array | string {\n\tif (encoding === \"json\") {\n\t\tconst jsonValue = toJson(value);\n\t\tconst validated = zodSchema.parse(jsonValue);\n\t\treturn jsonStringifyCompat(validated);\n\t} else if (encoding === \"cbor\") {\n\t\tconst jsonValue = toJson(value);\n\t\tconst validated = zodSchema.parse(jsonValue);\n\t\treturn cbor.encode(validated);\n\t} else if (encoding === \"bare\") {\n\t\tif (!versionedDataHandler) {\n\t\t\tthrow new Error(\n\t\t\t\t\"VersionedDataHandler is required for 'bare' encoding\",\n\t\t\t);\n\t\t}\n\t\tif (version === undefined) {\n\t\t\tthrow new Error(\"version is required for 'bare' encoding\");\n\t\t}\n\t\tconst bareValue = toBare(value);\n\t\treturn versionedDataHandler.serializeWithEmbeddedVersion(\n\t\t\tbareValue,\n\t\t\tversion,\n\t\t);\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function deserializeWithEncoding<TBare, TJson, T = TBare>(\n\tencoding: Encoding,\n\tbuffer: Uint8Array | string,\n\tversionedDataHandler: VersionedDataHandler<TBare> | undefined,\n\tzodSchema: z.ZodType<TJson>,\n\tfromJson: (value: TJson) => T,\n\tfromBare: (value: TBare) => T,\n): T {\n\tif (encoding === \"json\") {\n\t\tlet parsed: unknown;\n\t\tif (typeof buffer === \"string\") {\n\t\t\tparsed = jsonParseCompat(buffer);\n\t\t} else {\n\t\t\tconst decoder = new TextDecoder(\"utf-8\");\n\t\t\tconst jsonString = decoder.decode(buffer);\n\t\t\tparsed = jsonParseCompat(jsonString);\n\t\t}\n\t\tconst validated = zodSchema.parse(parsed);\n\t\treturn fromJson(validated);\n\t} else if (encoding === \"cbor\") {\n\t\tinvariant(\n\t\t\ttypeof buffer !== \"string\",\n\t\t\t\"buffer cannot be string for cbor encoding\",\n\t\t);\n\t\t// Decode CBOR to get JavaScript values (similar to JSON.parse)\n\t\tconst decoded = decodeCborCompat(buffer);\n\t\t// Validate with Zod schema (CBOR produces same structure as JSON)\n\t\tconst validated = zodSchema.parse(decoded);\n\t\t// CBOR decoding produces JS objects, use fromJson\n\t\treturn fromJson(validated);\n\t} else if (encoding === \"bare\") {\n\t\tinvariant(\n\t\t\ttypeof buffer !== \"string\",\n\t\t\t\"buffer cannot be string for bare encoding\",\n\t\t);\n\t\tif (!versionedDataHandler) {\n\t\t\tthrow new Error(\n\t\t\t\t\"VersionedDataHandler is required for 'bare' encoding\",\n\t\t\t);\n\t\t}\n\t\tconst bareValue =\n\t\t\tversionedDataHandler.deserializeWithEmbeddedVersion(buffer);\n\t\treturn fromBare(bareValue);\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n","import type { VersionedDataHandler } from \"vbare\";\nimport { z } from \"zod/v4\";\nimport { serializeWithEncoding } from \"@/serde\";\nimport { assertUnreachable } from \"./utils\";\n\n/** Data that can be deserialized. */\nexport type InputData = string | Buffer | Blob | ArrayBufferLike | Uint8Array;\n\n/** Data that's been serialized. */\nexport type OutputData = string | Uint8Array;\n\nconst JSON_COMPAT_BIGINT = \"$BigInt\";\nconst JSON_COMPAT_ARRAY_BUFFER = \"$ArrayBuffer\";\nconst JSON_COMPAT_UINT8_ARRAY = \"$Uint8Array\";\nconst JSON_COMPAT_UNDEFINED = \"$Undefined\";\nconst JSON_COMPAT_SET = \"$Set\";\n\n/**\n * Types that cbor-x encodes natively without any compat transforms.\n */\nexport type CborSerializable =\n\t| string\n\t| number\n\t| boolean\n\t| null\n\t| undefined\n\t| bigint\n\t| Date\n\t| RegExp\n\t| Error\n\t| ArrayBuffer\n\t| Uint8Array\n\t| Uint8ClampedArray\n\t| Uint16Array\n\t| Uint32Array\n\t| BigUint64Array\n\t| Int8Array\n\t| Int16Array\n\t| Int32Array\n\t| BigInt64Array\n\t| Float32Array\n\t| Float64Array\n\t| CborSerializable[]\n\t| Map<CborSerializable, CborSerializable>\n\t| { [key: string]: CborSerializable };\n\n/**\n * User-facing serializable type. Extends CborSerializable with Set (encoded\n * as a `$Set` tagged array by the JSON compat layer).\n */\nexport type JsonCompatValue =\n\t| CborSerializable\n\t| Set<JsonCompatValue>\n\t| JsonCompatValue[]\n\t| Map<JsonCompatValue, JsonCompatValue>\n\t| { [key: string]: JsonCompatValue };\n\nfunction isTypedArray(value: unknown): boolean {\n\treturn (\n\t\tvalue instanceof Uint8ClampedArray ||\n\t\tvalue instanceof Uint16Array ||\n\t\tvalue instanceof Uint32Array ||\n\t\tvalue instanceof BigUint64Array ||\n\t\tvalue instanceof Int8Array ||\n\t\tvalue instanceof Int16Array ||\n\t\tvalue instanceof Int32Array ||\n\t\tvalue instanceof BigInt64Array ||\n\t\tvalue instanceof Float32Array ||\n\t\tvalue instanceof Float64Array\n\t);\n}\n\n/**\n * Recursively validates that a value is CBOR serializable. Throws TypeError\n * with a descriptive message for non-serializable values.\n */\nexport function assertJsonCompatValue(\n\tvalue: unknown,\n\tpath = \"\",\n): asserts value is JsonCompatValue {\n\tif (\n\t\tvalue === null ||\n\t\tvalue === undefined ||\n\t\ttypeof value === \"string\" ||\n\t\ttypeof value === \"number\" ||\n\t\ttypeof value === \"boolean\" ||\n\t\ttypeof value === \"bigint\"\n\t) {\n\t\treturn;\n\t}\n\n\tif (typeof value === \"function\") {\n\t\tthrow new TypeError(\n\t\t\t`Value at ${path || \"root\"} is a function and is not CBOR serializable`,\n\t\t);\n\t}\n\n\tif (typeof value === \"symbol\") {\n\t\tthrow new TypeError(\n\t\t\t`Value at ${path || \"root\"} is a symbol and is not CBOR serializable`,\n\t\t);\n\t}\n\n\tif (\n\t\tvalue instanceof Date ||\n\t\tvalue instanceof RegExp ||\n\t\tvalue instanceof Error ||\n\t\tvalue instanceof ArrayBuffer ||\n\t\tvalue instanceof Uint8Array ||\n\t\tisTypedArray(value)\n\t) {\n\t\treturn;\n\t}\n\n\tif (value instanceof WeakMap) {\n\t\tthrow new TypeError(\n\t\t\t`Value at ${path || \"root\"} is a WeakMap and is not CBOR serializable`,\n\t\t);\n\t}\n\n\tif (value instanceof WeakSet) {\n\t\tthrow new TypeError(\n\t\t\t`Value at ${path || \"root\"} is a WeakSet and is not CBOR serializable`,\n\t\t);\n\t}\n\n\tif (value instanceof WeakRef) {\n\t\tthrow new TypeError(\n\t\t\t`Value at ${path || \"root\"} is a WeakRef and is not CBOR serializable`,\n\t\t);\n\t}\n\n\tif (value instanceof Promise) {\n\t\tthrow new TypeError(\n\t\t\t`Value at ${path || \"root\"} is a Promise and is not CBOR serializable`,\n\t\t);\n\t}\n\n\tif (value instanceof Map) {\n\t\tfor (const [k, v] of value.entries()) {\n\t\t\tassertJsonCompatValue(k, `${path || \"root\"}.key(${String(k)})`);\n\t\t\tassertJsonCompatValue(v, `${path || \"root\"}.value(${String(k)})`);\n\t\t}\n\t\treturn;\n\t}\n\n\tif (value instanceof Set) {\n\t\tlet index = 0;\n\t\tfor (const item of value.values()) {\n\t\t\tassertJsonCompatValue(item, `${path || \"root\"}.set[${index}]`);\n\t\t\tindex++;\n\t\t}\n\t\treturn;\n\t}\n\n\tif (Array.isArray(value)) {\n\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\tassertJsonCompatValue(value[i], `${path || \"root\"}[${i}]`);\n\t\t}\n\t\treturn;\n\t}\n\n\tif (isPlainObject(value)) {\n\t\tfor (const key in value) {\n\t\t\tassertJsonCompatValue(\n\t\t\t\tvalue[key as keyof typeof value],\n\t\t\t\tpath ? `${path}.${key}` : key,\n\t\t\t);\n\t\t}\n\t\treturn;\n\t}\n\n\tconst typeName =\n\t\ttypeof value === \"object\" && value !== null\n\t\t\t? (value.constructor?.name ?? typeof value)\n\t\t\t: typeof value;\n\tthrow new TypeError(\n\t\t`Value at ${path || \"root\"} of type \"${typeName}\" is not CBOR serializable`,\n\t);\n}\n\nexport const EncodingSchema = z.enum([\"json\", \"cbor\", \"bare\"]);\n\n/**\n * Encoding used to communicate between the client & actor.\n */\nexport type Encoding = z.infer<typeof EncodingSchema>;\n\n/**\n * Helper class that helps serialize data without re-serializing for the same encoding.\n */\nexport class CachedSerializer<TBare, TJson, T = TBare> {\n\t#data: T;\n\t#cache = new Map<Encoding, OutputData>();\n\t#versionedDataHandler: VersionedDataHandler<TBare>;\n\t#version: number;\n\t#zodSchema: z.ZodType<TJson>;\n\t#toJson: (value: T) => TJson;\n\t#toBare: (value: T) => TBare;\n\n\tconstructor(\n\t\tdata: T,\n\t\tversionedDataHandler: VersionedDataHandler<TBare>,\n\t\tversion: number,\n\t\tzodSchema: z.ZodType<TJson>,\n\t\ttoJson: (value: T) => TJson,\n\t\ttoBare: (value: T) => TBare,\n\t) {\n\t\tthis.#data = data;\n\t\tthis.#versionedDataHandler = versionedDataHandler;\n\t\tthis.#version = version;\n\t\tthis.#zodSchema = zodSchema;\n\t\tthis.#toJson = toJson;\n\t\tthis.#toBare = toBare;\n\t}\n\n\tpublic get rawData(): T {\n\t\treturn this.#data;\n\t}\n\n\tpublic serialize(encoding: Encoding): OutputData {\n\t\tconst cached = this.#cache.get(encoding);\n\t\tif (cached) {\n\t\t\treturn cached;\n\t\t}\n\n\t\tconst serialized = serializeWithEncoding(\n\t\t\tencoding,\n\t\t\tthis.#data,\n\t\t\tthis.#versionedDataHandler,\n\t\t\tthis.#version,\n\t\t\tthis.#zodSchema,\n\t\t\tthis.#toJson,\n\t\t\tthis.#toBare,\n\t\t);\n\t\tthis.#cache.set(encoding, serialized);\n\t\treturn serialized;\n\t}\n}\n\nexport async function inputDataToBuffer(\n\tdata: InputData,\n): Promise<Uint8Array | string> {\n\tif (typeof data === \"string\") {\n\t\treturn data;\n\t}\n\tif (data instanceof Blob) {\n\t\treturn new Uint8Array(await data.arrayBuffer());\n\t}\n\tif (data instanceof Uint8Array) {\n\t\treturn data;\n\t}\n\tif (data instanceof ArrayBuffer || data instanceof SharedArrayBuffer) {\n\t\treturn new Uint8Array(data);\n\t}\n\tthrow new Error(\"Malformed message\");\n}\n\nfunction base64EncodeUint8Array(uint8Array: Uint8Array): string {\n\tlet binary = \"\";\n\tfor (const value of uint8Array) {\n\t\tbinary += String.fromCharCode(value);\n\t}\n\treturn btoa(binary);\n}\n\nfunction base64EncodeArrayBuffer(arrayBuffer: ArrayBuffer): string {\n\treturn base64EncodeUint8Array(new Uint8Array(arrayBuffer));\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n\tif (value === null || typeof value !== \"object\") {\n\t\treturn false;\n\t}\n\n\tconst proto = Object.getPrototypeOf(value);\n\treturn proto === Object.prototype || proto === null;\n}\n\nexport function encodeJsonCompatValue(input: JsonCompatValue): unknown {\n\t// Primitives\n\tif (input === null) {\n\t\treturn input;\n\t}\n\tif (input === undefined) {\n\t\treturn [JSON_COMPAT_UNDEFINED, 0];\n\t}\n\tif (\n\t\ttypeof input === \"string\" ||\n\t\ttypeof input === \"number\" ||\n\t\ttypeof input === \"boolean\"\n\t) {\n\t\treturn input;\n\t}\n\tif (typeof input === \"bigint\") {\n\t\treturn [JSON_COMPAT_BIGINT, input.toString()];\n\t}\n\n\t// Binary types with custom encoding\n\tif (input instanceof ArrayBuffer) {\n\t\treturn [JSON_COMPAT_ARRAY_BUFFER, base64EncodeArrayBuffer(input)];\n\t}\n\tif (input instanceof Uint8Array) {\n\t\treturn [JSON_COMPAT_UINT8_ARRAY, base64EncodeUint8Array(input)];\n\t}\n\n\t// TypedArrays pass through for cbor-x native handling\n\tif (isTypedArray(input)) {\n\t\treturn input;\n\t}\n\n\t// Date, RegExp, and Error pass through for cbor-x native handling\n\tif (\n\t\tinput instanceof Date ||\n\t\tinput instanceof RegExp ||\n\t\tinput instanceof Error\n\t) {\n\t\treturn input;\n\t}\n\n\t// Set uses custom tag encoding\n\tif (input instanceof Set) {\n\t\tconst encoded = [...input.values()].map((v) =>\n\t\t\tencodeJsonCompatValue(v as JsonCompatValue),\n\t\t);\n\t\treturn [JSON_COMPAT_SET, encoded];\n\t}\n\n\t// Map recurses into keys and values\n\tif (input instanceof Map) {\n\t\tconst encoded = new Map<unknown, unknown>();\n\t\tfor (const [k, v] of input.entries()) {\n\t\t\tencoded.set(\n\t\t\t\tencodeJsonCompatValue(k as JsonCompatValue),\n\t\t\t\tencodeJsonCompatValue(v as JsonCompatValue),\n\t\t\t);\n\t\t}\n\t\treturn encoded;\n\t}\n\n\t// Arrays\n\tif (Array.isArray(input)) {\n\t\tconst encoded = input.map((value) =>\n\t\t\tencodeJsonCompatValue(value as JsonCompatValue),\n\t\t);\n\t\tif (\n\t\t\tencoded.length === 2 &&\n\t\t\ttypeof encoded[0] === \"string\" &&\n\t\t\t(encoded[0] as string).startsWith(\"$\")\n\t\t) {\n\t\t\treturn [`$${encoded[0]}`, encoded[1]];\n\t\t}\n\t\treturn encoded;\n\t}\n\n\t// Plain objects\n\tif (isPlainObject(input)) {\n\t\tconst encoded: Record<string, unknown> = {};\n\t\tfor (const [key, value] of Object.entries(input)) {\n\t\t\tencoded[key] = encodeJsonCompatValue(value as JsonCompatValue);\n\t\t}\n\t\treturn encoded;\n\t}\n\n\t// Not serializable\n\tconst typeName =\n\t\ttypeof input === \"object\" && input !== null\n\t\t\t? ((input as object).constructor?.name ?? typeof input)\n\t\t\t: typeof input;\n\tthrow new TypeError(`Value of type \"${typeName}\" is not CBOR serializable`);\n}\n\nexport interface JsonCompatReviveOptions {\n\tcoerceSafeIntegerBigInts?: boolean;\n}\n\nexport function reviveJsonCompatValue(\n\tinput: any,\n\toptions: JsonCompatReviveOptions = {},\n): any {\n\tif (typeof input === \"bigint\") {\n\t\tif (\n\t\t\toptions.coerceSafeIntegerBigInts &&\n\t\t\tinput >= BigInt(Number.MIN_SAFE_INTEGER) &&\n\t\t\tinput <= BigInt(Number.MAX_SAFE_INTEGER)\n\t\t) {\n\t\t\treturn Number(input);\n\t\t}\n\t\treturn input;\n\t}\n\tif (input instanceof Map) {\n\t\tconst revived = new Map();\n\t\tfor (const [k, v] of input.entries()) {\n\t\t\trevived.set(\n\t\t\t\treviveJsonCompatValue(k, options),\n\t\t\t\treviveJsonCompatValue(v, options),\n\t\t\t);\n\t\t}\n\t\treturn revived;\n\t}\n\tif (Array.isArray(input)) {\n\t\tif (\n\t\t\tinput.length === 2 &&\n\t\t\ttypeof input[0] === \"string\" &&\n\t\t\tinput[0].startsWith(\"$\")\n\t\t) {\n\t\t\tif (input[0] === JSON_COMPAT_BIGINT) {\n\t\t\t\treturn BigInt(input[1]);\n\t\t\t}\n\t\t\tif (input[0] === JSON_COMPAT_ARRAY_BUFFER) {\n\t\t\t\treturn base64DecodeToArrayBuffer(input[1]);\n\t\t\t}\n\t\t\tif (input[0] === JSON_COMPAT_UINT8_ARRAY) {\n\t\t\t\treturn base64DecodeToUint8Array(input[1]);\n\t\t\t}\n\t\t\tif (input[0] === JSON_COMPAT_UNDEFINED) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (input[0] === JSON_COMPAT_SET) {\n\t\t\t\tconst items = (input[1] as unknown[]).map((v) =>\n\t\t\t\t\treviveJsonCompatValue(v, options),\n\t\t\t\t);\n\t\t\t\treturn new Set(items);\n\t\t\t}\n\t\t\tif (input[0].startsWith(\"$$\")) {\n\t\t\t\treturn [\n\t\t\t\t\tinput[0].substring(1),\n\t\t\t\t\treviveJsonCompatValue(input[1], options),\n\t\t\t\t];\n\t\t\t}\n\t\t\tthrow new Error(\n\t\t\t\t`Unknown JSON encoding type: ${input[0]}. This may indicate corrupted data or a version mismatch.`,\n\t\t\t);\n\t\t}\n\t\treturn input.map((value) => reviveJsonCompatValue(value, options));\n\t}\n\tif (isPlainObject(input)) {\n\t\tconst decoded: Record<string, unknown> = {};\n\t\tfor (const [key, value] of Object.entries(input)) {\n\t\t\tdecoded[key] = reviveJsonCompatValue(value, options);\n\t\t}\n\t\treturn decoded;\n\t}\n\treturn input;\n}\n\n/** Converts data that was encoded to a string. Some formats do not support raw binary data. */\nexport function encodeDataToString(message: OutputData): string {\n\tif (typeof message === \"string\") {\n\t\treturn message;\n\t}\n\tif (message instanceof Uint8Array) {\n\t\treturn base64EncodeUint8Array(message);\n\t}\n\tassertUnreachable(message);\n}\n\nfunction base64DecodeToUint8Array(base64: string): Uint8Array {\n\tif (typeof Buffer !== \"undefined\") {\n\t\treturn new Uint8Array(Buffer.from(base64, \"base64\"));\n\t}\n\n\tconst binary = atob(base64);\n\tconst bytes = new Uint8Array(binary.length);\n\tfor (let i = 0; i < binary.length; i++) {\n\t\tbytes[i] = binary.charCodeAt(i);\n\t}\n\treturn bytes;\n}\n\nfunction base64DecodeToArrayBuffer(base64: string): ArrayBuffer {\n\treturn base64DecodeToUint8Array(base64).buffer as ArrayBuffer;\n}\n\n/** Stringifies with compat for values that BARE & CBOR supports. */\nexport function jsonStringifyCompat(input: any): string {\n\treturn JSON.stringify(input, (_key, value) => {\n\t\tif (typeof value === \"bigint\") {\n\t\t\treturn [JSON_COMPAT_BIGINT, value.toString()];\n\t\t}\n\t\tif (value instanceof ArrayBuffer) {\n\t\t\treturn [JSON_COMPAT_ARRAY_BUFFER, base64EncodeArrayBuffer(value)];\n\t\t}\n\t\tif (value instanceof Uint8Array) {\n\t\t\treturn [JSON_COMPAT_UINT8_ARRAY, base64EncodeUint8Array(value)];\n\t\t}\n\t\tif (\n\t\t\tArray.isArray(value) &&\n\t\t\tvalue.length === 2 &&\n\t\t\ttypeof value[0] === \"string\" &&\n\t\t\tvalue[0].startsWith(\"$\")\n\t\t) {\n\t\t\treturn [`$${value[0]}`, value[1]];\n\t\t}\n\t\treturn value;\n\t});\n}\n\n/** Parses JSON with compat for values that BARE & CBOR supports. */\nexport function jsonParseCompat(input: string): any {\n\treturn reviveJsonCompatValue(JSON.parse(input));\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
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; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
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; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkDXXJPH55cjs = require('./chunk-DXXJPH55.cjs');
|
|
4
4
|
|
|
5
5
|
// src/serde.ts
|
|
6
6
|
var _cborx = require('cbor-x'); var cbor = _interopRequireWildcard(_cborx);
|
|
@@ -12,6 +12,83 @@ var JSON_COMPAT_BIGINT = "$BigInt";
|
|
|
12
12
|
var JSON_COMPAT_ARRAY_BUFFER = "$ArrayBuffer";
|
|
13
13
|
var JSON_COMPAT_UINT8_ARRAY = "$Uint8Array";
|
|
14
14
|
var JSON_COMPAT_UNDEFINED = "$Undefined";
|
|
15
|
+
var JSON_COMPAT_SET = "$Set";
|
|
16
|
+
function isTypedArray(value) {
|
|
17
|
+
return 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;
|
|
18
|
+
}
|
|
19
|
+
function assertJsonCompatValue(value, path = "") {
|
|
20
|
+
var _a;
|
|
21
|
+
if (value === null || value === void 0 || typeof value === "string" || typeof value === "number" || typeof value === "boolean" || typeof value === "bigint") {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
if (typeof value === "function") {
|
|
25
|
+
throw new TypeError(
|
|
26
|
+
`Value at ${path || "root"} is a function and is not CBOR serializable`
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
if (typeof value === "symbol") {
|
|
30
|
+
throw new TypeError(
|
|
31
|
+
`Value at ${path || "root"} is a symbol and is not CBOR serializable`
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
if (value instanceof Date || value instanceof RegExp || value instanceof Error || value instanceof ArrayBuffer || value instanceof Uint8Array || isTypedArray(value)) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (value instanceof WeakMap) {
|
|
38
|
+
throw new TypeError(
|
|
39
|
+
`Value at ${path || "root"} is a WeakMap and is not CBOR serializable`
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
if (value instanceof WeakSet) {
|
|
43
|
+
throw new TypeError(
|
|
44
|
+
`Value at ${path || "root"} is a WeakSet and is not CBOR serializable`
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
if (value instanceof WeakRef) {
|
|
48
|
+
throw new TypeError(
|
|
49
|
+
`Value at ${path || "root"} is a WeakRef and is not CBOR serializable`
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
if (value instanceof Promise) {
|
|
53
|
+
throw new TypeError(
|
|
54
|
+
`Value at ${path || "root"} is a Promise and is not CBOR serializable`
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
if (value instanceof Map) {
|
|
58
|
+
for (const [k, v] of value.entries()) {
|
|
59
|
+
assertJsonCompatValue(k, `${path || "root"}.key(${String(k)})`);
|
|
60
|
+
assertJsonCompatValue(v, `${path || "root"}.value(${String(k)})`);
|
|
61
|
+
}
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (value instanceof Set) {
|
|
65
|
+
let index = 0;
|
|
66
|
+
for (const item of value.values()) {
|
|
67
|
+
assertJsonCompatValue(item, `${path || "root"}.set[${index}]`);
|
|
68
|
+
index++;
|
|
69
|
+
}
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (Array.isArray(value)) {
|
|
73
|
+
for (let i = 0; i < value.length; i++) {
|
|
74
|
+
assertJsonCompatValue(value[i], `${path || "root"}[${i}]`);
|
|
75
|
+
}
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (isPlainObject(value)) {
|
|
79
|
+
for (const key in value) {
|
|
80
|
+
assertJsonCompatValue(
|
|
81
|
+
value[key],
|
|
82
|
+
path ? `${path}.${key}` : key
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const typeName = typeof value === "object" && value !== null ? _nullishCoalesce(((_a = value.constructor) == null ? void 0 : _a.name), () => ( typeof value)) : typeof value;
|
|
88
|
+
throw new TypeError(
|
|
89
|
+
`Value at ${path || "root"} of type "${typeName}" is not CBOR serializable`
|
|
90
|
+
);
|
|
91
|
+
}
|
|
15
92
|
var EncodingSchema = _v4.z.enum(["json", "cbor", "bare"]);
|
|
16
93
|
async function inputDataToBuffer(data) {
|
|
17
94
|
if (typeof data === "string") {
|
|
@@ -46,9 +123,16 @@ function isPlainObject(value) {
|
|
|
46
123
|
return proto === Object.prototype || proto === null;
|
|
47
124
|
}
|
|
48
125
|
function encodeJsonCompatValue(input) {
|
|
126
|
+
var _a;
|
|
127
|
+
if (input === null) {
|
|
128
|
+
return input;
|
|
129
|
+
}
|
|
49
130
|
if (input === void 0) {
|
|
50
131
|
return [JSON_COMPAT_UNDEFINED, 0];
|
|
51
132
|
}
|
|
133
|
+
if (typeof input === "string" || typeof input === "number" || typeof input === "boolean") {
|
|
134
|
+
return input;
|
|
135
|
+
}
|
|
52
136
|
if (typeof input === "bigint") {
|
|
53
137
|
return [JSON_COMPAT_BIGINT, input.toString()];
|
|
54
138
|
}
|
|
@@ -58,10 +142,34 @@ function encodeJsonCompatValue(input) {
|
|
|
58
142
|
if (input instanceof Uint8Array) {
|
|
59
143
|
return [JSON_COMPAT_UINT8_ARRAY, base64EncodeUint8Array(input)];
|
|
60
144
|
}
|
|
145
|
+
if (isTypedArray(input)) {
|
|
146
|
+
return input;
|
|
147
|
+
}
|
|
148
|
+
if (input instanceof Date || input instanceof RegExp || input instanceof Error) {
|
|
149
|
+
return input;
|
|
150
|
+
}
|
|
151
|
+
if (input instanceof Set) {
|
|
152
|
+
const encoded = [...input.values()].map(
|
|
153
|
+
(v) => encodeJsonCompatValue(v)
|
|
154
|
+
);
|
|
155
|
+
return [JSON_COMPAT_SET, encoded];
|
|
156
|
+
}
|
|
157
|
+
if (input instanceof Map) {
|
|
158
|
+
const encoded = /* @__PURE__ */ new Map();
|
|
159
|
+
for (const [k, v] of input.entries()) {
|
|
160
|
+
encoded.set(
|
|
161
|
+
encodeJsonCompatValue(k),
|
|
162
|
+
encodeJsonCompatValue(v)
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
return encoded;
|
|
166
|
+
}
|
|
61
167
|
if (Array.isArray(input)) {
|
|
62
|
-
const encoded = input.map(
|
|
168
|
+
const encoded = input.map(
|
|
169
|
+
(value) => encodeJsonCompatValue(value)
|
|
170
|
+
);
|
|
63
171
|
if (encoded.length === 2 && typeof encoded[0] === "string" && encoded[0].startsWith("$")) {
|
|
64
|
-
return [
|
|
172
|
+
return [`$${encoded[0]}`, encoded[1]];
|
|
65
173
|
}
|
|
66
174
|
return encoded;
|
|
67
175
|
}
|
|
@@ -72,7 +180,8 @@ function encodeJsonCompatValue(input) {
|
|
|
72
180
|
}
|
|
73
181
|
return encoded;
|
|
74
182
|
}
|
|
75
|
-
|
|
183
|
+
const typeName = typeof input === "object" && input !== null ? _nullishCoalesce(((_a = input.constructor) == null ? void 0 : _a.name), () => ( typeof input)) : typeof input;
|
|
184
|
+
throw new TypeError(`Value of type "${typeName}" is not CBOR serializable`);
|
|
76
185
|
}
|
|
77
186
|
function reviveJsonCompatValue(input, options = {}) {
|
|
78
187
|
if (typeof input === "bigint") {
|
|
@@ -81,6 +190,16 @@ function reviveJsonCompatValue(input, options = {}) {
|
|
|
81
190
|
}
|
|
82
191
|
return input;
|
|
83
192
|
}
|
|
193
|
+
if (input instanceof Map) {
|
|
194
|
+
const revived = /* @__PURE__ */ new Map();
|
|
195
|
+
for (const [k, v] of input.entries()) {
|
|
196
|
+
revived.set(
|
|
197
|
+
reviveJsonCompatValue(k, options),
|
|
198
|
+
reviveJsonCompatValue(v, options)
|
|
199
|
+
);
|
|
200
|
+
}
|
|
201
|
+
return revived;
|
|
202
|
+
}
|
|
84
203
|
if (Array.isArray(input)) {
|
|
85
204
|
if (input.length === 2 && typeof input[0] === "string" && input[0].startsWith("$")) {
|
|
86
205
|
if (input[0] === JSON_COMPAT_BIGINT) {
|
|
@@ -95,6 +214,12 @@ function reviveJsonCompatValue(input, options = {}) {
|
|
|
95
214
|
if (input[0] === JSON_COMPAT_UNDEFINED) {
|
|
96
215
|
return void 0;
|
|
97
216
|
}
|
|
217
|
+
if (input[0] === JSON_COMPAT_SET) {
|
|
218
|
+
const items = input[1].map(
|
|
219
|
+
(v) => reviveJsonCompatValue(v, options)
|
|
220
|
+
);
|
|
221
|
+
return new Set(items);
|
|
222
|
+
}
|
|
98
223
|
if (input[0].startsWith("$$")) {
|
|
99
224
|
return [
|
|
100
225
|
input[0].substring(1),
|
|
@@ -136,19 +261,13 @@ function jsonStringifyCompat(input) {
|
|
|
136
261
|
return [JSON_COMPAT_BIGINT, value.toString()];
|
|
137
262
|
}
|
|
138
263
|
if (value instanceof ArrayBuffer) {
|
|
139
|
-
return [
|
|
140
|
-
JSON_COMPAT_ARRAY_BUFFER,
|
|
141
|
-
base64EncodeArrayBuffer(value)
|
|
142
|
-
];
|
|
264
|
+
return [JSON_COMPAT_ARRAY_BUFFER, base64EncodeArrayBuffer(value)];
|
|
143
265
|
}
|
|
144
266
|
if (value instanceof Uint8Array) {
|
|
145
|
-
return [
|
|
146
|
-
JSON_COMPAT_UINT8_ARRAY,
|
|
147
|
-
base64EncodeUint8Array(value)
|
|
148
|
-
];
|
|
267
|
+
return [JSON_COMPAT_UINT8_ARRAY, base64EncodeUint8Array(value)];
|
|
149
268
|
}
|
|
150
269
|
if (Array.isArray(value) && value.length === 2 && typeof value[0] === "string" && value[0].startsWith("$")) {
|
|
151
|
-
return [
|
|
270
|
+
return [`$${value[0]}`, value[1]];
|
|
152
271
|
}
|
|
153
272
|
return value;
|
|
154
273
|
});
|
|
@@ -175,7 +294,7 @@ function contentTypeForEncoding(encoding) {
|
|
|
175
294
|
} else if (encoding === "cbor" || encoding === "bare") {
|
|
176
295
|
return "application/octet-stream";
|
|
177
296
|
} else {
|
|
178
|
-
|
|
297
|
+
_chunkDXXJPH55cjs.assertUnreachable.call(void 0, encoding);
|
|
179
298
|
}
|
|
180
299
|
}
|
|
181
300
|
function encodeCborCompat(value) {
|
|
@@ -184,11 +303,6 @@ function encodeCborCompat(value) {
|
|
|
184
303
|
function decodeCborCompat(buffer) {
|
|
185
304
|
return reviveJsonCompatValue(cbor.decode(buffer));
|
|
186
305
|
}
|
|
187
|
-
function decodeCborJsonCompat(buffer) {
|
|
188
|
-
return reviveJsonCompatValue(cbor.decode(buffer), {
|
|
189
|
-
coerceSafeIntegerBigInts: true
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
306
|
function serializeWithEncoding(encoding, value, versionedDataHandler, version, zodSchema, toJson, toBare) {
|
|
193
307
|
if (encoding === "json") {
|
|
194
308
|
const jsonValue = toJson(value);
|
|
@@ -213,7 +327,7 @@ function serializeWithEncoding(encoding, value, versionedDataHandler, version, z
|
|
|
213
327
|
version
|
|
214
328
|
);
|
|
215
329
|
} else {
|
|
216
|
-
|
|
330
|
+
_chunkDXXJPH55cjs.assertUnreachable.call(void 0, encoding);
|
|
217
331
|
}
|
|
218
332
|
}
|
|
219
333
|
function deserializeWithEncoding(encoding, buffer, versionedDataHandler, zodSchema, fromJson, fromBare) {
|
|
@@ -249,7 +363,7 @@ function deserializeWithEncoding(encoding, buffer, versionedDataHandler, zodSche
|
|
|
249
363
|
const bareValue = versionedDataHandler.deserializeWithEmbeddedVersion(buffer);
|
|
250
364
|
return fromBare(bareValue);
|
|
251
365
|
} else {
|
|
252
|
-
|
|
366
|
+
_chunkDXXJPH55cjs.assertUnreachable.call(void 0, encoding);
|
|
253
367
|
}
|
|
254
368
|
}
|
|
255
369
|
|
|
@@ -264,5 +378,5 @@ function deserializeWithEncoding(encoding, buffer, versionedDataHandler, zodSche
|
|
|
264
378
|
|
|
265
379
|
|
|
266
380
|
|
|
267
|
-
exports.uint8ArrayToBase64 = uint8ArrayToBase64; exports.contentTypeForEncoding = contentTypeForEncoding; exports.encodeCborCompat = encodeCborCompat; exports.decodeCborCompat = decodeCborCompat; exports.
|
|
268
|
-
//# sourceMappingURL=chunk-
|
|
381
|
+
exports.uint8ArrayToBase64 = uint8ArrayToBase64; exports.contentTypeForEncoding = contentTypeForEncoding; exports.encodeCborCompat = encodeCborCompat; exports.decodeCborCompat = decodeCborCompat; exports.serializeWithEncoding = serializeWithEncoding; exports.deserializeWithEncoding = deserializeWithEncoding; exports.assertJsonCompatValue = assertJsonCompatValue; exports.EncodingSchema = EncodingSchema; exports.inputDataToBuffer = inputDataToBuffer; exports.jsonStringifyCompat = jsonStringifyCompat;
|
|
382
|
+
//# sourceMappingURL=chunk-3677IIOV.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-3677IIOV.cjs","../../src/serde.ts","../../src/common/encoding.ts"],"names":[],"mappings":"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","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/rivetkit/dist/tsup/chunk-3677IIOV.cjs","sourcesContent":[null,"import * as cbor from \"cbor-x\";\nimport invariant from \"invariant\";\nimport type { VersionedDataHandler } from \"vbare\";\nimport type { z } from \"zod/v4\";\nimport type { Encoding, JsonCompatValue } from \"@/common/encoding\";\nimport { assertUnreachable } from \"@/common/utils\";\nimport {\n\tencodeJsonCompatValue,\n\tjsonParseCompat,\n\tjsonStringifyCompat,\n\treviveJsonCompatValue,\n} from \"./common/encoding\";\n\nexport function uint8ArrayToBase64(uint8Array: Uint8Array): string {\n\t// Check if Buffer is available (Node.js)\n\tif (typeof Buffer !== \"undefined\") {\n\t\treturn Buffer.from(uint8Array).toString(\"base64\");\n\t}\n\n\t// Browser environment - use btoa\n\tlet binary = \"\";\n\tconst len = uint8Array.byteLength;\n\tfor (let i = 0; i < len; i++) {\n\t\tbinary += String.fromCharCode(uint8Array[i]);\n\t}\n\treturn btoa(binary);\n}\n\nexport function encodingIsBinary(encoding: Encoding): boolean {\n\tif (encoding === \"json\") {\n\t\treturn false;\n\t} else if (encoding === \"cbor\" || encoding === \"bare\") {\n\t\treturn true;\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function contentTypeForEncoding(encoding: Encoding): string {\n\tif (encoding === \"json\") {\n\t\treturn \"application/json\";\n\t} else if (encoding === \"cbor\" || encoding === \"bare\") {\n\t\treturn \"application/octet-stream\";\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function encodeCborCompat(value: JsonCompatValue): Uint8Array {\n\treturn cbor.encode(encodeJsonCompatValue(value));\n}\n\nexport function decodeCborCompat<T>(buffer: Uint8Array): T {\n\treturn reviveJsonCompatValue(cbor.decode(buffer)) as T;\n}\n\nexport function decodeCborJsonCompat<T>(buffer: Uint8Array): T {\n\treturn reviveJsonCompatValue(cbor.decode(buffer), {\n\t\tcoerceSafeIntegerBigInts: true,\n\t}) as T;\n}\n\nexport function wsBinaryTypeForEncoding(\n\tencoding: Encoding,\n): \"arraybuffer\" | \"blob\" {\n\tif (encoding === \"json\") {\n\t\treturn \"blob\";\n\t} else if (encoding === \"cbor\" || encoding === \"bare\") {\n\t\treturn \"arraybuffer\";\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function serializeWithEncoding<TBare, TJson, T = TBare>(\n\tencoding: Encoding,\n\tvalue: T,\n\tversionedDataHandler: VersionedDataHandler<TBare> | undefined,\n\tversion: number | undefined,\n\tzodSchema: z.ZodType<TJson>,\n\ttoJson: (value: T) => TJson,\n\ttoBare: (value: T) => TBare,\n): Uint8Array | string {\n\tif (encoding === \"json\") {\n\t\tconst jsonValue = toJson(value);\n\t\tconst validated = zodSchema.parse(jsonValue);\n\t\treturn jsonStringifyCompat(validated);\n\t} else if (encoding === \"cbor\") {\n\t\tconst jsonValue = toJson(value);\n\t\tconst validated = zodSchema.parse(jsonValue);\n\t\treturn cbor.encode(validated);\n\t} else if (encoding === \"bare\") {\n\t\tif (!versionedDataHandler) {\n\t\t\tthrow new Error(\n\t\t\t\t\"VersionedDataHandler is required for 'bare' encoding\",\n\t\t\t);\n\t\t}\n\t\tif (version === undefined) {\n\t\t\tthrow new Error(\"version is required for 'bare' encoding\");\n\t\t}\n\t\tconst bareValue = toBare(value);\n\t\treturn versionedDataHandler.serializeWithEmbeddedVersion(\n\t\t\tbareValue,\n\t\t\tversion,\n\t\t);\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n\nexport function deserializeWithEncoding<TBare, TJson, T = TBare>(\n\tencoding: Encoding,\n\tbuffer: Uint8Array | string,\n\tversionedDataHandler: VersionedDataHandler<TBare> | undefined,\n\tzodSchema: z.ZodType<TJson>,\n\tfromJson: (value: TJson) => T,\n\tfromBare: (value: TBare) => T,\n): T {\n\tif (encoding === \"json\") {\n\t\tlet parsed: unknown;\n\t\tif (typeof buffer === \"string\") {\n\t\t\tparsed = jsonParseCompat(buffer);\n\t\t} else {\n\t\t\tconst decoder = new TextDecoder(\"utf-8\");\n\t\t\tconst jsonString = decoder.decode(buffer);\n\t\t\tparsed = jsonParseCompat(jsonString);\n\t\t}\n\t\tconst validated = zodSchema.parse(parsed);\n\t\treturn fromJson(validated);\n\t} else if (encoding === \"cbor\") {\n\t\tinvariant(\n\t\t\ttypeof buffer !== \"string\",\n\t\t\t\"buffer cannot be string for cbor encoding\",\n\t\t);\n\t\t// Decode CBOR to get JavaScript values (similar to JSON.parse)\n\t\tconst decoded = decodeCborCompat(buffer);\n\t\t// Validate with Zod schema (CBOR produces same structure as JSON)\n\t\tconst validated = zodSchema.parse(decoded);\n\t\t// CBOR decoding produces JS objects, use fromJson\n\t\treturn fromJson(validated);\n\t} else if (encoding === \"bare\") {\n\t\tinvariant(\n\t\t\ttypeof buffer !== \"string\",\n\t\t\t\"buffer cannot be string for bare encoding\",\n\t\t);\n\t\tif (!versionedDataHandler) {\n\t\t\tthrow new Error(\n\t\t\t\t\"VersionedDataHandler is required for 'bare' encoding\",\n\t\t\t);\n\t\t}\n\t\tconst bareValue =\n\t\t\tversionedDataHandler.deserializeWithEmbeddedVersion(buffer);\n\t\treturn fromBare(bareValue);\n\t} else {\n\t\tassertUnreachable(encoding);\n\t}\n}\n","import type { VersionedDataHandler } from \"vbare\";\nimport { z } from \"zod/v4\";\nimport { serializeWithEncoding } from \"@/serde\";\nimport { assertUnreachable } from \"./utils\";\n\n/** Data that can be deserialized. */\nexport type InputData = string | Buffer | Blob | ArrayBufferLike | Uint8Array;\n\n/** Data that's been serialized. */\nexport type OutputData = string | Uint8Array;\n\nconst JSON_COMPAT_BIGINT = \"$BigInt\";\nconst JSON_COMPAT_ARRAY_BUFFER = \"$ArrayBuffer\";\nconst JSON_COMPAT_UINT8_ARRAY = \"$Uint8Array\";\nconst JSON_COMPAT_UNDEFINED = \"$Undefined\";\nconst JSON_COMPAT_SET = \"$Set\";\n\n/**\n * Types that cbor-x encodes natively without any compat transforms.\n */\nexport type CborSerializable =\n\t| string\n\t| number\n\t| boolean\n\t| null\n\t| undefined\n\t| bigint\n\t| Date\n\t| RegExp\n\t| Error\n\t| ArrayBuffer\n\t| Uint8Array\n\t| Uint8ClampedArray\n\t| Uint16Array\n\t| Uint32Array\n\t| BigUint64Array\n\t| Int8Array\n\t| Int16Array\n\t| Int32Array\n\t| BigInt64Array\n\t| Float32Array\n\t| Float64Array\n\t| CborSerializable[]\n\t| Map<CborSerializable, CborSerializable>\n\t| { [key: string]: CborSerializable };\n\n/**\n * User-facing serializable type. Extends CborSerializable with Set (encoded\n * as a `$Set` tagged array by the JSON compat layer).\n */\nexport type JsonCompatValue =\n\t| CborSerializable\n\t| Set<JsonCompatValue>\n\t| JsonCompatValue[]\n\t| Map<JsonCompatValue, JsonCompatValue>\n\t| { [key: string]: JsonCompatValue };\n\nfunction isTypedArray(value: unknown): boolean {\n\treturn (\n\t\tvalue instanceof Uint8ClampedArray ||\n\t\tvalue instanceof Uint16Array ||\n\t\tvalue instanceof Uint32Array ||\n\t\tvalue instanceof BigUint64Array ||\n\t\tvalue instanceof Int8Array ||\n\t\tvalue instanceof Int16Array ||\n\t\tvalue instanceof Int32Array ||\n\t\tvalue instanceof BigInt64Array ||\n\t\tvalue instanceof Float32Array ||\n\t\tvalue instanceof Float64Array\n\t);\n}\n\n/**\n * Recursively validates that a value is CBOR serializable. Throws TypeError\n * with a descriptive message for non-serializable values.\n */\nexport function assertJsonCompatValue(\n\tvalue: unknown,\n\tpath = \"\",\n): asserts value is JsonCompatValue {\n\tif (\n\t\tvalue === null ||\n\t\tvalue === undefined ||\n\t\ttypeof value === \"string\" ||\n\t\ttypeof value === \"number\" ||\n\t\ttypeof value === \"boolean\" ||\n\t\ttypeof value === \"bigint\"\n\t) {\n\t\treturn;\n\t}\n\n\tif (typeof value === \"function\") {\n\t\tthrow new TypeError(\n\t\t\t`Value at ${path || \"root\"} is a function and is not CBOR serializable`,\n\t\t);\n\t}\n\n\tif (typeof value === \"symbol\") {\n\t\tthrow new TypeError(\n\t\t\t`Value at ${path || \"root\"} is a symbol and is not CBOR serializable`,\n\t\t);\n\t}\n\n\tif (\n\t\tvalue instanceof Date ||\n\t\tvalue instanceof RegExp ||\n\t\tvalue instanceof Error ||\n\t\tvalue instanceof ArrayBuffer ||\n\t\tvalue instanceof Uint8Array ||\n\t\tisTypedArray(value)\n\t) {\n\t\treturn;\n\t}\n\n\tif (value instanceof WeakMap) {\n\t\tthrow new TypeError(\n\t\t\t`Value at ${path || \"root\"} is a WeakMap and is not CBOR serializable`,\n\t\t);\n\t}\n\n\tif (value instanceof WeakSet) {\n\t\tthrow new TypeError(\n\t\t\t`Value at ${path || \"root\"} is a WeakSet and is not CBOR serializable`,\n\t\t);\n\t}\n\n\tif (value instanceof WeakRef) {\n\t\tthrow new TypeError(\n\t\t\t`Value at ${path || \"root\"} is a WeakRef and is not CBOR serializable`,\n\t\t);\n\t}\n\n\tif (value instanceof Promise) {\n\t\tthrow new TypeError(\n\t\t\t`Value at ${path || \"root\"} is a Promise and is not CBOR serializable`,\n\t\t);\n\t}\n\n\tif (value instanceof Map) {\n\t\tfor (const [k, v] of value.entries()) {\n\t\t\tassertJsonCompatValue(k, `${path || \"root\"}.key(${String(k)})`);\n\t\t\tassertJsonCompatValue(v, `${path || \"root\"}.value(${String(k)})`);\n\t\t}\n\t\treturn;\n\t}\n\n\tif (value instanceof Set) {\n\t\tlet index = 0;\n\t\tfor (const item of value.values()) {\n\t\t\tassertJsonCompatValue(item, `${path || \"root\"}.set[${index}]`);\n\t\t\tindex++;\n\t\t}\n\t\treturn;\n\t}\n\n\tif (Array.isArray(value)) {\n\t\tfor (let i = 0; i < value.length; i++) {\n\t\t\tassertJsonCompatValue(value[i], `${path || \"root\"}[${i}]`);\n\t\t}\n\t\treturn;\n\t}\n\n\tif (isPlainObject(value)) {\n\t\tfor (const key in value) {\n\t\t\tassertJsonCompatValue(\n\t\t\t\tvalue[key as keyof typeof value],\n\t\t\t\tpath ? `${path}.${key}` : key,\n\t\t\t);\n\t\t}\n\t\treturn;\n\t}\n\n\tconst typeName =\n\t\ttypeof value === \"object\" && value !== null\n\t\t\t? (value.constructor?.name ?? typeof value)\n\t\t\t: typeof value;\n\tthrow new TypeError(\n\t\t`Value at ${path || \"root\"} of type \"${typeName}\" is not CBOR serializable`,\n\t);\n}\n\nexport const EncodingSchema = z.enum([\"json\", \"cbor\", \"bare\"]);\n\n/**\n * Encoding used to communicate between the client & actor.\n */\nexport type Encoding = z.infer<typeof EncodingSchema>;\n\n/**\n * Helper class that helps serialize data without re-serializing for the same encoding.\n */\nexport class CachedSerializer<TBare, TJson, T = TBare> {\n\t#data: T;\n\t#cache = new Map<Encoding, OutputData>();\n\t#versionedDataHandler: VersionedDataHandler<TBare>;\n\t#version: number;\n\t#zodSchema: z.ZodType<TJson>;\n\t#toJson: (value: T) => TJson;\n\t#toBare: (value: T) => TBare;\n\n\tconstructor(\n\t\tdata: T,\n\t\tversionedDataHandler: VersionedDataHandler<TBare>,\n\t\tversion: number,\n\t\tzodSchema: z.ZodType<TJson>,\n\t\ttoJson: (value: T) => TJson,\n\t\ttoBare: (value: T) => TBare,\n\t) {\n\t\tthis.#data = data;\n\t\tthis.#versionedDataHandler = versionedDataHandler;\n\t\tthis.#version = version;\n\t\tthis.#zodSchema = zodSchema;\n\t\tthis.#toJson = toJson;\n\t\tthis.#toBare = toBare;\n\t}\n\n\tpublic get rawData(): T {\n\t\treturn this.#data;\n\t}\n\n\tpublic serialize(encoding: Encoding): OutputData {\n\t\tconst cached = this.#cache.get(encoding);\n\t\tif (cached) {\n\t\t\treturn cached;\n\t\t}\n\n\t\tconst serialized = serializeWithEncoding(\n\t\t\tencoding,\n\t\t\tthis.#data,\n\t\t\tthis.#versionedDataHandler,\n\t\t\tthis.#version,\n\t\t\tthis.#zodSchema,\n\t\t\tthis.#toJson,\n\t\t\tthis.#toBare,\n\t\t);\n\t\tthis.#cache.set(encoding, serialized);\n\t\treturn serialized;\n\t}\n}\n\nexport async function inputDataToBuffer(\n\tdata: InputData,\n): Promise<Uint8Array | string> {\n\tif (typeof data === \"string\") {\n\t\treturn data;\n\t}\n\tif (data instanceof Blob) {\n\t\treturn new Uint8Array(await data.arrayBuffer());\n\t}\n\tif (data instanceof Uint8Array) {\n\t\treturn data;\n\t}\n\tif (data instanceof ArrayBuffer || data instanceof SharedArrayBuffer) {\n\t\treturn new Uint8Array(data);\n\t}\n\tthrow new Error(\"Malformed message\");\n}\n\nfunction base64EncodeUint8Array(uint8Array: Uint8Array): string {\n\tlet binary = \"\";\n\tfor (const value of uint8Array) {\n\t\tbinary += String.fromCharCode(value);\n\t}\n\treturn btoa(binary);\n}\n\nfunction base64EncodeArrayBuffer(arrayBuffer: ArrayBuffer): string {\n\treturn base64EncodeUint8Array(new Uint8Array(arrayBuffer));\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n\tif (value === null || typeof value !== \"object\") {\n\t\treturn false;\n\t}\n\n\tconst proto = Object.getPrototypeOf(value);\n\treturn proto === Object.prototype || proto === null;\n}\n\nexport function encodeJsonCompatValue(input: JsonCompatValue): unknown {\n\t// Primitives\n\tif (input === null) {\n\t\treturn input;\n\t}\n\tif (input === undefined) {\n\t\treturn [JSON_COMPAT_UNDEFINED, 0];\n\t}\n\tif (\n\t\ttypeof input === \"string\" ||\n\t\ttypeof input === \"number\" ||\n\t\ttypeof input === \"boolean\"\n\t) {\n\t\treturn input;\n\t}\n\tif (typeof input === \"bigint\") {\n\t\treturn [JSON_COMPAT_BIGINT, input.toString()];\n\t}\n\n\t// Binary types with custom encoding\n\tif (input instanceof ArrayBuffer) {\n\t\treturn [JSON_COMPAT_ARRAY_BUFFER, base64EncodeArrayBuffer(input)];\n\t}\n\tif (input instanceof Uint8Array) {\n\t\treturn [JSON_COMPAT_UINT8_ARRAY, base64EncodeUint8Array(input)];\n\t}\n\n\t// TypedArrays pass through for cbor-x native handling\n\tif (isTypedArray(input)) {\n\t\treturn input;\n\t}\n\n\t// Date, RegExp, and Error pass through for cbor-x native handling\n\tif (\n\t\tinput instanceof Date ||\n\t\tinput instanceof RegExp ||\n\t\tinput instanceof Error\n\t) {\n\t\treturn input;\n\t}\n\n\t// Set uses custom tag encoding\n\tif (input instanceof Set) {\n\t\tconst encoded = [...input.values()].map((v) =>\n\t\t\tencodeJsonCompatValue(v as JsonCompatValue),\n\t\t);\n\t\treturn [JSON_COMPAT_SET, encoded];\n\t}\n\n\t// Map recurses into keys and values\n\tif (input instanceof Map) {\n\t\tconst encoded = new Map<unknown, unknown>();\n\t\tfor (const [k, v] of input.entries()) {\n\t\t\tencoded.set(\n\t\t\t\tencodeJsonCompatValue(k as JsonCompatValue),\n\t\t\t\tencodeJsonCompatValue(v as JsonCompatValue),\n\t\t\t);\n\t\t}\n\t\treturn encoded;\n\t}\n\n\t// Arrays\n\tif (Array.isArray(input)) {\n\t\tconst encoded = input.map((value) =>\n\t\t\tencodeJsonCompatValue(value as JsonCompatValue),\n\t\t);\n\t\tif (\n\t\t\tencoded.length === 2 &&\n\t\t\ttypeof encoded[0] === \"string\" &&\n\t\t\t(encoded[0] as string).startsWith(\"$\")\n\t\t) {\n\t\t\treturn [`$${encoded[0]}`, encoded[1]];\n\t\t}\n\t\treturn encoded;\n\t}\n\n\t// Plain objects\n\tif (isPlainObject(input)) {\n\t\tconst encoded: Record<string, unknown> = {};\n\t\tfor (const [key, value] of Object.entries(input)) {\n\t\t\tencoded[key] = encodeJsonCompatValue(value as JsonCompatValue);\n\t\t}\n\t\treturn encoded;\n\t}\n\n\t// Not serializable\n\tconst typeName =\n\t\ttypeof input === \"object\" && input !== null\n\t\t\t? ((input as object).constructor?.name ?? typeof input)\n\t\t\t: typeof input;\n\tthrow new TypeError(`Value of type \"${typeName}\" is not CBOR serializable`);\n}\n\nexport interface JsonCompatReviveOptions {\n\tcoerceSafeIntegerBigInts?: boolean;\n}\n\nexport function reviveJsonCompatValue(\n\tinput: any,\n\toptions: JsonCompatReviveOptions = {},\n): any {\n\tif (typeof input === \"bigint\") {\n\t\tif (\n\t\t\toptions.coerceSafeIntegerBigInts &&\n\t\t\tinput >= BigInt(Number.MIN_SAFE_INTEGER) &&\n\t\t\tinput <= BigInt(Number.MAX_SAFE_INTEGER)\n\t\t) {\n\t\t\treturn Number(input);\n\t\t}\n\t\treturn input;\n\t}\n\tif (input instanceof Map) {\n\t\tconst revived = new Map();\n\t\tfor (const [k, v] of input.entries()) {\n\t\t\trevived.set(\n\t\t\t\treviveJsonCompatValue(k, options),\n\t\t\t\treviveJsonCompatValue(v, options),\n\t\t\t);\n\t\t}\n\t\treturn revived;\n\t}\n\tif (Array.isArray(input)) {\n\t\tif (\n\t\t\tinput.length === 2 &&\n\t\t\ttypeof input[0] === \"string\" &&\n\t\t\tinput[0].startsWith(\"$\")\n\t\t) {\n\t\t\tif (input[0] === JSON_COMPAT_BIGINT) {\n\t\t\t\treturn BigInt(input[1]);\n\t\t\t}\n\t\t\tif (input[0] === JSON_COMPAT_ARRAY_BUFFER) {\n\t\t\t\treturn base64DecodeToArrayBuffer(input[1]);\n\t\t\t}\n\t\t\tif (input[0] === JSON_COMPAT_UINT8_ARRAY) {\n\t\t\t\treturn base64DecodeToUint8Array(input[1]);\n\t\t\t}\n\t\t\tif (input[0] === JSON_COMPAT_UNDEFINED) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif (input[0] === JSON_COMPAT_SET) {\n\t\t\t\tconst items = (input[1] as unknown[]).map((v) =>\n\t\t\t\t\treviveJsonCompatValue(v, options),\n\t\t\t\t);\n\t\t\t\treturn new Set(items);\n\t\t\t}\n\t\t\tif (input[0].startsWith(\"$$\")) {\n\t\t\t\treturn [\n\t\t\t\t\tinput[0].substring(1),\n\t\t\t\t\treviveJsonCompatValue(input[1], options),\n\t\t\t\t];\n\t\t\t}\n\t\t\tthrow new Error(\n\t\t\t\t`Unknown JSON encoding type: ${input[0]}. This may indicate corrupted data or a version mismatch.`,\n\t\t\t);\n\t\t}\n\t\treturn input.map((value) => reviveJsonCompatValue(value, options));\n\t}\n\tif (isPlainObject(input)) {\n\t\tconst decoded: Record<string, unknown> = {};\n\t\tfor (const [key, value] of Object.entries(input)) {\n\t\t\tdecoded[key] = reviveJsonCompatValue(value, options);\n\t\t}\n\t\treturn decoded;\n\t}\n\treturn input;\n}\n\n/** Converts data that was encoded to a string. Some formats do not support raw binary data. */\nexport function encodeDataToString(message: OutputData): string {\n\tif (typeof message === \"string\") {\n\t\treturn message;\n\t}\n\tif (message instanceof Uint8Array) {\n\t\treturn base64EncodeUint8Array(message);\n\t}\n\tassertUnreachable(message);\n}\n\nfunction base64DecodeToUint8Array(base64: string): Uint8Array {\n\tif (typeof Buffer !== \"undefined\") {\n\t\treturn new Uint8Array(Buffer.from(base64, \"base64\"));\n\t}\n\n\tconst binary = atob(base64);\n\tconst bytes = new Uint8Array(binary.length);\n\tfor (let i = 0; i < binary.length; i++) {\n\t\tbytes[i] = binary.charCodeAt(i);\n\t}\n\treturn bytes;\n}\n\nfunction base64DecodeToArrayBuffer(base64: string): ArrayBuffer {\n\treturn base64DecodeToUint8Array(base64).buffer as ArrayBuffer;\n}\n\n/** Stringifies with compat for values that BARE & CBOR supports. */\nexport function jsonStringifyCompat(input: any): string {\n\treturn JSON.stringify(input, (_key, value) => {\n\t\tif (typeof value === \"bigint\") {\n\t\t\treturn [JSON_COMPAT_BIGINT, value.toString()];\n\t\t}\n\t\tif (value instanceof ArrayBuffer) {\n\t\t\treturn [JSON_COMPAT_ARRAY_BUFFER, base64EncodeArrayBuffer(value)];\n\t\t}\n\t\tif (value instanceof Uint8Array) {\n\t\t\treturn [JSON_COMPAT_UINT8_ARRAY, base64EncodeUint8Array(value)];\n\t\t}\n\t\tif (\n\t\t\tArray.isArray(value) &&\n\t\t\tvalue.length === 2 &&\n\t\t\ttypeof value[0] === \"string\" &&\n\t\t\tvalue[0].startsWith(\"$\")\n\t\t) {\n\t\t\treturn [`$${value[0]}`, value[1]];\n\t\t}\n\t\treturn value;\n\t});\n}\n\n/** Parses JSON with compat for values that BARE & CBOR supports. */\nexport function jsonParseCompat(input: string): any {\n\treturn reviveJsonCompatValue(JSON.parse(input));\n}\n"]}
|