open-index/open-npm huggingface dataset:
npm package: @knyt/clerk
Description: A lightweight, observable state management library with built-in utilities for actions, reducers, and selectors.
Author: Morris Allison III
Latest version: 0.4.1

<div align="center">

[![Knyt](./docs/banner.svg)](https://knyt.dev/s/clerk)

🗃️ Lightweight, observable state management. <br /> Supports async flows with built-in utilities for actions, reducers, and selectors.

<small>

This package is part of [Knyt](https://knyt.dev/), a toolkit designed to simplify modern web development.

</small>

[![npm](https://img.shields.io/npm/v/@knyt/clerk?style=flat-square&labelColor=444)](https://www.npmjs.com/package/@knyt/clerk)
[![GitHub](https://img.shields.io/badge/Source_Code-black?style=flat-square&label=GitHub&labelColor=444)](https://github.com/sables-app/knyt/tree/main/packages/clerk)
[![License](https://img.shields.io/badge/License-BSD_3_Clause-blue?style=flat-square&labelColor=444)](https://github.com/sables-app/knyt/blob/main/LICENSE)
<br />
![Built with TypeScript](https://img.shields.io/badge/Built%20with-TypeScript-3178c6.svg?style=flat-square&logo=typescript&labelColor=444)
![Runs Everywhere](https://img.shields.io/badge/Runs-Everywhere-f7df1e.svg?style=flat-square&logo=javascript&labelColor=444)

</div>

## Key Features

- **Observability**: Stores are both observables and observers, supporting reactive state management for full state, selections, and dispatched actions.
- **Batteries-included**: Provides built-in utilities for reducers, action creators, selectors, and debug logging.
- **Extensibility**: Class-based but composition-friendly, supporting both inheritance and wrapper patterns for customization.
- **Async-ready**: Native support for dispatched async functions (thunks) and exposes actions as an observable stream (`action$`).
- **Familiar API**: Follows Flux Standard Action (FSA) for easy adoption by Flux/Redux developers.

## Documentation

Documentation is available at [knyt.dev](https://knyt.dev), including a [guide on state management](https://knyt.dev/guide/state-management).

## Usage

## Install

You can use this package by installing either the [Knyt Toolkit](https://knyt.dev/s/toolkit) or this standalone package.

_Knyt Toolkit:_

```sh
npm install knyt
```

_Standalone:_

```sh
npm install @knyt/clerk
```

## Updates

See the [CHANGELOG](./CHANGELOG.md) for a list of changes.

## License

This package is licensed under the [BSD 3-Clause License](./LICENSE).

## Open-Source Initiative

This project is supported by [Sables Applications LLC](https://sables.app) as part of its open-source initiatives.