| 391 | } |
| 392 | |
| 393 | function encodeBridgeValue(value: unknown): unknown { |
| 394 | const wrap = (type: string, fields: Record<string, unknown>) => ({ |
| 395 | __workspace_codec__: { version: 1, type, ...fields }, |
| 396 | }); |
| 397 | if (value instanceof Uint8Array) return wrap("bytes", { data: Array.from(value) }); |
| 398 | if (Array.isArray(value)) return wrap("array", { items: value.map(encodeBridgeValue) }); |
| 399 | if (value && typeof value === "object") { |
| 400 | return wrap("object", { |
| 401 | entries: Object.entries(value).map(([key, child]) => [key, encodeBridgeValue(child)]), |
| 402 | }); |
| 403 | } |
| 404 | return value; |
| 405 | } |
| 406 | |
| 407 | function decodeBridgeValue(value: unknown): unknown { |
| 408 | if (!value || typeof value !== "object" || Array.isArray(value)) return value; |