@ox-content/code-play 3.0.0-alpha.1 → 3.0.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"client.mjs","names":["parseResponse","hostFromUrl","parseResponse","hostFromUrl","hostFromUrl"],"sources":["../src/timing.ts","../src/framework.ts","../src/stdio.ts","../src/go.ts","../src/transport.ts","../src/javascript-sandbox.ts","../src/runtime-host.ts","../src/javascript.ts","../src/remote.ts","../src/rust.ts","../src/strip-typescript.ts","../src/typescript.ts","../src/adapters.ts","../src/result.ts","../src/session.ts","../src/client.ts"],"sourcesContent":["import type { TimingPhase, TimingReport } from \"./types\";\n\nexport class PhaseTracker {\n readonly startedAt: number;\n private readonly phases: TimingPhase[] = [];\n private current: { id: string; label: string; startMs: number } | undefined;\n\n constructor(now: () => number = nowMs) {\n this.now = now;\n this.startedAt = now();\n }\n\n private readonly now: () => number;\n\n start(id: string, label: string): void {\n this.stop();\n this.current = { id, label, startMs: this.now() - this.startedAt };\n }\n\n stop(): void {\n if (!this.current) {\n return;\n }\n const durationMs = Math.max(0, this.now() - this.startedAt - this.current.startMs);\n this.phases.push({\n id: this.current.id,\n label: this.current.label,\n startMs: this.current.startMs,\n durationMs,\n });\n this.current = undefined;\n }\n\n report(): TimingReport {\n this.stop();\n return {\n totalMs: Math.max(0, this.now() - this.startedAt),\n phases: this.phases.slice(),\n };\n }\n}\n\nexport function nowMs(): number {\n return typeof performance !== \"undefined\" ? performance.now() : Date.now();\n}\n\nexport function emptyTiming(): TimingReport {\n return { totalMs: 0, phases: [] };\n}\n","import { escapeHtml } from \"./escape\";\nimport { PhaseTracker } from \"./timing\";\nimport type { AdapterRequest, AdapterResult, FrameworkId } from \"./types\";\n\nconst RUNTIMES: Record<FrameworkId, { specifier: string; cdn: string }> = {\n vue: { specifier: \"vue\", cdn: \"https://esm.sh/vue@3\" },\n react: { specifier: \"react\", cdn: \"https://esm.sh/react@19\" },\n svelte: { specifier: \"svelte\", cdn: \"https://esm.sh/svelte@5\" },\n solid: { specifier: \"solid-js\", cdn: \"https://esm.sh/solid-js@1\" },\n};\n\nexport async function runFramework(request: AdapterRequest): Promise<AdapterResult> {\n const tracker = new PhaseTracker();\n tracker.start(\"compile\", \"Compile preview\");\n const framework = request.definition.framework ?? \"vue\";\n const html = buildPreviewDocument(framework, request.code);\n tracker.stop();\n return {\n status: \"ok\",\n stdio: [],\n diagnostics: [],\n provenance: {\n compile: { host: \"local\", runtime: `${framework}-preview` },\n execute: { host: \"iframe\", runtime: framework, sandbox: \"srcdoc\" },\n },\n timing: tracker.report(),\n preview: { kind: \"html\", html },\n };\n}\n\nexport function buildPreviewDocument(framework: FrameworkId, code: string): string {\n const runtime = RUNTIMES[framework];\n return `<!doctype html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <title>${escapeHtml(framework)} preview</title>\n <script type=\"importmap\">${JSON.stringify({ imports: { [runtime.specifier]: runtime.cdn } })}</script>\n <style>html,body{margin:0;padding:1rem;font:14px/1.5 system-ui,sans-serif;}</style>\n</head>\n<body>\n <div id=\"app\"></div>\n <script type=\"module\">\n${indentPreview(code)}\n </script>\n</body>\n</html>\n`;\n}\n\nfunction indentPreview(code: string): string {\n return code\n .replace(/<\\/script/gi, \"<\\\\/script\")\n .split(\"\\n\")\n .map((line) => ` ${line}`)\n .join(\"\\n\");\n}\n","import type { StdioEvent, StdioStream } from \"./types\";\n\nexport class StdioBuffer {\n readonly events: StdioEvent[] = [];\n private readonly startedAt: number;\n\n constructor(startedAt = 0) {\n this.startedAt = startedAt;\n }\n\n push(stream: StdioStream, text: string, timestampMs = elapsed(this.startedAt)): StdioEvent {\n const event: StdioEvent = { stream, text, timestampMs };\n this.events.push(event);\n return event;\n }\n\n snapshot(): StdioEvent[] {\n return this.events.slice();\n }\n}\n\nexport function joinStream(events: StdioEvent[], stream: StdioStream): string {\n return events\n .filter((event) => event.stream === stream)\n .map((event) => event.text)\n .join(\"\");\n}\n\nexport function selectStream(events: StdioEvent[], stream: StdioStream): StdioEvent[] {\n return events.filter((event) => event.stream === stream);\n}\n\nexport function withStdioText<T extends { stdio: StdioEvent[] }>(\n result: T,\n): T & { stdout: string; stderr: string } {\n return {\n ...result,\n stdout: joinStream(result.stdio, \"stdout\"),\n stderr: joinStream(result.stdio, \"stderr\"),\n };\n}\n\nexport function formatConsoleArgs(args: unknown[]): string {\n return `${args.map(formatConsoleArg).join(\" \")}\\n`;\n}\n\nfunction formatConsoleArg(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n if (typeof value === \"number\" || typeof value === \"boolean\" || typeof value === \"bigint\") {\n return String(value);\n }\n if (value === undefined) {\n return \"undefined\";\n }\n if (value === null) {\n return \"null\";\n }\n try {\n return JSON.stringify(value);\n } catch {\n return Object.prototype.toString.call(value);\n }\n}\n\nfunction elapsed(startedAt: number): number {\n const now = typeof performance !== \"undefined\" ? performance.now() : Date.now();\n return Math.max(0, now - startedAt);\n}\n","import { StdioBuffer } from \"./stdio\";\nimport { PhaseTracker } from \"./timing\";\nimport type { AdapterRequest, AdapterResult, Diagnostic } from \"./types\";\n\ninterface GoPlaygroundEvent {\n Message?: string;\n Kind?: string;\n Delay?: number;\n}\n\ninterface GoPlaygroundResponse {\n Errors?: string;\n Events?: GoPlaygroundEvent[];\n VetErrors?: string;\n}\n\nexport async function runGo(\n request: AdapterRequest,\n mode: \"execute\" | \"typecheck\",\n): Promise<AdapterResult> {\n const tracker = new PhaseTracker();\n const stdio = new StdioBuffer(tracker.startedAt);\n const params = new URLSearchParams({\n version: \"2\",\n body: request.code,\n withVet: request.config.withVet === false ? \"false\" : \"true\",\n });\n\n tracker.start(\n mode === \"typecheck\" ? \"typecheck\" : \"compile\",\n mode === \"typecheck\" ? \"Typecheck\" : \"Compile\",\n );\n const response = await request.transport.request({\n url: request.endpoints.go,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: params.toString(),\n signal: request.signal,\n });\n tracker.start(\"collect\", \"Collect output\");\n\n const parsed = parseResponse(response.text);\n const diagnostics = [\n ...parseGoErrors(parsed.Errors ?? \"\", \"go\"),\n ...parseGoErrors(parsed.VetErrors ?? \"\", \"vet\"),\n ];\n for (const event of parsed.Events ?? []) {\n const stream = event.Kind === \"stderr\" ? \"stderr\" : \"stdout\";\n stdio.push(stream, event.Message ?? \"\");\n }\n if (parsed.Errors) {\n stdio.push(\"stderr\", parsed.Errors);\n }\n\n tracker.stop();\n const failed = diagnostics.some((item) => item.severity === \"error\") || !response.ok;\n return {\n status: failed ? \"error\" : \"ok\",\n stdio: stdio.snapshot(),\n diagnostics,\n provenance: {\n compile: {\n host: hostFromUrl(request.endpoints.go),\n runtime: \"go\",\n },\n execute:\n mode === \"execute\"\n ? {\n host: hostFromUrl(request.endpoints.go),\n runtime: \"go-playground\",\n sandbox: \"playground\",\n }\n : undefined,\n },\n timing: tracker.report(),\n };\n}\n\nfunction parseResponse(text: string): GoPlaygroundResponse {\n try {\n return JSON.parse(text) as GoPlaygroundResponse;\n } catch {\n return { Errors: text };\n }\n}\n\nexport function parseGoErrors(output: string, source: string): Diagnostic[] {\n if (!output.trim()) {\n return [];\n }\n return output\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter(Boolean)\n .map((line) => {\n const match = /^(?:prog\\.go:)?(\\d+)(?::(\\d+))?:\\s*(.*)$/.exec(line);\n return {\n message: match?.[3] ?? line,\n severity: \"error\" as const,\n line: match?.[1] ? Number(match[1]) : undefined,\n column: match?.[2] ? Number(match[2]) : undefined,\n source,\n };\n });\n}\n\nfunction hostFromUrl(url: string): string {\n try {\n return new URL(url, \"https://code-play.local\").host || url;\n } catch {\n return url;\n }\n}\n","import type { CodePlayTransport, TransportRequest, TransportResponse } from \"./types\";\n\nexport function createFetchTransport(fetchImpl: typeof fetch = fetch): CodePlayTransport {\n return {\n async request(input: TransportRequest): Promise<TransportResponse> {\n const response = await fetchImpl(input.url, {\n method: input.method,\n headers: input.headers,\n body: input.body,\n signal: input.signal,\n });\n return {\n ok: response.ok,\n status: response.status,\n text: await response.text(),\n };\n },\n };\n}\n\nexport function createMemoryTransport(\n handler: (input: TransportRequest) => TransportResponse | Promise<TransportResponse>,\n): CodePlayTransport {\n return {\n async request(input) {\n if (input.signal?.aborted) {\n throw abortError();\n }\n return handler(input);\n },\n };\n}\n\nexport class MissingTransportError extends Error {\n constructor(host: string) {\n super(`No Code Play transport is configured for ${host}.`);\n this.name = \"MissingTransportError\";\n }\n}\n\nexport function abortError(): Error {\n const error = new Error(\"The Code Play run was cancelled.\");\n error.name = \"AbortError\";\n return error;\n}\n\nexport function isAbortError(error: unknown): boolean {\n return Boolean(\n error && typeof error === \"object\" && \"name\" in error && error.name === \"AbortError\",\n );\n}\n\nexport function createUnavailableTransport(): CodePlayTransport {\n return {\n request(input) {\n if (input.signal?.aborted) {\n return Promise.reject(abortError());\n }\n return Promise.reject(new MissingTransportError(input.url));\n },\n };\n}\n","import type { StdioBuffer } from \"./stdio\";\nimport { abortError } from \"./transport\";\n\nexport const JS_SANDBOX_FLAGS = \"allow-scripts\";\n\nexport function embedJson(value: unknown): string {\n return JSON.stringify(value).replace(/</g, \"\\\\u003c\");\n}\n\nexport function buildJavaScriptSandboxDocument(code: string, messageId: string): string {\n return `<!doctype html><html><head><meta charset=\"utf-8\"></head><body><script>\n(function () {\n var id = ${embedJson(messageId)};\n var stdout = [];\n var stderr = [];\n function format(args) {\n return Array.prototype.map.call(args, function (value) {\n if (typeof value === \"string\") return value;\n if (value === undefined) return \"undefined\";\n if (value === null) return \"null\";\n try { return JSON.stringify(value); } catch (error) { return String(value); }\n }).join(\" \") + \"\\\\n\";\n }\n var consoleLike = {\n log: function () { stdout.push(format(arguments)); },\n info: function () { stdout.push(format(arguments)); },\n warn: function () { stderr.push(format(arguments)); },\n error: function () { stderr.push(format(arguments)); }\n };\n try {\n var run = new Function(\"console\", ${embedJson(`\"use strict\";\\n${code}`)});\n var value = run(consoleLike);\n parent.postMessage({\n id: id,\n stdout: stdout,\n stderr: stderr,\n value: value === undefined ? undefined : String(value)\n }, \"*\");\n } catch (error) {\n var message = error && error.message ? String(error.message) : String(error);\n parent.postMessage({ id: id, stdout: stdout, stderr: stderr, error: message }, \"*\");\n }\n})();\n</script></body></html>`;\n}\n\nexport interface SandboxMessage {\n id?: string;\n stdout?: string[];\n stderr?: string[];\n value?: string;\n error?: string;\n}\n\nexport function applySandboxStreams(stdio: StdioBuffer, message: SandboxMessage): void {\n for (const text of message.stdout ?? []) {\n stdio.push(\"stdout\", text);\n }\n for (const text of message.stderr ?? []) {\n stdio.push(\"stderr\", text);\n }\n}\n\nexport async function executeInSandboxIframe(\n code: string,\n timeoutMs: number,\n stdio: StdioBuffer,\n signal?: AbortSignal,\n): Promise<unknown> {\n if (typeof document === \"undefined\" || typeof window === \"undefined\") {\n throw new Error(\"JavaScript sandbox iframe needs a document.\");\n }\n if (signal?.aborted) {\n throw abortError();\n }\n const messageId = `ox-code-play-${Math.random().toString(36).slice(2)}`;\n return new Promise((resolve, reject) => {\n const frame = document.createElement(\"iframe\");\n frame.setAttribute(\"sandbox\", JS_SANDBOX_FLAGS);\n frame.setAttribute(\"title\", \"Code Play JavaScript sandbox\");\n frame.hidden = true;\n const cleanup = () => {\n window.clearTimeout(timer);\n window.removeEventListener(\"message\", onMessage);\n signal?.removeEventListener(\"abort\", onAbort);\n frame.remove();\n };\n const onAbort = () => {\n cleanup();\n reject(abortError());\n };\n const onMessage = (event: MessageEvent<SandboxMessage>) => {\n if (event.source !== frame.contentWindow || event.data?.id !== messageId) {\n return;\n }\n cleanup();\n applySandboxStreams(stdio, event.data);\n if (event.data.error) {\n reject(new Error(event.data.error));\n return;\n }\n resolve(event.data.value);\n };\n const timer = window.setTimeout(() => {\n cleanup();\n reject(\n Object.assign(new Error(\"JavaScript execution timed out.\"), {\n code: \"ERR_SCRIPT_EXECUTION_TIMEOUT\",\n }),\n );\n }, timeoutMs);\n window.addEventListener(\"message\", onMessage);\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n frame.srcdoc = buildJavaScriptSandboxDocument(code, messageId);\n document.body.append(frame);\n });\n}\n","/** True when the current isolate can load `node:vm`. */\nexport function hasNodeVm(): boolean {\n return typeof process !== \"undefined\" && Boolean(process.versions?.node);\n}\n","import { executeInSandboxIframe } from \"./javascript-sandbox\";\nimport { hasNodeVm } from \"./runtime-host\";\nimport { formatConsoleArgs, StdioBuffer } from \"./stdio\";\nimport { PhaseTracker } from \"./timing\";\nimport { abortError, isAbortError } from \"./transport\";\nimport type { AdapterRequest, AdapterResult, Diagnostic } from \"./types\";\n\nexport async function runJavaScript(request: AdapterRequest): Promise<AdapterResult> {\n const tracker = new PhaseTracker();\n tracker.start(\"execute\", \"Execute\");\n const stdio = new StdioBuffer(tracker.startedAt);\n const provenance = {\n execute: {\n host: \"local\",\n runtime: hasNodeVm() ? \"node:vm\" : \"iframe\",\n sandbox: hasNodeVm() ? \"vm\" : \"srcdoc\",\n },\n };\n\n try {\n const value = await executeScript(request.code, request.timeoutMs, stdio, request.signal);\n tracker.stop();\n return {\n status: \"ok\",\n stdio: stdio.snapshot(),\n diagnostics: [],\n provenance,\n timing: tracker.report(),\n value: value === undefined ? undefined : String(value),\n };\n } catch (error) {\n if (isAbortError(error) || request.signal?.aborted) {\n throw error;\n }\n tracker.stop();\n const diagnostic = toDiagnostic(error);\n stdio.push(\"stderr\", `${diagnostic.message}\\n`);\n return {\n status: isTimeout(error) ? \"timeout\" : \"error\",\n stdio: stdio.snapshot(),\n diagnostics: [diagnostic],\n provenance,\n timing: tracker.report(),\n };\n }\n}\n\nexport async function executeScript(\n code: string,\n timeoutMs: number,\n stdio: StdioBuffer,\n signal?: AbortSignal,\n): Promise<unknown> {\n const consoleLike = {\n log: (...args: unknown[]) => stdio.push(\"stdout\", formatConsoleArgs(args)),\n info: (...args: unknown[]) => stdio.push(\"stdout\", formatConsoleArgs(args)),\n warn: (...args: unknown[]) => stdio.push(\"stderr\", formatConsoleArgs(args)),\n error: (...args: unknown[]) => stdio.push(\"stderr\", formatConsoleArgs(args)),\n };\n\n if (signal?.aborted) {\n throw abortError();\n }\n\n const runtime = javascriptExecuteRuntime(hasNodeVm(), typeof document !== \"undefined\");\n if (runtime === \"vm\") {\n const vm = await import(\"node:vm\");\n const context = vm.createContext({ console: consoleLike });\n return vm.runInContext(code, context, { timeout: timeoutMs, displayErrors: true });\n }\n\n return executeInSandboxIframe(code, timeoutMs, stdio, signal);\n}\n\nexport function javascriptExecuteRuntime(hasVm: boolean, hasDocument: boolean): \"vm\" | \"iframe\" {\n if (hasVm) {\n return \"vm\";\n }\n if (hasDocument) {\n return \"iframe\";\n }\n throw new Error(\"JavaScript execute needs node:vm or a document for the sandbox iframe.\");\n}\n\nfunction isTimeout(error: unknown): boolean {\n return Boolean(\n error &&\n typeof error === \"object\" &&\n \"code\" in error &&\n error.code === \"ERR_SCRIPT_EXECUTION_TIMEOUT\",\n );\n}\n\nfunction toDiagnostic(error: unknown): Diagnostic {\n if (isErrorLike(error)) {\n return { message: error.message, severity: \"error\", source: \"javascript\" };\n }\n return { message: String(error), severity: \"error\", source: \"javascript\" };\n}\n\nfunction isErrorLike(error: unknown): error is { message: string } {\n return Boolean(\n error &&\n typeof error === \"object\" &&\n \"message\" in error &&\n typeof error.message === \"string\" &&\n error.message.length > 0,\n );\n}\n","import { StdioBuffer } from \"./stdio\";\nimport { PhaseTracker } from \"./timing\";\nimport type { AdapterRequest, AdapterResult } from \"./types\";\n\ninterface PistonExecuteResponse {\n compile?: { stdout?: string; stderr?: string; code?: number };\n run?: { stdout?: string; stderr?: string; code?: number; signal?: string | null };\n message?: string;\n}\n\nexport async function runRemote(request: AdapterRequest): Promise<AdapterResult> {\n const tracker = new PhaseTracker();\n const stdio = new StdioBuffer(tracker.startedAt);\n const endpoint = request.enabled.endpoint;\n const language = request.definition.remote?.pistonLanguage ?? request.definition.id;\n\n if (!endpoint) {\n tracker.stop();\n return {\n status: \"unsupported\",\n stdio: [],\n diagnostics: [\n {\n message:\n `${request.definition.name} execution needs a configured HTTP executor. ` +\n `Pass languages.${request.definition.id}.endpoint (Piston-compatible).`,\n severity: \"error\",\n source: \"code-play\",\n },\n ],\n provenance: {},\n timing: tracker.report(),\n };\n }\n\n tracker.start(\"queue\", \"Queue\");\n tracker.start(\"compile\", \"Compile / execute\");\n const response = await request.transport.request({\n url: joinEndpoint(endpoint, \"execute\"),\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n language,\n version: request.config.version ?? request.definition.remote?.pistonVersion ?? \"*\",\n files: [{ content: request.code }],\n }),\n signal: request.signal,\n });\n tracker.start(\"collect\", \"Collect output\");\n\n const parsed = parseResponse(response.text);\n if (parsed.compile?.stdout) {\n stdio.push(\"stdout\", parsed.compile.stdout);\n }\n if (parsed.compile?.stderr) {\n stdio.push(\"stderr\", parsed.compile.stderr);\n }\n if (parsed.run?.stdout) {\n stdio.push(\"stdout\", parsed.run.stdout);\n }\n if (parsed.run?.stderr) {\n stdio.push(\"stderr\", parsed.run.stderr);\n }\n if (parsed.message && !parsed.run && !parsed.compile) {\n stdio.push(\"stderr\", `${parsed.message}\\n`);\n }\n\n const compileFailed = (parsed.compile?.code ?? 0) !== 0;\n const runFailed = (parsed.run?.code ?? 0) !== 0 || Boolean(parsed.run?.signal);\n const failed =\n !response.ok || compileFailed || runFailed || Boolean(parsed.message && !parsed.run);\n tracker.stop();\n\n return {\n status: failed ? \"error\" : \"ok\",\n stdio: stdio.snapshot(),\n diagnostics: failed\n ? [\n {\n message:\n parsed.message ??\n parsed.run?.stderr ??\n parsed.compile?.stderr ??\n \"Remote execution failed.\",\n severity: \"error\",\n source: language,\n },\n ]\n : [],\n provenance: {\n compile: parsed.compile\n ? { host: hostFromUrl(endpoint), runtime: language, sandbox: \"piston\" }\n : undefined,\n execute: { host: hostFromUrl(endpoint), runtime: language, sandbox: \"piston\" },\n },\n timing: tracker.report(),\n };\n}\n\nfunction parseResponse(text: string): PistonExecuteResponse {\n try {\n return JSON.parse(text) as PistonExecuteResponse;\n } catch {\n return { message: text };\n }\n}\n\nfunction joinEndpoint(endpoint: string, action: string): string {\n const trimmed = endpoint.replace(/\\/+$/, \"\");\n return trimmed.endsWith(action) ? trimmed : `${trimmed}/${action}`;\n}\n\nfunction hostFromUrl(url: string): string {\n try {\n return new URL(url, \"https://code-play.local\").host || url;\n } catch {\n return url;\n }\n}\n","import { StdioBuffer } from \"./stdio\";\nimport { PhaseTracker } from \"./timing\";\nimport type { AdapterRequest, AdapterResult, Diagnostic } from \"./types\";\n\ninterface RustPlaygroundResponse {\n success?: boolean;\n stdout?: string;\n stderr?: string;\n error?: string;\n}\n\nexport async function runRust(\n request: AdapterRequest,\n mode: \"execute\" | \"typecheck\",\n): Promise<AdapterResult> {\n const tracker = new PhaseTracker();\n const stdio = new StdioBuffer(tracker.startedAt);\n const crateType = resolveCrateType(request.code, String(request.config.crateType ?? \"auto\"));\n const body = {\n channel: request.config.channel ?? \"stable\",\n mode: request.config.mode ?? \"debug\",\n edition: String(request.config.edition ?? \"2024\"),\n crateType,\n tests: false,\n code: request.code,\n backtrace: false,\n };\n\n tracker.start(\n mode === \"typecheck\" ? \"typecheck\" : \"compile\",\n mode === \"typecheck\" ? \"Typecheck\" : \"Compile\",\n );\n const response = await request.transport.request({\n url: request.endpoints.rust,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n signal: request.signal,\n });\n tracker.start(\"collect\", \"Collect output\");\n\n const parsed = parseResponse(response.text);\n const diagnostics = parseRustcDiagnostics(parsed.stderr ?? parsed.error ?? \"\");\n if (parsed.stdout) {\n stdio.push(\"stdout\", parsed.stdout);\n }\n if (parsed.stderr) {\n stdio.push(\"stderr\", parsed.stderr);\n }\n if (parsed.error && !parsed.stderr) {\n stdio.push(\"stderr\", parsed.error);\n }\n\n const success = parsed.success === true && response.ok;\n const compileFailed = diagnostics.some((item) => item.severity === \"error\") || !success;\n tracker.stop();\n\n return {\n status: compileFailed ? \"error\" : \"ok\",\n stdio: stdio.snapshot(),\n diagnostics,\n provenance: {\n compile: {\n host: hostFromUrl(request.endpoints.rust),\n runtime: \"rustc\",\n version: String(request.config.channel ?? \"stable\"),\n target: crateType,\n },\n execute:\n mode === \"execute\"\n ? {\n host: hostFromUrl(request.endpoints.rust),\n runtime: \"rust-playground\",\n sandbox: \"playground\",\n }\n : undefined,\n },\n timing: tracker.report(),\n };\n}\n\nfunction resolveCrateType(code: string, configured: string): \"bin\" | \"lib\" {\n if (configured === \"bin\" || configured === \"lib\") {\n return configured;\n }\n return /(?:^|\\b)(?:async\\s+)?fn\\s+main\\s*\\(/.test(code) ? \"bin\" : \"lib\";\n}\n\nfunction parseResponse(text: string): RustPlaygroundResponse {\n try {\n return JSON.parse(text) as RustPlaygroundResponse;\n } catch {\n return { success: false, error: text };\n }\n}\n\nexport function parseRustcDiagnostics(stderr: string): Diagnostic[] {\n const diagnostics: Diagnostic[] = [];\n const pattern = /^(error|warning|note)(?:\\[([^\\]]+)\\])?:\\s+(.*)$/gm;\n for (const match of stderr.matchAll(pattern)) {\n const severity = match[1] === \"warning\" ? \"warning\" : match[1] === \"note\" ? \"info\" : \"error\";\n diagnostics.push({\n message: match[3] ?? \"\",\n severity,\n source: match[2] ? `rustc ${match[2]}` : \"rustc\",\n });\n }\n return diagnostics;\n}\n\nfunction hostFromUrl(url: string): string {\n try {\n return new URL(url, \"https://code-play.local\").host || url;\n } catch {\n return url;\n }\n}\n","/**\n * Conservative TypeScript-to-JavaScript stripper for documentation samples.\n * Full checking goes through tsgo; this path only needs to run the snippet.\n */\nexport function stripTypeScript(code: string): string {\n return code\n .replace(/^\\s*import\\s+type\\s+.*$/gm, \"\")\n .replace(/^\\s*export\\s+type\\s+\\w[\\s\\S]*?;\\s*$/gm, \"\")\n .replace(/^\\s*type\\s+\\w[\\s\\S]*?;\\s*$/gm, \"\")\n .replace(/^\\s*(?:export\\s+)?interface\\s+\\w[\\s\\S]*?\\{[\\s\\S]*?\\n\\}\\s*$/gm, \"\")\n .replace(/\\s+as\\s+const\\b/g, \"\")\n .replace(/\\s+as\\s+[^=,;)\\n]+/g, \"\")\n .replace(/\\s+satisfies\\s+[^=,;)\\n]+/g, \"\")\n .replace(/\\)\\s*:\\s*[^{;=\\n]+/g, \")\")\n .replace(/([?]?)\\s*:\\s*[^,)=;{\\n]+/g, \"$1\");\n}\n","import { executeScript } from \"./javascript\";\nimport { hasNodeVm } from \"./runtime-host\";\nimport { isAbortError } from \"./transport\";\nimport { StdioBuffer } from \"./stdio\";\nimport { stripTypeScript } from \"./strip-typescript\";\nimport { PhaseTracker } from \"./timing\";\nimport type { AdapterRequest, AdapterResult, Diagnostic, TransportResponse } from \"./types\";\n\nexport type TypecheckBackend = \"endpoint\" | \"tsgo\" | \"unavailable\";\n\nexport function resolveTypecheckBackend(\n hasVm: boolean,\n typecheckUrl: string | undefined,\n): TypecheckBackend {\n if (typecheckUrl && !hasVm) {\n return \"endpoint\";\n }\n if (!hasVm) {\n return \"unavailable\";\n }\n return \"tsgo\";\n}\n\nexport async function typecheckTypeScript(request: AdapterRequest): Promise<AdapterResult> {\n const tracker = new PhaseTracker();\n tracker.start(\"typecheck\", \"Typecheck\");\n const backend = resolveTypecheckBackend(hasNodeVm(), request.endpoints.typecheck);\n\n if (backend === \"endpoint\") {\n return typecheckViaEndpoint(request, tracker);\n }\n if (backend === \"unavailable\") {\n tracker.stop();\n return {\n status: \"unsupported\",\n stdio: [],\n diagnostics: [\n {\n message:\n \"Typecheck needs a reachable endpoints.typecheck. The Vite /__ox-code-play/typecheck proxy exists only during vite dev.\",\n severity: \"error\",\n source: \"tsgo\",\n },\n ],\n provenance: { compile: { host: \"local\", runtime: \"tsgo\" } },\n timing: tracker.report(),\n };\n }\n\n try {\n const diagnostics = await typecheckWithTsgo(\n request.code,\n String(request.config.tsgoCommand ?? \"tsgo\"),\n );\n tracker.stop();\n return {\n status: diagnostics.some((item) => item.severity === \"error\") ? \"error\" : \"ok\",\n stdio: [],\n diagnostics,\n provenance: { compile: { host: \"local\", runtime: \"tsgo\" } },\n timing: tracker.report(),\n };\n } catch (error) {\n if (isAbortError(error) || request.signal?.aborted) {\n throw error;\n }\n tracker.stop();\n const message = error instanceof Error ? error.message : String(error);\n return {\n status: message.includes(\"ENOENT\") ? \"unsupported\" : \"error\",\n stdio: [],\n diagnostics: [\n {\n message: message.includes(\"ENOENT\")\n ? \"tsgo is not available. Install @typescript/native-preview or set languages.typescript.config.tsgoCommand.\"\n : message,\n severity: \"error\",\n source: \"tsgo\",\n },\n ],\n provenance: { compile: { host: \"local\", runtime: \"tsgo\" } },\n timing: tracker.report(),\n };\n }\n}\n\nexport async function runTypeScript(request: AdapterRequest): Promise<AdapterResult> {\n const tracker = new PhaseTracker();\n const stdio = new StdioBuffer(tracker.startedAt);\n tracker.start(\"compile\", \"Strip types\");\n const javascript = stripTypeScript(request.code);\n tracker.start(\"execute\", \"Execute\");\n try {\n const value = await executeScript(javascript, request.timeoutMs, stdio, request.signal);\n tracker.stop();\n return {\n status: \"ok\",\n stdio: stdio.snapshot(),\n diagnostics: [],\n provenance: {\n compile: { host: \"local\", runtime: \"strip-types\" },\n execute: {\n host: \"local\",\n runtime: hasNodeVm() ? \"node:vm\" : \"iframe\",\n sandbox: hasNodeVm() ? \"vm\" : \"srcdoc\",\n },\n },\n timing: tracker.report(),\n value: value === undefined ? undefined : String(value),\n };\n } catch (error) {\n if (isAbortError(error) || request.signal?.aborted) {\n throw error;\n }\n tracker.stop();\n const message = error instanceof Error ? error.message : String(error);\n stdio.push(\"stderr\", `${message}\\n`);\n return {\n status: \"error\",\n stdio: stdio.snapshot(),\n diagnostics: [{ message, severity: \"error\", source: \"javascript\" }],\n provenance: {\n compile: { host: \"local\", runtime: \"strip-types\" },\n execute: {\n host: \"local\",\n runtime: hasNodeVm() ? \"node:vm\" : \"iframe\",\n sandbox: hasNodeVm() ? \"vm\" : \"srcdoc\",\n },\n },\n timing: tracker.report(),\n };\n }\n}\n\nasync function typecheckViaEndpoint(\n request: AdapterRequest,\n tracker: PhaseTracker,\n): Promise<AdapterResult> {\n const url = request.endpoints.typecheck ?? \"\";\n const response = await request.transport.request({\n url,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ language: \"typescript\", code: request.code, config: request.config }),\n signal: request.signal,\n });\n tracker.stop();\n return adapterResultFromTypecheckResponse(response, url, tracker);\n}\n\nexport function typecheckEndpointFailureMessage(status: number, text: string): string {\n if (status === 404 || status === 405) {\n return \"Typecheck needs a reachable endpoints.typecheck. The Vite /__ox-code-play/typecheck proxy exists only during vite dev.\";\n }\n const trimmed = text.trim();\n return trimmed || \"Typecheck endpoint failed.\";\n}\n\nexport function adapterResultFromTypecheckResponse(\n response: TransportResponse,\n url: string,\n tracker: PhaseTracker,\n): AdapterResult {\n if (!response.ok) {\n return {\n status: \"error\",\n stdio: [],\n diagnostics: [\n {\n message: typecheckEndpointFailureMessage(response.status, response.text),\n severity: \"error\",\n source: \"tsgo\",\n },\n ],\n provenance: { compile: { host: hostFromUrl(url), runtime: \"tsgo\" } },\n timing: tracker.report(),\n };\n }\n try {\n return JSON.parse(response.text) as AdapterResult;\n } catch {\n return {\n status: \"error\",\n stdio: [],\n diagnostics: [\n {\n message: response.text || \"Typecheck endpoint failed.\",\n severity: \"error\",\n source: \"tsgo\",\n },\n ],\n provenance: { compile: { host: hostFromUrl(url), runtime: \"tsgo\" } },\n timing: tracker.report(),\n };\n }\n}\n\nexport async function typecheckWithTsgo(code: string, command = \"tsgo\"): Promise<Diagnostic[]> {\n const [{ mkdtemp, rm, writeFile }, { tmpdir }, { join }, { execFile }, { promisify }] =\n await Promise.all([\n import(\"node:fs/promises\"),\n import(\"node:os\"),\n import(\"node:path\"),\n import(\"node:child_process\"),\n import(\"node:util\"),\n ]);\n const execFileAsync = promisify(execFile);\n const dir = await mkdtemp(join(tmpdir(), \"ox-code-play-\"));\n const file = join(dir, \"snippet.ts\");\n await writeFile(file, code);\n try {\n await execFileAsync(command, [\"--noEmit\", \"--pretty\", \"false\", \"--strict\", file], {\n cwd: dir,\n maxBuffer: 1024 * 1024,\n });\n return [];\n } catch (error) {\n const output = commandOutput(error);\n if ((error as { code?: string }).code === \"ENOENT\") {\n throw error;\n }\n return parseTsgoOutput(output);\n } finally {\n await rm(dir, { recursive: true, force: true });\n }\n}\n\nexport function parseTsgoOutput(output: string): Diagnostic[] {\n const diagnostics: Diagnostic[] = [];\n const pattern =\n /^(?:.*[\\\\/])?snippet\\.ts\\((\\d+),(\\d+)\\):\\s+(error|warning|info)\\s+TS\\d+:\\s+(.*)$/gm;\n for (const match of output.matchAll(pattern)) {\n diagnostics.push({\n message: match[4] ?? output,\n severity: match[3] === \"warning\" ? \"warning\" : match[3] === \"info\" ? \"info\" : \"error\",\n line: Number(match[1]),\n column: Number(match[2]),\n source: \"tsgo\",\n });\n }\n if (diagnostics.length === 0 && output.trim()) {\n diagnostics.push({ message: output.trim(), severity: \"error\", source: \"tsgo\" });\n }\n return diagnostics;\n}\n\nfunction commandOutput(error: unknown): string {\n if (!error || typeof error !== \"object\") {\n return String(error);\n }\n const value = error as { stdout?: unknown; stderr?: unknown; message?: unknown };\n return [value.stdout, value.stderr, value.message]\n .filter((part): part is string => typeof part === \"string\" && part.trim().length > 0)\n .join(\"\\n\")\n .trim();\n}\n\nfunction hostFromUrl(url: string): string {\n try {\n return new URL(url, \"https://code-play.local\").host || url;\n } catch {\n return url;\n }\n}\n","import { runFramework } from \"./framework\";\nimport { runGo } from \"./go\";\nimport { runJavaScript } from \"./javascript\";\nimport { runRemote } from \"./remote\";\nimport { runRust } from \"./rust\";\nimport { runTypeScript, typecheckTypeScript } from \"./typescript\";\nimport type { AdapterRequest, AdapterResult } from \"./types\";\n\nexport async function executeAdapter(request: AdapterRequest): Promise<AdapterResult> {\n if (!request.enabled.execute) {\n return capabilityDisabled(request, \"execute\");\n }\n switch (request.definition.backend) {\n case \"javascript\":\n return runJavaScript(request);\n case \"typescript\":\n return runTypeScript(request);\n case \"framework\":\n return runFramework(request);\n case \"rust-playground\":\n return runRust(request, \"execute\");\n case \"go-playground\":\n return runGo(request, \"execute\");\n case \"remote\":\n return runRemote(request);\n default:\n return capabilityDisabled(request, \"execute\");\n }\n}\n\nexport async function typecheckAdapter(request: AdapterRequest): Promise<AdapterResult> {\n if (!request.enabled.typecheck || !request.definition.capabilities.typecheck) {\n return capabilityDisabled(request, \"typecheck\");\n }\n switch (request.definition.backend) {\n case \"typescript\":\n return typecheckTypeScript(request);\n case \"rust-playground\":\n return runRust(request, \"typecheck\");\n case \"go-playground\":\n return runGo(request, \"typecheck\");\n default:\n return capabilityDisabled(request, \"typecheck\");\n }\n}\n\nfunction capabilityDisabled(\n request: AdapterRequest,\n action: \"execute\" | \"typecheck\",\n): AdapterResult {\n return {\n status: \"unsupported\",\n stdio: [],\n diagnostics: [\n {\n message: `${request.definition.name} ${action} is not enabled.`,\n severity: \"error\",\n source: \"code-play\",\n },\n ],\n provenance: {},\n timing: { totalMs: 0, phases: [] },\n };\n}\n","import { withStdioText } from \"./stdio\";\nimport { emptyTiming } from \"./timing\";\nimport type { RunResult, RunStatus } from \"./types\";\n\nexport function errorMessage(error: unknown): string {\n return error instanceof Error && error.message ? error.message : String(error);\n}\n\nexport function friendlyTransportMessage(error: unknown): string {\n const message = errorMessage(error);\n const typeError =\n error instanceof TypeError || (error instanceof Error && error.name === \"TypeError\");\n if (\n typeError &&\n /failed to fetch|networkerror|load failed|network request failed/i.test(message)\n ) {\n return \"The executor could not be reached from this page (often CORS). Set endpoints to a host that allows browser POST, or use the Vite dev proxy.\";\n }\n return message;\n}\n\nexport function errorResult(\n message: string,\n source = \"code-play\",\n status: RunStatus = \"error\",\n): RunResult {\n return withStdioText({\n status,\n stdio: [],\n diagnostics: [\n {\n message,\n severity: status === \"cancelled\" ? \"info\" : \"error\",\n source,\n },\n ],\n provenance: {},\n timing: emptyTiming(),\n });\n}\n","import { executeAdapter, typecheckAdapter } from \"./adapters\";\nimport { mergeConfig } from \"./config\";\nimport { friendlyTransportMessage, errorResult } from \"./result\";\nimport { withStdioText } from \"./stdio\";\nimport { isAbortError } from \"./transport\";\nimport type {\n AdapterRequest,\n CodePlayTransport,\n PlaygroundEndpoints,\n ResolvedLanguageEnable,\n RunResult,\n SessionEventMap,\n SessionEventName,\n SessionInput,\n TypeScriptLike,\n} from \"./types\";\nimport type { LanguageDefinition } from \"./types\";\n\ntype Listener<T> = (value: T) => void;\n\nexport class CodePlaySession {\n readonly language: LanguageDefinition;\n code: string;\n config: Record<string, unknown>;\n lastResult: RunResult | undefined;\n\n /** Last run's concatenated stdout (same as `lastResult.stdout`). */\n get stdout(): string {\n return this.lastResult?.stdout ?? \"\";\n }\n\n /** Last run's concatenated stderr (same as `lastResult.stderr`). */\n get stderr(): string {\n return this.lastResult?.stderr ?? \"\";\n }\n\n private readonly enabled: ResolvedLanguageEnable;\n private readonly timeoutMs: number;\n private readonly transport: CodePlayTransport;\n private readonly endpoints: PlaygroundEndpoints;\n private readonly loadTypeScript?: () => Promise<TypeScriptLike | undefined>;\n private readonly listeners = new Map<SessionEventName, Set<Listener<unknown>>>();\n private abort: AbortController | undefined;\n\n constructor(input: SessionConstructorInput) {\n this.language = input.definition;\n this.enabled = input.enabled;\n this.code = input.code;\n this.config = mergeConfig(input.definition.id, input.enabled, input.config);\n this.timeoutMs = input.timeoutMs;\n this.transport = input.transport;\n this.endpoints = input.endpoints;\n this.loadTypeScript = input.loadTypeScript;\n }\n\n on<K extends SessionEventName>(event: K, listener: Listener<SessionEventMap[K]>): () => void {\n const bucket = this.listeners.get(event) ?? new Set();\n bucket.add(listener as Listener<unknown>);\n this.listeners.set(event, bucket);\n return () => bucket.delete(listener as Listener<unknown>);\n }\n\n setCode(code: string): void {\n this.code = code;\n }\n\n setConfig(config: Record<string, unknown>): void {\n this.config = { ...this.config, ...config };\n this.emit(\"config\", this.config);\n }\n\n async run(): Promise<RunResult> {\n return this.dispatch(\"execute\");\n }\n\n async typecheck(): Promise<RunResult> {\n return this.dispatch(\"typecheck\");\n }\n\n cancel(): void {\n this.abort?.abort();\n }\n\n private async dispatch(action: \"execute\" | \"typecheck\"): Promise<RunResult> {\n this.abort?.abort();\n this.abort = new AbortController();\n const { signal } = this.abort;\n const request: AdapterRequest = {\n definition: this.language,\n enabled: this.enabled,\n code: this.code,\n config: this.config,\n timeoutMs: this.timeoutMs,\n transport: this.transport,\n loadTypeScript: this.loadTypeScript,\n endpoints: this.endpoints,\n signal,\n };\n try {\n const result = withStdioText(\n action === \"typecheck\" ? await typecheckAdapter(request) : await executeAdapter(request),\n );\n return this.finish(result);\n } catch (error) {\n if (signal.aborted || isAbortError(error)) {\n return this.finish(errorResult(\"Run cancelled.\", \"code-play\", \"cancelled\"));\n }\n return this.finish(errorResult(friendlyTransportMessage(error)));\n }\n }\n\n private finish(result: RunResult): RunResult {\n this.lastResult = result;\n for (const event of result.stdio) {\n this.emit(\"stdio\", event);\n }\n this.emit(\"result\", result);\n return result;\n }\n\n private emit<K extends SessionEventName>(event: K, value: SessionEventMap[K]): void {\n for (const listener of this.listeners.get(event) ?? []) {\n listener(value);\n }\n }\n}\n\nexport interface SessionConstructorInput extends SessionInput {\n definition: LanguageDefinition;\n enabled: ResolvedLanguageEnable;\n timeoutMs: number;\n transport: CodePlayTransport;\n endpoints: PlaygroundEndpoints;\n loadTypeScript?: () => Promise<TypeScriptLike | undefined>;\n}\n","import { resolveLanguage } from \"./catalog\";\nimport {\n resolveCodePlayOptions,\n type RawCodePlayOptions,\n type ResolvedCodePlayOptions,\n} from \"./config\";\nimport { CodePlaySession } from \"./session\";\nimport { createFetchTransport, createUnavailableTransport } from \"./transport\";\nimport type { CodePlayTransport, SessionInput, TypeScriptLike } from \"./types\";\n\nexport interface CodePlayClientOptions extends RawCodePlayOptions {\n transport?: CodePlayTransport;\n loadTypeScript?: () => Promise<TypeScriptLike | undefined>;\n}\n\nexport interface CodePlayClient {\n readonly options: ResolvedCodePlayOptions;\n createSession(input: SessionInput): CodePlaySession;\n hasLanguage(language: string): boolean;\n}\n\nexport function createCodePlay(options: CodePlayClientOptions = {}): CodePlayClient {\n const resolved = resolveCodePlayOptions(options);\n const transport = options.transport ?? defaultTransport();\n return {\n options: resolved,\n hasLanguage(language: string) {\n const definition = resolveLanguage(language);\n return Boolean(definition && resolved.languages.has(definition.id));\n },\n createSession(input: SessionInput) {\n const definition = resolveLanguage(input.language);\n if (!definition) {\n throw new Error(`Unknown Code Play language: ${input.language}.`);\n }\n const enabled = resolved.languages.get(definition.id);\n if (!enabled) {\n throw new Error(\n `${definition.name} is not enabled. Pass languages.${definition.id}: true to createCodePlay().`,\n );\n }\n return new CodePlaySession({\n ...input,\n definition,\n enabled,\n timeoutMs: resolved.timeoutMs,\n transport,\n endpoints: resolved.endpoints,\n loadTypeScript: options.loadTypeScript,\n });\n },\n };\n}\n\nfunction defaultTransport(): CodePlayTransport {\n if (typeof fetch === \"function\") {\n return createFetchTransport();\n }\n return createUnavailableTransport();\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"client.mjs","names":["parseResponse","hostFromUrl","parseResponse","hostFromUrl","hostFromUrl"],"sources":["../src/timing.ts","../src/framework.ts","../src/stdio.ts","../src/go.ts","../src/transport.ts","../src/javascript-sandbox.ts","../src/runtime-host.ts","../src/javascript.ts","../src/remote.ts","../src/rust.ts","../src/strip-typescript.ts","../src/typescript.ts","../src/adapters.ts","../src/result.ts","../src/session.ts","../src/client.ts"],"sourcesContent":["import type { TimingPhase, TimingReport } from \"./types\";\n\nexport class PhaseTracker {\n readonly startedAt: number;\n private readonly phases: TimingPhase[] = [];\n private current: { id: string; label: string; startMs: number } | undefined;\n\n constructor(now: () => number = nowMs) {\n this.now = now;\n this.startedAt = now();\n }\n\n private readonly now: () => number;\n\n start(id: string, label: string): void {\n this.stop();\n this.current = { id, label, startMs: this.now() - this.startedAt };\n }\n\n stop(): void {\n if (!this.current) {\n return;\n }\n const durationMs = Math.max(0, this.now() - this.startedAt - this.current.startMs);\n this.phases.push({\n id: this.current.id,\n label: this.current.label,\n startMs: this.current.startMs,\n durationMs,\n });\n this.current = undefined;\n }\n\n report(): TimingReport {\n this.stop();\n return {\n totalMs: Math.max(0, this.now() - this.startedAt),\n phases: this.phases.slice(),\n };\n }\n}\n\nexport function nowMs(): number {\n return typeof performance !== \"undefined\" ? performance.now() : Date.now();\n}\n\nexport function emptyTiming(): TimingReport {\n return { totalMs: 0, phases: [] };\n}\n","import { escapeHtml } from \"./escape\";\nimport { PhaseTracker } from \"./timing\";\nimport type { AdapterRequest, AdapterResult, FrameworkId } from \"./types\";\n\nconst RUNTIMES: Record<FrameworkId, { specifier: string; cdn: string }> = {\n vue: { specifier: \"vue\", cdn: \"https://esm.sh/vue@3\" },\n react: { specifier: \"react\", cdn: \"https://esm.sh/react@19\" },\n svelte: { specifier: \"svelte\", cdn: \"https://esm.sh/svelte@5\" },\n solid: { specifier: \"solid-js\", cdn: \"https://esm.sh/solid-js@1\" },\n};\n\nexport async function runFramework(request: AdapterRequest): Promise<AdapterResult> {\n const tracker = new PhaseTracker();\n tracker.start(\"compile\", \"Compile preview\");\n const framework = request.definition.framework ?? \"vue\";\n const html = buildPreviewDocument(framework, request.code);\n tracker.stop();\n return {\n status: \"ok\",\n stdio: [],\n diagnostics: [],\n provenance: {\n compile: { host: \"local\", runtime: `${framework}-preview` },\n execute: { host: \"iframe\", runtime: framework, sandbox: \"srcdoc\" },\n },\n timing: tracker.report(),\n preview: { kind: \"html\", html },\n };\n}\n\nexport function buildPreviewDocument(framework: FrameworkId, code: string): string {\n const runtime = RUNTIMES[framework];\n return `<!doctype html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <title>${escapeHtml(framework)} preview</title>\n <script type=\"importmap\">${JSON.stringify({ imports: { [runtime.specifier]: runtime.cdn } })}</script>\n <style>html,body{margin:0;padding:1rem;font:14px/1.5 system-ui,sans-serif;}</style>\n</head>\n<body>\n <div id=\"app\"></div>\n <script type=\"module\">\n${indentPreview(code)}\n </script>\n</body>\n</html>\n`;\n}\n\nfunction indentPreview(code: string): string {\n return code\n .replace(/<\\/script/gi, \"<\\\\/script\")\n .split(\"\\n\")\n .map((line) => ` ${line}`)\n .join(\"\\n\");\n}\n","import type { StdioEvent, StdioStream } from \"./types\";\n\nexport class StdioBuffer {\n readonly events: StdioEvent[] = [];\n private readonly startedAt: number;\n\n constructor(startedAt = 0) {\n this.startedAt = startedAt;\n }\n\n push(stream: StdioStream, text: string, timestampMs = elapsed(this.startedAt)): StdioEvent {\n const event: StdioEvent = { stream, text, timestampMs };\n this.events.push(event);\n return event;\n }\n\n snapshot(): StdioEvent[] {\n return this.events.slice();\n }\n}\n\nexport function joinStream(events: StdioEvent[], stream: StdioStream): string {\n return events\n .filter((event) => event.stream === stream)\n .map((event) => event.text)\n .join(\"\");\n}\n\nexport function selectStream(events: StdioEvent[], stream: StdioStream): StdioEvent[] {\n return events.filter((event) => event.stream === stream);\n}\n\nexport function withStdioText<T extends { stdio: StdioEvent[] }>(\n result: T,\n): T & { stdout: string; stderr: string } {\n return {\n ...result,\n stdout: joinStream(result.stdio, \"stdout\"),\n stderr: joinStream(result.stdio, \"stderr\"),\n };\n}\n\nexport function formatConsoleArgs(args: unknown[]): string {\n return `${args.map(formatConsoleArg).join(\" \")}\\n`;\n}\n\nfunction formatConsoleArg(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n if (typeof value === \"number\" || typeof value === \"boolean\" || typeof value === \"bigint\") {\n return String(value);\n }\n if (value === undefined) {\n return \"undefined\";\n }\n if (value === null) {\n return \"null\";\n }\n try {\n return JSON.stringify(value);\n } catch {\n return Object.prototype.toString.call(value);\n }\n}\n\nfunction elapsed(startedAt: number): number {\n const now = typeof performance !== \"undefined\" ? performance.now() : Date.now();\n return Math.max(0, now - startedAt);\n}\n","import { StdioBuffer } from \"./stdio\";\nimport { PhaseTracker } from \"./timing\";\nimport type { AdapterRequest, AdapterResult, Diagnostic } from \"./types\";\n\ninterface GoPlaygroundEvent {\n Message?: string;\n Kind?: string;\n Delay?: number;\n}\n\ninterface GoPlaygroundResponse {\n Errors?: string;\n Events?: GoPlaygroundEvent[];\n VetErrors?: string;\n}\n\nexport async function runGo(\n request: AdapterRequest,\n mode: \"execute\" | \"typecheck\",\n): Promise<AdapterResult> {\n const tracker = new PhaseTracker();\n const stdio = new StdioBuffer(tracker.startedAt);\n const params = new URLSearchParams({\n version: \"2\",\n body: request.code,\n withVet: request.config.withVet === false ? \"false\" : \"true\",\n });\n\n tracker.start(\n mode === \"typecheck\" ? \"typecheck\" : \"compile\",\n mode === \"typecheck\" ? \"Typecheck\" : \"Compile\",\n );\n const response = await request.transport.request({\n url: request.endpoints.go,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/x-www-form-urlencoded\" },\n body: params.toString(),\n signal: request.signal,\n });\n tracker.start(\"collect\", \"Collect output\");\n\n const parsed = parseResponse(response.text);\n const diagnostics = [\n ...parseGoErrors(parsed.Errors ?? \"\", \"go\"),\n ...parseGoErrors(parsed.VetErrors ?? \"\", \"vet\"),\n ];\n for (const event of parsed.Events ?? []) {\n const stream = event.Kind === \"stderr\" ? \"stderr\" : \"stdout\";\n stdio.push(stream, event.Message ?? \"\");\n }\n if (parsed.Errors) {\n stdio.push(\"stderr\", parsed.Errors);\n }\n\n tracker.stop();\n const failed = diagnostics.some((item) => item.severity === \"error\") || !response.ok;\n return {\n status: failed ? \"error\" : \"ok\",\n stdio: stdio.snapshot(),\n diagnostics,\n provenance: {\n compile: {\n host: hostFromUrl(request.endpoints.go),\n runtime: \"go\",\n },\n execute:\n mode === \"execute\"\n ? {\n host: hostFromUrl(request.endpoints.go),\n runtime: \"go-playground\",\n sandbox: \"playground\",\n }\n : undefined,\n },\n timing: tracker.report(),\n };\n}\n\nfunction parseResponse(text: string): GoPlaygroundResponse {\n try {\n return JSON.parse(text) as GoPlaygroundResponse;\n } catch {\n return { Errors: text };\n }\n}\n\nexport function parseGoErrors(output: string, source: string): Diagnostic[] {\n if (!output.trim()) {\n return [];\n }\n return output\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter(Boolean)\n .map((line) => {\n const match = /^(?:prog\\.go:)?(\\d+)(?::(\\d+))?:\\s*(.*)$/.exec(line);\n return {\n message: match?.[3] ?? line,\n severity: \"error\" as const,\n line: match?.[1] ? Number(match[1]) : undefined,\n column: match?.[2] ? Number(match[2]) : undefined,\n source,\n };\n });\n}\n\nfunction hostFromUrl(url: string): string {\n try {\n return new URL(url, \"https://code-play.local\").host || url;\n } catch {\n return url;\n }\n}\n","import type { CodePlayTransport, TransportRequest, TransportResponse } from \"./types\";\n\nexport function createFetchTransport(fetchImpl: typeof fetch = fetch): CodePlayTransport {\n return {\n async request(input: TransportRequest): Promise<TransportResponse> {\n const response = await fetchImpl(input.url, {\n method: input.method,\n headers: input.headers,\n body: input.body,\n signal: input.signal,\n });\n return {\n ok: response.ok,\n status: response.status,\n text: await response.text(),\n };\n },\n };\n}\n\nexport function createMemoryTransport(\n handler: (input: TransportRequest) => TransportResponse | Promise<TransportResponse>,\n): CodePlayTransport {\n return {\n async request(input) {\n if (input.signal?.aborted) {\n throw abortError();\n }\n return handler(input);\n },\n };\n}\n\nexport class MissingTransportError extends Error {\n constructor(host: string) {\n super(`No Code Play transport is configured for ${host}.`);\n this.name = \"MissingTransportError\";\n }\n}\n\nexport function abortError(): Error {\n const error = new Error(\"The Code Play run was cancelled.\");\n error.name = \"AbortError\";\n return error;\n}\n\nexport function isAbortError(error: unknown): boolean {\n return Boolean(\n error && typeof error === \"object\" && \"name\" in error && error.name === \"AbortError\",\n );\n}\n\nexport function createUnavailableTransport(): CodePlayTransport {\n return {\n request(input) {\n if (input.signal?.aborted) {\n return Promise.reject(abortError());\n }\n return Promise.reject(new MissingTransportError(input.url));\n },\n };\n}\n","import type { StdioBuffer } from \"./stdio\";\nimport { abortError } from \"./transport\";\n\nexport const JS_SANDBOX_FLAGS = \"allow-scripts\";\n\nexport function embedJson(value: unknown): string {\n return JSON.stringify(value).replace(/</g, \"\\\\u003c\");\n}\n\nexport function buildJavaScriptSandboxDocument(code: string, messageId: string): string {\n return `<!doctype html><html><head><meta charset=\"utf-8\"></head><body><script>\n(function () {\n var id = ${embedJson(messageId)};\n var stdout = [];\n var stderr = [];\n function format(args) {\n return Array.prototype.map.call(args, function (value) {\n if (typeof value === \"string\") return value;\n if (value === undefined) return \"undefined\";\n if (value === null) return \"null\";\n try { return JSON.stringify(value); } catch (error) { return String(value); }\n }).join(\" \") + \"\\\\n\";\n }\n var consoleLike = {\n log: function () { stdout.push(format(arguments)); },\n info: function () { stdout.push(format(arguments)); },\n warn: function () { stderr.push(format(arguments)); },\n error: function () { stderr.push(format(arguments)); }\n };\n try {\n var run = new Function(\"console\", ${embedJson(`\"use strict\";\\n${code}`)});\n var value = run(consoleLike);\n parent.postMessage({\n id: id,\n stdout: stdout,\n stderr: stderr,\n value: value === undefined ? undefined : String(value)\n }, \"*\");\n } catch (error) {\n var message = error && error.message ? String(error.message) : String(error);\n parent.postMessage({ id: id, stdout: stdout, stderr: stderr, error: message }, \"*\");\n }\n})();\n</script></body></html>`;\n}\n\nexport function buildJavaScriptWorkerSource(): string {\n return `\n(function () {\n function format(args) {\n return Array.prototype.map.call(args, function (value) {\n if (typeof value === \"string\") return value;\n if (value === undefined) return \"undefined\";\n if (value === null) return \"null\";\n try { return JSON.stringify(value); } catch (error) { return String(value); }\n }).join(\" \") + \"\\\\n\";\n }\n self.onmessage = function (event) {\n var data = event.data || {};\n if (!data.id) return;\n var stdout = [];\n var stderr = [];\n var consoleLike = {\n log: function () { stdout.push(format(arguments)); },\n info: function () { stdout.push(format(arguments)); },\n warn: function () { stderr.push(format(arguments)); },\n error: function () { stderr.push(format(arguments)); }\n };\n try {\n var run = new Function(\"console\", '\"use strict\";\\\\n' + String(data.code || \"\"));\n var value = run(consoleLike);\n self.postMessage({\n id: data.id,\n stdout: stdout,\n stderr: stderr,\n value: value === undefined ? undefined : String(value)\n });\n } catch (error) {\n var message = error && error.message ? String(error.message) : String(error);\n self.postMessage({ id: data.id, stdout: stdout, stderr: stderr, error: message });\n }\n };\n})();\n`;\n}\n\nexport interface SandboxMessage {\n id?: string;\n stdout?: string[];\n stderr?: string[];\n value?: string;\n error?: string;\n}\n\nexport function applySandboxStreams(stdio: StdioBuffer, message: SandboxMessage): void {\n for (const text of message.stdout ?? []) {\n stdio.push(\"stdout\", text);\n }\n for (const text of message.stderr ?? []) {\n stdio.push(\"stderr\", text);\n }\n}\n\nconst WORKER_UNAVAILABLE_CODE = \"ERR_SCRIPT_WORKER_UNAVAILABLE\";\n\nfunction workerUnavailableError(error: unknown): Error {\n const message =\n error instanceof Error && error.message\n ? error.message\n : \"JavaScript worker sandbox is unavailable.\";\n return Object.assign(new Error(message), { code: WORKER_UNAVAILABLE_CODE });\n}\n\nexport function isSandboxWorkerUnavailable(error: unknown): boolean {\n return Boolean(\n error && typeof error === \"object\" && \"code\" in error && error.code === WORKER_UNAVAILABLE_CODE,\n );\n}\n\nexport function canUseSandboxWorker(): boolean {\n return (\n typeof Worker !== \"undefined\" &&\n typeof Blob !== \"undefined\" &&\n typeof URL !== \"undefined\" &&\n typeof URL.createObjectURL === \"function\" &&\n typeof URL.revokeObjectURL === \"function\"\n );\n}\n\nexport async function executeInSandboxWorker(\n code: string,\n timeoutMs: number,\n stdio: StdioBuffer,\n signal?: AbortSignal,\n): Promise<unknown> {\n if (!canUseSandboxWorker()) {\n throw workerUnavailableError(\n new Error(\"JavaScript worker sandbox needs Worker, Blob, and object URLs.\"),\n );\n }\n if (signal?.aborted) {\n throw abortError();\n }\n\n const messageId = `ox-code-play-${Math.random().toString(36).slice(2)}`;\n const url = URL.createObjectURL(\n new Blob([buildJavaScriptWorkerSource()], { type: \"text/javascript\" }),\n );\n\n let worker: Worker;\n try {\n worker = new Worker(url);\n } catch (error) {\n URL.revokeObjectURL(url);\n throw workerUnavailableError(error);\n }\n\n return new Promise((resolve, reject) => {\n let settled = false;\n const cleanup = () => {\n if (settled) {\n return;\n }\n settled = true;\n clearTimeout(timer);\n signal?.removeEventListener(\"abort\", onAbort);\n worker.onmessage = null;\n worker.onerror = null;\n worker.terminate();\n URL.revokeObjectURL(url);\n };\n const onAbort = () => {\n cleanup();\n reject(abortError());\n };\n const onMessage = (event: MessageEvent<SandboxMessage>) => {\n if (event.data?.id !== messageId) {\n return;\n }\n cleanup();\n applySandboxStreams(stdio, event.data);\n if (event.data.error) {\n reject(new Error(event.data.error));\n return;\n }\n resolve(event.data.value);\n };\n const onError = (event: ErrorEvent) => {\n cleanup();\n reject(\n workerUnavailableError(new Error(event.message || \"JavaScript worker sandbox failed.\")),\n );\n };\n const timer = setTimeout(() => {\n cleanup();\n reject(\n Object.assign(new Error(\"JavaScript execution timed out.\"), {\n code: \"ERR_SCRIPT_EXECUTION_TIMEOUT\",\n }),\n );\n }, timeoutMs);\n worker.onmessage = onMessage;\n worker.onerror = onError;\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n worker.postMessage({ id: messageId, code });\n });\n}\n\nexport async function executeInSandboxIframe(\n code: string,\n timeoutMs: number,\n stdio: StdioBuffer,\n signal?: AbortSignal,\n): Promise<unknown> {\n if (typeof document === \"undefined\" || typeof window === \"undefined\") {\n throw new Error(\"JavaScript sandbox iframe needs a document.\");\n }\n if (signal?.aborted) {\n throw abortError();\n }\n const messageId = `ox-code-play-${Math.random().toString(36).slice(2)}`;\n return new Promise((resolve, reject) => {\n const frame = document.createElement(\"iframe\");\n frame.setAttribute(\"sandbox\", JS_SANDBOX_FLAGS);\n frame.setAttribute(\"title\", \"Code Play JavaScript sandbox\");\n frame.hidden = true;\n const cleanup = () => {\n window.clearTimeout(timer);\n window.removeEventListener(\"message\", onMessage);\n signal?.removeEventListener(\"abort\", onAbort);\n frame.remove();\n };\n const onAbort = () => {\n cleanup();\n reject(abortError());\n };\n const onMessage = (event: MessageEvent<SandboxMessage>) => {\n if (event.source !== frame.contentWindow || event.data?.id !== messageId) {\n return;\n }\n cleanup();\n applySandboxStreams(stdio, event.data);\n if (event.data.error) {\n reject(new Error(event.data.error));\n return;\n }\n resolve(event.data.value);\n };\n const timer = window.setTimeout(() => {\n cleanup();\n reject(\n Object.assign(new Error(\"JavaScript execution timed out.\"), {\n code: \"ERR_SCRIPT_EXECUTION_TIMEOUT\",\n }),\n );\n }, timeoutMs);\n window.addEventListener(\"message\", onMessage);\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n frame.srcdoc = buildJavaScriptSandboxDocument(code, messageId);\n document.body.append(frame);\n });\n}\n","/** True when the current isolate can load `node:vm`. */\nexport function hasNodeVm(): boolean {\n return typeof process !== \"undefined\" && Boolean(process.versions?.node);\n}\n","import {\n canUseSandboxWorker,\n executeInSandboxIframe,\n executeInSandboxWorker,\n isSandboxWorkerUnavailable,\n} from \"./javascript-sandbox\";\nimport { hasNodeVm } from \"./runtime-host\";\nimport { formatConsoleArgs, StdioBuffer } from \"./stdio\";\nimport { PhaseTracker } from \"./timing\";\nimport { abortError, isAbortError } from \"./transport\";\nimport type { AdapterRequest, AdapterResult, Diagnostic, RuntimeLocation } from \"./types\";\n\nexport type JavaScriptExecutionRuntime = \"vm\" | \"worker\" | \"iframe\";\n\nexport interface JavaScriptExecutionResult {\n value: unknown;\n runtime: JavaScriptExecutionRuntime;\n}\n\nexport async function runJavaScript(request: AdapterRequest): Promise<AdapterResult> {\n const tracker = new PhaseTracker();\n tracker.start(\"execute\", \"Execute\");\n const stdio = new StdioBuffer(tracker.startedAt);\n const runtime = currentJavaScriptRuntime();\n let executedRuntime = runtime;\n\n try {\n const result = await executeScriptWithRuntime(\n request.code,\n request.timeoutMs,\n stdio,\n request.signal,\n runtime,\n );\n executedRuntime = result.runtime;\n tracker.stop();\n return {\n status: \"ok\",\n stdio: stdio.snapshot(),\n diagnostics: [],\n provenance: {\n execute: javascriptRuntimeProvenance(executedRuntime),\n },\n timing: tracker.report(),\n value: result.value === undefined ? undefined : String(result.value),\n };\n } catch (error) {\n if (isAbortError(error) || request.signal?.aborted) {\n throw error;\n }\n executedRuntime = executionRuntimeFromError(error) ?? executedRuntime;\n tracker.stop();\n const diagnostic = toDiagnostic(error);\n stdio.push(\"stderr\", `${diagnostic.message}\\n`);\n return {\n status: isTimeout(error) ? \"timeout\" : \"error\",\n stdio: stdio.snapshot(),\n diagnostics: [diagnostic],\n provenance: {\n execute: javascriptRuntimeProvenance(executedRuntime),\n },\n timing: tracker.report(),\n };\n }\n}\n\nexport async function executeScript(\n code: string,\n timeoutMs: number,\n stdio: StdioBuffer,\n signal?: AbortSignal,\n runtime = currentJavaScriptRuntime(),\n): Promise<unknown> {\n const result = await executeScriptWithRuntime(code, timeoutMs, stdio, signal, runtime);\n return result.value;\n}\n\nexport async function executeScriptWithRuntime(\n code: string,\n timeoutMs: number,\n stdio: StdioBuffer,\n signal?: AbortSignal,\n runtime = currentJavaScriptRuntime(),\n): Promise<JavaScriptExecutionResult> {\n try {\n return {\n value: await executeScriptInRuntime(code, timeoutMs, stdio, signal, runtime),\n runtime,\n };\n } catch (error) {\n if (\n runtime === \"worker\" &&\n isSandboxWorkerUnavailable(error) &&\n typeof document !== \"undefined\"\n ) {\n try {\n return {\n value: await executeScriptInRuntime(code, timeoutMs, stdio, signal, \"iframe\"),\n runtime: \"iframe\",\n };\n } catch (fallbackError) {\n throw withExecutionRuntime(fallbackError, \"iframe\");\n }\n }\n throw withExecutionRuntime(error, runtime);\n }\n}\n\nasync function executeScriptInRuntime(\n code: string,\n timeoutMs: number,\n stdio: StdioBuffer,\n signal: AbortSignal | undefined,\n runtime: JavaScriptExecutionRuntime,\n): Promise<unknown> {\n const consoleLike = {\n log: (...args: unknown[]) => stdio.push(\"stdout\", formatConsoleArgs(args)),\n info: (...args: unknown[]) => stdio.push(\"stdout\", formatConsoleArgs(args)),\n warn: (...args: unknown[]) => stdio.push(\"stderr\", formatConsoleArgs(args)),\n error: (...args: unknown[]) => stdio.push(\"stderr\", formatConsoleArgs(args)),\n };\n\n if (signal?.aborted) {\n throw abortError();\n }\n\n if (runtime === \"vm\") {\n const vm = await import(\"node:vm\");\n const context = vm.createContext({ console: consoleLike });\n return vm.runInContext(code, context, { timeout: timeoutMs, displayErrors: true });\n }\n if (runtime === \"worker\") {\n return executeInSandboxWorker(code, timeoutMs, stdio, signal);\n }\n\n return executeInSandboxIframe(code, timeoutMs, stdio, signal);\n}\n\nexport function currentJavaScriptRuntime(): JavaScriptExecutionRuntime {\n return javascriptExecuteRuntime(\n hasNodeVm(),\n canUseSandboxWorker(),\n typeof document !== \"undefined\",\n );\n}\n\nexport function javascriptExecuteRuntime(\n hasVm: boolean,\n hasWorker: boolean,\n hasDocument: boolean,\n): JavaScriptExecutionRuntime {\n if (hasVm) {\n return \"vm\";\n }\n if (hasWorker) {\n return \"worker\";\n }\n if (hasDocument) {\n return \"iframe\";\n }\n throw new Error(\n \"JavaScript execute needs node:vm, a browser worker sandbox, or a document for the sandbox iframe.\",\n );\n}\n\nexport function javascriptRuntimeProvenance(runtime: JavaScriptExecutionRuntime): RuntimeLocation {\n if (runtime === \"vm\") {\n return { host: \"local\", runtime: \"node:vm\", sandbox: \"vm\" };\n }\n if (runtime === \"worker\") {\n return { host: \"local\", runtime: \"web-worker\", sandbox: \"worker\" };\n }\n return { host: \"local\", runtime: \"iframe\", sandbox: \"srcdoc\" };\n}\n\nfunction withExecutionRuntime(\n error: unknown,\n runtime: JavaScriptExecutionRuntime,\n): Error & { executionRuntime: JavaScriptExecutionRuntime } {\n if (error instanceof Error) {\n return Object.assign(error, { executionRuntime: runtime });\n }\n if (isErrorLike(error)) {\n return Object.assign(error, { executionRuntime: runtime }) as Error & {\n executionRuntime: JavaScriptExecutionRuntime;\n };\n }\n return Object.assign(new Error(String(error)), { executionRuntime: runtime });\n}\n\nexport function executionRuntimeFromError(error: unknown): JavaScriptExecutionRuntime | undefined {\n if (\n error &&\n typeof error === \"object\" &&\n \"executionRuntime\" in error &&\n isJavaScriptExecutionRuntime(error.executionRuntime)\n ) {\n return error.executionRuntime;\n }\n return undefined;\n}\n\nfunction isJavaScriptExecutionRuntime(value: unknown): value is JavaScriptExecutionRuntime {\n return value === \"vm\" || value === \"worker\" || value === \"iframe\";\n}\n\nfunction isTimeout(error: unknown): boolean {\n return Boolean(\n error &&\n typeof error === \"object\" &&\n \"code\" in error &&\n error.code === \"ERR_SCRIPT_EXECUTION_TIMEOUT\",\n );\n}\n\nfunction toDiagnostic(error: unknown): Diagnostic {\n if (isErrorLike(error)) {\n return { message: error.message, severity: \"error\", source: \"javascript\" };\n }\n return { message: String(error), severity: \"error\", source: \"javascript\" };\n}\n\nfunction isErrorLike(error: unknown): error is { message: string } {\n return Boolean(\n error &&\n typeof error === \"object\" &&\n \"message\" in error &&\n typeof error.message === \"string\" &&\n error.message.length > 0,\n );\n}\n","import { StdioBuffer } from \"./stdio\";\nimport { PhaseTracker } from \"./timing\";\nimport type { AdapterRequest, AdapterResult } from \"./types\";\n\ninterface PistonExecuteResponse {\n compile?: { stdout?: string; stderr?: string; code?: number };\n run?: { stdout?: string; stderr?: string; code?: number; signal?: string | null };\n message?: string;\n}\n\nexport async function runRemote(request: AdapterRequest): Promise<AdapterResult> {\n const tracker = new PhaseTracker();\n const stdio = new StdioBuffer(tracker.startedAt);\n const endpoint = request.enabled.endpoint;\n const language = request.definition.remote?.pistonLanguage ?? request.definition.id;\n\n if (!endpoint) {\n tracker.stop();\n return {\n status: \"unsupported\",\n stdio: [],\n diagnostics: [\n {\n message:\n `${request.definition.name} execution needs a configured HTTP executor. ` +\n `Pass languages.${request.definition.id}.endpoint (Piston-compatible).`,\n severity: \"error\",\n source: \"code-play\",\n },\n ],\n provenance: {},\n timing: tracker.report(),\n };\n }\n\n tracker.start(\"queue\", \"Queue\");\n tracker.start(\"compile\", \"Compile / execute\");\n const response = await request.transport.request({\n url: joinEndpoint(endpoint, \"execute\"),\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n language,\n version: request.config.version ?? request.definition.remote?.pistonVersion ?? \"*\",\n files: [{ content: request.code }],\n }),\n signal: request.signal,\n });\n tracker.start(\"collect\", \"Collect output\");\n\n const parsed = parseResponse(response.text);\n if (parsed.compile?.stdout) {\n stdio.push(\"stdout\", parsed.compile.stdout);\n }\n if (parsed.compile?.stderr) {\n stdio.push(\"stderr\", parsed.compile.stderr);\n }\n if (parsed.run?.stdout) {\n stdio.push(\"stdout\", parsed.run.stdout);\n }\n if (parsed.run?.stderr) {\n stdio.push(\"stderr\", parsed.run.stderr);\n }\n if (parsed.message && !parsed.run && !parsed.compile) {\n stdio.push(\"stderr\", `${parsed.message}\\n`);\n }\n\n const compileFailed = (parsed.compile?.code ?? 0) !== 0;\n const runFailed = (parsed.run?.code ?? 0) !== 0 || Boolean(parsed.run?.signal);\n const failed =\n !response.ok || compileFailed || runFailed || Boolean(parsed.message && !parsed.run);\n tracker.stop();\n\n return {\n status: failed ? \"error\" : \"ok\",\n stdio: stdio.snapshot(),\n diagnostics: failed\n ? [\n {\n message:\n parsed.message ??\n parsed.run?.stderr ??\n parsed.compile?.stderr ??\n \"Remote execution failed.\",\n severity: \"error\",\n source: language,\n },\n ]\n : [],\n provenance: {\n compile: parsed.compile\n ? { host: hostFromUrl(endpoint), runtime: language, sandbox: \"piston\" }\n : undefined,\n execute: { host: hostFromUrl(endpoint), runtime: language, sandbox: \"piston\" },\n },\n timing: tracker.report(),\n };\n}\n\nfunction parseResponse(text: string): PistonExecuteResponse {\n try {\n return JSON.parse(text) as PistonExecuteResponse;\n } catch {\n return { message: text };\n }\n}\n\nfunction joinEndpoint(endpoint: string, action: string): string {\n const trimmed = endpoint.replace(/\\/+$/, \"\");\n return trimmed.endsWith(action) ? trimmed : `${trimmed}/${action}`;\n}\n\nfunction hostFromUrl(url: string): string {\n try {\n return new URL(url, \"https://code-play.local\").host || url;\n } catch {\n return url;\n }\n}\n","import { StdioBuffer } from \"./stdio\";\nimport { PhaseTracker } from \"./timing\";\nimport type { AdapterRequest, AdapterResult, Diagnostic } from \"./types\";\n\ninterface RustPlaygroundResponse {\n success?: boolean;\n stdout?: string;\n stderr?: string;\n error?: string;\n}\n\nexport async function runRust(\n request: AdapterRequest,\n mode: \"execute\" | \"typecheck\",\n): Promise<AdapterResult> {\n const tracker = new PhaseTracker();\n const stdio = new StdioBuffer(tracker.startedAt);\n const crateType = resolveCrateType(request.code, String(request.config.crateType ?? \"auto\"));\n const body = {\n channel: request.config.channel ?? \"stable\",\n mode: request.config.mode ?? \"debug\",\n edition: String(request.config.edition ?? \"2024\"),\n crateType,\n tests: false,\n code: request.code,\n backtrace: false,\n };\n\n tracker.start(\n mode === \"typecheck\" ? \"typecheck\" : \"compile\",\n mode === \"typecheck\" ? \"Typecheck\" : \"Compile\",\n );\n const response = await request.transport.request({\n url: request.endpoints.rust,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n signal: request.signal,\n });\n tracker.start(\"collect\", \"Collect output\");\n\n const parsed = parseResponse(response.text);\n const diagnostics = parseRustcDiagnostics(parsed.stderr ?? parsed.error ?? \"\");\n if (parsed.stdout) {\n stdio.push(\"stdout\", parsed.stdout);\n }\n if (parsed.stderr) {\n stdio.push(\"stderr\", parsed.stderr);\n }\n if (parsed.error && !parsed.stderr) {\n stdio.push(\"stderr\", parsed.error);\n }\n\n const success = parsed.success === true && response.ok;\n const compileFailed = diagnostics.some((item) => item.severity === \"error\") || !success;\n tracker.stop();\n\n return {\n status: compileFailed ? \"error\" : \"ok\",\n stdio: stdio.snapshot(),\n diagnostics,\n provenance: {\n compile: {\n host: hostFromUrl(request.endpoints.rust),\n runtime: \"rustc\",\n version: String(request.config.channel ?? \"stable\"),\n target: crateType,\n },\n execute:\n mode === \"execute\"\n ? {\n host: hostFromUrl(request.endpoints.rust),\n runtime: \"rust-playground\",\n sandbox: \"playground\",\n }\n : undefined,\n },\n timing: tracker.report(),\n };\n}\n\nfunction resolveCrateType(code: string, configured: string): \"bin\" | \"lib\" {\n if (configured === \"bin\" || configured === \"lib\") {\n return configured;\n }\n return /(?:^|\\b)(?:async\\s+)?fn\\s+main\\s*\\(/.test(code) ? \"bin\" : \"lib\";\n}\n\nfunction parseResponse(text: string): RustPlaygroundResponse {\n try {\n return JSON.parse(text) as RustPlaygroundResponse;\n } catch {\n return { success: false, error: text };\n }\n}\n\nexport function parseRustcDiagnostics(stderr: string): Diagnostic[] {\n const diagnostics: Diagnostic[] = [];\n const pattern = /^(error|warning|note)(?:\\[([^\\]]+)\\])?:\\s+(.*)$/gm;\n for (const match of stderr.matchAll(pattern)) {\n const severity = match[1] === \"warning\" ? \"warning\" : match[1] === \"note\" ? \"info\" : \"error\";\n diagnostics.push({\n message: match[3] ?? \"\",\n severity,\n source: match[2] ? `rustc ${match[2]}` : \"rustc\",\n });\n }\n return diagnostics;\n}\n\nfunction hostFromUrl(url: string): string {\n try {\n return new URL(url, \"https://code-play.local\").host || url;\n } catch {\n return url;\n }\n}\n","/**\n * Conservative TypeScript-to-JavaScript stripper for documentation samples.\n * Full checking goes through tsgo; this path only needs to run the snippet.\n */\nexport function stripTypeScript(code: string): string {\n return code\n .replace(/^\\s*import\\s+type\\s+.*$/gm, \"\")\n .replace(/^\\s*export\\s+type\\s+\\w[\\s\\S]*?;\\s*$/gm, \"\")\n .replace(/^\\s*type\\s+\\w[\\s\\S]*?;\\s*$/gm, \"\")\n .replace(/^\\s*(?:export\\s+)?interface\\s+\\w[\\s\\S]*?\\{[\\s\\S]*?\\n\\}\\s*$/gm, \"\")\n .replace(/\\s+as\\s+const\\b/g, \"\")\n .replace(/\\s+as\\s+[^=,;)\\n]+/g, \"\")\n .replace(/\\s+satisfies\\s+[^=,;)\\n]+/g, \"\")\n .replace(/\\)\\s*:\\s*[^{;=\\n]+/g, \")\")\n .replace(/([?]?)\\s*:\\s*[^,)=;{\\n]+/g, \"$1\");\n}\n","import {\n currentJavaScriptRuntime,\n executeScriptWithRuntime,\n javascriptRuntimeProvenance,\n} from \"./javascript\";\nimport { hasNodeVm } from \"./runtime-host\";\nimport { isAbortError } from \"./transport\";\nimport { StdioBuffer } from \"./stdio\";\nimport { stripTypeScript } from \"./strip-typescript\";\nimport { PhaseTracker } from \"./timing\";\nimport type { AdapterRequest, AdapterResult, Diagnostic, TransportResponse } from \"./types\";\n\nexport type TypecheckBackend = \"endpoint\" | \"tsgo\" | \"unavailable\";\n\nexport function resolveTypecheckBackend(\n hasVm: boolean,\n typecheckUrl: string | undefined,\n): TypecheckBackend {\n if (typecheckUrl && !hasVm) {\n return \"endpoint\";\n }\n if (!hasVm) {\n return \"unavailable\";\n }\n return \"tsgo\";\n}\n\nexport async function typecheckTypeScript(request: AdapterRequest): Promise<AdapterResult> {\n const tracker = new PhaseTracker();\n tracker.start(\"typecheck\", \"Typecheck\");\n const backend = resolveTypecheckBackend(hasNodeVm(), request.endpoints.typecheck);\n\n if (backend === \"endpoint\") {\n return typecheckViaEndpoint(request, tracker);\n }\n if (backend === \"unavailable\") {\n tracker.stop();\n return {\n status: \"unsupported\",\n stdio: [],\n diagnostics: [\n {\n message:\n \"Typecheck needs a reachable endpoints.typecheck. The Vite /__ox-code-play/typecheck proxy exists only during vite dev.\",\n severity: \"error\",\n source: \"tsgo\",\n },\n ],\n provenance: { compile: { host: \"local\", runtime: \"tsgo\" } },\n timing: tracker.report(),\n };\n }\n\n try {\n const diagnostics = await typecheckWithTsgo(\n request.code,\n String(request.config.tsgoCommand ?? \"tsgo\"),\n );\n tracker.stop();\n return {\n status: diagnostics.some((item) => item.severity === \"error\") ? \"error\" : \"ok\",\n stdio: [],\n diagnostics,\n provenance: { compile: { host: \"local\", runtime: \"tsgo\" } },\n timing: tracker.report(),\n };\n } catch (error) {\n if (isAbortError(error) || request.signal?.aborted) {\n throw error;\n }\n tracker.stop();\n const message = error instanceof Error ? error.message : String(error);\n return {\n status: message.includes(\"ENOENT\") ? \"unsupported\" : \"error\",\n stdio: [],\n diagnostics: [\n {\n message: message.includes(\"ENOENT\")\n ? \"tsgo is not available. Install @typescript/native-preview or set languages.typescript.config.tsgoCommand.\"\n : message,\n severity: \"error\",\n source: \"tsgo\",\n },\n ],\n provenance: { compile: { host: \"local\", runtime: \"tsgo\" } },\n timing: tracker.report(),\n };\n }\n}\n\nexport async function runTypeScript(request: AdapterRequest): Promise<AdapterResult> {\n const tracker = new PhaseTracker();\n const stdio = new StdioBuffer(tracker.startedAt);\n tracker.start(\"compile\", \"Strip types\");\n const javascript = stripTypeScript(request.code);\n const runtime = currentJavaScriptRuntime();\n let executedRuntime = runtime;\n tracker.start(\"execute\", \"Execute\");\n try {\n const result = await executeScriptWithRuntime(\n javascript,\n request.timeoutMs,\n stdio,\n request.signal,\n runtime,\n );\n executedRuntime = result.runtime;\n tracker.stop();\n return {\n status: \"ok\",\n stdio: stdio.snapshot(),\n diagnostics: [],\n provenance: {\n compile: { host: \"local\", runtime: \"strip-types\" },\n execute: javascriptRuntimeProvenance(executedRuntime),\n },\n timing: tracker.report(),\n value: result.value === undefined ? undefined : String(result.value),\n };\n } catch (error) {\n if (isAbortError(error) || request.signal?.aborted) {\n throw error;\n }\n tracker.stop();\n const message = error instanceof Error ? error.message : String(error);\n stdio.push(\"stderr\", `${message}\\n`);\n return {\n status: \"error\",\n stdio: stdio.snapshot(),\n diagnostics: [{ message, severity: \"error\", source: \"javascript\" }],\n provenance: {\n compile: { host: \"local\", runtime: \"strip-types\" },\n execute: javascriptRuntimeProvenance(executedRuntime),\n },\n timing: tracker.report(),\n };\n }\n}\n\nasync function typecheckViaEndpoint(\n request: AdapterRequest,\n tracker: PhaseTracker,\n): Promise<AdapterResult> {\n const url = request.endpoints.typecheck ?? \"\";\n const response = await request.transport.request({\n url,\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ language: \"typescript\", code: request.code, config: request.config }),\n signal: request.signal,\n });\n tracker.stop();\n return adapterResultFromTypecheckResponse(response, url, tracker);\n}\n\nexport function typecheckEndpointFailureMessage(status: number, text: string): string {\n if (status === 404 || status === 405) {\n return \"Typecheck needs a reachable endpoints.typecheck. The Vite /__ox-code-play/typecheck proxy exists only during vite dev.\";\n }\n const trimmed = text.trim();\n return trimmed || \"Typecheck endpoint failed.\";\n}\n\nexport function adapterResultFromTypecheckResponse(\n response: TransportResponse,\n url: string,\n tracker: PhaseTracker,\n): AdapterResult {\n if (!response.ok) {\n return {\n status: \"error\",\n stdio: [],\n diagnostics: [\n {\n message: typecheckEndpointFailureMessage(response.status, response.text),\n severity: \"error\",\n source: \"tsgo\",\n },\n ],\n provenance: { compile: { host: hostFromUrl(url), runtime: \"tsgo\" } },\n timing: tracker.report(),\n };\n }\n try {\n return JSON.parse(response.text) as AdapterResult;\n } catch {\n return {\n status: \"error\",\n stdio: [],\n diagnostics: [\n {\n message: response.text || \"Typecheck endpoint failed.\",\n severity: \"error\",\n source: \"tsgo\",\n },\n ],\n provenance: { compile: { host: hostFromUrl(url), runtime: \"tsgo\" } },\n timing: tracker.report(),\n };\n }\n}\n\nexport async function typecheckWithTsgo(code: string, command = \"tsgo\"): Promise<Diagnostic[]> {\n const [{ mkdtemp, rm, writeFile }, { tmpdir }, { join }, { execFile }, { promisify }] =\n await Promise.all([\n import(\"node:fs/promises\"),\n import(\"node:os\"),\n import(\"node:path\"),\n import(\"node:child_process\"),\n import(\"node:util\"),\n ]);\n const execFileAsync = promisify(execFile);\n const dir = await mkdtemp(join(tmpdir(), \"ox-code-play-\"));\n const file = join(dir, \"snippet.ts\");\n await writeFile(file, code);\n try {\n await execFileAsync(command, [\"--noEmit\", \"--pretty\", \"false\", \"--strict\", file], {\n cwd: dir,\n maxBuffer: 1024 * 1024,\n });\n return [];\n } catch (error) {\n const output = commandOutput(error);\n if ((error as { code?: string }).code === \"ENOENT\") {\n throw error;\n }\n return parseTsgoOutput(output);\n } finally {\n await rm(dir, { recursive: true, force: true });\n }\n}\n\nexport function parseTsgoOutput(output: string): Diagnostic[] {\n const diagnostics: Diagnostic[] = [];\n const pattern =\n /^(?:.*[\\\\/])?snippet\\.ts\\((\\d+),(\\d+)\\):\\s+(error|warning|info)\\s+TS\\d+:\\s+(.*)$/gm;\n for (const match of output.matchAll(pattern)) {\n diagnostics.push({\n message: match[4] ?? output,\n severity: match[3] === \"warning\" ? \"warning\" : match[3] === \"info\" ? \"info\" : \"error\",\n line: Number(match[1]),\n column: Number(match[2]),\n source: \"tsgo\",\n });\n }\n if (diagnostics.length === 0 && output.trim()) {\n diagnostics.push({ message: output.trim(), severity: \"error\", source: \"tsgo\" });\n }\n return diagnostics;\n}\n\nfunction commandOutput(error: unknown): string {\n if (!error || typeof error !== \"object\") {\n return String(error);\n }\n const value = error as { stdout?: unknown; stderr?: unknown; message?: unknown };\n return [value.stdout, value.stderr, value.message]\n .filter((part): part is string => typeof part === \"string\" && part.trim().length > 0)\n .join(\"\\n\")\n .trim();\n}\n\nfunction hostFromUrl(url: string): string {\n try {\n return new URL(url, \"https://code-play.local\").host || url;\n } catch {\n return url;\n }\n}\n","import { runFramework } from \"./framework\";\nimport { runGo } from \"./go\";\nimport { runJavaScript } from \"./javascript\";\nimport { runRemote } from \"./remote\";\nimport { runRust } from \"./rust\";\nimport { runTypeScript, typecheckTypeScript } from \"./typescript\";\nimport type { AdapterRequest, AdapterResult } from \"./types\";\n\nexport async function executeAdapter(request: AdapterRequest): Promise<AdapterResult> {\n if (!request.enabled.execute) {\n return capabilityDisabled(request, \"execute\");\n }\n switch (request.definition.backend) {\n case \"javascript\":\n return runJavaScript(request);\n case \"typescript\":\n return runTypeScript(request);\n case \"framework\":\n return runFramework(request);\n case \"rust-playground\":\n return runRust(request, \"execute\");\n case \"go-playground\":\n return runGo(request, \"execute\");\n case \"remote\":\n return runRemote(request);\n default:\n return capabilityDisabled(request, \"execute\");\n }\n}\n\nexport async function typecheckAdapter(request: AdapterRequest): Promise<AdapterResult> {\n if (!request.enabled.typecheck || !request.definition.capabilities.typecheck) {\n return capabilityDisabled(request, \"typecheck\");\n }\n switch (request.definition.backend) {\n case \"typescript\":\n return typecheckTypeScript(request);\n case \"rust-playground\":\n return runRust(request, \"typecheck\");\n case \"go-playground\":\n return runGo(request, \"typecheck\");\n default:\n return capabilityDisabled(request, \"typecheck\");\n }\n}\n\nfunction capabilityDisabled(\n request: AdapterRequest,\n action: \"execute\" | \"typecheck\",\n): AdapterResult {\n return {\n status: \"unsupported\",\n stdio: [],\n diagnostics: [\n {\n message: `${request.definition.name} ${action} is not enabled.`,\n severity: \"error\",\n source: \"code-play\",\n },\n ],\n provenance: {},\n timing: { totalMs: 0, phases: [] },\n };\n}\n","import { withStdioText } from \"./stdio\";\nimport { emptyTiming } from \"./timing\";\nimport type { RunResult, RunStatus } from \"./types\";\n\nexport function errorMessage(error: unknown): string {\n return error instanceof Error && error.message ? error.message : String(error);\n}\n\nexport function friendlyTransportMessage(error: unknown): string {\n const message = errorMessage(error);\n if (isOfflineError(error)) {\n return \"The executor is offline or unreachable from this page (for example, CORS). Set endpoints to a host that allows browser POST, or use the Vite dev proxy.\";\n }\n return message;\n}\n\nexport function transportFailureStatus(error: unknown): RunStatus {\n return isOfflineError(error) ? \"offline\" : \"error\";\n}\n\nexport function errorResult(\n message: string,\n source = \"code-play\",\n status: RunStatus = \"error\",\n): RunResult {\n return withStdioText({\n status,\n stdio: [],\n diagnostics: [\n {\n message,\n severity: status === \"cancelled\" ? \"info\" : \"error\",\n source,\n },\n ],\n provenance: {},\n timing: emptyTiming(),\n });\n}\n\nfunction isOfflineError(error: unknown): boolean {\n const message = errorMessage(error);\n const name =\n error && typeof error === \"object\" && \"name\" in error ? String(error.name) : undefined;\n const typeError = error instanceof TypeError || name === \"TypeError\";\n if (name === \"MissingTransportError\") {\n return true;\n }\n if (\n typeError &&\n /failed to fetch|networkerror|load failed|network request failed/i.test(message)\n ) {\n return true;\n }\n return /\\boffline\\b|no code play transport|network request failed/i.test(message);\n}\n","import { executeAdapter, typecheckAdapter } from \"./adapters\";\nimport { mergeConfig } from \"./config\";\nimport { friendlyTransportMessage, errorResult, transportFailureStatus } from \"./result\";\nimport { withStdioText } from \"./stdio\";\nimport { isAbortError } from \"./transport\";\nimport type {\n AdapterRequest,\n CodePlayTransport,\n PlaygroundEndpoints,\n ResolvedLanguageEnable,\n RunResult,\n SessionEventMap,\n SessionEventName,\n SessionInput,\n TypeScriptLike,\n} from \"./types\";\nimport type { LanguageDefinition } from \"./types\";\n\ntype Listener<T> = (value: T) => void;\n\nexport class CodePlaySession {\n readonly language: LanguageDefinition;\n code: string;\n config: Record<string, unknown>;\n lastResult: RunResult | undefined;\n\n /** Last run's concatenated stdout (same as `lastResult.stdout`). */\n get stdout(): string {\n return this.lastResult?.stdout ?? \"\";\n }\n\n /** Last run's concatenated stderr (same as `lastResult.stderr`). */\n get stderr(): string {\n return this.lastResult?.stderr ?? \"\";\n }\n\n private readonly enabled: ResolvedLanguageEnable;\n private readonly timeoutMs: number;\n private readonly transport: CodePlayTransport;\n private readonly endpoints: PlaygroundEndpoints;\n private readonly loadTypeScript?: () => Promise<TypeScriptLike | undefined>;\n private readonly listeners = new Map<SessionEventName, Set<Listener<unknown>>>();\n private abort: AbortController | undefined;\n\n constructor(input: SessionConstructorInput) {\n this.language = input.definition;\n this.enabled = input.enabled;\n this.code = input.code;\n this.config = mergeConfig(input.definition.id, input.enabled, input.config);\n this.timeoutMs = input.timeoutMs;\n this.transport = input.transport;\n this.endpoints = input.endpoints;\n this.loadTypeScript = input.loadTypeScript;\n }\n\n on<K extends SessionEventName>(event: K, listener: Listener<SessionEventMap[K]>): () => void {\n const bucket = this.listeners.get(event) ?? new Set();\n bucket.add(listener as Listener<unknown>);\n this.listeners.set(event, bucket);\n return () => bucket.delete(listener as Listener<unknown>);\n }\n\n setCode(code: string): void {\n this.code = code;\n }\n\n setConfig(config: Record<string, unknown>): void {\n this.config = { ...this.config, ...config };\n this.emit(\"config\", this.config);\n }\n\n async run(): Promise<RunResult> {\n return this.dispatch(\"execute\");\n }\n\n async typecheck(): Promise<RunResult> {\n return this.dispatch(\"typecheck\");\n }\n\n cancel(): void {\n this.abort?.abort();\n }\n\n private async dispatch(action: \"execute\" | \"typecheck\"): Promise<RunResult> {\n this.abort?.abort();\n this.abort = new AbortController();\n const { signal } = this.abort;\n const request: AdapterRequest = {\n definition: this.language,\n enabled: this.enabled,\n code: this.code,\n config: this.config,\n timeoutMs: this.timeoutMs,\n transport: this.transport,\n loadTypeScript: this.loadTypeScript,\n endpoints: this.endpoints,\n signal,\n };\n try {\n const result = withStdioText(\n action === \"typecheck\" ? await typecheckAdapter(request) : await executeAdapter(request),\n );\n return this.finish(result);\n } catch (error) {\n if (signal.aborted || isAbortError(error)) {\n return this.finish(errorResult(\"Run cancelled.\", \"code-play\", \"cancelled\"));\n }\n return this.finish(\n errorResult(friendlyTransportMessage(error), \"code-play\", transportFailureStatus(error)),\n );\n }\n }\n\n private finish(result: RunResult): RunResult {\n this.lastResult = result;\n for (const event of result.stdio) {\n this.emit(\"stdio\", event);\n }\n this.emit(\"result\", result);\n return result;\n }\n\n private emit<K extends SessionEventName>(event: K, value: SessionEventMap[K]): void {\n for (const listener of this.listeners.get(event) ?? []) {\n listener(value);\n }\n }\n}\n\nexport interface SessionConstructorInput extends SessionInput {\n definition: LanguageDefinition;\n enabled: ResolvedLanguageEnable;\n timeoutMs: number;\n transport: CodePlayTransport;\n endpoints: PlaygroundEndpoints;\n loadTypeScript?: () => Promise<TypeScriptLike | undefined>;\n}\n","import { resolveLanguage } from \"./catalog\";\nimport {\n resolveCodePlayOptions,\n type RawCodePlayOptions,\n type ResolvedCodePlayOptions,\n} from \"./config\";\nimport { CodePlaySession } from \"./session\";\nimport { createFetchTransport, createUnavailableTransport } from \"./transport\";\nimport type { CodePlayTransport, SessionInput, TypeScriptLike } from \"./types\";\n\nexport interface CodePlayClientOptions extends RawCodePlayOptions {\n transport?: CodePlayTransport;\n loadTypeScript?: () => Promise<TypeScriptLike | undefined>;\n}\n\nexport interface CodePlayClient {\n readonly options: ResolvedCodePlayOptions;\n createSession(input: SessionInput): CodePlaySession;\n hasLanguage(language: string): boolean;\n}\n\nexport function createCodePlay(options: CodePlayClientOptions = {}): CodePlayClient {\n const resolved = resolveCodePlayOptions(options);\n const transport = options.transport ?? defaultTransport();\n return {\n options: resolved,\n hasLanguage(language: string) {\n const definition = resolveLanguage(language);\n return Boolean(definition && resolved.languages.has(definition.id));\n },\n createSession(input: SessionInput) {\n const definition = resolveLanguage(input.language);\n if (!definition) {\n throw new Error(`Unknown Code Play language: ${input.language}.`);\n }\n const enabled = resolved.languages.get(definition.id);\n if (!enabled) {\n throw new Error(\n `${definition.name} is not enabled. Pass languages.${definition.id}: true to createCodePlay().`,\n );\n }\n return new CodePlaySession({\n ...input,\n definition,\n enabled,\n timeoutMs: resolved.timeoutMs,\n transport,\n endpoints: resolved.endpoints,\n loadTypeScript: options.loadTypeScript,\n });\n },\n };\n}\n\nfunction defaultTransport(): CodePlayTransport {\n if (typeof fetch === \"function\") {\n return createFetchTransport();\n }\n return createUnavailableTransport();\n}\n"],"mappings":"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"}
package/dist/config.d.mts CHANGED
@@ -31,7 +31,7 @@ interface TimingReport {
31
31
  totalMs: number;
32
32
  phases: TimingPhase[];
33
33
  }
34
- type RunStatus = "ok" | "error" | "timeout" | "cancelled" | "unsupported";
34
+ type RunStatus = "ok" | "error" | "offline" | "timeout" | "cancelled" | "unsupported";
35
35
  interface Diagnostic {
36
36
  message: string;
37
37
  severity: "error" | "warning" | "info";
@@ -58,6 +58,16 @@ interface RunResult extends AdapterResult {
58
58
  /** Concatenated `stderr` chunks from `stdio`. */
59
59
  stderr: string;
60
60
  }
61
+ type RunAction = "execute" | "typecheck";
62
+ type RunActionPhase = "idle" | "running" | "result" | "error" | "offline";
63
+ interface RunActionState {
64
+ phase: RunActionPhase;
65
+ action?: RunAction;
66
+ result?: RunResult;
67
+ message?: string;
68
+ startedAtMs?: number;
69
+ finishedAtMs?: number;
70
+ }
61
71
  type ConfigFieldType = "string" | "boolean" | "select" | "number";
62
72
  interface ConfigFieldOption {
63
73
  value: string;
@@ -138,8 +148,11 @@ interface SessionInput {
138
148
  interface PlayPayload {
139
149
  language: string;
140
150
  code: string;
151
+ title?: string;
141
152
  capabilities: LanguageCapabilities;
142
153
  config: Record<string, unknown>;
154
+ /** Per-language executor endpoint for remote language backends. */
155
+ endpoint?: string;
143
156
  viewers: ViewerFlags;
144
157
  ui: CodePlayPreset;
145
158
  timeoutMs: number;
@@ -217,5 +230,5 @@ declare const DEFAULT_ENDPOINTS: PlaygroundEndpoints;
217
230
  declare const DEFAULT_VIEWERS: ViewerFlags;
218
231
  declare function resolveCodePlayOptions(options?: RawCodePlayOptions): ResolvedCodePlayOptions;
219
232
  //#endregion
220
- export { TimingReport as C, ViewerFlags as D, TypeScriptLike as E, StdioStream as S, TransportResponse as T, RunResult as _, resolveCodePlayOptions as a, SessionInput as b, CodePlayTransport as c, LanguageDefinition as d, LanguageEnable as f, ResolvedLanguageEnable as g, Provenance as h, ResolvedCodePlayOptions as i, ConfigField as l, PlaygroundEndpoints as m, DEFAULT_VIEWERS as n, AdapterResult as o, PlayPayload as p, RawCodePlayOptions as r, CodePlayPreset as s, DEFAULT_ENDPOINTS as t, Diagnostic as u, SessionEventMap as v, TransportRequest as w, StdioEvent as x, SessionEventName as y };
233
+ export { TypeScriptLike as A, SessionEventName as C, TimingReport as D, StdioStream as E, TransportRequest as O, SessionEventMap as S, StdioEvent as T, RunAction as _, resolveCodePlayOptions as a, RunResult as b, CodePlayTransport as c, LanguageDefinition as d, LanguageEnable as f, ResolvedLanguageEnable as g, Provenance as h, ResolvedCodePlayOptions as i, ViewerFlags as j, TransportResponse as k, ConfigField as l, PlaygroundEndpoints as m, DEFAULT_VIEWERS as n, AdapterResult as o, PlayPayload as p, RawCodePlayOptions as r, CodePlayPreset as s, DEFAULT_ENDPOINTS as t, Diagnostic as u, RunActionPhase as v, SessionInput as w, RunStatus as x, RunActionState as y };
221
234
  //# sourceMappingURL=config.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.mts","names":[],"sources":["../src/types.ts","../src/config.ts"],"mappings":";;;;KAIY;UAEK;EACf,QAAQ;EACR;EACA;;UAGe;;EAEf;;EAEA;EACA;EACA;EACA;;UAGe;EACf,UAAU;EACV,UAAU;;UAGK;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA,QAAQ;;KAGE;UAEK;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf,QAAQ;EACR,OAAO;EACP,aAAa;EACb,YAAY;EACZ,QAAQ;EACR,UAAU;EACV;;UAGe,kBAAkB;;EAEjC;;EAEA;;KAGU;UAEK;EACf;EACA;;UAGe;EACf;EACA;EACA,MAAM;EACN,UAAU;EACV;EACA;;KAGU;KAQA;UAEK;EACf;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA,cAAc;EACd,eAAe;EACf,cAAc;EACd,SAAS;EACT,SAAS;EACT,YAAY;;UAGG;EACf;EACA;EACA;EACA,SAAS;;KAGC,2BAA2B;UAEtB;EACf;EACA;EACA;EACA;EACA,QAAQ;;UAGO;EACf;EACA;EACA,UAAU;EACV;EACA,SAAS;;UAGM;EACf;EACA;EACA;;UAGe;EACf,QAAQ,OAAO,mBAAmB,QAAQ;;UAG3B;EACf;EACA;EACA;EACA;EACA;;KAGU;UAEK;EACf;EACA;EACA,SAAS;;UAGM;EACf;EACA;EACA,cAAc;EACd,QAAQ;EACR,SAAS;EACT,IAAI;EACJ;EACA,YAAY;;UAGG;EACf,kBACE,eACA;IACE,kBAAkB;IAClB;IACA;;IAGF;IACA,cAAc;MACZ;QAAwB;;MACxB;MACA;;;EAGJ,mBACE,kBACA,cACA,yBACA;EAEF,gBACE,qBACA,SAAS,yBACT;IAEA;IACA;;EAEF,+BAA+B,kBAAkB;EACjD,gCACE,eACA;IACK;IAAc;;EACrB;IAAgB;IAAgB;;EAChC;IAAc;;;UAeC;EACf;EACA;EACA;;KAGU;EACV,OAAO;EACP,QAAQ;EACR,QAAQ;;KAGE,yBAAyB;;;UC5OpB;EACf,WAAW,YAAY;EACvB;EACA,IAAI;EACJ,SAAS;EACT,WAAW;EACX;EACA;EACA;EACA;;UAGe;EACf,YAAY,eAAe;EAC3B;EACA,KAAK;EACL,UAAU,QAAQ;EAClB,YAAY,QAAQ;EACpB;EACA;EACA;EACA;;cAGW,mBAAmB;cAQnB,iBAAiB;iBAQd,uBAAuB,UAAS,qBAA0B"}
1
+ {"version":3,"file":"config.d.mts","names":[],"sources":["../src/types.ts","../src/config.ts"],"mappings":";;;;KAIY;UAEK;EACf,QAAQ;EACR;EACA;;UAGe;;EAEf;;EAEA;EACA;EACA;EACA;;UAGe;EACf,UAAU;EACV,UAAU;;UAGK;EACf;EACA;EACA;EACA;;UAGe;EACf;EACA,QAAQ;;KAGE;UAEK;EACf;EACA;EACA;EACA;EACA;;UAGe;EACf;EACA;;UAGe;EACf,QAAQ;EACR,OAAO;EACP,aAAa;EACb,YAAY;EACZ,QAAQ;EACR,UAAU;EACV;;UAGe,kBAAkB;;EAEjC;;EAEA;;KAGU;KAEA;UAEK;EACf,OAAO;EACP,SAAS;EACT,SAAS;EACT;EACA;EACA;;KAGU;UAEK;EACf;EACA;;UAGe;EACf;EACA;EACA,MAAM;EACN,UAAU;EACV;EACA;;KAGU;KAQA;UAEK;EACf;EACA;;UAGe;EACf;EACA;EACA;;UAGe;EACf;EACA;EACA;EACA,cAAc;EACd,eAAe;EACf,cAAc;EACd,SAAS;EACT,SAAS;EACT,YAAY;;UAGG;EACf;EACA;EACA;EACA,SAAS;;KAGC,2BAA2B;UAEtB;EACf;EACA;EACA;EACA;EACA,QAAQ;;UAGO;EACf;EACA;EACA,UAAU;EACV;EACA,SAAS;;UAGM;EACf;EACA;EACA;;UAGe;EACf,QAAQ,OAAO,mBAAmB,QAAQ;;UAG3B;EACf;EACA;EACA;EACA;EACA;;KAGU;UAEK;EACf;EACA;EACA,SAAS;;UAGM;EACf;EACA;EACA;EACA,cAAc;EACd,QAAQ;;EAER;EACA,SAAS;EACT,IAAI;EACJ;EACA,YAAY;;UAGG;EACf,kBACE,eACA;IACE,kBAAkB;IAClB;IACA;;IAGF;IACA,cAAc;MACZ;QAAwB;;MACxB;MACA;;;EAGJ,mBACE,kBACA,cACA,yBACA;EAEF,gBACE,qBACA,SAAS,yBACT;IAEA;IACA;;EAEF,+BAA+B,kBAAkB;EACjD,gCACE,eACA;IACK;IAAc;;EACrB;IAAgB;IAAgB;;EAChC;IAAc;;;UAeC;EACf;EACA;EACA;;KAGU;EACV,OAAO;EACP,QAAQ;EACR,QAAQ;;KAGE,yBAAyB;;;UC5PpB;EACf,WAAW,YAAY;EACvB;EACA,IAAI;EACJ,SAAS;EACT,WAAW;EACX;EACA;EACA;EACA;;UAGe;EACf,YAAY,eAAe;EAC3B;EACA,KAAK;EACL,UAAU,QAAQ;EAClB,YAAY,QAAQ;EACpB;EACA;EACA;EACA;;cAGW,mBAAmB;cAcnB,iBAAiB;iBAQd,uBAAuB,UAAS,qBAA0B"}
@@ -1,4 +1,4 @@
1
- import { E as TypeScriptLike, _ as RunResult, b as SessionInput, c as CodePlayTransport, d as LanguageDefinition, g as ResolvedLanguageEnable, i as ResolvedCodePlayOptions, m as PlaygroundEndpoints, p as PlayPayload, r as RawCodePlayOptions, v as SessionEventMap, y as SessionEventName } from "./config.mjs";
1
+ import { A as TypeScriptLike, C as SessionEventName, S as SessionEventMap, b as RunResult, c as CodePlayTransport, d as LanguageDefinition, g as ResolvedLanguageEnable, i as ResolvedCodePlayOptions, m as PlaygroundEndpoints, p as PlayPayload, r as RawCodePlayOptions, w as SessionInput } from "./config.mjs";
2
2
  //#region src/session.d.ts
3
3
  type Listener<T> = (value: T) => void;
4
4
  declare class CodePlaySession {
@@ -62,6 +62,7 @@ declare function hydrateCodePlay(root?: ParentNode, options?: HydrateOptions): v
62
62
  declare function mountCodePlay(element: Element, options?: {
63
63
  client?: CodePlayClient;
64
64
  }): void;
65
+ declare function resultPanelToShow(result: RunResult, hasStderrPanel: boolean): "stderr" | "stdio";
65
66
  //#endregion
66
- export { encodePayload as a, createCodePlay as c, decodePayload as i, CodePlaySession as l, hydrateCodePlay as n, CodePlayClient as o, mountCodePlay as r, CodePlayClientOptions as s, HydrateOptions as t };
67
+ export { decodePayload as a, CodePlayClientOptions as c, resultPanelToShow as i, createCodePlay as l, hydrateCodePlay as n, encodePayload as o, mountCodePlay as r, CodePlayClient as s, HydrateOptions as t, CodePlaySession as u };
67
68
  //# sourceMappingURL=hydrate.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hydrate.d.mts","names":[],"sources":["../src/session.ts","../src/client.ts","../src/payload.ts","../src/hydrate.ts"],"mappings":";;KAkBK,SAAS,MAAM,OAAO;cAEd;WACF,UAAU;EACnB;EACA,QAAQ;EACR,YAAY;;MAGR;;MAKA;mBAIa;mBACA;mBACA;mBACA;mBACA;mBACA;UACT;EAER,YAAY,OAAO;EAWnB,GAAG,UAAU,kBAAkB,OAAO,GAAG,UAAU,SAAS,gBAAgB;EAO5E,QAAQ;EAIR,UAAU,QAAQ;EAKZ,OAAO,QAAQ;EAIf,aAAa,QAAQ;EAI3B;UAIc;UA4BN;UASA;;UAOO,gCAAgC;EAC/C,YAAY;EACZ,SAAS;EACT;EACA,WAAW;EACX,WAAW;EACX,uBAAuB,QAAQ;;;;UC3HhB,8BAA8B;EAC7C,YAAY;EACZ,uBAAuB,QAAQ;;UAGhB;WACN,SAAS;EAClB,cAAc,OAAO,eAAe;EACpC,YAAY;;iBAGE,eAAe,UAAS,wBAA6B;;;iBClBrD,cAAc,SAAS;iBAIvB,cAAc,gBAAgB;;;UCS7B;EACf,SAAS;EACT,OAAO;;iBAKO,gBACd,OAAM,YACN,UAAS;iBAaK,cAAc,SAAS,SAAS;EAAW,SAAS"}
1
+ {"version":3,"file":"hydrate.d.mts","names":[],"sources":["../src/session.ts","../src/client.ts","../src/payload.ts","../src/hydrate.ts"],"mappings":";;KAkBK,SAAS,MAAM,OAAO;cAEd;WACF,UAAU;EACnB;EACA,QAAQ;EACR,YAAY;;MAGR;;MAKA;mBAIa;mBACA;mBACA;mBACA;mBACA;mBACA;UACT;EAER,YAAY,OAAO;EAWnB,GAAG,UAAU,kBAAkB,OAAO,GAAG,UAAU,SAAS,gBAAgB;EAO5E,QAAQ;EAIR,UAAU,QAAQ;EAKZ,OAAO,QAAQ;EAIf,aAAa,QAAQ;EAI3B;UAIc;UA8BN;UASA;;UAOO,gCAAgC;EAC/C,YAAY;EACZ,SAAS;EACT;EACA,WAAW;EACX,WAAW;EACX,uBAAuB,QAAQ;;;;UC7HhB,8BAA8B;EAC7C,YAAY;EACZ,uBAAuB,QAAQ;;UAGhB;WACN,SAAS;EAClB,cAAc,OAAO,eAAe;EACpC,YAAY;;iBAGE,eAAe,UAAS,wBAA6B;;;iBClBrD,cAAc,SAAS;iBAIvB,cAAc,gBAAgB;;;UCsB7B;EACf,SAAS;EACT,OAAO;;iBAMO,gBACd,OAAM,YACN,UAAS;iBAaK,cAAc,SAAS,SAAS;EAAW,SAAS;;iBAqIpD,kBAAkB,QAAQ,WAAW"}
package/dist/hydrate.mjs CHANGED
@@ -1,3 +1,3 @@
1
1
  import { n as encodePayload, t as decodePayload } from "./payload.mjs";
2
- import { n as mountCodePlay, t as hydrateCodePlay } from "./hydrate2.mjs";
3
- export { decodePayload, encodePayload, hydrateCodePlay, mountCodePlay };
2
+ import { n as mountCodePlay, r as resultPanelToShow, t as hydrateCodePlay } from "./hydrate2.mjs";
3
+ export { decodePayload, encodePayload, hydrateCodePlay, mountCodePlay, resultPanelToShow };
@@ -1,2 +1,2 @@
1
- import { a as encodePayload, i as decodePayload, n as hydrateCodePlay, r as mountCodePlay, t as HydrateOptions } from "./hydrate.mjs";
2
- export { HydrateOptions, decodePayload, encodePayload, hydrateCodePlay, mountCodePlay };
1
+ import { a as decodePayload, i as resultPanelToShow, n as hydrateCodePlay, o as encodePayload, r as mountCodePlay, t as HydrateOptions } from "./hydrate.mjs";
2
+ export { HydrateOptions, decodePayload, encodePayload, hydrateCodePlay, mountCodePlay, resultPanelToShow };