UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

35 lines (34 loc) 1.5 kB
import { n as getWorkerDeployJson5 } from "./worker-deploy-runtime-registry-ytJIJf-o.js"; import { createRequire } from "node:module"; //#region src/utils/parse-json-compat.ts /** * JSON parser compatibility helper for persisted config, manifests, and legacy stores. * Strict JSON stays the fast path; JSON5 is only the authored/legacy fallback. */ let json5Runtime; function isJson5Parser(value) { return typeof value === "object" && value !== null && "parse" in value && typeof value.parse === "function"; } function setJson5Runtime(runtime) { const parser = isJson5Parser(runtime) ? runtime : typeof runtime === "object" && runtime !== null && "default" in runtime ? runtime.default : void 0; if (!isJson5Parser(parser)) throw new Error("json5 parser unavailable"); json5Runtime = parser; return parser; } function loadJson5Parser() { if (json5Runtime) return json5Runtime; const injected = getWorkerDeployJson5(); if (injected !== void 0) return setJson5Runtime(injected); if (typeof WORKER_DEPLOY_BUILD === "boolean" && WORKER_DEPLOY_BUILD) throw new Error("worker JSON5 runtime was not registered before use"); return setJson5Runtime(createRequire(import.meta.url)("json5")); } /** Parses strict JSON first, then accepts JSON5 syntax such as comments and trailing commas. */ function parseJsonWithJson5Fallback(raw, json5) { try { return JSON.parse(raw); } catch { return (json5 ?? loadJson5Parser()).parse(raw); } } //#endregion export { parseJsonWithJson5Fallback as t };