From 03792718c7fba059ca9a3fb930226a5420544022 Mon Sep 17 00:00:00 2001 From: martinRenou Date: Thu, 11 Jan 2024 09:30:11 +0100 Subject: [PATCH] Revert to one plugin per-kernel --- src/index.ts | 62 +++++++++++++++++++++++++++------------------------ src/worker.ts | 5 ++++- 2 files changed, 37 insertions(+), 30 deletions(-) diff --git a/src/index.ts b/src/index.ts index 9c6ccb0..967e858 100644 --- a/src/index.ts +++ b/src/index.ts @@ -21,35 +21,39 @@ function getJson(url: string) { return JSON.parse(xhr.responseText); } -const xeusKernelsPlugin: JupyterLiteServerPlugin = { - id: '@jupyterlite/xeus:register-kernels', - autoStart: true, - requires: [IKernelSpecs], - optional: [IServiceWorkerManager, IBroadcastChannelWrapper], - activate: ( - app: JupyterLiteServer, - kernelspecs: IKernelSpecs, - serviceWorker?: IServiceWorkerManager, - broadcastChannel?: IBroadcastChannelWrapper - ) => { - let kernel_list: string[] = []; - try { - kernel_list = getJson('xeus/kernels.json'); - } catch (err) { - console.log(`Could not fetch xeus/kernels.json: ${err}`); - throw err; - } +let kernel_list: string[] = []; +try { + kernel_list = getJson('xeus/kernels.json'); +} catch (err) { + console.log(`Could not fetch xeus/kernels.json: ${err}`); + throw err; +} - // Fetch kernel spec for each kernel - for (const kernel of kernel_list) { - const kernelspec = getJson( - 'xeus/kernels/' + kernel + '/kernel.json' - ); +const plugins = kernel_list.map((kernel): JupyterLiteServerPlugin => { + return { + id: `@jupyterlite/xeus-${kernel}:register`, + autoStart: true, + requires: [IKernelSpecs], + optional: [IServiceWorkerManager, IBroadcastChannelWrapper], + activate: ( + app: JupyterLiteServer, + kernelspecs: IKernelSpecs, + serviceWorker?: IServiceWorkerManager, + broadcastChannel?: IBroadcastChannelWrapper + ) => { + // Fetch kernel spec + const kernelspec = getJson('xeus/kernels/' + kernel + '/kernel.json'); kernelspec.name = kernel; kernelspec.dir = kernel; kernelspec.resources = { - 'logo-32x32': URLExt.join(PageConfig.getBaseUrl(), 'xeus/kernels/' + kernel + '/logo-32x32.png'), - 'logo-64x64': URLExt.join(PageConfig.getBaseUrl(), 'xeus/kernels/' + kernel + '/logo-64x64.png'), + 'logo-32x32': URLExt.join( + PageConfig.getBaseUrl(), + 'xeus/kernels/' + kernel + '/logo-32x32.png' + ), + 'logo-64x64': URLExt.join( + PageConfig.getBaseUrl(), + 'xeus/kernels/' + kernel + '/logo-64x64.png' + ) }; kernelspecs.register({ @@ -76,8 +80,8 @@ const xeusKernelsPlugin: JupyterLiteServerPlugin = { }); } }); - }; - } -}; + } + }; +}); -export default xeusKernelsPlugin; +export default plugins; diff --git a/src/worker.ts b/src/worker.ts index ca84f13..f41f1c0 100644 --- a/src/worker.ts +++ b/src/worker.ts @@ -165,7 +165,10 @@ class XeusKernel { const dir = this._kernelspec.dir; // location of the kernel binary on the server - const binary_js = URLExt.join(PageConfig.getBaseUrl(), this._kernelspec.argv[0]); + const binary_js = URLExt.join( + PageConfig.getBaseUrl(), + this._kernelspec.argv[0] + ); const binary_wasm = binary_js.replace('.js', '.wasm'); importScripts(binary_js);