Download packages/codemode/src/stdlib/url.ts from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 2.68 kB
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/codemode/src/stdlib/url.ts
- Command line
-
hf download hf://SaylorTwift/opencode/packages/codemode/src/stdlib/url.ts
-
curl -L -o url.ts https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/codemode/src/stdlib/url.ts
2.68 kB
| export const urlProperties = new Set([ | |
| "href", | |
| "origin", | |
| "protocol", | |
| "username", | |
| "password", | |
| "host", | |
| "hostname", | |
| "port", | |
| "pathname", | |
| "search", | |
| "hash", | |
| ]) | |
| export const urlWritableProperties = new Set([ | |
| "href", | |
| "protocol", | |
| "username", | |
| "password", | |
| "host", | |
| "hostname", | |
| "port", | |
| "pathname", | |
| "search", | |
| "hash", | |
| ]) | |
| export const urlMethods = new Set(["toString", "toJSON"]) | |
| export const urlStatics = new Set(["canParse", "parse"]) | |
| export const urlSearchParamsMethods = new Set([ | |
| "append", | |
| "delete", | |
| "get", | |
| "getAll", | |
| "has", | |
| "set", | |
| "sort", | |
| "forEach", | |
| "keys", | |
| "values", | |
| "entries", | |
| "toString", | |
| ]) | |
| export const uriArgument = (value: unknown, label: string): string => coerceToString(boundedData(value, label)) | |
| export const invokeUriFunction = (ref: UriFunction, args: Array<unknown>, node: AstNode): string => { | |
| const value = uriArgument(args[0], `${ref.name} input`) | |
| try { | |
| switch (ref.name) { | |
| case "encodeURI": | |
| return encodeURI(value) | |
| case "encodeURIComponent": | |
| return encodeURIComponent(value) | |
| case "decodeURI": | |
| return decodeURI(value) | |
| case "decodeURIComponent": | |
| return decodeURIComponent(value) | |
| } | |
| } catch (error) { | |
| throw new InterpreterRuntimeError( | |
| `${ref.name} received malformed URI data: ${error instanceof Error ? error.message : String(error)}`, | |
| node, | |
| ).as("URIError") | |
| } | |
| } | |
| export const urlArgument = (value: unknown, label: string): string => | |
| value instanceof SandboxURL ? value.url.href : uriArgument(value, label) | |
| export const invokeURLStatic = (name: string, args: Array<unknown>, node: AstNode): unknown => { | |
| if (!urlStatics.has(name)) throw new InterpreterRuntimeError(`URL.${name} is not available in CodeMode.`, node) | |
| if (args.length === 0) throw new InterpreterRuntimeError(`URL.${name} requires a URL argument.`, node).as("TypeError") | |
| const input = urlArgument(args[0], `URL.${name} input`) | |
| const base = args[1] === undefined ? undefined : urlArgument(args[1], `URL.${name} base`) | |
| try { | |
| const url = new URL(input, base) | |
| return name === "canParse" ? true : new SandboxURL(url) | |
| } catch { | |
| return name === "canParse" ? false : null | |
| } | |
| } | |
| export const invokeURLMethod = (value: SandboxURL, name: string, node: AstNode): string => { | |
| if (name === "toString" || name === "toJSON") return value.url.href | |
| throw new InterpreterRuntimeError(`URL method '${name}' is not available in CodeMode.`, node) | |
| } | |
| import { type AstNode, InterpreterRuntimeError, UriFunction } from "../interpreter/model.js" | |
| import { SandboxURL } from "../values.js" | |
| import { boundedData, coerceToString } from "./value.js" | |