Skip to content

Commit 8fe8281

Browse files
authored
Merge pull request #4 from tommyjtl/refactor/feb-12
feat: configure local development server with nodemon and dev script
2 parents 5d37a3a + dad8b69 commit 8fe8281

8 files changed

Lines changed: 583 additions & 5 deletions

File tree

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,7 @@ yarn-error.log*
3939
# typescript
4040
*.tsbuildinfo
4141
next-env.d.ts
42+
43+
# playwright
44+
playwright-report/
45+
test-results/

README.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,17 @@
22

33
A bunch of WASM fun.
44

5-
- [ ] Use local build instead of fetching remote Pydiode resources
5+
## Local development
6+
7+
Run a local static server with auto-restart via `nodemon`:
8+
9+
```bash
10+
npm run dev
11+
```
12+
13+
Default URL: `http://127.0.0.1:5500`
14+
15+
## To-do
16+
17+
- [x] Use local build instead of fetching remote Pydiode resources
618
- [x] Detect window resize and push the windows that exceeds the boundary to the edge accordingly.

js/pydiode/pyodide-output-worker.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,13 @@ let pyodide = null;
99
let runCode = null;
1010

1111
async function loadPyodideInstance() {
12-
const indexURL = 'https://cdn.jsdelivr.net/pyodide/v0.27.5/full/';
12+
const indexURL = new URL('../vendor/pyodide/', import.meta.url).href;
13+
const pyodideModuleURL = new URL('../vendor/pyodide/pyodide.mjs', import.meta.url).href;
1314

1415
try {
1516
self.postMessage(createStatusMessage(StatusMessage.FETCHING_PYODIDE));
1617

17-
const { loadPyodide } = await import(indexURL + 'pyodide.mjs');
18+
const { loadPyodide } = await import(pyodideModuleURL);
1819

1920
self.postMessage(createStatusMessage(StatusMessage.INITIALIZING));
2021

js/pydiode/pyodide-worker.js

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,14 @@ let reprShorten = null;
1212

1313
// Load Pyodide
1414
async function loadPyodideInstance() {
15-
const indexURL = 'https://cdn.jsdelivr.net/pyodide/v0.27.5/full/';
15+
const indexURL = new URL('../vendor/pyodide/', import.meta.url).href;
16+
const pyodideModuleURL = new URL('../vendor/pyodide/pyodide.mjs', import.meta.url).href;
1617

1718
try {
19+
self.postMessage(createStatusMessage(`Loading from local indexURL: ${indexURL}`));
1820
self.postMessage(createStatusMessage(StatusMessage.FETCHING_PYODIDE));
1921

20-
const { loadPyodide } = await import(indexURL + 'pyodide.mjs');
22+
const { loadPyodide } = await import(pyodideModuleURL);
2123

2224
self.postMessage(createStatusMessage(StatusMessage.INITIALIZING));
2325

@@ -26,6 +28,22 @@ async function loadPyodideInstance() {
2628
stdin: () => {
2729
// We can't use prompt() in a worker, so we'll handle this differently
2830
return '';
31+
},
32+
stdout: (text) => {
33+
if (text) {
34+
self.postMessage({
35+
type: MessageType.OUTPUT,
36+
message: text
37+
});
38+
}
39+
},
40+
stderr: (text) => {
41+
if (text) {
42+
self.postMessage({
43+
type: MessageType.OUTPUT,
44+
message: text
45+
});
46+
}
2947
}
3048
});
3149

nodemon.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"watch": [
3+
"index.html",
4+
"css",
5+
"js",
6+
"scripts"
7+
],
8+
"ext": "html,css,js,mjs,json",
9+
"ignore": [
10+
"node_modules",
11+
".git"
12+
],
13+
"exec": "node scripts/dev-server.mjs"
14+
}

0 commit comments

Comments
 (0)