From 72147375e92852bd0081b8377be558d9df12befa Mon Sep 17 00:00:00 2001 From: Steve Purves Date: Tue, 11 Jun 2024 15:00:58 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=8D=BD=EF=B8=8F=20lite=20doesn't=20respec?= =?UTF-8?q?t=20paths=20(#752)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🍽️ lite doesn't respect paths * 📕 changeset --- .changeset/purple-queens-breathe.md | 5 +++++ .gitignore | 3 ++- packages/core/src/server.ts | 25 ++++++++++++++++++------- 3 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 .changeset/purple-queens-breathe.md diff --git a/.changeset/purple-queens-breathe.md b/.changeset/purple-queens-breathe.md new file mode 100644 index 00000000..805f76df --- /dev/null +++ b/.changeset/purple-queens-breathe.md @@ -0,0 +1,5 @@ +--- +'thebe-core': patch +--- + +Notebooks in subfolders will not have relative paths honoured in `thebe-lite` diff --git a/.gitignore b/.gitignore index 1659d6c0..69c112dd 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,5 @@ apps/docs/_static/lib junit.xml .turbo -.ipynb_checkpoints \ No newline at end of file +.ipynb_checkpoints +.yalc/ \ No newline at end of file diff --git a/packages/core/src/server.ts b/packages/core/src/server.ts index eef1c801..fcdd90d1 100644 --- a/packages/core/src/server.ts +++ b/packages/core/src/server.ts @@ -117,22 +117,33 @@ class ThebeServer implements ServerRuntime, ServerRestAPI { await this.sessionManager.ready; - // name is assumed to be a non empty string but is otherwise note required + // name is assumed to be a non empty string but is otherwise not required // if a notebook name has been supplied on the path, use that otherwise use a default // https://jupyterlab.readthedocs.io/en/3.4.x/api/modules/services.session.html#isessionoptions - const path = kernelOptions?.path ?? this.config.kernels.path; + let path = kernelOptions?.path ?? this.config.kernels.path; let name = 'thebe.ipynb'; const match = path.match(/\/*([a-zA-Z0-9-]+.ipynb)$/); if (match) { name = match[1]; } + const kernelName = kernelOptions?.kernelName ?? this.config.kernels.kernelName; + + console.debug('thebe:api:startNewSession server', this); + console.debug('thebe:api:startNewSession', { name, path, kernelName }); + + if (this.serviceManager) { + // Temporary Fix: thebe-lite does not yet support filesystem based resouces fully, + // so we can't use a path that points to a sub folder. + path = path.slice(1).replace(/\//g, '-'); + } + const connection = await this.sessionManager?.startNew({ name, path, type: 'notebook', kernel: { - name: kernelOptions?.kernelName ?? this.config.kernels.kernelName, + name: kernelName, }, }); @@ -265,7 +276,7 @@ class ThebeServer implements ServerRuntime, ServerRestAPI { `thebe-lite is not available at window.thebeLite - load this onto your page before loading thebe or thebe-core.`, ); - const serviceManager = await window.thebeLite.startJupyterLiteServer(config); + this.serviceManager = await window.thebeLite.startJupyterLiteServer(config); this.events.triggerStatus({ status: ServerStatusEvent.launching, @@ -274,10 +285,10 @@ class ThebeServer implements ServerRuntime, ServerRestAPI { console.debug( 'thebe:api:connectToJupyterLiteServer:serverSettings:', - serviceManager.serverSettings, + this.serviceManager.serverSettings, ); - this.sessionManager = serviceManager.sessions; + this.sessionManager = this.serviceManager.sessions; this.events.triggerStatus({ status: ServerStatusEvent.launching, @@ -286,7 +297,7 @@ class ThebeServer implements ServerRuntime, ServerRestAPI { return this.sessionManager?.ready.then( () => { - this.userServerUrl = `${serviceManager.serverSettings.baseUrl}?token=${serviceManager.serverSettings.token}`; + this.userServerUrl = '/'; // TODO bundle jlite UI `${this.serviceManager?.serverSettings.baseUrl}?token=${this.serviceManager?.serverSettings.token}`; this.events.triggerStatus({ status: ServerStatusEvent.ready, message: `Server connection established`,