open-index/open-npm huggingface dataset:
npm package: @ionic/swiftlint-config
Description: SwiftLint config for Ionic and Capacitor
Author: Ionic
Latest version: 2.0.0

# @ionic/swiftlint-config

Shared SwiftLint config used in Ionic and Capacitor projects. This must be used with the [`swiftlint` wrapper](https://github.com/ionic-team/swiftlint) for npm projects.

## Usage

1. Install the `swiftlint` wrapper by following [these instructions](https://github.com/ionic-team/swiftlint#usage).
1. Remove existing `.swiftlint.yml` file, if present.
1. Install the config in your project.

    ```
    npm install -D @ionic/swiftlint-config
    ```

1. Configure the swiftlint wrapper by adding a `swiftlint` key at the root of your project's `package.json`.

    ```
    "swiftlint": "@ionic/swiftlint-config",
    ```

    > Alternatively, to override options, you can create a `swiftlint.config.js` file:
    >
    > ```javascript
    > module.exports = {
    >   ...require('@ionic/swiftlint-config'),
    >
    >   // override options here
    > };
    > ```
    >
    > It might be worth creating a PR to this config repo first, though! We'd love to discuss changes. :blue_heart:
npm package: @ionic2-extra/calendar
Description: Calendar widget built on Ionic 2
Latest version: 0.2.3

# ion-calendar

`ion-calendar` is a simple calendar widget that allows users to
select pick single date or date ranges (weeks, months, years)


## Notes

The `ion-calendar` component fully support two-way binding of
`ngModel`


## Usage

### Basic Usage

```html
<ion-calendar (change)="onPeriodChange($event)"></ion-calendar>
```


### Usage within Forms

`ion-calendar` supports `[(ngModel)]` and `ngControl` for use within
forms.

```html
<form (submit)="onSubmit()">
  <!-- other fields -->
  <div>
    <ion-calendar [(ngModel)]="datePeriod"></ion-calendar>
  </div>
</form>
```


### API Summary

Properties:

| Name | Type | Description |
| --- | --- | --- |
| `selection-mode` | `"day" | "week" | "month" | "year"` | The range of dates selected when user clicks on a date
| `view-date` | Date | The initial date displayed. Default to current date
| `view-mode` | `"month" | "year" | "decade"` | The initial view mode. Default to `"month"`
| `start-of-week-day` | `"monday" | "tuesday" | "wednesday" | "thursday" | "friday"| "satudary" | "sunday"` | The first day of week. Default to `"monday"`
| `disabled` | boolean | Whether or not the button is disabled
npm package: @ionide/lsif-reader
Description: TypeScript library for reading LSIF data
Latest version: 0.1.2

# LSIF Reader

TypeScript library for reading LSIF files, and providing tooling information based on them.

Based on https://github.com/microsoft/vscode-lsif-extension

## How to contribute

_Imposter syndrome disclaimer_: I want your help. No really, I do.

There might be a little voice inside that tells you you're not ready; that you need to do one more tutorial, or learn another framework, or write a few more blog posts before you can help me with this project.

I assure you, that's not the case.

This project has some clear Contribution Guidelines and expectations that you can [read here](CONTRIBUTING.md).

The contribution guidelines outline the process that you'll need to follow to get a patch merged. By making expectations and process explicit, I hope it will make it easier for you to contribute.

And you don't just have to write code. You can help out by writing documentation, tests, or even by giving feedback about this work. (And yes, that includes giving feedback about the contribution guidelines.)

Thank you for contributing!

## Contributing and copyright

The project is hosted on [GitHub](https://github.com/ionide/LSIF-Reader) where you can [report issues](https://github.com/ionide/LSIF-Reader/issues), participate in [discussions](https://github.com/ionide/LSIF-Reader/discussions), fork
the project and submit pull requests.

The library is available under [MIT license](LICENSE.md), which allows modification and redistribution for both commercial and non-commercial purposes.

Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.

## Our Sponsors

Discover Panel is released as part of Ionide organization - OSS organization focused on building cross platform, developer tools.

You can support Ionide development on [Open Collective](https://opencollective.com/ionide).

### Partners

<div align="center">

<a href="https://lambdafactory.io"><img src="https://cdn-images-1.medium.com/max/332/1*la7_YvDFvrtA720P5bYWBQ@2x.png" alt="drawing" width="100"/></a>

</div>

### Sponsors

[Become a sponsor](https://opencollective.com/ionide) and get your logo on our README on Github, description in the VSCode marketplace and on [ionide.io](https://ionide.io) with a link to your site.

<div align="center">
    <a href="https://ionide.io/sponsors.html">
        <img src="https://opencollective.com/ionide/tiers/silver-sponsor.svg?avatarHeight=120&width=1000&button=false"/>
        <br/>
        <img src="https://opencollective.com/ionide/tiers/bronze-sponsor.svg?avatarHeight=120&width=1000&button=false"/>
    </a>
</div>
npm package: @ionio-lang/ionio
Description: JavaScript SDK for interacting with the Elements smart contracts.
Author: tiero
Latest version: 0.5.3

# 🛠 Ionio SDK

JavaScript SDK for interacting with the Elements smart contracts.

## ⬇️ Install

- Install with **yarn**

```sh
$ yarn add @ionio-lang/ionio
```

* Install with **npm**

```sh
$ npm install --save @ionio-lang/ionio
```

## 📄 Usage

In-depth documentation for using the `ionio` package is available at [ionio-lang.org](https://ionio-lang.org)

## 🛣 Roadmap

* [x] Contract class
* [x] Transaction class 
* [ ] TypeScript classes code-generation from artifact

## 🖥 Local Development

Below is a list of commands you will probably find useful.

### `yarn start`

Runs the project in development/watch mode. Your project will be rebuilt upon changes. Error messages are pretty printed and formatted for compatibility VS Code's Problems tab. Your library will be rebuilt if you make edits.

### `yarn build`

Bundles the package to the `dist` and `dist-web` folder.
The package is optimized and bundled with Rollup into multiple formats (CommonJS, UMD, and ES Module).

### `yarn test`

Runs the test watcher (Jest) in an interactive mode.
By default, runs tests related to files changed since the last commit.
npm package: @ionistor/jcc
Description: Minecraft protocol Json Chat Component
Author: LIMPIX31
Latest version: 0.0.2

# Minecraft's JSON Chat Component 

```ts
import { jcc } from '@ionistor/jcc'

jcc.green.bold.text('Hello World!').toString() // §l§aHello World!

jcc.toJSON() // {"text":"Hello World!","color":"green","bold":true}
jcc.toHTML() // <span style="color:green;font-weight:bold">Hello World!</span>
jcc.toANSI() // "\u001b[32m\u001b[1mHello World!\u001b[0m"

jcc.reset // reset global JSONChatComponent instance

import { JSONChatComponent } from '@ionistor/jcc'

const jsonChatComponent = new JSONChatComponent() // Local instance
```

## Parse
```ts
import { JSONChatComponent } from '@ionistor/jcc'

const jcc = JSONChatComponent.parse('{"text":"Hello World!","color":"green","bold":true}')

jcc.getColor() // green
jcc.getText() // Hello World
jcc.isBold // true
jcc.hasExtra() // false
```
npm package: @ionited/art
Description: Art in your terminal
Author: Ion
Latest version: 0.1.4

# Art

<div align="center">
    <img src="docs/imgs/example.png" alt="Art example" title="Art example">
</div>

> Art in your terminal

## Quick start

### Install with NPM

```
npm i @ionited/art
```

## Usage

Require the package in your Node.js file:

```javascript
const art = require('@ionited/art');
```

### ANSI 8 Colors

Display ANSI 8 Colors (black, red, green, yellow, blue, magenta, cyan, white):

```javascript
art.blue('Hey! I am blue!');
```

### Brighter colors

For brighter color put 'bright' before the color:

```javascript
art.brightRed('Hey! I am brighter red!');
```

### Background colors

For background color put 'bg' before the color:

```javascript
art.bgYellow('Hey! I have yellow background!');
```

Background colors also working with bright prefix:

```javascript
art.bgBrightGreen('Hey! I have brighter green background!');
```

### Modificators

Style your texts with modificators (bold, dim, italic, underline, blink, inverse, invisible, strikethrough):

```javascript
art.bold('Hey! I am a bold text!');
```

---

You can join styles and make art in your terminal:

```javascript
art.bgGreen.bold.yellow('A beatiful message!');
```

### Animations

Make loadings or other animations easily:

```javascript
art.animation(frames: any, infinite?: boolean, fps?: number): void
```

Example:

```javascript
art.animation(['#', '##', '###', '####', '#####']);
```
npm package: @ionited/mask-svelte
Description: Create your masks for Svelte easily
Author: Ion
Latest version: 0.5.0

# Mask-svelte

> Create your masks for Svelte easily

Svelte wrapper for [@ionited/mask](https://github.com/ionited/mask)

## Quick start

Choose your favorite option below:

### Install with NPM

```
npm i @ionited/mask-svelte
```

### Get from UNPKG

[https://unpkg.com/@ionited/mask-svelte@latest/dist/index.js](https://unpkg.com/@ionited/mask-svelte@latest/dist/indext.js)

---

## Usage

To basic usage you can simply call:

```html
<template>
  <input use:mask={{ mask: '99 / 9999' }}>
</template>
```

And import:

```html
<script>
  import { mask } from '@ionited/mask-svelte';
</script>
```

### Register your own masks

You can create your own mask logic easily, you only need `register` a mask and use:

```ts
register(name: string, mask: any): void;
```

See more [@ionited/mask](https://github.com/ionited/mask) 

## License

Copyright (c) 2023 Ion. Licensed under [MIT License](LICENSE).

[https://ionited.io](https://ionited.io)
npm package: @ionited/mask-vue
Description: Create your masks for Vue easily
Author: Ion
Latest version: 0.1.28

# Mask-vue

> Create your masks for Vue easily

Vue wrapper for [@ionited/mask](https://github.com/ionited/mask). Compatible with Vue 3 and Ionic Vue

## Quick start

Choose your favorite option below:

### Install with NPM

```
npm i @ionited/mask-vue
```

### Get from UNPKG

[https://unpkg.com/@ionited/mask-vue@latest/dist/index.js](https://unpkg.com/@ionited/mask-vue@latest/dist/indext.js)

---

## Usage

To basic usage you can simply call:

```html
<template>
  <input v-mask="{ mask: '99 / 9999' }">
</template>
```

Local import:

```ts
import { mask } from '@ionited/mask-vue';

export default {
  ...
  directives: { mask },
  ...
}
```

or global import:

```ts
import { mask } from '@ionited/mask-vue';

const app = createApp(App)
.directive('mask', mask);
```

### Register your own masks

You can create your own mask logic easily, you only need `register` a mask and use:

```ts
register(name: string, mask: any): void;
```

See more [@ionited/mask](https://github.com/ionited/mask) 

## License

Copyright (c) 2021 Ion. Licensed under [MIT License](LICENSE).

[https://ionited.io](https://ionited.io)
npm package: @ionited/particle
Description: A lightweight CSS framework for creation of pages structrure
Author: Ion
Latest version: 0.6.3

# Particle

<p align="center">
    <img src="docs/imgs/logo.png" alt="Particle logo" title="Particle logo">
</p>

> A lightweight CSS framework for creation of pages structrure

Particle makes easy build a structure and responsivity of webpages. You can focus in your UI.

## Quick start

Choose your favorite option below:

### Install with NPM

```
npm i @ionited/particle
```

### Download

[particle.css](dist/particle.css) or [particle.min.css](dist/particle.min.css)

Or import only your needed modules.

### Get from UNPKG

[https://unpkg.com/@ionited/particle@latest/dist/particle.min.css](https://unpkg.com/@ionited/particle@latest/dist/particle.min.css)

---

### Basic HTML

```html
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>
    
    <link href="https://unpkg.com/@ionited/particle@latest/dist/particle.min.css" rel="stylesheet">
</head>
<body>
    
</body>
</html>
```

## Documentation

- [Index](docs/README.md)
- [Quick start](docs/quick-start.md)
- [Basics](docs/basics.md)
- [Grid](docs/grid.md)
- [Utils](docs/utils.md)

## License

Copyright (c) 2020 Ion. Licensed under [MIT License](LICENSE).

[https://ionited.io](https://ionited.io)
npm package: @ionited/tooltip
Description: A simple and lightweight tooltip library
Author: Ion
Latest version: 0.1.8

# Tooltip

> A simple and lightweight tooltip library 

A library under 4KB to display informative texts as known as tooltips.

## Quick start

Choose your favorite option below:

### Install with NPM

```
npm i @ionited/tooltip
```

### Get from UNPKG

[https://unpkg.com/@ionited/tooltip@latest/dist/tooltip.js](https://unpkg.com/@ionited/tooltip@latest/dist/tooltip.js)

---

## Usage

To basic usage you can simply call:

```js
Tooltip(document.querySelector('button')); // Defaults to get title attribute content
```

### Options

```ts
Tooltip(el: HTMLElement, options?: TooltipOptions): TooltipCore

interface TooltipOptions {
  content?: string;
  contentAttr: string = 'title';
  showOnClick: boolean = false;
}

interface TooltipCore {
  destroy(): void;
  hide(): void;
  show(): void;
  update(): void;
}
```

## License

Copyright (c) 2021 Ion. Licensed under [Mit License](LICENSE).

[https://ionited.io](https://ionited.io)
npm package: @ionited/tooltip-svelte
Description: A simple and lightweight tooltip library for Svelte
Author: Ion
Latest version: 0.3.0

# Tooltip-Svelte

> A simple and lightweight tooltip library for Svelte

Svelte wrapper for [@ionited/tooltip](https://github.com/ionited/tooltip)

## Quick start

Choose your favorite option below:

### Install with NPM

```
npm i @ionited/tooltip-svelte
```

### Get from UNPKG

[https://unpkg.com/@ionited/tooltip-svelte@latest/dist/index.js](https://unpkg.com/@ionited/tooltip-svelte@latest/dist/indext.js)

---

## Usage

To basic usage you can simply call:

```html
<button use:tooltip title="Hello World!"></button>
```

And import:

```html
<script>
  import { tooltip } from '@ionited/tooltip-svelte';
</script>
```

See more [@ionited/tooltip](https://github.com/ionited/tooltip) 

## License

Copyright (c) 2022 Ion. Licensed under [MIT License](LICENSE).

[https://ionited.io](https://ionited.io)
npm package: @ionited/tooltip-vue
Description: A simple and lightweight tooltip library for Vue
Author: Ion
Latest version: 0.1.7

# Tooltip-vue

> A simple and lightweight tooltip library for Vue

Vue wrapper for [@ionited/tooltip](https://github.com/ionited/tooltip). Compatible with Vue 3 and Ionic Vue

## Quick start

Choose your favorite option below:

### Install with NPM

```
npm i @ionited/tooltip-vue
```

### Get from UNPKG

[https://unpkg.com/@ionited/tooltip-vue@latest/dist/index.js](https://unpkg.com/@ionited/tooltip-vue@latest/dist/indext.js)

---

## Usage

To basic usage you can simply call:

```html
<template>
  <button v-tooltip title="Hello World!"></button>
</template>
```

Local import:

```ts
import { tooltip } from '@ionited/tooltip-vue';

export default {
  ...
  directives: { tooltip },
  ...
}
```

or global import:

```ts
import { tooltip } from '@ionited/tooltip-vue';

const app = createApp(App)
.directive('tooltip', tooltip);
```

See more [@ionited/tooltip](https://github.com/ionited/tooltip) 

## License

Copyright (c) 2021 Ion. Licensed under [Mit License](LICENSE).

[https://ionited.io](https://ionited.io)
npm package: @ionited/trail
Description: Guide your user, step by step
Author: Ion
Latest version: 0.3.7

# Trail

<p align="center">
  <img src="docs/imgs/logo.png" alt="Trail logo" title="Trail logo" width="256">
</p>

> Guide your user, step by step

A simple and lightweight tour library 

## Quick start

Choose your favorite option below:

### Install with NPM

```
npm i @ionited/trail
```

### Get from UNPKG

[https://unpkg.com/@ionited/trail@latest/dist/trail.js](https://unpkg.com/@ionited/trail@latest/dist/trail.js)

---

## Usage

To basic usage you can simply call:

```js
var trail = Trail([{
  id: 1,
  content: 'First step',
  attachedEl: document.getElementById('one')
}, {
  id: 2,
  content: 'Step two, without attachedEl'
}, {
  id: 3,
  content: 'Step 3',
  attachedEl: document.getElementById('two'),
  interactive: false
}, {
  id: 4,
  content: 'Step 4, end of the line!',
  attachedEl: document.getElementById('three')
}]);
```

### Options

```ts
Trail(steps?: Step[]): TrailCore

export interface Step {
  id: any;
  content: HTMLElement | string;
  attachedEl?: HTMLElement | null;
  interactive?: boolean;
}

interface TrailCore {
  steps: Step[];
  next(): void;
  back(): void;
  stop(): void;
  destroy(): void;
}
```

`TrailCore.steps` is just an array, you can use any `Array` functions on this (e.g, `push`, `splice`, `unshift`)

## License

Copyright (c) 2021 Ion. Licensed under [MIT License](LICENSE).

[https://ionited.io](https://ionited.io)
npm package: @ionjs/adapter-cqhttp
Description: Receiver, Sender and Utilities for cqhttp.
Author: ionjs
Latest version: 0.2.0
Deprecated: dont use this

# @ionjs/adapter-cqhttp
![@ionjs/adapter-* logo](https://raw.githubusercontent.com/ionjs-dev/adapter-cqhttp/master/docs/static/logo.png)

[![GitHub Org](https://img.shields.io/badge/part%20of-ionjs-orange.svg)](https://github.com/ionjs-dev)
[![GitHub](https://img.shields.io/github/license/ionjs-dev/adapter-cqhttp.svg)](https://github.com/ionjs-dev/adapter-cqhttp/blob/master/LICENSE)
[![Build status](https://ci.appveyor.com/api/projects/status/n9b45i183agin80g?svg=true)](https://ci.appveyor.com/project/trustgit/adapter-cqhttp)
[![npm (scoped)](https://img.shields.io/npm/v/@ionjs/adapter-cqhttp.svg)](https://npmjs.org/package/@ionjs/adapter-cqhttp)
[![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/ionjs-dev/receiver-cqhttp.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/ionjs-dev/receiver-cqhttp/context:javascript)
![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/ionjs-dev/adapter-cqhttp.svg)

@ionjs/adapter-cqhttp is a combination of message receiver and sender for @richardchien/coolq-http-api.

## Getting Started
@ionjs/adapter-cqhttp can be included in your codes like this:

```bash
npm install --save @ionjs/adapter-cqhttp
```

```js
import { Receiver, Sender, CQCode } from '@ionjs/adapter-cqhttp'
const secret = 'my-secret', receiverPort = 8080
const token = 'my-token', sendURL = 'https://localhost:5700'
const receiver = new CQReceiver(secret)
const sender = new CQSender(sendURL, token)
receiver.listen(receiverPort)
receiver.on('message', msg => { 
    sender.to(msg).send(CQCode.Anonymous(), 'testing message sending through ionjs!', CQCode.Emoji(137))
})
```

The full explanation of the codes above is in the [docs](https://ion.js.org/adapter-cqhttp).

## Contribution
- Become a stargazer if you are interested!
- ionjs currently have only few contributors, so PRs and issues are very welcomed.
npm package: @ionjs/command
Description: A shell-like-command parser.
Author: ionjs
Latest version: 0.2.2
Deprecated: dont use this

# Command
![@ionjs/command logo](https://raw.githubusercontent.com/ionjs-dev/command/master/docs/static/logo.png)

[![GitHub Org](https://img.shields.io/badge/part%20of-ionjs-orange.svg)](https://github.com/ionjs-dev)
[![GitHub](https://img.shields.io/github/license/ionjs-dev/command.svg)](https://github.com/ionjs-dev/command/blob/master/LICENSE)
[![Build status](https://ci.appveyor.com/api/projects/status/blo78w3yssken9n1?svg=true)](https://ci.appveyor.com/project/trustgit/command-d2q5l)
[![codecov](https://codecov.io/gh/ionjs-dev/command/branch/master/graph/badge.svg)](https://codecov.io/gh/ionjs-dev/command)
[![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/ion-bot/command.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/ion-bot/command/context:javascript)
[![npm (scoped)](https://img.shields.io/npm/v/@ionjs/command.svg)](https://npmjs.org/package/@ionjs/command)
![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/ionjs-dev/command.svg)

Command is a parser for *shell-like-command*s.

> The main difference between Command and other parsers is that Command **doesn't do exact behaviors**.
>
> Instead, it parses the command string and returns a program-readable object with arguments of the command.

## Getting Started
Install and import Command:

```bash
npm install --save @ionjs/command
```

```js
import { Command } from '@ionjs/command'
const command = new Command(declaration)
const input = getInputSomehow()
if (command.is(input))
    result = command.parse(input)
```

The full explanation of the codes above is in the [docs](https://ion.js.org/command).

## Contribution
- Become a stargazer if you are interested!
- ionjs currently have only few contributors, so PRs and issues are very welcomed.
npm package: @ionjs/core
Description: Yet another QQ bot framework based on CQHTTP & CoolQ.
Author: ionjs-dev
Latest version: 0.6.5

# Ion.js
[![GitHub](https://img.shields.io/github/license/ionjs-dev/ionjs.svg)](https://github.com/ionjs-dev/ionjs/blob/master/LICENSE)
[![Docs](https://img.shields.io/badge/docs-ion.js.org-yellow.svg)](https://ion.js.org)
[![Build status](https://ci.appveyor.com/api/projects/status/hngl103v209a313f?svg=true)](https://ci.appveyor.com/project/trustgit/ionjs)
[![codecov](https://codecov.io/gh/ionjs-dev/ionjs/branch/master/graph/badge.svg)](https://codecov.io/gh/ionjs-dev/ionjs)
[![CodeFactor](https://www.codefactor.io/repository/github/ionjs-dev/ionjs/badge/master)](https://www.codefactor.io/repository/github/ionjs-dev/ionjs/overview/master)
[![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/ionjs-dev/ionjs.svg)](https://lgtm.com/projects/g/ionjs-dev/ionjs/context:javascript)
[![npm (scoped)](https://img.shields.io/npm/v/@ionjs/core.svg)](https://npmjs.org/package/@ionjs/core)
[![install size](https://packagephobia.now.sh/badge?p=@ionjs/core)](https://packagephobia.now.sh/result?p=@ionjs/core)

> Yet another QQ bot framework based on CQHTTP &amp; CoolQ.

## 介绍
Ion.js 是一个用 TypeScript 写就，在 Node.js 环境下运行，基于 [CQHTTP](https://github.com/richardchien/coolq-http-api) 和 [酷Q](https://cqp.cc) 的 QQ 机器人框架。

Ion.js 提供两类消息处理器：中间件和会话。接收到的消息将经过中间件依次处理，并最终分发给会话。得益于 JavaScript 的异步 I/O 与对消息流的封装，开发者可以便捷地创建与用户持续交互的会话；同时，Ion.js 提供了一系列实用工具（甚至一个用以声明命令的 DSL），以更加方便地描述、书写消息处理器。

Ion.js 使用 koa 来与 CQHTTP 通信，同时使用了 Node.js 原生的 `stream.PassThrough` 简单流来构造持续的消息流。

需要注意的是，Ion.js 仍使用的是传统的 HTTP 通信方式，且不内置对会话状态的长期存储（即仅有内存存储）；Ion.js 要求 Node.js 环境支持 ES2017，CQHTTP 插件在版本 4 以上。

## 特性
- **是可引入的 CommonJS 模块**，因此无需遵循特定的路径结构；
- **有一系列实用工具**，包括获取消息时的条件判断与CQ码的处理等；
- **支持真正的中间件**，数据传至下游、控制传回上游；
- **提供更强大的命令声明与解析**，包括具名参数、引号转义、默认值等；
- **支持创建与用户持续交互的会话**，使用友好的异步 I/O。

## [文档](https://ion.js.org)

## 贡献
- 如果本项目对你有帮助，请点一颗 Star。
- 如遇到任何问题，且确定问题来源不是你的代码，请第一时间提出 issue 以便 Ion.js 修复。
- 欢迎 Pull Requests。
npm package: @ionjs/flow
Description: A session manager that makes async message fetching easy
Author: ionjs
Latest version: 0.4.2
Deprecated: dont use this

# Flow
![@ionjs/flow logo](https://raw.githubusercontent.com/ionjs-dev/flow/master/docs/static/logo.png)

[![GitHub Org](https://img.shields.io/badge/part%20of-ionjs-orange.svg)](https://github.com/ionjs-dev)
[![GitHub](https://img.shields.io/github/license/ionjs-dev/flow.svg)](https://github.com/ionjs-dev/flow/blob/master/LICENSE)
[![Build status](https://ci.appveyor.com/api/projects/status/pblq9p2ad4g33wrf?svg=true)](https://ci.appveyor.com/project/trustgit/flow-w07af)
[![codecov](https://codecov.io/gh/ionjs-dev/flow/branch/master/graph/badge.svg)](https://codecov.io/gh/ionjs-dev/flow)
[![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/ion-bot/flow.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/ion-bot/flow/context:javascript)
[![npm (scoped)](https://img.shields.io/npm/v/@ionjs/flow.svg)](https://npmjs.org/package/@ionjs/flow)
![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/ionjs-dev/flow.svg)

Flow is a manager for chatbots' behaviors, which automatically creates sessions from them and enable session to fetch messages in an easier way.

## Quick Start
Install Flow and import it:

```bash
npm install --save @ionjs/flow
```

```js
import { Single as SingleFlow } from '@ionjs/flow'
// create a Flow instance for your bot
const flow = new SingleFlow(ctx => ctx.id)
// add a behavior
flow.addBehavior({
    match(ctx) { ... },
    async session(stream) {
        const ctx = await stream.get()
        ...
    },
}) 
// push in a message
flow.push(msg)
```

The full explanation of the codes above is in the [Docs](https://ion.js.org/flow).

## Contribution
- Become a stargazer if you are interested!
- ionjs currently have only few contributors, so PRs and issues are very welcomed.