# chooet

> All the goodness of choo, multi-threaded by duet.

Latest version **2.0.0** (published 2025-08-22) · MIT license · 0 weekly downloads

## Install

```sh
npm install chooet
pnpm add chooet
yarn add chooet
bun add chooet
```

## Health

**Score 25/100 (F)** — status: maintenance-mode.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.0 |
| Published | 2025-08-22 |
| First published | 2016-10-06 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 8 |
| Unpacked size | 6.8 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Colin Gourlay |
| Maintainers | colingourlay |
| Keywords | choo, duet |

## Links

- npm: https://www.npmjs.com/package/chooet
- Repository: https://codeberg.org/colingourlay/chooet
- Homepage: https://codeberg.org/colingourlay/chooet#readme
- Issues: https://codeberg.org/colingourlay/chooet/issues
- npm.io page: https://npm.io/package/chooet

## Dependencies (8)

- [xhr](https://npm.io/package/xhr.md) ^2.2.0
- [duet](https://npm.io/package/duet.md) ^5.0.0
- [hyperx](https://npm.io/package/hyperx.md) ^2.0.4
- [barracks](https://npm.io/package/barracks.md) ^8.3.1
- [virtual-dom](https://npm.io/package/virtual-dom.md) ^2.1.1
- [sheet-router](https://npm.io/package/sheet-router.md) ^3.1.0
- [duet-location](https://npm.io/package/duet-location.md) ^2.0.0
- [duet-virtual-dom](https://npm.io/package/duet-virtual-dom.md) ^2.0.1

## Recent versions

- 2.0.0 (latest) — 2025-08-22
- 1.1.0 — 2016-12-04
- 1.0.4 — 2016-10-06
- 1.0.3 — 2016-10-06
- 1.0.2 — 2016-10-06
- 1.0.1 — 2016-10-06

## README

# chooet

All the goodness of [choo](https://github.com/yoshuawuyts/choo), multi-threaded by [duet](https://codeberg.org/colingourlay/duet).

```js
const chooet = require('chooet');
const html = require('chooet/html');

chooet(choo => {
  app = choo();

  app.model({
    state: { title: 'Not quite set yet' },
    reducers: {
      update: (data, state) => ({ title: data })
    }
  });

  const mainView = (state, prev, send) => html`
    <main>
      <h1>Title: ${state.title}</h1>
      <input
        type="text"
        name="title"
        dataset=${{input: (event, value) => send('update', value.title)}}>
    </main>
  `;

  app.router(route => [
    route('/', mainView)
  ]);

  app.start('body');
});
```

---
_Source: https://npm.io/package/chooet · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
