@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 +16 -0
- package/dist/browser.mjs +81 -2
- package/dist/client.mjs +3 -0
- package/dist/client.mjs.map +1 -1
- package/dist/config.d.mts +33 -1
- package/dist/config.d.mts.map +1 -1
- package/dist/hydrate.d.mts +3 -1
- package/dist/hydrate.d.mts.map +1 -1
- package/dist/hydrate2.mjs +77 -4
- package/dist/hydrate2.mjs.map +1 -1
- package/dist/index.d.mts +29 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/plugin.d.mts.map +1 -1
- package/dist/plugin2.mjs +351 -35
- package/dist/plugin2.mjs.map +1 -1
- package/package.json +1 -1
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, "`");
|
|
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 {
|
package/dist/client.mjs.map
CHANGED
|
@@ -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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"}
|