From 1e96d5f5a4ed3f38b32834cca50767e458d1a508 Mon Sep 17 00:00:00 2001 From: Anastasiia Sliusar Date: Fri, 13 Sep 2024 14:32:23 +0200 Subject: [PATCH 1/9] Passing a custom link of empack_env_meta json --- src/tokens.ts | 1 + src/worker.ts | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/tokens.ts b/src/tokens.ts index bf41bdc..8731edb 100644 --- a/src/tokens.ts +++ b/src/tokens.ts @@ -85,5 +85,6 @@ export namespace IXeusWorkerKernel { baseUrl: string; kernelSpec: any; mountDrive: boolean; + empack_env_meta_link: string; } } diff --git a/src/worker.ts b/src/worker.ts index 60c91b4..7776d38 100644 --- a/src/worker.ts +++ b/src/worker.ts @@ -103,7 +103,7 @@ export class XeusRemoteKernel { } async initialize(options: IXeusWorkerKernel.IOptions): Promise { - const { baseUrl, kernelSpec } = options; + const { baseUrl, kernelSpec, empack_env_meta_link } = options; // location of the kernel binary on the server const binary_js = URLExt.join(baseUrl, kernelSpec.argv[0]); const binary_wasm = binary_js.replace('.js', '.wasm'); @@ -134,7 +134,8 @@ export class XeusRemoteKernel { await globalThis.Module['async_init']( kernel_root_url, pkg_root_url, - verbose + verbose, + empack_env_meta_link ); } From 0b67695980747e2cd45f49d902013c111d6f392f Mon Sep 17 00:00:00 2001 From: Anastasiia Sliusar Date: Mon, 16 Sep 2024 10:33:24 +0200 Subject: [PATCH 2/9] Passing the link --- src/index.ts | 10 ++++++---- src/tokens.ts | 2 +- src/web_worker_kernel.ts | 8 ++++++-- src/worker.ts | 3 ++- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/index.ts b/src/index.ts index 44d2864..23e3713 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,7 +9,7 @@ import { JupyterLiteServerPlugin } from '@jupyterlite/server'; import { IBroadcastChannelWrapper } from '@jupyterlite/contents'; -import { IKernel, IKernelSpecs } from '@jupyterlite/kernel'; +import { IKernel, IKernelSpecs, IEmpackEnvMetaFile } from '@jupyterlite/kernel'; import { WebWorkerKernel } from './web_worker_kernel'; @@ -34,12 +34,13 @@ const plugins = kernel_list.map((kernel): JupyterLiteServerPlugin => { id: `@jupyterlite/xeus-${kernel}:register`, autoStart: true, requires: [IKernelSpecs], - optional: [IServiceWorkerManager, IBroadcastChannelWrapper], + optional: [IServiceWorkerManager, IBroadcastChannelWrapper, IEmpackEnvMetaFile], activate: ( app: JupyterLiteServer, kernelspecs: IKernelSpecs, serviceWorker?: IServiceWorkerManager, - broadcastChannel?: IBroadcastChannelWrapper + broadcastChannel?: IBroadcastChannelWrapper, + empackEnvMetaFile?: IEmpackEnvMetaFile ) => { // Fetch kernel spec const kernelspec = getJson('xeus/kernels/' + kernel + '/kernel.json'); @@ -76,7 +77,8 @@ const plugins = kernel_list.map((kernel): JupyterLiteServerPlugin => { ...options, contentsManager, mountDrive, - kernelSpec: kernelspec + kernelSpec: kernelspec, + empackEnvMetaLink:empackEnvMetaFile? empackEnvMetaFile.getLink(): '' }); } }); diff --git a/src/tokens.ts b/src/tokens.ts index 8731edb..f2caf05 100644 --- a/src/tokens.ts +++ b/src/tokens.ts @@ -85,6 +85,6 @@ export namespace IXeusWorkerKernel { baseUrl: string; kernelSpec: any; mountDrive: boolean; - empack_env_meta_link: string; + empackEnvMetaLink?: string; } } diff --git a/src/web_worker_kernel.ts b/src/web_worker_kernel.ts index c0b34cd..146e0f1 100644 --- a/src/web_worker_kernel.ts +++ b/src/web_worker_kernel.ts @@ -29,7 +29,7 @@ export class WebWorkerKernel implements IKernel { * @param options The instantiation options for a new WebWorkerKernel */ constructor(options: WebWorkerKernel.IOptions) { - const { id, name, sendMessage, location, kernelSpec, contentsManager } = + const { id, name, sendMessage, location, kernelSpec, contentsManager, empackEnvMetaLink = '' } = options; this._id = id; this._name = name; @@ -39,6 +39,7 @@ export class WebWorkerKernel implements IKernel { this._sendMessage = sendMessage; this._worker = this.initWorker(options); this._remoteKernel = this.initRemote(options); + this._empackEnvMetaLink = empackEnvMetaLink; this.initFileSystem(options); } @@ -103,7 +104,8 @@ export class WebWorkerKernel implements IKernel { .initialize({ kernelSpec: this._kernelSpec, baseUrl: PageConfig.getBaseUrl(), - mountDrive: options.mountDrive + mountDrive: options.mountDrive, + empackEnvMetaLink: this._empackEnvMetaLink, }) .then(this._ready.resolve.bind(this._ready)); @@ -290,6 +292,7 @@ export class WebWorkerKernel implements IKernel { | undefined = undefined; private _parent: KernelMessage.IMessage | undefined = undefined; private _ready = new PromiseDelegate(); + private _empackEnvMetaLink: string; } /** @@ -303,5 +306,6 @@ export namespace WebWorkerKernel { contentsManager: Contents.IManager; mountDrive: boolean; kernelSpec: any; + empackEnvMetaLink?: string; } } diff --git a/src/worker.ts b/src/worker.ts index 7776d38..14ac49a 100644 --- a/src/worker.ts +++ b/src/worker.ts @@ -103,7 +103,7 @@ export class XeusRemoteKernel { } async initialize(options: IXeusWorkerKernel.IOptions): Promise { - const { baseUrl, kernelSpec, empack_env_meta_link } = options; + const { baseUrl, kernelSpec, empackEnvMetaLink } = options; // location of the kernel binary on the server const binary_js = URLExt.join(baseUrl, kernelSpec.argv[0]); const binary_wasm = binary_js.replace('.js', '.wasm'); @@ -131,6 +131,7 @@ export class XeusRemoteKernel { ); const pkg_root_url = URLExt.join(baseUrl, 'xeus/kernel_packages'); const verbose = true; + const empack_env_meta_link = empackEnvMetaLink; await globalThis.Module['async_init']( kernel_root_url, pkg_root_url, From 67526acb837a32c4e744b087129be9a1d96a432b Mon Sep 17 00:00:00 2001 From: Anastasiia Sliusar Date: Mon, 16 Sep 2024 14:44:22 +0200 Subject: [PATCH 3/9] Move plugin with a link --- src/index.ts | 24 +++++++++++++++++++++++- src/tokens.ts | 10 ++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 23e3713..bac8fb2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,9 +9,10 @@ import { JupyterLiteServerPlugin } from '@jupyterlite/server'; import { IBroadcastChannelWrapper } from '@jupyterlite/contents'; -import { IKernel, IKernelSpecs, IEmpackEnvMetaFile } from '@jupyterlite/kernel'; +import { IKernel, IKernelSpecs } from '@jupyterlite/kernel'; import { WebWorkerKernel } from './web_worker_kernel'; +import { IEmpackEnvMetaFile } from './tokens'; function getJson(url: string) { const json_url = URLExt.join(PageConfig.getBaseUrl(), url); @@ -86,4 +87,25 @@ const plugins = kernel_list.map((kernel): JupyterLiteServerPlugin => { }; }); +const empackEnvMetaPlugin: JupyterLiteServerPlugin = { + id: `@jupyterlite/xeus-python:empack-env-meta`, + autoStart: true, + provides: IEmpackEnvMetaFile, + activate: (): IEmpackEnvMetaFile => { + return { + getLink(){ + let empackEnvMetaLink ='' + const searchParams = new URL(location.href).searchParams; + + if (searchParams && searchParams.get('empack_env_meta')) { + empackEnvMetaLink = searchParams.get('empack_env_meta') as string; + } + return empackEnvMetaLink; + } + }; + }, +}; + +plugins.push(empackEnvMetaPlugin); + export default plugins; diff --git a/src/tokens.ts b/src/tokens.ts index f2caf05..76b8730 100644 --- a/src/tokens.ts +++ b/src/tokens.ts @@ -12,6 +12,7 @@ import { } from '@jupyterlite/contents'; import { IWorkerKernel } from '@jupyterlite/kernel'; +import { Token } from '@lumino/coreutils'; /** * An interface for Xeus workers. @@ -88,3 +89,12 @@ export namespace IXeusWorkerKernel { empackEnvMetaLink?: string; } } + +export interface IEmpackEnvMetaFile { + /** + * Get empack_env_meta link. + */ + getLink:()=> string; +} + +export const IEmpackEnvMetaFile = new Token('@jupyterlite/xeus-python:IEmpackEnvMetaFile'); From 48344d035cfe8d55ad13434f5c4b62e5d42059b6 Mon Sep 17 00:00:00 2001 From: Anastasiia Sliusar Date: Tue, 17 Sep 2024 15:34:08 +0200 Subject: [PATCH 4/9] Fix typescript error on a plugin --- src/index.ts | 9 +++++---- src/tokens.ts | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/index.ts b/src/index.ts index bac8fb2..57afc67 100644 --- a/src/index.ts +++ b/src/index.ts @@ -30,7 +30,7 @@ try { throw err; } -const plugins = kernel_list.map((kernel): JupyterLiteServerPlugin => { +const plugins = kernel_list.map((kernel): JupyterLiteServerPlugin => { return { id: `@jupyterlite/xeus-${kernel}:register`, autoStart: true, @@ -73,13 +73,14 @@ const plugins = kernel_list.map((kernel): JupyterLiteServerPlugin => { `${kernelspec.name} contents will NOT be synced with Jupyter Contents` ); } + const link = empackEnvMetaFile ? await empackEnvMetaFile.getLink(): ''; return new WebWorkerKernel({ ...options, contentsManager, mountDrive, kernelSpec: kernelspec, - empackEnvMetaLink:empackEnvMetaFile? empackEnvMetaFile.getLink(): '' + empackEnvMetaLink: link }); } }); @@ -87,13 +88,13 @@ const plugins = kernel_list.map((kernel): JupyterLiteServerPlugin => { }; }); -const empackEnvMetaPlugin: JupyterLiteServerPlugin = { +const empackEnvMetaPlugin: JupyterLiteServerPlugin = { id: `@jupyterlite/xeus-python:empack-env-meta`, autoStart: true, provides: IEmpackEnvMetaFile, activate: (): IEmpackEnvMetaFile => { return { - getLink(){ + getLink: async () => { let empackEnvMetaLink ='' const searchParams = new URL(location.href).searchParams; diff --git a/src/tokens.ts b/src/tokens.ts index 76b8730..970aab1 100644 --- a/src/tokens.ts +++ b/src/tokens.ts @@ -94,7 +94,7 @@ export interface IEmpackEnvMetaFile { /** * Get empack_env_meta link. */ - getLink:()=> string; + getLink: () => Promise; } export const IEmpackEnvMetaFile = new Token('@jupyterlite/xeus-python:IEmpackEnvMetaFile'); From 58a9401d65a7af71f6ba53ed65563c2d44477be3 Mon Sep 17 00:00:00 2001 From: Anastasiia Sliusar Date: Fri, 20 Sep 2024 15:55:29 +0200 Subject: [PATCH 5/9] Fix rewriting a link --- src/index.ts | 4 ++-- src/web_worker_kernel.ts | 9 ++++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/index.ts b/src/index.ts index 57afc67..2babcaa 100644 --- a/src/index.ts +++ b/src/index.ts @@ -55,7 +55,6 @@ const plugins = kernel_list.map((kernel): JupyterLiteServerPlugin => { @@ -74,7 +73,8 @@ const plugins = kernel_list.map((kernel): JupyterLiteServerPlugin; } + console.log('remote worker'); + console.log('this._empackEnvMetaLink'); + console.log(this._empackEnvMetaLink); remote .initialize({ kernelSpec: this._kernelSpec, @@ -292,7 +295,7 @@ export class WebWorkerKernel implements IKernel { | undefined = undefined; private _parent: KernelMessage.IMessage | undefined = undefined; private _ready = new PromiseDelegate(); - private _empackEnvMetaLink: string; + private _empackEnvMetaLink: string | undefined; } /** @@ -306,6 +309,6 @@ export namespace WebWorkerKernel { contentsManager: Contents.IManager; mountDrive: boolean; kernelSpec: any; - empackEnvMetaLink?: string; + empackEnvMetaLink?: string | undefined; } } From e1b88d933a1cc566975a50ffb77bdfe183613fa3 Mon Sep 17 00:00:00 2001 From: Anastasiia Sliusar Date: Fri, 20 Sep 2024 17:17:06 +0200 Subject: [PATCH 6/9] Fix passing a link --- src/web_worker_kernel.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/web_worker_kernel.ts b/src/web_worker_kernel.ts index 68d15a0..8cc9c85 100644 --- a/src/web_worker_kernel.ts +++ b/src/web_worker_kernel.ts @@ -37,10 +37,9 @@ export class WebWorkerKernel implements IKernel { this._kernelSpec = kernelSpec; this._contentsManager = contentsManager; this._sendMessage = sendMessage; + this._empackEnvMetaLink = empackEnvMetaLink; this._worker = this.initWorker(options); this._remoteKernel = this.initRemote(options); - this._empackEnvMetaLink = empackEnvMetaLink; - this.initFileSystem(options); } @@ -100,7 +99,7 @@ export class WebWorkerKernel implements IKernel { }; remote = wrap(this._worker) as Remote; } - console.log('remote worker'); + console.log('this._empackEnvMetaLink'); console.log(this._empackEnvMetaLink); remote From add8aed87e64ad14689c085c86fbb045b20873d3 Mon Sep 17 00:00:00 2001 From: Anastasiia Sliusar Date: Wed, 25 Sep 2024 14:14:01 +0200 Subject: [PATCH 7/9] Remove console.log --- src/index.ts | 3 +-- src/web_worker_kernel.ts | 2 -- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/index.ts b/src/index.ts index 2babcaa..3704497 100644 --- a/src/index.ts +++ b/src/index.ts @@ -73,8 +73,7 @@ const plugins = kernel_list.map((kernel): JupyterLiteServerPlugin; } - console.log('this._empackEnvMetaLink'); - console.log(this._empackEnvMetaLink); remote .initialize({ kernelSpec: this._kernelSpec, From 55b9ed035b142a758235c143c062522e2deea3c8 Mon Sep 17 00:00:00 2001 From: Anastasiia Sliusar Date: Thu, 26 Sep 2024 21:18:39 +0200 Subject: [PATCH 8/9] Update plugin --- src/index.ts | 16 +++++++--------- src/tokens.ts | 2 +- src/worker.ts | 6 ++---- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/index.ts b/src/index.ts index 3704497..846701b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -72,7 +72,7 @@ const plugins = kernel_list.map((kernel): JupyterLiteServerPlugin = { provides: IEmpackEnvMetaFile, activate: (): IEmpackEnvMetaFile => { return { - getLink: async () => { - let empackEnvMetaLink ='' - const searchParams = new URL(location.href).searchParams; - - if (searchParams && searchParams.get('empack_env_meta')) { - empackEnvMetaLink = searchParams.get('empack_env_meta') as string; - } - return empackEnvMetaLink; + getLink: async (kernel?: string) => { + const kernel_root_url = URLExt.join( + PageConfig.getBaseUrl(), + `xeus/kernels/${kernel}` + ); + return `${kernel_root_url}/empack_env_meta.json`; } }; }, diff --git a/src/tokens.ts b/src/tokens.ts index 970aab1..3743470 100644 --- a/src/tokens.ts +++ b/src/tokens.ts @@ -94,7 +94,7 @@ export interface IEmpackEnvMetaFile { /** * Get empack_env_meta link. */ - getLink: () => Promise; + getLink: (kernel?: string) => Promise; } export const IEmpackEnvMetaFile = new Token('@jupyterlite/xeus-python:IEmpackEnvMetaFile'); diff --git a/src/worker.ts b/src/worker.ts index 14ac49a..1e25b50 100644 --- a/src/worker.ts +++ b/src/worker.ts @@ -125,18 +125,16 @@ export class XeusRemoteKernel { // This function is usually implemented in the pre/post.js // in the emscripten build of that kernel if (globalThis.Module['async_init'] !== undefined) { - const kernel_root_url = URLExt.join( + const kernel_root_url = empackEnvMetaLink ? empackEnvMetaLink : URLExt.join( baseUrl, `xeus/kernels/${kernelSpec.dir}` ); const pkg_root_url = URLExt.join(baseUrl, 'xeus/kernel_packages'); const verbose = true; - const empack_env_meta_link = empackEnvMetaLink; await globalThis.Module['async_init']( kernel_root_url, pkg_root_url, - verbose, - empack_env_meta_link + verbose ); } From d9e5185a6367f75dc970fcc90160e4542d545ba7 Mon Sep 17 00:00:00 2001 From: Anastasiia Sliusar Date: Fri, 27 Sep 2024 13:56:31 +0200 Subject: [PATCH 9/9] fix passing a host where empack_env_meta.json file is saved --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 846701b..682c1c8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -98,7 +98,7 @@ const empackEnvMetaPlugin: JupyterLiteServerPlugin = { PageConfig.getBaseUrl(), `xeus/kernels/${kernel}` ); - return `${kernel_root_url}/empack_env_meta.json`; + return `${kernel_root_url}`; } }; },