This PR uses WebAssembly commands rather than TypeScript ones. It follows on from the experiment in jupyterlite/terminal#15 by moving the WASM modules from there to here. There are 2 WASM modules, fs.js contains the Emscripten filesystem used by the commands and a single instance exists for the duration of the shell, and coreutils.js contains many commands. The latter is reused for each command run and the filesystem from fs.js is patched in as a PROXYFS so that all commands see the same filesystem. There is no use of a JupyterLite DriveFS here, that is kept in the terminal extension as it can only be used with a running instance of JupyterLite and here we want to be able to test the commands just using the basic WASM filesystem. There are also some builtin commands (currently only cd) that access the Emscripten filesystem directly.
The idea here is to merge this and release version 0.0.4 of @jupyterlite/cockle, then jupyterlite/terminal#15 can be rewritten to use this. After that we can do some fast iterations of cockle without having to change terminal, to try to get this into a fully working system.
This PR uses WebAssembly commands rather than TypeScript ones. It follows on from the experiment in jupyterlite/terminal#15 by moving the WASM modules from there to here. There are 2 WASM modules,
fs.js
contains the Emscripten filesystem used by the commands and a single instance exists for the duration of the shell, andcoreutils.js
contains many commands. The latter is reused for each command run and the filesystem fromfs.js
is patched in as aPROXYFS
so that all commands see the same filesystem. There is no use of a JupyterLiteDriveFS
here, that is kept in theterminal
extension as it can only be used with a running instance of JupyterLite and here we want to be able to test the commands just using the basic WASM filesystem. There are also some builtin commands (currently onlycd
) that access the Emscripten filesystem directly.The idea here is to merge this and release version 0.0.4 of
@jupyterlite/cockle
, then jupyterlite/terminal#15 can be rewritten to use this. After that we can do some fast iterations ofcockle
without having to changeterminal
, to try to get this into a fully working system.