# tasquencer

> A BPM library for Node based on the concepts from https://yawlfoundation.github.io/.

Latest version **3.4.3** (published 2024-09-10) · MIT license · 0 weekly downloads

## Install

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

## Health

**Score 30/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities; high quality score.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.4.3 |
| Published | 2024-09-10 |
| First published | 2023-07-08 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM |
| Node | ^22.1.0 |
| Dependencies | 4 |
| Unpacked size | 1.9 MB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | retro |

## Links

- npm: https://www.npmjs.com/package/tasquencer
- npm.io page: https://npm.io/package/tasquencer

## Dependencies (4)

- [effect](https://npm.io/package/effect.md) ^3.7.2
- [nanoid](https://npm.io/package/nanoid.md) ^5.0.7
- [mutative](https://npm.io/package/mutative.md) ^1.0.8
- [type-fest](https://npm.io/package/type-fest.md) ^4.26.0

## Recent versions

- 3.4.3 (latest) — 2024-09-10
- 3.4.2 — 2024-09-08
- 3.4.1 — 2024-09-08
- 3.4.0 — 2024-09-06
- 3.3.0 — 2024-02-10
- 3.2.0 — 2024-02-09
- 3.1.2 — 2024-01-31
- 3.1.1 — 2024-01-30
- 3.1.0 — 2024-01-28
- 3.0.0 — 2024-01-27
- 2.1.0 — 2024-01-26
- 2.0.1 — 2024-01-25
- 2.0.0 — 2023-12-03
- 1.1.2 — 2023-10-05
- 1.1.1 — 2023-10-05
- … 2 more at https://npm.io/package/tasquencer/versions

## README

# Tasquencer

A BPM library for Node based on the concepts from https://yawlfoundation.github.io/.

- Implemented with a "code-first" approach
- Minimal - implements only the flow control concepts, everything else should be implemented in user space code

Example:

```typescript
const workflowDefinition = Builder.workflow<{
  shouldBookFlight: boolean;
  shouldBookCar: boolean;
}>()
  .withName('or-split-join')
  .startCondition('start')
  .task('register', Builder.emptyTask().withSplitType('or'))
  .task('book_flight', Builder.emptyTask())
  .task('book_hotel', Builder.emptyTask())
  .task('book_car', Builder.emptyTask())
  .task('pay', Builder.emptyTask().withJoinType('or'))
  .endCondition('end')
  .connectCondition('start', (to) => to.task('register'))
  .connectTask('register', (to) =>
    to
      .task('book_flight', ({ context }) =>
        Effect.succeed(context.shouldBookFlight)
      )
      .task('book_car', ({ context }) => Effect.succeed(context.shouldBookCar))
      .defaultTask('book_hotel')
  )
  .connectTask('book_flight', (to) => to.task('pay'))
  .connectTask('book_hotel', (to) => to.task('pay'))
  .connectTask('book_car', (to) => to.task('pay'))
  .connectTask('pay', (to) => to.condition('end'));
```

Still very much a work in progress, but public API is stable.

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