Download packages/codemode/src/stdlib/json.ts from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 1.6 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/codemode/src/stdlib/json.ts
- Command line
-
hf download hf://SaylorTwift/opencode/packages/codemode/src/stdlib/json.ts
-
curl -L -o json.ts https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/codemode/src/stdlib/json.ts
1.6 kB
| 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) | |
| } | |