open-index/open-npm huggingface dataset:
npm package: @prometheusresearch/react-ui
Description: Configurable and styleable UI components
Author: Prometheus Research, LLC
Latest version: 0.25.1

# react-ui-component

[![Travis build status](https://img.shields.io/travis/prometheusresearch/react-ui/master.svg)](https://travis-ci.org/prometheusresearch/react-ui)

Configurable and styleable UI components.
npm package: @prometheusresearch/webtest
Description: Webpack based test runnner
Author: Prometheus Research, LLC
Latest version: 0.1.4

# Webtest

Webtest is an opinionated Webpack based test runner.

It has opinions on the following topics:

* You use Webpack
* You use Jasmine test framework (this opinion can be lifted easily, send a PR
  if you want to add support for mocha, ...)

## Installation

    % npm install @prometheusresearch/webtest

## Usage

Basic usage is as simple as:

    % webtest .

which will try to find tests using `**/__tests__/*-test.js` glob pattern and
execute them within the PhantomJS headless browser.

To re-run tests on source code changes supply `--watch` parameter:

    % webtest --watch .

To run tests in regular browser jsut visit `http://localhost:3000` while this
command is executing.

### Custom test discovery

You can specify desired test suites by listsing them as arguments:

    % webtest ./lib/__tests__/Value-test.js

Another way is to use a glob pattern:

    % webtest ./lib/**/*-test.js

### Webpack configuration

Webtest looks for `webpack.config.js` file in the current directory and will use
it for building w test bundle if it is available. You can use `--config`
parameter to specify alternative Webpack configuration:

    % webtest --config webpack.config.test.js ...

You can put Webtest entry configuration in `webtest.entry` key of a Webpack
configuration:

    module.exports = {

      // ... other Webpack configuration

      webtest: {
        entry: [
          './lib/**/__tests__/*-test.js'
        ]
      }

    }

### Reference

You can execute `webtest --help` command to see a reference documentation on all
available `webtest` parameters:

    % webtest --help
    Usage: webtest [entry]... [options]

    entry     Glob patterns to discover test cases  [$PWD/**/__tests__/*-test.js]

    Options:
      -r, --runtime   Runtime to execute tests in  [phantomjs]
      -c, --config    Webpack configuration  [$PWD/webpack.config.js]
      --context       Context  [$PWD]
      -p, --port      Port  [3000]
      --watch         Watch for changes and re-run tests
      --discover      Glob patter to discover tests  [**/__tests__/*-test.js]
      --version       Print version and exit
npm package: @prometora/marketplace-ui
Description: Marketplace UI components for Prometora stores
Author: Prometora
Latest version: 1.0.3

# @prometora/marketplace-ui

Marketplace UI components and pages for Prometora stores.

## Installation

```bash
npm install @prometora/marketplace-ui
```

## Usage

Import pages in your store's Next.js app:

```typescript
import { ListingsPage } from '@prometora/marketplace-ui';

export default function Listings() {
  return <ListingsPage storeSlug="my-store" apiUrl="https://www.prometora.com" />;
}
```

## Development

```bash
# Build the package
npm run build

# Watch mode for development
npm run dev
```

## Pages Included

- ListingsPage - Browse all listings
- ListingDetailPage - Individual listing detail
- SignInPage - Seller/buyer authentication
- SignUpPage - Seller/buyer registration
- CartPage - Shopping cart
- CheckoutPage - Checkout flow
- DashboardPage - Seller dashboard
- And more...
npm package: @promexx/slidev-theme-2025
Description: A Slidev theme for Promexx
Author: PROMEXX
Latest version: 1.3.0

# slidev-theme-promexx

Slidev theme based on PROMEXX powerpoint template.

A promexx theme for [Slidev](https://github.com/slidevjs/slidev).

## Examples

![Cover](docs/cover.png)
![Content](docs/content.png)
![Section Header](docs/section-header.png.png)
![Last](docs/last.png)

## Install

Add promexx registry to .npmrc:

```
# github registry
@promexx:registry=https://npm.pkg.github.com
# export GITHUB_TOKEN=<your_github_token> before running yarn publish
//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}
```

**Note**: make sure your classic github token is loaded.

Add the following frontmatter to your `slides.md`. 
Start Slidev then it will prompt you to install the theme automatically.

<pre><code>---
theme: <b>'@promexx/slidev-theme-promexx'</b>
---</code></pre>

Learn more about [how to use a theme](https://sli.dev/guide/theme-addon#use-theme).

## Layouts

This theme provides the following layouts:

- Cover: automatically for the first slide
- Default: for every other slide
- Section: section headers between chunks.
  ```md
  ---
  layout: section
  ---

  # Section Header

  To break content into logical chunks, and provide a clear separation between topics.
  ```
- Last: for the last slide of the deck.
  ```md
  ---
  layout: last
  ---

  # Last page
  All text can be omitted
  ```

## Contributing

- `yarn`
- `yarn dev` to start theme preview of `example.md`
- Edit the `example.md` and style to see the changes
- `yarn export` to generate the preview PDF
- `yarn screenshot` to generate the preview PNG

### Technologies
 
- SliDEV: the main framework to create presentation in.
- node.js: where the presentation runs in.
- UnoCSS: css framework used by SliDEV.
- vue.js: front-end used by SliDEV.

### Relevant files

- resources

- layouts
  - cover.vue
  - default.vue
  - section.vue
  - last.vue

- styles
  -  layout.css

## Publish

- `export GITHUB_TOKEN=<your_github_token>`
- `yarn publish`
npm package: @promise-inc/devlog
Description: Simple logger with automatic context (file + line)
Latest version: 0.1.9

<p align="center">
  <img src="https://raw.githubusercontent.com/promise-inc/devlog/main/assets/logo.svg" alt="devlog" height="36" />
  <br><br>
  Simple logger with automatic context (file + line). Zero dependencies.
</p>

<p align="center">
  <img src="https://raw.githubusercontent.com/promise-inc/devlog/main/assets/output.svg" alt="devlog output" width="680" />
</p>

## Why?

Standard `console.log` tells you nothing about where a log came from:

- No file name, no line number
- No visual distinction between info, warnings, and errors
- No way to disable debug logs in production
- Scattered `console.log("here")` everywhere

`devlog` adds **automatic context** to every log — file, line, and level — with zero configuration.

## Install

```bash
npm install @promise-inc/devlog
```

## Usage

```ts
import { log } from "@promise-inc/devlog";

log.info("User created", { userId: 42 });
log.warn("Deprecated method");
log.error("Failed to save", err);
log.success("Migration complete");
log.debug("Cache hit", { key: "users:1" });
```

## Custom instance

```ts
import { createLogger } from "@promise-inc/devlog";

const logger = createLogger({
  enabled: true,
  debugEnabled: false,
});

logger.info("Custom logger");
```

## Environment variables

| Variable | Effect |
|----------|--------|
| `DEVLOG_ENABLED=false` | Disables all logs |
| `DEVLOG_ENABLED=true` | Enables all logs including debug |
| `NODE_ENV=production` | Disables debug level (unless `DEVLOG_ENABLED=true`) |

## Output

- **Node.js** — Colored output with ANSI escape codes
- **Browser** — `console.groupCollapsed` with `%c` styling. Data nested inside collapsible groups

## How to report bugs

To report a bug, please first read our guide on [opening issues](https://github.com/promise-inc/devlog/issues).

## How to contribute code

To open a pull request, please first read our guide on [opening pull requests](https://github.com/promise-inc/devlog/pulls), which outlines our process for RFCs and pull requests.

## Also by Promise Inc.

| Package | Description |
|---------|-------------|
| [`@promise-inc/ai-guard`](https://github.com/promise-inc/ai-guard) | Detect AI-generated code patterns |
| [`@promise-inc/ps-guard`](https://github.com/promise-inc/ps-guard) | Lighthouse-based performance guard |
| [`@promise-inc/fs-guard`](https://github.com/promise-inc/fs-guard) | Validate project folder and file structure |
| [`@promise-inc/ui-states`](https://github.com/promise-inc/ui-states) | Auto-generated skeleton loading states |
| [`@promise-inc/dev-reel`](https://github.com/promise-inc/dev-reel) | Animated SVG previews for READMEs |

---

Developed by [Promise Inc.](https://promise.codes)

## License

MIT © [Promise Inc.](https://promise.codes)
npm package: @promise-saga/core
Description: Promise Saga: Core library for managing async flows with cancelable effects
Author: Andrew Khantulin
Latest version: 0.0.3

# [Promise Saga](https://promise-saga.github.io)

Promise Saga is a side effects orchestrator boasting several competitive qualities:

1. **Strongly typed** - we embrace [Typescript](https://www.typescriptlang.org) for its strong typing capabilities.
2. **Agnostic but pluggable** - while Promise Saga is agnostic to specific libraries, it has a set of plugins for popular libraries like [Redux](https://redux.js.org) and [Zustand](https://zustand-demo.pmnd.rs).
3. **In-component saga usage** - sagas can be manually cancelled or automatically cancelled upon the unmount of a [React](https://react.dev) component.
4. **Cancellable network requests out of the box** - we provide plugins for [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) and [Axios](https://axios-http.com) that support cancellable network requests.

Use the command below to install:

```bash
npm install promise-saga
```

And you're ready to write sagas like this:

```tsx
// create saga by wrapping an async function
export const listenTodoToggles = createSaga(async function() {
    for (let i = 1; ; i++) {
        // use effects inside to control its flow
        await this.take(Todos.actions.toggleTodo); // wait for Redux action to happen

        if (i % 3 === 0) {
            const todos = this.select(getTodos); // select from Redux store
            const isAllCompleted = todos.every((todo) => todo.isCompleted);

            await this.delay(500);
            console.log(`Toggled ${i} todos!`, {isAllCompleted});
            await this.dispatch(doneAction()); // dispatch Redux action
        }
    }
});

export function TodosContainer() {
    // call sagas within a component
    const saga = useSaga(listenTodoToggles);

    return (
      <>
        <input
          type="checkbox"
          onChange={saga.toggle}
          checked={saga.isRunning}
        />
        
        Todos
      </>
    );
}
```

Interested? Jump into [the documentation](https://promise-saga.github.io) for more information.
npm package: @promise-saga/plugin-angular
Description: Promise Saga: Angular integration plugin
Author: Andrew Khantulin
Latest version: 0.0.4

# [Promise Saga](https://promise-saga.github.io)

Promise Saga is a side effects orchestrator boasting several competitive qualities:

1. **Strongly typed** - we embrace [Typescript](https://www.typescriptlang.org) for its strong typing capabilities.
2. **Agnostic but pluggable** - while Promise Saga is agnostic to specific libraries, it has a set of plugins for popular libraries like [Redux](https://redux.js.org) and [Zustand](https://zustand-demo.pmnd.rs).
3. **In-component saga usage** - sagas can be manually cancelled or automatically cancelled upon the unmount of a [React](https://react.dev) component.
4. **Cancellable network requests out of the box** - we provide plugins for [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) and [Axios](https://axios-http.com) that support cancellable network requests.

Use the command below to install:

```bash
npm install promise-saga
```

And you're ready to write sagas like this:

```tsx
// create saga by wrapping an async function
export const listenTodoToggles = createSaga(async function() {
    for (let i = 1; ; i++) {
        // use effects inside to control its flow
        await this.take(Todos.actions.toggleTodo); // wait for Redux action to happen

        if (i % 3 === 0) {
            const todos = this.select(getTodos); // select from Redux store
            const isAllCompleted = todos.every((todo) => todo.isCompleted);

            await this.delay(500);
            console.log(`Toggled ${i} todos!`, {isAllCompleted});
            await this.dispatch(doneAction()); // dispatch Redux action
        }
    }
});

export function TodosContainer() {
    // call sagas within a component
    const saga = useSaga(listenTodoToggles);

    return (
      <>
        <input
          type="checkbox"
          onChange={saga.toggle}
          checked={saga.isRunning}
        />
        
        Todos
      </>
    );
}
```

Interested? Jump into [the documentation](https://promise-saga.github.io) for more information.
npm package: @promise-saga/plugin-axios
Description: Promise Saga: Axios plugin for cancelable HTTP requests
Author: Andrew Khantulin
Latest version: 0.0.3

# [Promise Saga](https://promise-saga.github.io)

Promise Saga is a side effects orchestrator boasting several competitive qualities:

1. **Strongly typed** - we embrace [Typescript](https://www.typescriptlang.org) for its strong typing capabilities.
2. **Agnostic but pluggable** - while Promise Saga is agnostic to specific libraries, it has a set of plugins for popular libraries like [Redux](https://redux.js.org) and [Zustand](https://zustand-demo.pmnd.rs).
3. **In-component saga usage** - sagas can be manually cancelled or automatically cancelled upon the unmount of a [React](https://react.dev) component.
4. **Cancellable network requests out of the box** - we provide plugins for [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) and [Axios](https://axios-http.com) that support cancellable network requests.

Use the command below to install:

```bash
npm install promise-saga
```

And you're ready to write sagas like this:

```tsx
// create saga by wrapping an async function
export const listenTodoToggles = createSaga(async function() {
    for (let i = 1; ; i++) {
        // use effects inside to control its flow
        await this.take(Todos.actions.toggleTodo); // wait for Redux action to happen

        if (i % 3 === 0) {
            const todos = this.select(getTodos); // select from Redux store
            const isAllCompleted = todos.every((todo) => todo.isCompleted);

            await this.delay(500);
            console.log(`Toggled ${i} todos!`, {isAllCompleted});
            await this.dispatch(doneAction()); // dispatch Redux action
        }
    }
});

export function TodosContainer() {
    // call sagas within a component
    const saga = useSaga(listenTodoToggles);

    return (
      <>
        <input
          type="checkbox"
          onChange={saga.toggle}
          checked={saga.isRunning}
        />
        
        Todos
      </>
    );
}
```

Interested? Jump into [the documentation](https://promise-saga.github.io) for more information.
npm package: @promise-saga/plugin-default
Description: Promise Saga: Default plugin for quick project setup
Author: Andrew Khantulin
Latest version: 0.0.3

# [Promise Saga](https://promise-saga.github.io)

Promise Saga is a side effects orchestrator boasting several competitive qualities:

1. **Strongly typed** - we embrace [Typescript](https://www.typescriptlang.org) for its strong typing capabilities.
2. **Agnostic but pluggable** - while Promise Saga is agnostic to specific libraries, it has a set of plugins for popular libraries like [Redux](https://redux.js.org) and [Zustand](https://zustand-demo.pmnd.rs).
3. **In-component saga usage** - sagas can be manually cancelled or automatically cancelled upon the unmount of a [React](https://react.dev) component.
4. **Cancellable network requests out of the box** - we provide plugins for [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) and [Axios](https://axios-http.com) that support cancellable network requests.

Use the command below to install:

```bash
npm install promise-saga
```

And you're ready to write sagas like this:

```tsx
// create saga by wrapping an async function
export const listenTodoToggles = createSaga(async function() {
    for (let i = 1; ; i++) {
        // use effects inside to control its flow
        await this.take(Todos.actions.toggleTodo); // wait for Redux action to happen

        if (i % 3 === 0) {
            const todos = this.select(getTodos); // select from Redux store
            const isAllCompleted = todos.every((todo) => todo.isCompleted);

            await this.delay(500);
            console.log(`Toggled ${i} todos!`, {isAllCompleted});
            await this.dispatch(doneAction()); // dispatch Redux action
        }
    }
});

export function TodosContainer() {
    // call sagas within a component
    const saga = useSaga(listenTodoToggles);

    return (
      <>
        <input
          type="checkbox"
          onChange={saga.toggle}
          checked={saga.isRunning}
        />
        
        Todos
      </>
    );
}
```

Interested? Jump into [the documentation](https://promise-saga.github.io) for more information.
npm package: @promise-saga/plugin-fetch
Description: Promise Saga: Fetch API integration with cancelable requests
Author: Andrew Khantulin
Latest version: 0.0.3

# [Promise Saga](https://promise-saga.github.io)

Promise Saga is a side effects orchestrator boasting several competitive qualities:

1. **Strongly typed** - we embrace [Typescript](https://www.typescriptlang.org) for its strong typing capabilities.
2. **Agnostic but pluggable** - while Promise Saga is agnostic to specific libraries, it has a set of plugins for popular libraries like [Redux](https://redux.js.org) and [Zustand](https://zustand-demo.pmnd.rs).
3. **In-component saga usage** - sagas can be manually cancelled or automatically cancelled upon the unmount of a [React](https://react.dev) component.
4. **Cancellable network requests out of the box** - we provide plugins for [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) and [Axios](https://axios-http.com) that support cancellable network requests.

Use the command below to install:

```bash
npm install promise-saga
```

And you're ready to write sagas like this:

```tsx
// create saga by wrapping an async function
export const listenTodoToggles = createSaga(async function() {
    for (let i = 1; ; i++) {
        // use effects inside to control its flow
        await this.take(Todos.actions.toggleTodo); // wait for Redux action to happen

        if (i % 3 === 0) {
            const todos = this.select(getTodos); // select from Redux store
            const isAllCompleted = todos.every((todo) => todo.isCompleted);

            await this.delay(500);
            console.log(`Toggled ${i} todos!`, {isAllCompleted});
            await this.dispatch(doneAction()); // dispatch Redux action
        }
    }
});

export function TodosContainer() {
    // call sagas within a component
    const saga = useSaga(listenTodoToggles);

    return (
      <>
        <input
          type="checkbox"
          onChange={saga.toggle}
          checked={saga.isRunning}
        />
        
        Todos
      </>
    );
}
```

Interested? Jump into [the documentation](https://promise-saga.github.io) for more information.
npm package: @promise-saga/plugin-react
Description: Promise Saga: React integration plugin
Author: Andrew Khantulin
Latest version: 0.0.4

# [Promise Saga](https://promise-saga.github.io)

Promise Saga is a side effects orchestrator boasting several competitive qualities:

1. **Strongly typed** - we embrace [Typescript](https://www.typescriptlang.org) for its strong typing capabilities.
2. **Agnostic but pluggable** - while Promise Saga is agnostic to specific libraries, it has a set of plugins for popular libraries like [Redux](https://redux.js.org) and [Zustand](https://zustand-demo.pmnd.rs).
3. **In-component saga usage** - sagas can be manually cancelled or automatically cancelled upon the unmount of a [React](https://react.dev) component.
4. **Cancellable network requests out of the box** - we provide plugins for [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) and [Axios](https://axios-http.com) that support cancellable network requests.

Use the command below to install:

```bash
npm install promise-saga
```

And you're ready to write sagas like this:

```tsx
// create saga by wrapping an async function
export const listenTodoToggles = createSaga(async function() {
    for (let i = 1; ; i++) {
        // use effects inside to control its flow
        await this.take(Todos.actions.toggleTodo); // wait for Redux action to happen

        if (i % 3 === 0) {
            const todos = this.select(getTodos); // select from Redux store
            const isAllCompleted = todos.every((todo) => todo.isCompleted);

            await this.delay(500);
            console.log(`Toggled ${i} todos!`, {isAllCompleted});
            await this.dispatch(doneAction()); // dispatch Redux action
        }
    }
});

export function TodosContainer() {
    // call sagas within a component
    const saga = useSaga(listenTodoToggles);

    return (
      <>
        <input
          type="checkbox"
          onChange={saga.toggle}
          checked={saga.isRunning}
        />
        
        Todos
      </>
    );
}
```

Interested? Jump into [the documentation](https://promise-saga.github.io) for more information.
npm package: @promise-saga/plugin-react-query
Description: Side-effects orchestrator: React-Query plugin for cancelable HTTP requests
Author: Andrew Khantulin
Latest version: 0.0.3

# [Promise Saga](https://promise-saga.github.io)

Promise Saga is a side effects orchestrator boasting several competitive qualities:

1. **Strongly typed** - we embrace [Typescript](https://www.typescriptlang.org) for its strong typing capabilities.
2. **Agnostic but pluggable** - while Promise Saga is agnostic to specific libraries, it has a set of plugins for popular libraries like [Redux](https://redux.js.org) and [Zustand](https://zustand-demo.pmnd.rs).
3. **In-component saga usage** - sagas can be manually cancelled or automatically cancelled upon the unmount of a [React](https://react.dev) component.
4. **Cancellable network requests out of the box** - we provide plugins for [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) and [Axios](https://axios-http.com) that support cancellable network requests.

Use the command below to install:

```bash
npm install promise-saga
```

And you're ready to write sagas like this:

```tsx
// create saga by wrapping an async function
export const listenTodoToggles = createSaga(async function() {
    for (let i = 1; ; i++) {
        // use effects inside to control its flow
        await this.take(Todos.actions.toggleTodo); // wait for Redux action to happen

        if (i % 3 === 0) {
            const todos = this.select(getTodos); // select from Redux store
            const isAllCompleted = todos.every((todo) => todo.isCompleted);

            await this.delay(500);
            console.log(`Toggled ${i} todos!`, {isAllCompleted});
            await this.dispatch(doneAction()); // dispatch Redux action
        }
    }
});

export function TodosContainer() {
    // call sagas within a component
    const saga = useSaga(listenTodoToggles);

    return (
      <>
        <input
          type="checkbox"
          onChange={saga.toggle}
          checked={saga.isRunning}
        />
        
        Todos
      </>
    );
}
```

Interested? Jump into [the documentation](https://promise-saga.github.io) for more information.
npm package: @promise-saga/plugin-redux
Description: Side-effects orchestrator: Redux integration plugin
Author: Andrew Khantulin
Latest version: 0.0.3

# [Promise Saga](https://promise-saga.github.io)

Promise Saga is a side effects orchestrator boasting several competitive qualities:

1. **Strongly typed** - we embrace [Typescript](https://www.typescriptlang.org) for its strong typing capabilities.
2. **Agnostic but pluggable** - while Promise Saga is agnostic to specific libraries, it has a set of plugins for popular libraries like [Redux](https://redux.js.org) and [Zustand](https://zustand-demo.pmnd.rs).
3. **In-component saga usage** - sagas can be manually cancelled or automatically cancelled upon the unmount of a [React](https://react.dev) component.
4. **Cancellable network requests out of the box** - we provide plugins for [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) and [Axios](https://axios-http.com) that support cancellable network requests.

Use the command below to install:

```bash
npm install promise-saga
```

And you're ready to write sagas like this:

```tsx
// create saga by wrapping an async function
export const listenTodoToggles = createSaga(async function() {
    for (let i = 1; ; i++) {
        // use effects inside to control its flow
        await this.take(Todos.actions.toggleTodo); // wait for Redux action to happen

        if (i % 3 === 0) {
            const todos = this.select(getTodos); // select from Redux store
            const isAllCompleted = todos.every((todo) => todo.isCompleted);

            await this.delay(500);
            console.log(`Toggled ${i} todos!`, {isAllCompleted});
            await this.dispatch(doneAction()); // dispatch Redux action
        }
    }
});

export function TodosContainer() {
    // call sagas within a component
    const saga = useSaga(listenTodoToggles);

    return (
      <>
        <input
          type="checkbox"
          onChange={saga.toggle}
          checked={saga.isRunning}
        />
        
        Todos
      </>
    );
}
```

Interested? Jump into [the documentation](https://promise-saga.github.io) for more information.
npm package: @promise-saga/plugin-svelte
Description: Promise Saga: Svelte integration plugin
Author: Andrew Khantulin
Latest version: 0.0.4

# [Promise Saga](https://promise-saga.github.io)

Promise Saga is a side effects orchestrator boasting several competitive qualities:

1. **Strongly typed** - we embrace [Typescript](https://www.typescriptlang.org) for its strong typing capabilities.
2. **Agnostic but pluggable** - while Promise Saga is agnostic to specific libraries, it has a set of plugins for popular libraries like [Redux](https://redux.js.org) and [Zustand](https://zustand-demo.pmnd.rs).
3. **In-component saga usage** - sagas can be manually cancelled or automatically cancelled upon the unmount of a [React](https://react.dev) component.
4. **Cancellable network requests out of the box** - we provide plugins for [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) and [Axios](https://axios-http.com) that support cancellable network requests.

Use the command below to install:

```bash
npm install promise-saga
```

And you're ready to write sagas like this:

```tsx
// create saga by wrapping an async function
export const listenTodoToggles = createSaga(async function() {
    for (let i = 1; ; i++) {
        // use effects inside to control its flow
        await this.take(Todos.actions.toggleTodo); // wait for Redux action to happen

        if (i % 3 === 0) {
            const todos = this.select(getTodos); // select from Redux store
            const isAllCompleted = todos.every((todo) => todo.isCompleted);

            await this.delay(500);
            console.log(`Toggled ${i} todos!`, {isAllCompleted});
            await this.dispatch(doneAction()); // dispatch Redux action
        }
    }
});

export function TodosContainer() {
    // call sagas within a component
    const saga = useSaga(listenTodoToggles);

    return (
      <>
        <input
          type="checkbox"
          onChange={saga.toggle}
          checked={saga.isRunning}
        />
        
        Todos
      </>
    );
}
```

Interested? Jump into [the documentation](https://promise-saga.github.io) for more information.
npm package: @promise-saga/plugin-vue
Description: Promise Saga: Vue integration plugin
Author: Andrew Khantulin
Latest version: 0.0.4

# [Promise Saga](https://promise-saga.github.io)

Promise Saga is a side effects orchestrator boasting several competitive qualities:

1. **Strongly typed** - we embrace [Typescript](https://www.typescriptlang.org) for its strong typing capabilities.
2. **Agnostic but pluggable** - while Promise Saga is agnostic to specific libraries, it has a set of plugins for popular libraries like [Redux](https://redux.js.org) and [Zustand](https://zustand-demo.pmnd.rs).
3. **In-component saga usage** - sagas can be manually cancelled or automatically cancelled upon the unmount of a [React](https://react.dev) component.
4. **Cancellable network requests out of the box** - we provide plugins for [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch) and [Axios](https://axios-http.com) that support cancellable network requests.

Use the command below to install:

```bash
npm install promise-saga
```

And you're ready to write sagas like this:

```tsx
// create saga by wrapping an async function
export const listenTodoToggles = createSaga(async function() {
    for (let i = 1; ; i++) {
        // use effects inside to control its flow
        await this.take(Todos.actions.toggleTodo); // wait for Redux action to happen

        if (i % 3 === 0) {
            const todos = this.select(getTodos); // select from Redux store
            const isAllCompleted = todos.every((todo) => todo.isCompleted);

            await this.delay(500);
            console.log(`Toggled ${i} todos!`, {isAllCompleted});
            await this.dispatch(doneAction()); // dispatch Redux action
        }
    }
});

export function TodosContainer() {
    // call sagas within a component
    const saga = useSaga(listenTodoToggles);

    return (
      <>
        <input
          type="checkbox"
          onChange={saga.toggle}
          checked={saga.isRunning}
        />
        
        Todos
      </>
    );
}
```

Interested? Jump into [the documentation](https://promise-saga.github.io) for more information.
npm package: @promises/-constructor
Description: Constructor is a group of packages of Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/-constructor
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/-constructor)
[![Version](https://img.shields.io/npm/v/@promises/-constructor.svg)](https://www.npmjs.com/package/@promises/-constructor)
[![MIT License](https://img.shields.io/npm/l/@promises/-constructor.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/-constructor.svg)](https://bundlephobia.com/result?p=@promises/-constructor)

**Constructor is a group of packages of Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/-constructor
```
```typescript
import {
 compose,
 create,
 delay,
 doWhileParallel,
 doWhileSeries,
 exec,
 forever,
 fromCallback,
 fromEvent,
 isPromise,
 promisify,
 parallel,
 retry,
 series,
 timeout,
 timesParallel,
 timesSeries,
 whileParallel,
 whileSeries,
 wrap
} from '@promises/-constructor';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/-constructor/bundle.umd.min.js"></script>
```
```typescript
let {
 compose,
 create,
 delay,
 doWhileParallel,
 doWhileSeries,
 exec,
 forever,
 fromCallback,
 fromEvent,
 isPromise,
 promisify,
 parallel,
 retry,
 series,
 timeout,
 timesParallel,
 timesSeries,
 whileParallel,
 whileSeries,
 wrap
} = P;
```



### Functional programming

**Module**
```sh
$ npm install --save @promises/-constructor
```
```typescript
import {
 __,
 timesParallel,
 timesSeries
} from '@promises/-constructor/fp';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/-constructor/fp/bundle.umd.min.js"></script>
```
```typescript
let {
 __,
 timesParallel,
 timesSeries
} = PF;
```



### Wrapper

**Module**
```sh
$ npm install --save @promises/-constructor
```
```typescript
import Promises from '@promises/core';
import '@promises/-constructor/add';
```
*Or*
```typescript
import Promises from '@promises/-constructor/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/-constructor/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```



## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/-fp
Description: FP is a group of packages of Promises library
Author: Yisrael Eliev
Latest version: 0.4.0
Deprecated: Use @promises/-all/fp instead.


# @promises/-fp
[![Source Code](https://img.shields.io/badge/%3C/%3E-source--code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/-fp)
[![Version](https://img.shields.io/npm/v/@promises/-fp.svg)](https://www.npmjs.com/package/@promises/-fp)
[![MIT License](https://img.shields.io/npm/l/@promises/-fp.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)

**[Fp](https://github.com/yisraelx/promises/blob/master/modules/-fp) is a group of packages of [Promises](https://github.com/yisraelx/promises) library**

## Use
```sh
$ npm install --save @promises/-fp 
```
```ts
 import {
	error,
	everyParallel,
	everySeries,
	filterParallel,
	filterSeries,
	finally,
	forEachParallel,
	forEachRightSeries,
	forEachSeries,
	mapParallel,
	mapSeries,
	next,
	reduceRightSeries,
	reduceSeries,
	rejectParallel,
	rejectSeries,
	reset,
	sleep,
	someParallel,
	someSeries,
	timesParallel,
	timesSeries,
	toCallback,
	wait
} from '@promises/-fp';
```

Or

```html
<script src="https://unpkg.com/@promises/-fp/bundle.js"> </script>
```
```ts
let {
	error,
	everyParallel,
	everySeries,
	filterParallel,
	filterSeries,
	finally,
	forEachParallel,
	forEachRightSeries,
	forEachSeries,
	mapParallel,
	mapSeries,
	next,
	reduceRightSeries,
	reduceSeries,
	rejectParallel,
	rejectSeries,
	reset,
	sleep,
	someParallel,
	someSeries,
	timesParallel,
	timesSeries,
	toCallback,
	wait
} = P;
```

## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/-parallel
Description: Parallel is a group of packages of Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/-parallel
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/-parallel)
[![Version](https://img.shields.io/npm/v/@promises/-parallel.svg)](https://www.npmjs.com/package/@promises/-parallel)
[![MIT License](https://img.shields.io/npm/l/@promises/-parallel.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/-parallel.svg)](https://bundlephobia.com/result?p=@promises/-parallel)

**Parallel is a group of packages of Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/-parallel
```
```typescript
import {
 doWhileParallel,
 everyParallel,
 filterParallel,
 forEachParallel,
 mapParallel,
 parallel,
 rejectParallel,
 someParallel,
 timesParallel,
 whileParallel
} from '@promises/-parallel';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/-parallel/bundle.umd.min.js"></script>
```
```typescript
let {
 doWhileParallel,
 everyParallel,
 filterParallel,
 forEachParallel,
 mapParallel,
 parallel,
 rejectParallel,
 someParallel,
 timesParallel,
 whileParallel
} = P;
```



### Functional programming

**Module**
```sh
$ npm install --save @promises/-parallel
```
```typescript
import {
 __,
 everyParallel,
 filterParallel,
 forEachParallel,
 mapParallel,
 rejectParallel,
 someParallel,
 timesParallel
} from '@promises/-parallel/fp';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/-parallel/fp/bundle.umd.min.js"></script>
```
```typescript
let {
 __,
 everyParallel,
 filterParallel,
 forEachParallel,
 mapParallel,
 rejectParallel,
 someParallel,
 timesParallel
} = PF;
```



### Wrapper

**Module**
```sh
$ npm install --save @promises/-parallel
```
```typescript
import Promises from '@promises/core';
import '@promises/-parallel/add';
```
*Or*
```typescript
import Promises from '@promises/-parallel/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/-parallel/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```



## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/-rxjs
Description: Rxjs is a group of packages of Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/-rxjs
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/-rxjs)
[![Version](https://img.shields.io/npm/v/@promises/-rxjs.svg)](https://www.npmjs.com/package/@promises/-rxjs)
[![MIT License](https://img.shields.io/npm/l/@promises/-rxjs.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/-rxjs.svg)](https://bundlephobia.com/result?p=@promises/-rxjs)

**Rxjs is a group of packages of Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/-rxjs
```
```typescript
import {
 fromObservable,
 toObservable
} from '@promises/-rxjs';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/-rxjs/bundle.umd.min.js"></script>
```
```typescript
let {
 fromObservable,
 toObservable
} = P;
```




### Wrapper

**Module**
```sh
$ npm install --save @promises/-rxjs
```
```typescript
import Promises from '@promises/core';
import '@promises/-rxjs/add';
```
*Or*
```typescript
import Promises from '@promises/-rxjs/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/-rxjs/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```



## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/-series
Description: Series is a group of packages of Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/-series
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/-series)
[![Version](https://img.shields.io/npm/v/@promises/-series.svg)](https://www.npmjs.com/package/@promises/-series)
[![MIT License](https://img.shields.io/npm/l/@promises/-series.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/-series.svg)](https://bundlephobia.com/result?p=@promises/-series)

**Series is a group of packages of Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/-series
```
```typescript
import {
 doWhileSeries,
 everySeries,
 filterSeries,
 forEachSeries,
 forEachRightSeries,
 mapSeries,
 reduceSeries,
 reduceRightSeries,
 rejectSeries,
 series,
 someSeries,
 timesSeries,
 whileSeries
} from '@promises/-series';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/-series/bundle.umd.min.js"></script>
```
```typescript
let {
 doWhileSeries,
 everySeries,
 filterSeries,
 forEachSeries,
 forEachRightSeries,
 mapSeries,
 reduceSeries,
 reduceRightSeries,
 rejectSeries,
 series,
 someSeries,
 timesSeries,
 whileSeries
} = P;
```



### Functional programming

**Module**
```sh
$ npm install --save @promises/-series
```
```typescript
import {
 __,
 everySeries,
 filterSeries,
 forEachSeries,
 forEachRightSeries,
 mapSeries,
 reduceSeries,
 reduceRightSeries,
 rejectSeries,
 someSeries,
 timesSeries
} from '@promises/-series/fp';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/-series/fp/bundle.umd.min.js"></script>
```
```typescript
let {
 __,
 everySeries,
 filterSeries,
 forEachSeries,
 forEachRightSeries,
 mapSeries,
 reduceSeries,
 reduceRightSeries,
 rejectSeries,
 someSeries,
 timesSeries
} = PF;
```



### Wrapper

**Module**
```sh
$ npm install --save @promises/-series
```
```typescript
import Promises from '@promises/core';
import '@promises/-series/add';
```
*Or*
```typescript
import Promises from '@promises/-series/add';
```

**Browser**
```html
<script src="https://unpkg.com/@promises/core/bundle.umd.min.js"></script>
<script src="https://unpkg.com/@promises/-series/add/bundle.umd.min.js"></script>
```
```typescript
let {
 Promises
} = P;
```



## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/_create-checks-boolean
Description: Create Checks Boolean is a internal package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/_create-checks-boolean
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/_create-checks-boolean)
[![Version](https://img.shields.io/npm/v/@promises/_create-checks-boolean.svg)](https://www.npmjs.com/package/@promises/_create-checks-boolean)
[![MIT License](https://img.shields.io/npm/l/@promises/_create-checks-boolean.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/_create-checks-boolean.svg)](https://bundlephobia.com/result?p=@promises/_create-checks-boolean)

**Create Checks Boolean is a internal package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/_create-checks-boolean
```
```typescript
import {
 default as _createChecksBoolean
} from '@promises/_create-checks-boolean';
```



## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/_create-filter
Description: Create Filter is a internal package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/_create-filter
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/_create-filter)
[![Version](https://img.shields.io/npm/v/@promises/_create-filter.svg)](https://www.npmjs.com/package/@promises/_create-filter)
[![MIT License](https://img.shields.io/npm/l/@promises/_create-filter.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/_create-filter.svg)](https://bundlephobia.com/result?p=@promises/_create-filter)

**Create Filter is a internal package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/_create-filter
```
```typescript
import {
 default as _createFilter
} from '@promises/_create-filter';
```



## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/_create-for-each-series
Description: Create For Each Series is a internal package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/_create-for-each-series
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/_create-for-each-series)
[![Version](https://img.shields.io/npm/v/@promises/_create-for-each-series.svg)](https://www.npmjs.com/package/@promises/_create-for-each-series)
[![MIT License](https://img.shields.io/npm/l/@promises/_create-for-each-series.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/_create-for-each-series.svg)](https://bundlephobia.com/result?p=@promises/_create-for-each-series)

**Create For Each Series is a internal package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/_create-for-each-series
```
```typescript
import {
 default as _createForEachSeries
} from '@promises/_create-for-each-series';
```



## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/_create-map
Description: Create Map is a internal package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/_create-map
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/_create-map)
[![Version](https://img.shields.io/npm/v/@promises/_create-map.svg)](https://www.npmjs.com/package/@promises/_create-map)
[![MIT License](https://img.shields.io/npm/l/@promises/_create-map.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/_create-map.svg)](https://bundlephobia.com/result?p=@promises/_create-map)

**Create Map is a internal package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/_create-map
```
```typescript
import {
 default as _createMap
} from '@promises/_create-map';
```



## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).
npm package: @promises/_create-reduce
Description: Create Reduce is a internal package from Promises library
Author: Yisrael Eliev
Latest version: 0.5.0



# @promises/_create-reduce
[![Source Code](https://img.shields.io/badge/%3C%2F%3E-source_code-blue.svg)](https://github.com/yisraelx/promises/blob/master/modules/_create-reduce)
[![Version](https://img.shields.io/npm/v/@promises/_create-reduce.svg)](https://www.npmjs.com/package/@promises/_create-reduce)
[![MIT License](https://img.shields.io/npm/l/@promises/_create-reduce.svg)](https://github.com/yisraelx/promises/blob/master/LICENSE)
[![Bundle Size](https://img.shields.io/bundlephobia/min/@promises/_create-reduce.svg)](https://bundlephobia.com/result?p=@promises/_create-reduce)

**Create Reduce is a internal package from Promises library**

## Use

**Module**
```sh
$ npm install --save @promises/_create-reduce
```
```typescript
import {
 default as _createReduce
} from '@promises/_create-reduce';
```



## Compatibility
These modules are written in typescript and available in ES5 and ES6 standard, the requirements are a global __Promise__ (native or polyfill).

## License
Copyright © 2017 [Yisrael Eliav](https://github.com/yisraelx),
Licensed under the [MIT license](https://github.com/yisraelx/promises/blob/master/LICENSE).