Skip to content

Commit dfee1eb

Browse files
committed
worker/ディレクトリに移動し、createRuntime()ではなくProviderを直接定義
1 parent 46b6161 commit dfee1eb

File tree

17 files changed

+422
-494
lines changed

17 files changed

+422
-494
lines changed

app/terminal/exec.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ export function ExecFile(props: ExecProps) {
8383
▶ 実行
8484
</button>
8585
<code className="text-sm ml-4">
86-
{getCommandlineStr(props.filenames)}
86+
{getCommandlineStr?.(props.filenames)}
8787
</code>
8888
</div>
8989
<div className="bg-base-300 p-4 pt-2 rounded-b-lg">

app/terminal/javascript/page.tsx

Lines changed: 0 additions & 21 deletions
This file was deleted.

app/terminal/javascript/runtime.tsx

Lines changed: 0 additions & 34 deletions
This file was deleted.

app/terminal/page.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@ import { Heading } from "@/[docs_id]/markdown";
33
import "mocha/mocha.js";
44
import "mocha/mocha.css";
55
import { useEffect, useRef, useState } from "react";
6-
import { usePyodide } from "./python/runtime";
7-
import { useRuby } from "./ruby/runtime";
86
import { useWandbox } from "./wandbox/runtime";
97
import { RuntimeContext, RuntimeLang } from "./runtime";
108
import { useEmbedContext } from "./embedContext";
119
import { defineTests } from "./tests";
12-
import { useJavaScript } from "./javascript/runtime";
10+
import { usePyodide } from "./worker/pyodide";
11+
import { useRuby } from "./worker/ruby";
12+
import { useJSEval } from "./worker/jsEval";
1313

1414
export default function RuntimeTestPage() {
1515
const pyodide = usePyodide();
1616
const ruby = useRuby();
17-
const javascript = useJavaScript();
17+
const javascript = useJSEval();
1818
const wandboxCpp = useWandbox("cpp");
1919
const runtimeRef = useRef<Record<RuntimeLang, RuntimeContext>>(null!);
2020
runtimeRef.current = {

app/terminal/python/page.tsx

Lines changed: 0 additions & 23 deletions
This file was deleted.

app/terminal/python/runtime.tsx

Lines changed: 0 additions & 38 deletions
This file was deleted.

app/terminal/ruby/page.tsx

Lines changed: 0 additions & 23 deletions
This file was deleted.

app/terminal/ruby/runtime.tsx

Lines changed: 0 additions & 39 deletions
This file was deleted.

app/terminal/runtime.tsx

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import { MutexInterface } from "async-mutex";
22
import { ReplOutput, SyntaxStatus, ReplCommand } from "./repl";
3-
import { PyodideProvider, usePyodide } from "./python/runtime";
4-
import { RubyProvider, useRuby } from "./ruby/runtime";
53
import { useWandbox, WandboxProvider } from "./wandbox/runtime";
6-
import { JavaScriptProvider, useJavaScript } from "./javascript/runtime";
74
import { AceLang } from "./editor";
85
import { ReactNode } from "react";
6+
import { PyodideContext, usePyodide } from "./worker/pyodide";
7+
import { RubyContext, useRuby } from "./worker/ruby";
8+
import { JSEvalContext, useJSEval } from "./worker/jsEval";
9+
import { WorkerProvider } from "./worker/runtime";
910

1011
/**
1112
* Common runtime context interface for different languages
@@ -23,7 +24,7 @@ export interface RuntimeContext {
2324
splitReplExamples?: (content: string) => ReplCommand[];
2425
// file
2526
runFiles: (filenames: string[]) => Promise<ReplOutput[]>;
26-
getCommandlineStr: (filenames: string[]) => string;
27+
getCommandlineStr?: (filenames: string[]) => string;
2728
}
2829
export interface LangConstants {
2930
tabSize: number;
@@ -58,32 +59,32 @@ export function useRuntime(language: RuntimeLang): RuntimeContext {
5859
// すべての言語のcontextをインスタンス化
5960
const pyodide = usePyodide();
6061
const ruby = useRuby();
62+
const jsEval = useJSEval();
6163
const wandboxCpp = useWandbox("cpp");
62-
const javascript = useJavaScript();
6364

6465
switch (language) {
6566
case "python":
6667
return pyodide;
6768
case "ruby":
6869
return ruby;
70+
case "javascript":
71+
return jsEval;
6972
case "cpp":
7073
return wandboxCpp;
71-
case "javascript":
72-
return javascript;
7374
default:
7475
language satisfies never;
7576
throw new Error(`Runtime not implemented for language: ${language}`);
7677
}
7778
}
7879
export function RuntimeProvider({ children }: { children: ReactNode }) {
7980
return (
80-
<PyodideProvider>
81-
<RubyProvider>
82-
<WandboxProvider>
83-
<JavaScriptProvider>{children}</JavaScriptProvider>
84-
</WandboxProvider>
85-
</RubyProvider>
86-
</PyodideProvider>
81+
<WorkerProvider context={PyodideContext} script="/pyodide.worker.js">
82+
<WorkerProvider context={RubyContext} script="/ruby.worker.js">
83+
<WorkerProvider context={JSEvalContext} script="/javascript.worker.js">
84+
<WandboxProvider>{children}</WandboxProvider>
85+
</WorkerProvider>
86+
</WorkerProvider>
87+
</WorkerProvider>
8788
);
8889
}
8990

0 commit comments

Comments
 (0)