This repository contains utility libraries used by Cleverbrush Online Vector Editor.
All of these packages are open-source and free to use.
Libraries are written in TypeScript and distributed as ES6 modules. You can use them with any bundler or transpiler.
| Package | Description |
|---|---|
@cleverbrush/async |
Async utilities: Collector, debounce, throttle, retry |
@cleverbrush/deep |
Deep operations on objects: equality, merge, flatten |
@cleverbrush/schema |
Schema definition and validation with TypeScript type inference |
@cleverbrush/mapper |
Schema-to-schema object mapping with type-safe property selectors |
@cleverbrush/scheduler |
Job scheduler for Node.js using worker threads |
@cleverbrush/knex-clickhouse |
Knex query builder dialect for ClickHouse |
This project uses npm workspaces. All libraries are located under the libs directory.
npm run build
All libraries are covered with unit tests. We use Vitest as a test runner.
npm test
API documentation is generated by TypeDoc and published at https://docs.cleverbrush.com/.
npm run docs
Each library also has its own README.md with usage examples and API reference.
This project uses Changesets for versioning and publishing. All packages are versioned together (fixed versioning).
Add a changeset — after making changes, run:
npm run changeset
Follow the prompts to select the affected packages and describe the change. This creates a changeset file in the .changeset directory.
Version packages — when ready to release, consume all pending changesets and bump versions:
npm run version
This updates package.json versions and CHANGELOG.md files. Review and commit the result.
Publish to npm — build and publish all packages:
npm run release
To publish a beta release instead:
npm run publish:beta
If you are going to create a pull request, please make sure that your changes are covered with tests and don't break existing ones. If you add a new feature or fix a bug, please update the documentation as well — usually it's just a matter of editing JSDoc comments.
BSD-3-Clause