jupyter-xeus / xeus-javascript

A JavaScript kernel for JupyterLite, powered by Xeus
https://jupyter-xeus.github.io/xeus-javascript/lab/index.html?path=xeus-javascript.ipynb
BSD 3-Clause "New" or "Revised" License
9 stars 5 forks source link

Support for custom kernels derived from `xeus-javascript` #16

Open jtpio opened 8 months ago

jtpio commented 8 months ago

Description

xeus-javascript opens the door for quite some interesting use cases. For example it could be reused for making custom JavaScript kernels with a set of libraries already preloaded.

Looks like we would need a way to:

A concrete example would be for the p5 kernel: https://github.com/jupyterlite/p5-kernel Currently this kernel is a bit tedious to maintain, and would benefit from the features offered by xeus-javascript.

Having such kernel compared to using a generic JavaScript kernel would still be useful, because someone authoring a p5 sketch could directly use global variables (like the setup() and draw() functions, or other globals like TWO_PI or DEGREES) provided by the p5 library, without having to import the library from a CDN.

MRYingLEE commented 5 months ago

Regarding "inject custom JavaScript to be run on kernel startup", I tried to add some script in post.js. If the script uses no external packages, it works well. For "await import()" is not allowed in post.js in building, so far, I couldn't find a way to use external packages. For example, const {default: OpenAI} = await import('https://cdn.jsdelivr.net/npm/openai@4.26.0/+esm'); caused SyntaxError: Unexpected token ("import").

Any suggestions?