mirror of
https://github.com/stablyai/orca.git
synced 2026-11-13 09:27:29 +00:00
* refactor(tooling): organize test runtime and maintenance owners * test(tooling): preserve relocated runtime fixture dependency edges * refactor(tooling): preserve xterm routing owner checks * ci(tooling): include routing owner in sparse checkout * test(tooling): preserve copied workflow dependency closures * fix(tooling): normalize hashed JSON assets in release parity * fix(tooling): distinguish asset aliases from literal references * fix(tooling): frame normalized asset reference payloads * fix(tooling): normalize decoded JSON asset references * refactor(tooling): organize build, CI and release owners * fix(tooling): align moved generator and workflow path contracts * fix(tooling): update generated plugin bundle owner banners * test(tooling): create relocated mobile verifier fixture directories * test(tooling): copy headless detector dependency closure * test(tooling): align native batch policy fixtures with owner path * fix(tooling): link moved reliability command to historical evidence * fix(tooling): preserve nested sandbox owners and canonical guide source * fix(tooling): target release version owners in checkout fixture
31 lines
888 B
JavaScript
31 lines
888 B
JavaScript
import { parse, stringify } from 'devalue'
|
|
|
|
const reducers = {
|
|
Error: (value) =>
|
|
value instanceof Error && {
|
|
name: value.name,
|
|
message: value.message,
|
|
stack: value.stack,
|
|
cause: value.cause
|
|
}
|
|
}
|
|
|
|
const revivers = {
|
|
Error: ({ name, message, stack, cause }) => {
|
|
const error = new Error(message, cause === undefined ? undefined : { cause })
|
|
error.name = name
|
|
error.stack = stack
|
|
return error
|
|
}
|
|
}
|
|
|
|
// Preserves RegExp filters, cyclic test results, and Errors (e.g. a failed module fetch) across Bun/Node's JSON-only IPC.
|
|
export function encodeNodeRuntimeMessage(value) {
|
|
return stringify(value, reducers)
|
|
}
|
|
|
|
// Why pass non-strings through: tests that fake a parent with process.emit('message') reach this listener too.
|
|
export function decodeNodeRuntimeMessage(text) {
|
|
return typeof text === 'string' ? parse(text, revivers) : text
|
|
}
|