open-index/open-npm huggingface dataset:
npm package: @krisliu04/matrix-claw-enhancement
Description: An enhancement framework for MatrixClaw that enables task orchestration tuning, context-processing optimization, and platform policy customization without modifying core source code
Author: krisliu04
Latest version: 2026.3.38

# matrix-claw-enhancement

An enhancement framework for [OpenClaw](https://github.com/openclaw/openclaw) that strengthens agent behavior through hook-based prompt injection. Optimized for MiniMax models on the MaxClaw platform, but effective with any OpenClaw deployment.

## What It Does

This is a **passive plugin** — it does not register callable tools. Instead, it observes agent behavior in real time and injects contextual guidance, warnings, or blocks through OpenClaw's hook system.

### Capabilities

| Capability                  | Description                                                                 |
| --------------------------- | --------------------------------------------------------------------------- |
| Config Protector            | Prevents accidental corruption of `openclaw.json`                           |
| Tool Loop Breaker           | Detects and breaks repetitive tool call patterns                            |
| Output Repetition Detector  | Catches repeated assistant output via trigram similarity                    |
| Command Safety Guard        | Blocks dangerous shell commands (kill, shutdown, long sleep, etc.)          |
| Capability Boundary Advisor | Guides the agent on errors outside its control (network, permissions, etc.) |
| Prompt Lint                 | Injects mandatory behavioral guidelines and periodic reminders              |
| Session Memory Advisor      | Persists conversation memory across session resets                          |
| Platform Context Advisor    | MaxClaw-specific platform context and MCP tool guidance                     |

## Install

```bash
openclaw plugins install @krisliu04/matrix-claw-enhancement
```

## Configure

Plugin config lives at `plugins.entries.matrix-claw-enhancement.config` in `openclaw.json`. All capabilities default to enabled — only override what you need to change.

```json5
{
  plugins: {
    entries: {
      "matrix-claw-enhancement": {
        enabled: true,
        config: {
          // Override specific capability settings here.
          // See CLAUDE.md for full default config and all options.
        },
      },
    },
  },
}
```

> **Important**: Do not modify `openclaw.json` directly. Use the `gateway` tool to make config changes safely:
>
> 1. `gateway { action: "config.get" }` — read current config (returns `raw` + `hash`)
> 2. Modify the returned `raw` as needed
> 3. `gateway { action: "config.patch", raw: "<your changes>", baseHash: "<hash>", note: "<message>" }` — apply changes
>
> The gateway auto-restarts after writes. See [CLAUDE.md](CLAUDE.md) for all available gateway actions and the full default config template.

## Documentation

- **[CLAUDE.md](CLAUDE.md)** — Detailed architecture, capability reference, default config, and development guide
- **[CHANGELOG.md](CHANGELOG.md)** — Version history and breaking changes

## License

MIT
npm package: @krislorem/dash-ui
Description: Dash UI components
Latest version: 0.1.0

# @krislorem/dash-ui

Dash UI 组件库

## 特性

- 🚀 基于 React 19 + TypeScript 构建

## 安装

```bash
# 使用 pnpm
pnpm add @krislorem/dash-ui

# 使用 npm
npm install @krislorem/dash-ui
```

## 使用示例

```typescript
import { Dock } from '@krislorem/dash-ui'
import type { DockProps } from '@krislorem/dash-ui'

const App = () => {
  const dockItems = [
    { id: 'home', icon: '🏠', label: '首页' },
    { id: 'settings', icon: '⚙️', label: '设置' }
  ]

  return (
    <Dock 
      items={dockItems}
      position="bottom"
      theme="glass"
      width="600px"
    />
  )
}
```

### Dock 组件 Props

| 属性名      | 类型                         | 默认值     | 描述               |
|-------------|------------------------------|------------|--------------------|
| items       | `DockItem[]`                 | 必填       | 停靠栏项目配置     |
| position    | `'top'｜'bottom'｜'left'｜'right'` | `'bottom'` | 停靠位置           |
| theme       | `'glass'｜'dark'｜'light'`   | `'glass'`  | 组件主题样式       |
| width       | `string`                     | `'auto'`   | 容器宽度           |
| height      | `string`                     | `'auto'`   | 容器高度           |

## 开发

```bash
# 启动开发服务器
pnpm dev

# 生产环境构建
pnpm build
```

## 组件列表

- [x] Dock - 图标坞
- [ ] Comments - 评论区组件
- [ ] Files - 文件树组件

## 许可证

[MIT](https://opensource.org/licenses/MIT) © 2025-present [krislorem](https://github.com/krislorem/dash)
npm package: @krisphat/react-github-login
Description: A React Component for GitHub Login
Latest version: 1.0.3

# React GitHub Login

![NPM](https://img.shields.io/npm/v/react-github-login.svg?style=flat)
![CircleCI](https://circleci.com/gh/checkr/react-github-login.svg?style=shield&circle-token=493b950057f69e68ac8698a9ee189b2132a296e4)

React component for [GitHub login](https://developer.github.com/v3/oauth/).

## Usage

```js
import React from 'react';
import ReactDOM from 'react-dom';
import GitHubLogin from 'react-github-login';

const onSuccess = response => console.log(response);
const onFailure = response => console.error(response);

ReactDOM.render(
  <GitHubLogin clientId="ac56fad434a3a3c1561e"
    onSuccess={onSuccess}
    onFailure={onFailure}/>,
  document.getElementById('example')
);
```

### Props

#### `clientId`

`{string}` _required_

Client ID for GitHub OAuth application.

#### `redirectUri`

`{string}`

Registered redirect URI for GitHub OAuth application.

#### `scope`

`{string}`

Scope for GitHub OAuth application. Defaults to `user:email`.

#### `className`

`{string}`

CSS class for the login button.

#### `buttonText`

`{string}`

Text content for the login button.

#### `onRequest`

`{function}`

Callback for every request.

#### `onSuccess`

`{function}`

Callback for successful login. An object will be passed as an argument to the callback, e.g. `{ "code": "..." }`.

#### `onFailure`

`{function}`

Callback for errors raised during login.


## Development

```sh
$ npm start
```

Webpack development server starts at [http://localhost:8080](http://localhost:8080), loading [example/index.html](github.com/checkr/react-facebook-login/tree/master/example/index.html).
npm package: @kriss045/skill-review
Description: Agent Skill for evaluating quality of other Agent Skills. Install into Cursor, Codex, or Claude for structured skill reviews.
Author: kriss-045
Latest version: 1.0.1

# @kriss045/skill-review

Agent Skill for evaluating the quality of other Agent Skills. Install into Cursor, Codex, or Claude to get structured plain text reports with scores, findings, and prioritized fixes when you review, score, grade, or rate a skill.

## Install

```bash
npx @kriss045/skill-review
```

This installs the skill to Cursor (`~/.cursor/skills/`), Codex (`$CODEX_HOME/skills/` or `~/.codex/skills/`), and Claude (`$CLAUDE_HOME/skills/` or `~/.claude/skills/`).

### Options

```bash
npx @kriss045/skill-review --cursor   # Cursor only
npx @kriss045/skill-review --codex    # Codex only
npx @kriss045/skill-review --claude   # Claude only
npx @kriss045/skill-review --help     # Show help
```

After installing, **restart Cursor, Codex, or Claude** to pick up the new skill.

## What It Does

The skill guides an AI agent to evaluate an Agent Skill (parsed SKILL.md + reference files, scripts, folder structure) and produce a plain text report with:

- **Overall score** (0–100) and label (Needs Work → Excellent)
- **Baseline hygiene** (pass/fail)
- **Dimension scores** — Instruction Completeness, Workflow Clarity, Trigger Reliability, WHY Explanations, Generalization, Depth of Expertise
- **Findings** with severity, location, and actionable fixes
- **Top 3–5 fixes** ordered by impact

Use it when you have a skill and want a review, score, grade, evaluation, or rating. It does not evaluate prompt quality, system prompts, or non-skill AI configurations.

## Publishing (for maintainers)

```bash
cd packages/skill-reviewer-eval
npm login    # if not already logged in
npm publish --access public
```

## License

MIT
npm package: @krisseck/botd-extra
Description: botd is a browser library for JavaScript bot detection
Author: Kristian Polso
Latest version: 1.0.4

## BotD Extra

This is a fork of [FingerprintJS's BotD library](https://github.com/fingerprintjs/BotD). Main reason for the fork is to add new bot test sources and detectors.

These new tests can be a bit opionated, so please check them before use.

### Extra tests

- **Platform** - Detects various inconsistencies with `navigator.platform`
- **Plugin Inconsistency Firefox** - Detects plugin inconsistencies with Firefox
- **VM Detection Memory & Screen Dimensions** - Detects desktop VM environments running on low resources
- **Productsub** - Modified to check inconsistency with Firefox
npm package: @krisstal/readme-linter
Description: CLI for Readme's OpenAPI linter
Author: Kris
Latest version: 1.0.1

# readme-linter

CLI for [Readme's OpenAPI linter](https://github.com/readmeio/openapi-parser).

## Installation

```
npm install @krisstal/readme-linter
```

## Usage

```
readme-linter <path-to-openapi-definition>
```
npm package: @krist7599555/lodosh
Description: fp typescript utility function with data first + data last
Author: Krist Ponpairin
Latest version: 1.8.4

# @krist7599555/lodosh

[![npm @krist7599555/lodosh](https://img.shields.io/npm/v/@krist7599555/lodosh)](https://www.npmjs.com/package/@krist7599555/lodosh)

fp typescript utility function with data first + data last

```bash
pnpm i @krist7599555/lodosh
```

all function can be call in datafirst or datalast to make `pipe` function able to infer type correctly

```typescript
func(data, ...args); // data first
func(...args)(data); // data last
```

## example

```typescript
const out1 = pipe(
  movies,
  sort_by((it) => [
    ["desc", it.rate],
    ["acs", it.name],
  ])
);
const out2 = pipe(
  students,
  group_by_with(
    (it) => it.course,
    (its) => ({
      course_name: its[0].cource,
      average_grade: avg_by(its, (it) => it.grade),
      students: sort_by(its, (it) => [["asc", it.id]]),
      students_boys: arr_filter(its, is_match({ gender: "male" })),
    })
  )
);
```

## functions

```typescript
export const arr_filter_map:
export const arr_filter:
export const arr_flatmap:
export const arr_map:
export const arr_max:
export const arr_min:
export const arr_reduce:
export const arr_sum:
export const avg_by:
export const count_by:
export const ensure_nonempty_array:
export const ensure_notnil:
export const find_match:
export const group_by_with:
export const group_by:
export const is_match:
export const is_nil:
export const is_nonempty_array:
export const is_notnil:
export const max_by:
export const min_by:
export const noop:
export const promise_all:
export const range:
export const range2:
export const sort_by:
export const sum_by:
export const to_array:
export const to_jsmap:
export const zip_with:
export const zip:
export const record_values:
export const record_keys:
export const record_map:
export const record_map_key:
```
npm package: @kristasoft/mcp-proxy
Description: Krista MCP Proxy — connects any MCP client to your Krista workspace via stdio-to-HTTP bridge
Author: Krista Software
Latest version: 1.0.0

# @kristasoft/mcp-proxy

Connect any MCP client (Claude Desktop, Cursor, VS Code Copilot, Windsurf, ChatGPT, and more) to your [Krista](https://www.kristasoft.com) workspace.

## Quick Start

Add this to your MCP client's config:

```json
{
  "mcpServers": {
    "krista": {
      "command": "npx",
      "args": ["-y", "@kristasoft/mcp-proxy"],
      "env": {
        "KRISTA_MCP_ENDPOINT": "https://your-krista-host/extension/api/.../rest/mcp/mcp",
        "KRISTA_AUTH_TOKEN": "krista_mcp_..."
      }
    }
  }
}
```

Get your Endpoint URL and API Key from **Krista Studio > MCP Server > Setup Guide** tab.

## Client-Specific Config Locations

| Client | Config File |
|--------|-------------|
| Claude Desktop | `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) |
| Claude Code | `.mcp.json` (project) or `~/.claude.json` (global) |
| Cursor | `~/.cursor/mcp.json` |
| VS Code Copilot | `.vscode/mcp.json` |
| Windsurf | `~/.codeium/windsurf/mcp_config.json` |
| ChatGPT Desktop | Settings > MCP Servers |
| OpenAI Codex | `~/.codex/config.json` |
| JetBrains IDEs | Settings > AI Assistant > MCP |
| Amazon Q | `~/.aws/amazonq/mcp.json` |
| Cline | Same as Claude Desktop format |
| Continue | `.continue/mcpServers/` |

## Environment Variables

| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| `KRISTA_MCP_ENDPOINT` | Yes | — | Full URL to the Krista MCP endpoint |
| `KRISTA_AUTH_TOKEN` | Yes | — | API key (starts with `krista_mcp_`) |
| `KRISTA_TIMEOUT` | No | 120 | Request timeout in seconds (30-600) |
| `KRISTA_LOG_LEVEL` | No | info | Log level: debug, info, warn, error |

## How It Works

```
MCP Client → stdio → @kristasoft/mcp-proxy → HTTPS POST → Krista MCP Server
```

The proxy reads JSON-RPC 2.0 messages from stdin, forwards them to your Krista MCP Server endpoint over HTTPS, and writes responses back to stdout.

## Logs

Log files are written to:
- **macOS/Linux:** `/tmp/krista-mcp/proxy.log`
- **Windows:** `%TEMP%\krista-mcp\proxy.log`

Set `KRISTA_LOG_LEVEL=debug` for verbose logging.

## What You Can Do

Once connected, your AI assistant can:
- **Start workflows** — trigger leave requests, approvals, tickets
- **Complete tasks** — fill forms, approve/reject, answer questions
- **Query data** — fetch emails, check statuses, list records
- **Check pending items** — see what needs your attention

## Requirements

- Node.js 18+
- A Krista workspace with the MCP Server extension installed
- An API key from the Setup Guide tab

## Links

- [Krista Software](https://www.kristasoft.com)
- [MCP Protocol](https://modelcontextprotocol.io)
npm package: @kristen/data-structures
Description: JS Library for data strucutres
Author: Kristen Sundquist
Latest version: 1.8.0

[![Build Status](https://travis-ci.org/kristen/data-structures.svg?branch=master)](https://travis-ci.org/kristen/data-structures) [![codecov](https://codecov.io/gh/kristen/data-structures/branch/master/graph/badge.svg)](https://codecov.io/gh/kristen/data-structures)

# Data Structures

- [x] Linked Lists
- [ ] Binary Trees
- [x] Stacks
- [x] Queues
- [ ] Hash Tables
- [x] Options
- [ ] Vectors / ArrayLists
- [ ] StringBuilder
- [ ] Tries ???


# Deploying

`yarn version`
npm package: @kristianbinau/simple-history
Description: A simple History class that stores the current value and keeps a stack of previous values for undo/redo
Latest version: 0.0.1

# History

A simple history library for Deno, Node.js and the browser. Build with Deno &
Typescript.

### Commands

- `deno fmt src/` - Run formatter
- `deno lint src/` - Run linter
- `deno test src/` - Run tests
- `deno run -A scripts/build_npm.ts x.x.x` - Build npm package
npm package: @kristiandupont/eslint-config
Description: ```json {   "extends": ["@kristiandupont"],   "overrides": [     {       "files": ["*.ts", "*.tsx", ".mts"],       "parserOptions": {         "project": "./tsconfig.json"       }     }   ] } ```
Author: Kristian Dupont
Latest version: 2.33.0

# Usage

```json
{
  "extends": ["@kristiandupont"],
  "overrides": [
    {
      "files": ["*.ts", "*.tsx", ".mts"],
      "parserOptions": {
        "project": "./tsconfig.json"
      }
    }
  ]
}
```
npm package: @kristiandupont/recase
Description: Change and detect the casing of a string.
Author: Kristian Dupont
Latest version: 1.4.1

# RECASE

Change and detect the casing of a string.

## Install

```
npm i @kristiandupont/recase
```

## Use

```javascript
const { recase, detectCasing } = require("@kristiandupont/recase");

const initialCase = "snake";

const toCamel = recase(initialCase, "camel");
const toDash = recase(initialCase, "dash");

const s = "some_string_initially_set_with_snake_case";

console.log("Camel cased version:", toCamel(s));
// prints: "Camel cased version: someStringInitiallySetWithSnakeCase"

console.log("Dash cased version:", toDash(s));
// prints: "Dash cased version: some-string-initially-set-with-snake-case"

console.log("Casing detected:", detectCasing(s));
// prints: "Casing detected: snake"
```

## recase

```javascript
recase(from, to, str);
```

Takes two casing parameters which can both be one of `dash`, `snake`, `camel` or `pascal`. Additionally,
`from` can be `mixed` or null which will make all word boundaries considered.
The third parameter is the string to recase.
This function is curried which means that if you call it with fewer than three parameters, the return value
will be a new function, with the initial parameters bound. So if you want to have a function that converts
any string to a pascal-cased one, you can create it like so:

```javascript
const toPascal = recase(null, "pascal");

console.log(toPascal("snake_case"));
// Prints: "SnakeCase"
```

## detectCasing

```javascript
detectCasing(str);
```

Takes a string that has been formatted. It will attempt to detect the casing.

## Casings

- `dash`: `example-string`
- `screamingDash`: `EXAMPLE-STRING`
- `snake`: `example_string`
- `screamingSnake`: `EXAMPLE_STRING`
- `camel`: `exampleString`
- `pascal`: `ExampleString`
- `prose`: `example string`
- `capitalProse`: `Example String`
npm package: @kristianheljas/capacitor-app-restart
Description: Restarts capacitor Android and Web application
Author: Kristian Heljas
Latest version: 1.0.1

# @kristianheljas/capacitor-app-restart

Restarts capacitor Android and Web application

## Install

```bash
npm install @kristianheljas/capacitor-app-restart
npx cap sync
```

## API

<docgen-index>

* [`restartApp()`](#restartapp)

</docgen-index>

<docgen-api>
<!--Update the source file JSDoc comments and rerun docgen to update the docs below-->

### restartApp()

```typescript
restartApp() => Promise<void>
```

--------------------

</docgen-api>
npm package: @kristiankostecky/excalidraw
Description: Excalidraw as a React component
Latest version: 0.17.13

# Excalidraw

**Excalidraw** is exported as a component to directly embed in your projects.

## Installation

You can use `npm`

```bash
npm install react react-dom @excalidraw/excalidraw
```

or via `yarn`

```bash
yarn add react react-dom @excalidraw/excalidraw
```

After installation you will see a folder `excalidraw-assets` and `excalidraw-assets-dev` in `dist` directory which contains the assets needed for this app in prod and dev mode respectively.

Move the folder `excalidraw-assets` and `excalidraw-assets-dev` to the path where your assets are served.

By default it will try to load the files from [`https://unpkg.com/@excalidraw/excalidraw/dist/`](https://unpkg.com/@excalidraw/excalidraw/dist)

If you want to load assets from a different path you can set a variable `window.EXCALIDRAW_ASSET_PATH` depending on environment (for example if you have different URL's for dev and prod) to the url from where you want to load the assets.

#### Note

**If you don't want to wait for the next stable release and try out the unreleased changes you can use `@excalidraw/excalidraw@next`.**

## Dimensions of Excalidraw

Excalidraw takes _100%_ of `width` and `height` of the containing block so make sure the container in which you render Excalidraw has non zero dimensions.

### Demo

[Try here](https://codesandbox.io/s/excalidraw-ehlz3).

## Integration

Head over to the [docs](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/integration)

## API

Head over to the [docs](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api)

## Contributing

Head over to the [docs](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/contributing)
npm package: @kristijorgji/eslint-config-react-typescript
Description: eslint config for react typescript based projects
Author: kristijorgji
Latest version: 0.0.1

# @kristijorgji/eslint-config-react-typescript

Eslint and prettier rules for ReactJS Typescript projects.

## Usage

### Install deps
Install the correct versions of each package, which are listed by the command:
```shell
yarn add --dev @kristijorgji/eslint-config-react-typescript@latest
```

If you are migrating old service to new plugin first please make sure to first remove old dependencies that are duplicates like example `yarn remove eslint prettier @typescript-eslint/eslint-plugin etc`

### Config
Add the following to your `.eslintrc.js`:
```js
module.exports = {
    extends: ['@kristijorgji/eslint-config-react-typescript'],
};

```

## Develop
More info on how to develop your custom eslint config can be found here: https://eslint.org/docs/developer-guide/shareable-configs

To develop locally you can install with `yarn add --dev pathtolocalfile` example
`yarn add --dev /Users/kristi.jorgji/Desktop/fl-lite/eslint-config-react-typescript`
 
You need to run the above command after every plugin change.

## How to publish a new version

To publish a new package version you have to  create a release tag in this repository.

## License

[MIT](LICENSE)
npm package: @kristijorgji/eslint-config-typescript
Description: eslint config for typescript based projects
Author: kristijorgji
Latest version: 0.0.3

# @kristijorgji/eslint-config-typescript

A general-purpose ESLint and Prettier configuration for TypeScript projects (non-browser environments).  
If you need rules specific to React, Next.js, or other frameworks, you can extend or override these rules after including this config.

# Table of Contents

- [Requirements](#requirements)
- [Installation](#installation)
- [Usage](#usage)
    - [Configuration](#configuration)
- [Development](#development)
- [License](#license)

## Requirements

- ESLint version **>= 8.21.0** with support for Flat Config.

## Installation

Install the package and peer dependencies using:

```bash
yarn add --dev @kristijorgji/eslint-config-typescript@latest
```

> **Note:**  
> When migrating from an older ESLint setup, please remove conflicting or duplicate dependencies first, for example:  
> `yarn remove eslint prettier @typescript-eslint/eslint-plugin`

## Usage

### Configuration

For ESLint **>= 9.x**, use `FlatCompat.extends` for compatibility.

Example `eslint.config.js`:

```js
const { FlatCompat } = require('@eslint/eslintrc');
const js = require('@eslint/js');
const { defineConfig } = require('eslint/config');

const compat = new FlatCompat({
    baseDirectory: __dirname,
    recommendedConfig: js.configs.recommended,
    allConfig: js.configs.all,
});

module.exports = defineConfig([
    {
        files: ['src/**/*.ts', '__tests__/**/*.ts'],
        extends: compat.extends('@kristijorgji/eslint-config-typescript'),
    },
]);
```

## Development

Learn more about creating custom ESLint configs here:  
[ESLint Shareable Configs Guide](https://eslint.org/docs/developer-guide/shareable-configs)

To develop locally, you can link your local package using:

```bash
yarn add --dev /path/to/local/eslint-config-typescript
```

> You need to run this command after every change to your local plugin.

## License

[MIT](LICENSE)
npm package: @kristinavlasovets/date-picker-modsen
Description: ![daypicker](./screenshots/daypicker.png) ![rangepicker](./screenshots/rangepicker.png)
Author: Kristina
Latest version: 1.1.1

# Description

![daypicker](./screenshots/daypicker.png)
![rangepicker](./screenshots/rangepicker.png)

Basic and extensible Javascript library Date Picker for working with different types of calendar. Includes DayPicker and RangePicker components.

- Supports ability to jump to a user-specified date in the calendar.
- Supports ability to add a list of tasks when clicking on a specific day and save them to localStorage.
- Supports possibility to switch to previous/next week/month/year.
- Supports possibility to select the minimum and maximum date of the calendar.
- Supports ability to hide/show weekends and highlight holidays in a different color.
- Supports selecting the calendar type (by year, week and month).
- Supports selecting a range for the calendar.
- In the RangePicker component, the first calendar provides a start date selection on both click and input from the DateSelector component panel. Similarly for the end date of the period in the second calendar. This provides more convenient functionality for the user to view the selected period and change it. This library is extensible, so in the future the resulting range can be used for the specific purposes of a particular application.

## Overview

- [Online overview](https://taupe-malasada-ce996f.netlify.app/?path=/story/components-daypicker--default) is also available!

## Installation

```
npm i @kristinavlasovets/date-picker-modsen
or
yarn add @kristinavlasovets/date-picker-modsen
```

### Components:

```
<DayPicker />
<RangePicker />
```

#### Main props:

```
minDate: Date;
maxDate: Date;
variant: 'month' | 'week' | 'year';
beginningOfTheWeek: 'sunday' | 'monday';
holidays: { month: number; day: number }[];
holidaycolor: string;
textcolor: string;
defaultStartDate: Date;
defaultEndDate: Date;
startDate?: Date;
endDate?: Date;
```

##### Keywords:

[calendar](https://www.npmjs.com/search?q=keywords:calendar)

[date-picker](https://www.npmjs.com/search?q=keywords:date-picker)

[todo](https://www.npmjs.com/search?q=keywords:todo)

[react](https://www.npmjs.com/search?q=keywords:react)

[storybook](https://storybook.js.org/docs/basics/introduction/)

[styled-components](https://www.npmjs.com/package/styled-components)
npm package: @kristoferbaxter/async
Description: Async Utilities for Module Node Development.
Author: Kristofer Baxter
Latest version: 1.0.0

# Async Utilities

This project contains utilities one might use for Async work in ES2015 and later.

### Pool

Utility that completes as many simultaneous Promise resolutions as concurrency is defined. If you have expensive operations that do not need a stable result order for completion, then this utility is for you.

```typescript
async function pool<R, T>(
  items: Array<R>,
  iteratorFn: (item: R, items: Array<R>) => T,
  concurrency: number = cpus().length,
): Promise<Array<T>> {}
```

Passing an `Array<R> of items`, and an interator function that executes an expensive operation resulting in `T` will happen concurrently as determined by `concurrency`.