/
Alex_Ural
/
opencode
Обзор
Документация
Войти
/
Alex_Ural
/
opencode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/codemode/src/stdlib/json.ts
42 строки
2 KB
Aiden Cline
feat(codemode): sync v2 implementation (#35574)
06 июл 2026, 21:19
Не верифицирован
06 июл 2026, 21:19
d5aa79c
Код
Авторство
О чём код?
import { type AstNode, CodeModeFunction, InterpreterRuntimeError, supportedSyntaxMessage, } from "../interpreter/model.js" import { copyIn, copyOut } from "../tool-runtime.js" export const jsonStatics = new Set(["stringify", "parse"]) export const invokeJsonMethod = (name: string, args: Array<unknown>, node: AstNode): unknown => { if (!jsonStatics.has(name)) throw new InterpreterRuntimeError(`JSON.${name} is not available in CodeMode.`, node) switch (name) { case "stringify": { const replacer = args[1] if (Array.isArray(replacer) || replacer instanceof CodeModeFunction) { throw new InterpreterRuntimeError( "JSON.stringify replacers are not supported in CodeMode.", node, "UnsupportedSyntax", [supportedSyntaxMessage], ) } const space = args[2] const indent = typeof space === "number" || typeof space === "string" ? space : undefined return JSON.stringify(copyOut(copyIn(args[0], "JSON.stringify value")), null, indent) } case "parse": { const text = args[0] if (typeof text !== "string") throw new InterpreterRuntimeError("JSON.parse expects a string.", node) try { return copyIn(JSON.parse(text), "JSON.parse result") } catch (error) { throw new InterpreterRuntimeError( `JSON.parse received invalid JSON: ${error instanceof Error ? error.message : String(error)}`, node, ).as("SyntaxError") } } } throw new InterpreterRuntimeError(`JSON.${name} is not available in CodeMode.`, node) }