One module per subpath
Every module is its own subpath, so a consumer loads only what it imports.
One module per subpath
Every module is its own subpath, so a consumer loads only what it imports.
Runs anywhere
Node, a browser renderer and Obsidian, desktop and mobile. Platform-only modules say so in their name.
Debug logging
Namespaced debug messages you switch on from the console, with the caller’s location attached.
API contracts
Describe an API one module exposes to another, with a Standard Schema over every method’s arguments and result.