In-browser bash-like shell implemented in a combination of TypeScript and WebAssembly.
Used in the JupyterLite terminal extension.
The commands used here are either built-in commands implemented in TypeScript, or WebAssembly
commands compiled into .js
and .wasm
files. The latter are built by
Emscripten-forge and are added to a deployment during the build process.
Emscripten-forge packages containing WebAssembly commands that are currently supported and tested are as follows. Each package contains a single commmand with the same name as the package unless otherwise specified:
coreutils
: multiple core commands includingcat
,cp
,echo
,ls
,mkdir
,mv
,rm
,touch
,uname
, andwc
grep
lua
tree
vim
micromamba env create -f environment-dev.yml
micromamba activate cockle
npm install
npm run build
npm run lint:check
You can use conda
, mamba
or pixi
instead of micromamba
here. A copy of
micromamba
is installed into the cockle
environment; this is needed to support the
emscripten-wasm32
platform in the demo and tests.
The cockle
repository includes a demo so that you can easily try it out interactively in a web
browser. Once you have built cockle
, build and run the demo using:
cd demo
npm install
npm run build
npm run serve
then open a browser at the specified URL:
The test
directory contains playwright end-to-end tests which can be built and run as follows:
cd test
npm install
npx playwright install --with-deps chromium
npm run build
npm run test
npm run test:report
You can interactively run individual tests using npm run test:ui
.
In addition, the demo
directory contains separate visual tests that can be run in the same way.
Only Linux screenshots are stored within the repository.