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

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.
package/README.md CHANGED
@@ -57,6 +57,19 @@ sample. The MDX-style `<CodePlay>` tag accepts `title`, `ui`, `timeout`,
57
57
  </CodePlay>
58
58
  ```
59
59
 
60
+ Project-level examples stay opt-in per sample:
61
+
62
+ ````md
63
+ ```ts play play-project=stackblitz play-file=src/main.ts play-entry=src/main.ts play-files=package.json,src/App.tsx play-project-url=https://stackblitz.com/edit/example
64
+ console.log("project");
65
+ ```
66
+ ````
67
+
68
+ `play-file` names the current fence inside the project, `play-files` lists
69
+ extra files relative to the Markdown source file, and `play-project-url`
70
+ provides the external fallback link. Providers are metadata adapters; no
71
+ StackBlitz, CodeSandbox, or WebContainer script is loaded by Code Play.
72
+
60
73
  ## Headless API
61
74
 
62
75
  ```ts
@@ -95,6 +108,9 @@ visitor-supplied snippets as `play`.
95
108
  The Vite `/__ox-code-play/*` proxy is **dev-only**.
96
109
  - Other languages need a Piston-compatible `endpoint` you trust.
97
110
  - `sh` never spawns a local shell.
111
+ - Project sandboxes include trusted source in the static payload. `play-files`
112
+ are read only from relative paths inside the configured Markdown source root,
113
+ with symlink real paths checked before embedding.
98
114
 
99
115
  ## Example
100
116
 
package/dist/browser.mjs CHANGED
@@ -372,6 +372,9 @@ function escapeHtml(value) {
372
372
  }
373
373
  });
374
374
  }
375
+ function escapeAttribute(value) {
376
+ return escapeHtml(value).replace(/`/g, "&#96;");
377
+ }
375
378
  //#endregion
376
379
  //#region src/timing.ts
377
380
  var PhaseTracker = class {
@@ -1478,6 +1481,7 @@ var CodePlaySession = class {
1478
1481
  timeoutMs;
1479
1482
  transport;
1480
1483
  endpoints;
1484
+ project;
1481
1485
  loadTypeScript;
1482
1486
  listeners = /* @__PURE__ */ new Map();
1483
1487
  abort;
@@ -1489,6 +1493,7 @@ var CodePlaySession = class {
1489
1493
  this.timeoutMs = input.timeoutMs;
1490
1494
  this.transport = input.transport;
1491
1495
  this.endpoints = input.endpoints;
1496
+ this.project = input.project;
1492
1497
  this.loadTypeScript = input.loadTypeScript;
1493
1498
  }
1494
1499
  on(event, listener) {
@@ -1529,6 +1534,7 @@ var CodePlaySession = class {
1529
1534
  transport: this.transport,
1530
1535
  loadTypeScript: this.loadTypeScript,
1531
1536
  endpoints: this.endpoints,
1537
+ project: this.project,
1532
1538
  signal
1533
1539
  };
1534
1540
  try {
@@ -1750,6 +1756,64 @@ var CODE_PLAY_STYLES = `
1750
1756
  .ox-code-play__runtime-chip--ok strong { color: var(--octc-color-primary, var(--octc-accent, #4f46e5)); }
1751
1757
  .ox-code-play__runtime-chip--warn strong { color: var(--octc-warning, #b54708); }
1752
1758
  .ox-code-play__runtime-chip--muted strong { opacity: 0.72; }
1759
+ .ox-code-play__project {
1760
+ display: inline-flex;
1761
+ flex: 1 1 18rem;
1762
+ min-width: min(100%, 16rem);
1763
+ gap: 0.45rem;
1764
+ align-items: center;
1765
+ flex-wrap: wrap;
1766
+ margin-left: auto;
1767
+ padding: 0.35rem 0.5rem;
1768
+ border: 1px solid var(--octc-color-border, color-mix(in srgb, currentColor 14%, transparent));
1769
+ border-radius: 6px;
1770
+ background: var(--octc-color-bg, Canvas);
1771
+ }
1772
+ .ox-code-play__project-main,
1773
+ .ox-code-play__project-entry {
1774
+ display: inline-grid;
1775
+ gap: 0.1rem;
1776
+ min-width: 0;
1777
+ }
1778
+ .ox-code-play__project-main { flex: 1 1 8.5rem; }
1779
+ .ox-code-play__project-entry { flex: 999 1 9rem; }
1780
+ .ox-code-play__project-main span,
1781
+ .ox-code-play__project-entry span {
1782
+ font: 600 0.62rem/1.1 ui-sans-serif, system-ui, sans-serif;
1783
+ text-transform: uppercase;
1784
+ letter-spacing: 0.04em;
1785
+ opacity: 0.62;
1786
+ }
1787
+ .ox-code-play__project-main strong,
1788
+ .ox-code-play__project-entry strong {
1789
+ min-width: 0;
1790
+ overflow-wrap: anywhere;
1791
+ font: 650 0.78rem/1.2 ui-sans-serif, system-ui, sans-serif;
1792
+ }
1793
+ .ox-code-play__project-files,
1794
+ .ox-code-play__project-warning,
1795
+ .ox-code-play__project-link {
1796
+ flex: 0 0 auto;
1797
+ border-radius: 6px;
1798
+ padding: 0.18rem 0.45rem;
1799
+ font: 650 0.68rem/1.25 ui-sans-serif, system-ui, sans-serif;
1800
+ }
1801
+ .ox-code-play__project-files {
1802
+ background: color-mix(in srgb, var(--octc-color-text, CanvasText) 8%, transparent);
1803
+ }
1804
+ .ox-code-play__project-warning {
1805
+ color: var(--octc-warning, #b54708);
1806
+ background: color-mix(in srgb, var(--octc-warning, #b54708) 12%, transparent);
1807
+ }
1808
+ .ox-code-play__project-link {
1809
+ color: var(--octc-color-primary, var(--octc-accent, #4f46e5));
1810
+ background: color-mix(in srgb, var(--octc-color-primary, var(--octc-accent, #4f46e5)) 12%, transparent);
1811
+ text-decoration: none;
1812
+ }
1813
+ .ox-code-play__project-link:focus-visible {
1814
+ outline: 2px solid var(--octc-color-primary, var(--octc-accent, #4f46e5));
1815
+ outline-offset: 2px;
1816
+ }
1753
1817
  .ox-code-play .ox-code { margin: 0; }
1754
1818
  .ox-code-play__source pre { margin: 0; border: 0; border-radius: 0; }
1755
1819
  .ox-code-play__tabs {
@@ -1933,7 +1997,7 @@ function renderRuntimeStrip(payload, definition) {
1933
1997
  runtimeChip("Runtime", runtime.label, runtime.kind),
1934
1998
  runtimeChip("Executor", executor.label, executor.kind),
1935
1999
  runtimeChip("Checks", checks, payload.capabilities.typecheck ? "ok" : "muted")
1936
- ].join("")}</div>`;
2000
+ ].join("")}${renderProjectSandboxHtml(payload.project)}</div>`;
1937
2001
  }
1938
2002
  function runtimeLabel(payload, definition) {
1939
2003
  switch (definition?.backend) {
@@ -1987,6 +2051,20 @@ function executorLabel(payload, definition) {
1987
2051
  function runtimeChip(label, value, kind) {
1988
2052
  return `<span class="ox-code-play__runtime-chip ox-code-play__runtime-chip--${kind}"><span>${escapeHtml(label)}</span><strong>${escapeHtml(value)}</strong></span>`;
1989
2053
  }
2054
+ function renderProjectSandboxHtml(project) {
2055
+ if (!project) return "";
2056
+ const fileCount = `${project.files.length} ${project.files.length === 1 ? "file" : "files"}`;
2057
+ const target = project.target === "browser" ? "Browser project" : project.target === "node" ? "Node-like project" : "External project";
2058
+ const url = project.openUrl ?? project.fallbackUrl;
2059
+ const warnings = project.warnings?.length ? `<span class="ox-code-play__project-warning" title="${escapeAttribute(project.warnings.join("\n"))}">Warnings</span>` : "";
2060
+ const link = url ? `<a class="ox-code-play__project-link" href="${escapeAttribute(url)}" target="_blank" rel="noopener noreferrer">Open</a>` : "";
2061
+ return `<span class="ox-code-play__project" data-ox-project-provider="${escapeAttribute(project.provider)}">
2062
+ <span class="ox-code-play__project-main"><span>${escapeHtml(project.label)}</span><strong>${escapeHtml(target)}</strong></span>
2063
+ ${project.entry ? `<span class="ox-code-play__project-entry"><span>Entry</span><strong>${escapeHtml(project.entry)}</strong></span>` : ""}
2064
+ <span class="ox-code-play__project-files">${escapeHtml(fileCount)}</span>
2065
+ ${warnings}${link}
2066
+ </span>`;
2067
+ }
1990
2068
  function renderTabs(state, panel) {
1991
2069
  if (state.payload.ui === "compact") return "";
1992
2070
  const viewers = state.payload.viewers;
@@ -2079,7 +2157,8 @@ function bindWidget(element, payload, client) {
2079
2157
  const session = client.createSession({
2080
2158
  language: payload.language,
2081
2159
  code: payload.code,
2082
- config: payload.config
2160
+ config: payload.config,
2161
+ project: payload.project
2083
2162
  });
2084
2163
  const runButton = element.querySelector("[data-ox-action=\"run\"]");
2085
2164
  const checkButton = element.querySelector("[data-ox-action=\"typecheck\"]");
package/dist/client.mjs CHANGED
@@ -1122,6 +1122,7 @@ var CodePlaySession = class {
1122
1122
  timeoutMs;
1123
1123
  transport;
1124
1124
  endpoints;
1125
+ project;
1125
1126
  loadTypeScript;
1126
1127
  listeners = /* @__PURE__ */ new Map();
1127
1128
  abort;
@@ -1133,6 +1134,7 @@ var CodePlaySession = class {
1133
1134
  this.timeoutMs = input.timeoutMs;
1134
1135
  this.transport = input.transport;
1135
1136
  this.endpoints = input.endpoints;
1137
+ this.project = input.project;
1136
1138
  this.loadTypeScript = input.loadTypeScript;
1137
1139
  }
1138
1140
  on(event, listener) {
@@ -1173,6 +1175,7 @@ var CodePlaySession = class {
1173
1175
  transport: this.transport,
1174
1176
  loadTypeScript: this.loadTypeScript,
1175
1177
  endpoints: this.endpoints,
1178
+ project: this.project,
1176
1179
  signal
1177
1180
  };
1178
1181
  try {
@@ -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 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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"}
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 ProjectSandbox,\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 project: ProjectSandbox | undefined;\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.project = input.project;\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 project: this.project,\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 project?: ProjectSandbox;\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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"}