@jupyterlite/xeus 2.0.0 → 2.1.0

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/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  import { JupyterLiteServerPlugin } from '@jupyterlite/server';
2
- declare const plugins: JupyterLiteServerPlugin<void>[];
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: [IServiceWorkerManager, IBroadcastChannelWrapper],
30
- activate: (app, kernelspecs, serviceWorker, broadcastChannel) => {
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
@@ -1,3 +1,4 @@
1
1
  // Copyright (c) Jupyter Development Team.
2
2
  // Distributed under the terms of the Modified BSD License.
3
- export {};
3
+ import { Token } from '@lumino/coreutils';
4
+ export const IEmpackEnvMetaFile = new Token('@jupyterlite/xeus:IEmpackEnvMetaFile');
@@ -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
  }
@@ -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 = URLExt.join(baseUrl, `xeus/kernels/${kernelSpec.dir}`);
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);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyterlite/xeus",
3
- "version": "2.0.0",
3
+ "version": "2.1.0",
4
4
  "description": "JupyterLite loader for Xeus kernels",
5
5
  "keywords": [
6
6
  "jupyter",