Skip to content
This repository was archived by the owner on Feb 14, 2024. It is now read-only.

Commit 4cee601

Browse files
committed
Add another layer of webpack for the worker
1 parent fd5fa85 commit 4cee601

File tree

5 files changed

+106
-11
lines changed

5 files changed

+106
-11
lines changed

package.json

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,10 @@
3535
"copy-files": "copyfiles -u 1 src/xpython_wasm.wasm src/xpython_wasm.js src/python_data.js src/python_data.data lib",
3636
"build:wasm": "jlpm run build:dockerimage && jlpm run build:emscripten",
3737
"build:wasm_no_cache": "jlpm run build:dockerimage_no_cache && jlpm run build:emscripten",
38-
"build": "jlpm run build:lib && jlpm run copy-files && jlpm run build:labextension:dev",
39-
"build:prod": "jlpm run clean && jlpm run build:wasm && jlpm run build:lib && jlpm run copy-files && jlpm run build:labextension",
38+
"build:worker": "webpack --config worker.webpack.config.js --mode=development",
39+
"build:worker:prod": "webpack --config worker.webpack.config.js --mode=production",
40+
"build": "jlpm run build:worker && jlpm run build:lib && jlpm run copy-files && jlpm run build:labextension:dev",
41+
"build:prod": "jlpm run clean && jlpm run build:worker:prod && jlpm run build:wasm && jlpm run build:lib && jlpm run copy-files && jlpm run build:labextension",
4042
"build:labextension": "jupyter labextension build .",
4143
"build:labextension:dev": "jupyter labextension build --development True .",
4244
"build:lib": "tsc",
@@ -72,6 +74,8 @@
7274
"npm-run-all": "^4.1.5",
7375
"prettier": "^2.1.1",
7476
"rimraf": "^3.0.2",
77+
"source-map-loader": "^4.0.0",
78+
"ts-loader": "^9.3.0",
7579
"typescript": "~4.2.3"
7680
},
7781
"sideEffects": [

src/worker.ts

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ class XeusPythonKernel {
4646
mount(driveName: string, mountpoint: string, baseUrl: string): void {
4747
const { FS, PATH, ERRNO_CODES } = globalThis.Module;
4848

49+
console.log('mounting drivefs', driveName, mountpoint, baseUrl);
50+
4951
this._drive = new DriveFS({
5052
FS,
5153
PATH,
@@ -54,19 +56,28 @@ class XeusPythonKernel {
5456
driveName,
5557
mountpoint
5658
});
59+
console.log('mkdir mountpoint');
5760

5861
FS.mkdir(mountpoint);
5962
FS.mount(this._drive, {}, mountpoint);
63+
console.log('chdir mountpoint');
6064
FS.chdir(mountpoint);
65+
console.log('done chdir mountpoint');
6166
}
6267

6368
cd(path: string) {
69+
if (!path) {
70+
return;
71+
}
72+
6473
const { FS } = globalThis.Module;
6574

75+
console.log('chdir path', path);
6676
FS.chdir(path);
77+
console.log('done chdir path');
6778
}
6879

69-
async processMessage(msg: any): Promise<void> {
80+
async processMessage(event: any): Promise<void> {
7081
await this._ready;
7182

7283
if (
@@ -79,24 +90,34 @@ class XeusPythonKernel {
7990
globalThis.toplevel_promise = null;
8091
}
8192

82-
const msg_type = msg.header.msg_type;
93+
console.log('received this in the worker', event);
94+
95+
const msg_type = event.msg.header.msg_type;
8396

8497
if (msg_type === 'input_reply') {
85-
resolveInputReply(msg);
98+
resolveInputReply(event.msg);
8699
} else {
87-
this._raw_xserver.notify_listener(msg);
100+
this._raw_xserver.notify_listener(event.msg);
88101
}
89102
}
90103

91104
private async initialize(resolve: () => void) {
92105
importScripts('./xpython_wasm.js');
93106

107+
console.log('init xeus kernel');
108+
94109
globalThis.Module = await createXeusModule({});
95110

111+
console.log('done init xeus kernel');
112+
96113
importScripts('./python_data.js');
97114

115+
console.log('loaded python data');
116+
98117
await this.waitRunDependency();
99118

119+
console.log('waited run deps');
120+
100121
this._raw_xkernel = new globalThis.Module.xkernel();
101122
this._raw_xserver = this._raw_xkernel.get_server();
102123

src/xeus_server_kernel.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,10 @@ export class XeusServerKernel implements IKernel {
9191
* @param msg The worker message to process.
9292
*/
9393
private _processWorkerMessage(msg: any): void {
94+
if (!msg.header) {
95+
return;
96+
}
97+
9498
msg.header.session = this._parentHeader?.session ?? '';
9599
msg.session = this._parentHeader?.session ?? '';
96100
this._sendMessage(msg);

worker.webpack.config.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
const path = require('path');
2+
const rules = [
3+
{
4+
test: /\.ts$/,
5+
loader: 'ts-loader',
6+
options: {
7+
configFile: path.resolve('./tsconfig.json')
8+
}
9+
},
10+
{
11+
test: /\.js$/,
12+
exclude: /node_modules/,
13+
loader: 'source-map-loader'
14+
}
15+
];
16+
17+
const resolve = {
18+
fallback: {
19+
fs: false,
20+
child_process: false,
21+
crypto: false
22+
},
23+
extensions: [".ts", ".js"],
24+
};
25+
26+
module.exports = [
27+
{
28+
entry: './src/worker.ts',
29+
output: {
30+
filename: 'worker.js',
31+
path: path.resolve(__dirname, 'lib'),
32+
libraryTarget: 'amd'
33+
},
34+
module: {
35+
rules
36+
},
37+
devtool: 'source-map',
38+
resolve,
39+
}
40+
];

yarn.lock

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -791,7 +791,7 @@ JSONStream@1.3.5:
791791
jsonparse "^1.2.0"
792792
through ">=2.2.7 <3"
793793

794-
abab@^2.0.0:
794+
abab@^2.0.0, abab@^2.0.6:
795795
version "2.0.6"
796796
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
797797
integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
@@ -1694,7 +1694,7 @@ end-of-stream@^1.1.0:
16941694
dependencies:
16951695
once "^1.4.0"
16961696

1697-
enhanced-resolve@^5.9.3:
1697+
enhanced-resolve@^5.0.0, enhanced-resolve@^5.9.3:
16981698
version "5.9.3"
16991699
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88"
17001700
integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==
@@ -2642,6 +2642,13 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24:
26422642
dependencies:
26432643
safer-buffer ">= 2.1.2 < 3"
26442644

2645+
iconv-lite@^0.6.3:
2646+
version "0.6.3"
2647+
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
2648+
integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
2649+
dependencies:
2650+
safer-buffer ">= 2.1.2 < 3.0.0"
2651+
26452652
icss-utils@^5.0.0, icss-utils@^5.1.0:
26462653
version "5.1.0"
26472654
resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
@@ -3383,7 +3390,7 @@ methods@~1.1.2:
33833390
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
33843391
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
33853392

3386-
micromatch@^4.0.4:
3393+
micromatch@^4.0.0, micromatch@^4.0.4:
33873394
version "4.0.5"
33883395
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
33893396
integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
@@ -4400,7 +4407,7 @@ safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2:
44004407
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
44014408
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
44024409

4403-
"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
4410+
"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
44044411
version "2.1.2"
44054412
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
44064413
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
@@ -4435,7 +4442,7 @@ schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1:
44354442
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
44364443
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
44374444

4438-
semver@7.3.7, semver@^7.2.1, semver@^7.3.2, semver@^7.3.5:
4445+
semver@7.3.7, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
44394446
version "7.3.7"
44404447
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
44414448
integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==
@@ -4623,6 +4630,15 @@ source-map-js@^1.0.2:
46234630
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
46244631
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
46254632

4633+
source-map-loader@^4.0.0:
4634+
version "4.0.0"
4635+
resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-4.0.0.tgz#bdc6b118bc6c87ee4d8d851f2d4efcc5abdb2ef5"
4636+
integrity sha512-i3KVgM3+QPAHNbGavK+VBq03YoJl24m9JWNbLgsjTj8aJzXG9M61bantBTNBt7CNwY2FYf+RJRYJ3pzalKjIrw==
4637+
dependencies:
4638+
abab "^2.0.6"
4639+
iconv-lite "^0.6.3"
4640+
source-map-js "^1.0.2"
4641+
46264642
source-map-support@~0.5.20:
46274643
version "0.5.21"
46284644
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
@@ -4998,6 +5014,16 @@ tr46@~0.0.3:
49985014
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
49995015
integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=
50005016

5017+
ts-loader@^9.3.0:
5018+
version "9.3.0"
5019+
resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.3.0.tgz#980f4dbfb60e517179e15e10ed98e454b132159f"
5020+
integrity sha512-2kLLAdAD+FCKijvGKi9sS0OzoqxLCF3CxHpok7rVgCZ5UldRzH0TkbwG9XECKjBzHsAewntC5oDaI/FwKzEUog==
5021+
dependencies:
5022+
chalk "^4.1.0"
5023+
enhanced-resolve "^5.0.0"
5024+
micromatch "^4.0.0"
5025+
semver "^7.3.4"
5026+
50015027
tslib@^1.8.1, tslib@^1.9.0:
50025028
version "1.14.1"
50035029
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"

0 commit comments

Comments
 (0)