@jupyterlite/xeus 2.0.0 → 2.1.1
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/lib/coincident.worker.js +1 -1
- package/lib/coincident.worker.js.map +1 -1
- package/lib/comlink.worker.js +1 -1
- package/lib/comlink.worker.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js +27 -3
- package/lib/tokens.d.ts +9 -0
- package/lib/tokens.js +2 -1
- package/lib/web_worker_kernel.d.ts +2 -0
- package/lib/web_worker_kernel.js +4 -2
- package/lib/worker.js +4 -2
- package/package.json +1 -1
package/lib/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { JupyterLiteServerPlugin } from '@jupyterlite/server';
|
|
2
|
-
|
|
2
|
+
import { IEmpackEnvMetaFile } from './tokens';
|
|
3
|
+
declare const plugins: JupyterLiteServerPlugin<void | IEmpackEnvMetaFile>[];
|
|
3
4
|
export default plugins;
|
package/lib/index.js
CHANGED
|
@@ -6,6 +6,7 @@ import { IServiceWorkerManager } from '@jupyterlite/server';
|
|
|
6
6
|
import { IBroadcastChannelWrapper } from '@jupyterlite/contents';
|
|
7
7
|
import { IKernelSpecs } from '@jupyterlite/kernel';
|
|
8
8
|
import { WebWorkerKernel } from './web_worker_kernel';
|
|
9
|
+
import { IEmpackEnvMetaFile } from './tokens';
|
|
9
10
|
function getJson(url) {
|
|
10
11
|
const json_url = URLExt.join(PageConfig.getBaseUrl(), url);
|
|
11
12
|
const xhr = new XMLHttpRequest();
|
|
@@ -26,8 +27,12 @@ const plugins = kernel_list.map((kernel) => {
|
|
|
26
27
|
id: `@jupyterlite/xeus-${kernel}:register`,
|
|
27
28
|
autoStart: true,
|
|
28
29
|
requires: [IKernelSpecs],
|
|
29
|
-
optional: [
|
|
30
|
-
|
|
30
|
+
optional: [
|
|
31
|
+
IServiceWorkerManager,
|
|
32
|
+
IBroadcastChannelWrapper,
|
|
33
|
+
IEmpackEnvMetaFile
|
|
34
|
+
],
|
|
35
|
+
activate: (app, kernelspecs, serviceWorker, broadcastChannel, empackEnvMetaFile) => {
|
|
31
36
|
// Fetch kernel spec
|
|
32
37
|
const kernelspec = getJson('xeus/kernels/' + kernel + '/kernel.json');
|
|
33
38
|
kernelspec.name = kernel;
|
|
@@ -47,15 +52,34 @@ const plugins = kernel_list.map((kernel) => {
|
|
|
47
52
|
else {
|
|
48
53
|
console.warn(`${kernelspec.name} contents will NOT be synced with Jupyter Contents`);
|
|
49
54
|
}
|
|
55
|
+
const link = empackEnvMetaFile
|
|
56
|
+
? await empackEnvMetaFile.getLink(kernelspec)
|
|
57
|
+
: '';
|
|
50
58
|
return new WebWorkerKernel({
|
|
51
59
|
...options,
|
|
52
60
|
contentsManager,
|
|
53
61
|
mountDrive,
|
|
54
|
-
kernelSpec: kernelspec
|
|
62
|
+
kernelSpec: kernelspec,
|
|
63
|
+
empackEnvMetaLink: link
|
|
55
64
|
});
|
|
56
65
|
}
|
|
57
66
|
});
|
|
58
67
|
}
|
|
59
68
|
};
|
|
60
69
|
});
|
|
70
|
+
const empackEnvMetaPlugin = {
|
|
71
|
+
id: '@jupyterlite/xeus:empack-env-meta',
|
|
72
|
+
autoStart: true,
|
|
73
|
+
provides: IEmpackEnvMetaFile,
|
|
74
|
+
activate: () => {
|
|
75
|
+
return {
|
|
76
|
+
getLink: async (kernelspec) => {
|
|
77
|
+
const kernelName = kernelspec.name;
|
|
78
|
+
const kernel_root_url = URLExt.join(PageConfig.getBaseUrl(), `xeus/kernels/${kernelName}`);
|
|
79
|
+
return `${kernel_root_url}`;
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
plugins.push(empackEnvMetaPlugin);
|
|
61
85
|
export default plugins;
|
package/lib/tokens.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { TDriveMethod, TDriveRequest, TDriveResponse } from '@jupyterlite/contents';
|
|
5
5
|
import { IWorkerKernel } from '@jupyterlite/kernel';
|
|
6
|
+
import { Token } from '@lumino/coreutils';
|
|
6
7
|
/**
|
|
7
8
|
* An interface for Xeus workers.
|
|
8
9
|
*/
|
|
@@ -64,5 +65,13 @@ export declare namespace IXeusWorkerKernel {
|
|
|
64
65
|
baseUrl: string;
|
|
65
66
|
kernelSpec: any;
|
|
66
67
|
mountDrive: boolean;
|
|
68
|
+
empackEnvMetaLink?: string;
|
|
67
69
|
}
|
|
68
70
|
}
|
|
71
|
+
export interface IEmpackEnvMetaFile {
|
|
72
|
+
/**
|
|
73
|
+
* Get empack_env_meta link.
|
|
74
|
+
*/
|
|
75
|
+
getLink: (kernelspec: Record<string, any>) => Promise<string>;
|
|
76
|
+
}
|
|
77
|
+
export declare const IEmpackEnvMetaFile: Token<IEmpackEnvMetaFile>;
|
package/lib/tokens.js
CHANGED
|
@@ -88,6 +88,7 @@ export declare class WebWorkerKernel implements IKernel {
|
|
|
88
88
|
private _parentHeader;
|
|
89
89
|
private _parent;
|
|
90
90
|
private _ready;
|
|
91
|
+
private _empackEnvMetaLink;
|
|
91
92
|
}
|
|
92
93
|
/**
|
|
93
94
|
* A namespace for WebWorkerKernel statics.
|
|
@@ -100,5 +101,6 @@ export declare namespace WebWorkerKernel {
|
|
|
100
101
|
contentsManager: Contents.IManager;
|
|
101
102
|
mountDrive: boolean;
|
|
102
103
|
kernelSpec: any;
|
|
104
|
+
empackEnvMetaLink?: string | undefined;
|
|
103
105
|
}
|
|
104
106
|
}
|
package/lib/web_worker_kernel.js
CHANGED
|
@@ -21,13 +21,14 @@ export class WebWorkerKernel {
|
|
|
21
21
|
this._parentHeader = undefined;
|
|
22
22
|
this._parent = undefined;
|
|
23
23
|
this._ready = new PromiseDelegate();
|
|
24
|
-
const { id, name, sendMessage, location, kernelSpec, contentsManager } = options;
|
|
24
|
+
const { id, name, sendMessage, location, kernelSpec, contentsManager, empackEnvMetaLink } = options;
|
|
25
25
|
this._id = id;
|
|
26
26
|
this._name = name;
|
|
27
27
|
this._location = location;
|
|
28
28
|
this._kernelSpec = kernelSpec;
|
|
29
29
|
this._contentsManager = contentsManager;
|
|
30
30
|
this._sendMessage = sendMessage;
|
|
31
|
+
this._empackEnvMetaLink = empackEnvMetaLink;
|
|
31
32
|
this._worker = this.initWorker(options);
|
|
32
33
|
this._remoteKernel = this.initRemote(options);
|
|
33
34
|
this.initFileSystem(options);
|
|
@@ -84,7 +85,8 @@ export class WebWorkerKernel {
|
|
|
84
85
|
.initialize({
|
|
85
86
|
kernelSpec: this._kernelSpec,
|
|
86
87
|
baseUrl: PageConfig.getBaseUrl(),
|
|
87
|
-
mountDrive: options.mountDrive
|
|
88
|
+
mountDrive: options.mountDrive,
|
|
89
|
+
empackEnvMetaLink: this._empackEnvMetaLink
|
|
88
90
|
})
|
|
89
91
|
.then(this._ready.resolve.bind(this._ready));
|
|
90
92
|
return remote;
|
package/lib/worker.js
CHANGED
|
@@ -84,7 +84,7 @@ export class XeusRemoteKernel {
|
|
|
84
84
|
}
|
|
85
85
|
}
|
|
86
86
|
async initialize(options) {
|
|
87
|
-
const { baseUrl, kernelSpec } = options;
|
|
87
|
+
const { baseUrl, kernelSpec, empackEnvMetaLink } = options;
|
|
88
88
|
// location of the kernel binary on the server
|
|
89
89
|
const binary_js = URLExt.join(baseUrl, kernelSpec.argv[0]);
|
|
90
90
|
const binary_wasm = binary_js.replace('.js', '.wasm');
|
|
@@ -104,7 +104,9 @@ export class XeusRemoteKernel {
|
|
|
104
104
|
// This function is usually implemented in the pre/post.js
|
|
105
105
|
// in the emscripten build of that kernel
|
|
106
106
|
if (globalThis.Module['async_init'] !== undefined) {
|
|
107
|
-
const kernel_root_url =
|
|
107
|
+
const kernel_root_url = empackEnvMetaLink
|
|
108
|
+
? empackEnvMetaLink
|
|
109
|
+
: URLExt.join(baseUrl, `xeus/kernels/${kernelSpec.dir}`);
|
|
108
110
|
const pkg_root_url = URLExt.join(baseUrl, 'xeus/kernel_packages');
|
|
109
111
|
const verbose = true;
|
|
110
112
|
await globalThis.Module['async_init'](kernel_root_url, pkg_root_url, verbose);
|