Skip to content

In-browser bash-like shell implemented in TypeScript.

License

Notifications You must be signed in to change notification settings

jupyterlite/cockle

cockle

In-browser bash-like shell implemented in a combination of TypeScript and WebAssembly.

Used in the JupyterLite terminal extension.

This is an early-stage work in progress and should be considered experimental code. Anything and everything could change at any time.

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 the cockle NPM package using a micromamba environment as part of the npm prepack process.

Build

micromamba env create -f environment-dev.yml -y
micromamba activate cockle
npm install
npm run fetch:wasm
npm run build
npm run lint:check

Run tests

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.

Demo

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:

Demo