open-index/open-npm huggingface dataset:
npm package: @jswebfans/suppose
Description: Automate command line programs. Like UNIX expect.
Author: JP Richardson
Latest version: 0.6.2

[![build status](https://secure.travis-ci.org/jprichardson/node-suppose.png)](http://travis-ci.org/jprichardson/node-suppose)


Node.js - suppose
=================

Have you ever heard of the command line program [expect][1]? Basically, `expect`
allows you to automate command line programs. `suppose` is a programmable
Node.js module that allows the same behavior.


Why?
----

From the [expect wikipedia][1] page, you can see many examples of `expect`
scripts automating tasks such as `telnet` or `ftp` sessions. Now you can easily
write Node.js scripts to do the same. This may be most beneficial during testing.


Installation
------------

```sh
npm install suppose
```


Example
------

Automate the command `npm init`, which initializes a new npm module.

```javascript
var suppose = require('suppose')
  , fs = require('fs')
  , assert = require('assert')

process.chdir('/tmp/awesome');
fs.writeFileSync('/tmp/awesome/README.md', 'READ IT')
// debug is an optional writeable output stream
suppose('npm', ['init'], {debug: fs.createWriteStream('/tmp/debug.txt')})
  .when(/name\: \([\w|\-]+\)[\s]*/).respond('awesome_package\n')
  .when('version: (1.0.0) ').respond('0.0.1\n')
  // response can also be the second argument to .when
  .when('description: ', "It's an awesome package man!\n")
  .when('entry point: (index.js) ').respond("\n")
  .when('test command: ').respond('npm test\n')
  .when('git repository: ').respond("\n")
  .when('keywords: ').respond('awesome, cool\n')
  .when('author: ').respond('JP Richardson\n')
  .when('license: (ISC) ').respond('MIT\n')
  .when('ok? (yes) ' ).respond('yes\n')
.on('error', function(err){
  console.log(err.message);
})
.end(function(code){
  var packageFile = '/tmp/awesome/package.json';
  fs.readFile(packageFile, function(err, data){
    var packageObj = JSON.parse(data.toString());
    console.log(packageObj.name); //'awesome_package'
  })
})
```

`.respond()` may be called any number of times after `.when()`.  Each response
will be sent in the order defined when the condition matches.  Once all
conditions and responses are defined, call `.end()` to begin execution.


Contributors
------------

* [Philipp Staender](https://github.com/pstaender)
* [Jesús Leganés Combarro 'piranna'](https://github.com/piranna)


License
-------

(MIT License)

Copyright 2012-2013, JP Richardson



[1]: http://en.wikipedia.org/wiki/Expect


[aboutjp]: http://about.me/jprichardson
[twitter]: http://twitter.com/jprichardson
[procbits]: http://procbits.com
[gitpilot]: http://gitpilot.com
npm package: @jswebscraper/puppeteerwrapper
Description: Wraps Puppeteer methods to expose an easy interface for grabbing and dumping page HTML
Author: Jeff Keilman
Latest version: 0.0.2

## PuppeteerWrapper
### Description
A Class that wraps a Headless Chrome browser (using Puppeteer) and its pages and exposes simple methods to help retrieve HTML from lists of links.


### PuppeteerWrapper Class
#### Attributes
| Attribute   | Description |
| :---------- | ----------- |
| pages       | An Array[Object] that holds pages and page metadata |
| browser     | A Puppeteer browser |


#### Methods
| Method      | Description |
| :---------- | ----------- |
| init ()<br />returns: Promise.resolve(`undefined`) | Async method that must be called after initializing a new `PuppeteerWrapper`.<br />It sets `this.pages` to an empty Array and sets `this.browser` after awaiting<br />the launch of a new Puppeteer browser. |
| getBrowser ()<br />returns: Object | Getter that returns `this.browser` Object, which contains a Puppeteer browser<br />and metadata |
| getPages ()<br />returns: Array[Object] | Getter that returns `this.pages` Array, which contains a list of page Objects with<br />Puppeteer pages and metadata |
| getPageCount ()<br />returns: Number | Returns `this.pages.length` |
| getPageById (id)<br />returns: Object | Returns the page Object with a given Number `id` |
| getPageByName (name)<br />returns: Object | Returns the page Object with a given String `name` |
| closePages ()<br />returns: Promise.resolve(`undefined`) | Loops through `this.pages`, closing every Puppeteer page, and then empties<br />`this.pages` |
| teardown ()<br />returns: Promise.resolve(`undefined`) | Closes all pages, and then closes `this.browser` |
| openPages (num)<br />returns: Promise.resolve(`undefined`) | Opens Number `num` Puppeteer pages and adds them to `this.pages` |
| getDOM (urls)<br />returns: Promise.resolve(String or Array[String]) | Can be called with a single URL Object (containing String URL,<br />and String GPU name), or an Array of URL Objects. Will return<br />the HTML for the single URL/list of URLs. |

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

## Testing
Testing is executed using [Jest](https://jestjs.io/). All test files are maintained in the `PuppeteerWrapper/test/` directory. To run unit tests, run `npm run test`.

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

## Code Style
All code is styled using [JavaScript Standard Style](https://standardjs.com/).
npm package: @jswf/vue
Description: Virtual window component for Vue.js
Author: SoraKumo
Latest version: 1.0.1

# @jswf/vue

[![npm version](https://badge.fury.io/js/%40jswf%2Fvue.svg)](https://badge.fury.io/js/%40jswf%2Fvue)
Virtual window component for Vue.js

## １．Contents

### 1.1 Basic explanation

Components for realizing virtual windows with Vue.js
Just enclose with JSWindow and it will become a virtual window

### 1.2 Currently available features

- MoveWindow
- Resize
- Maximize
- Minimize
- Parent-child window
- SplitScreen

## ２．Screen shot

![Screen Shot](https://raw.githubusercontent.com/JavaScript-WindowFramework/vue/screenshot/screenshot.gif)

## ３．links

- Source code
[https://github.com/JavaScript-WindowFramework/vue](https://github.com/JavaScript-WindowFramework/vue)

- Sample Source
[https://github.com/JavaScript-WindowFramework/jswf-vue-sample](https://github.com/JavaScript-WindowFramework/jswf-vue-sample)

- Sample Page
[https://javascript-windowframework.github.io/jswf-vue-sample/][https://javascript-windowframework.github.io/jswf-vue-sample/]

## ４．Sample source

```tsx:index.tsx
<template>
  <div id="app">
    <img alt="Vue logo" src="./assets/logo.png" />
    <!-- Add JSWindow-->
    <JSWindow title="Virtual Window">
      <HelloWorld msg="Welcome to Your Vue.js App" />
    </JSWindow>
    <!---------------->
  </div>
</template>

<script>
import HelloWorld from "./components/HelloWorld.vue";
import { JSWindow } from "@jswf/vue"; //Add
export default {
  name: "app",
  components: {
    HelloWorld,
    JSWindow //Add
  }
};
</script>

<style>
#app {
  font-family: "Avenir", Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>
```

## ５．Component list

[JSWindow](https://ttis.croud.jp/?uuid=d1808593-1825-4de5-bf53-b9d2109f3604)
SplitView

## ６．license

MIT
npm package: @jswork/active-code-cli
Description: Get active code and copy it.
Author: afei
Latest version: 1.0.11

# active-code-cli
> Get active code and copy it.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
# public
npm i -g @jswork/active-code-cli

# private
git clone https://github.com/afeiship/active-code-cli.git
cd active-code-cli
npm i && npm link
```

## usage
~~~
Usage: active-code-cli [options]

Options:
  -V, --version       output the version number
  -d, --debug         only show cmds, but not clean.
  -s, --src <string>  source filepath. (default: "./src")
  -h, --help          display help for command
~~~

## license
Code released under [the MIT license](https://github.com/afeiship/active-code-cli/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/active-code-cli
[version-url]: https://npmjs.org/package/@jswork/active-code-cli

[license-image]: https://img.shields.io/npm/l/@jswork/active-code-cli
[license-url]: https://github.com/afeiship/active-code-cli/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/active-code-cli
[size-url]: https://github.com/afeiship/active-code-cli/blob/master/dist/active-code-cli.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/active-code-cli
[download-url]: https://www.npmjs.com/package/@jswork/active-code-cli
npm package: @jswork/alo7-develop-assistant
Description: Develop assistant for alo7.
Author: afeiship
Latest version: 1.0.93

<p align="center">
  <img src="https://tva1.sinaimg.cn/large/007S8ZIlgy1ggl0vbsvh5j312g0i2wh2.jpg" width="400">
</p>

# alo7-develop-assistant
> Develop assistant for alo7.

## installation
<img width="800" src="https://tva1.sinaimg.cn/large/007S8ZIlgy1ggl0ds8tvej30xp0u0n1d.jpg" />

## steps
1. 安装 [tampermonkey](https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=en-US)
2. 打开 `tampermokey` 的管理面板(Dashboard)
3. 实用工具(tools)
4. Install from URL:
5. 用这个： https://raw.githubusercontent.com/afeiship/alo7-develop-assistant/master/dist/install.js
npm package: @jswork/ant-abstract-form
Description: For curd form based on react.
Latest version: 1.0.24

# ant-abstract-form
> For curd form based on react.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install -S @jswork/ant-abstract-form
```

## usage
1. import css
  ```scss
  @import "~@jswork/ant-abstract-form/dist/style.css";

  // or use sass
  @import "~@jswork/ant-abstract-form/dist/style.scss";

  // customize your styles:
  $ant-abstract-form-options: ()
  ```
2. import js
  ```js
  import React from 'react';
  import AntAbstractForm from '@jswork/ant-abstract-form';
  import styled from 'styled-components';
  import nx from '@jswork/next';

  const Container = styled.div`
    width: 80%;
    margin: 30px auto 0;
    .is-body {
      padding: 20px;
      background: #fff;
      width: 50%;
      min-width: 320px;
      margin: 0 auto;
    }

    .mr-5_ {
      > * {
        margin-right: 5px;
      }
    }

    .mr-10_ {
      > * {
        margin-right: 10px;
      }
    }
  `;

  // Mock api
  nx.$api = {
    curds_index: function () {
      return Promise.resolve('index');
    },
    curds_show: function () {
      return Promise.resolve('show');
    },
    curds_update: function () {
      return Promise.resolve('update');
    }
  };

  nx.$route = {
    back: function () {
      console.log('back');
    }
  };

  class App extends AntAbstractForm {
    apiService = nx.$api;
    routeService = nx.$route;

    constructor(props) {
      super(props);
      this.state = {
        meta: {
          formItemLayout: [6, 18],
          initialValues: {},
          fields: [
            {
              key: 'username',
              label: 'User Name',
              tooltip: '用户名',
              rules: [{ max: 10, min: 5 }]
            },
            { key: 'password', label: 'Password', widget: 'password' }
          ]
        }
      };
    }

    componentDidMount() {
      const { meta } = this.state;
      meta.initialValues = {
        username: 'afeiship'
      };
      this.setState({ meta });
    }

    render() {
      return this.view();
    }
  }

  export default () => {
    return (
      <Container>
        <App />
      </Container>
    );
  };

  ```

## preview
- https://afeiship.github.io/ant-abstract-form/

## license
Code released under [the MIT license](https://github.com/afeiship/ant-abstract-form/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/ant-abstract-form
[version-url]: https://npmjs.org/package/@jswork/ant-abstract-form

[license-image]: https://img.shields.io/npm/l/@jswork/ant-abstract-form
[license-url]: https://github.com/afeiship/ant-abstract-form/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/ant-abstract-form
[size-url]: https://github.com/afeiship/ant-abstract-form/blob/master/dist/ant-abstract-form.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/ant-abstract-form
[download-url]: https://www.npmjs.com/package/@jswork/ant-abstract-form
npm package: @jswork/ant-abstract-main
Description: Antd abstract curd.
Latest version: 1.0.45

# ant-abstract-main
> Antd abstract curd.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install -S @jswork/ant-abstract-main
```

## usage
1. import css
  ```scss
  @import "~@jswork/ant-abstract-main/dist/style.css";

  // or use sass
  @import "~@jswork/ant-abstract-main/dist/style.scss";

  // customize your styles:
  $ant-abstract-main-options: ()
  ```
2. import js
  ```js
  import React from 'react';
  import AntAbstractMain from '@jswork/ant-abstract-main';
  import styled from 'styled-components';

  const Container = styled.div`
    width: 80%;
    margin: 30px auto 0;
  `;

  export default (props: any) => {
    return (
      <Container>
        <AntAbstractMain />
      </Container>
    );
  };

  ```

## preview
- https://afeiship.github.io/ant-abstract-main/

## license
Code released under [the MIT license](https://github.com/afeiship/ant-abstract-main/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/ant-abstract-main
[version-url]: https://npmjs.org/package/@jswork/ant-abstract-main

[license-image]: https://img.shields.io/npm/l/@jswork/ant-abstract-main
[license-url]: https://github.com/afeiship/ant-abstract-main/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/ant-abstract-main
[size-url]: https://github.com/afeiship/ant-abstract-main/blob/master/dist/ant-abstract-main.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/ant-abstract-main
[download-url]: https://www.npmjs.com/package/@jswork/ant-abstract-main
npm package: @jswork/ant-i18n-init
Description: Ant i18n init tools.
Latest version: 1.0.4

# ant-i18n-init
> Ant i18n init tools.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install @jswork/ant-i18n-init
```

## usage
```js
import antI18nInit from '@jswork/ant-i18n-init';

// usage goes here.
```

## license
Code released under [the MIT license](https://github.com/afeiship/ant-i18n-init/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/ant-i18n-init
[version-url]: https://npmjs.org/package/@jswork/ant-i18n-init

[license-image]: https://img.shields.io/npm/l/@jswork/ant-i18n-init
[license-url]: https://github.com/afeiship/ant-i18n-init/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/ant-i18n-init
[size-url]: https://github.com/afeiship/ant-i18n-init/blob/master/dist/ant-i18n-init.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/ant-i18n-init
[download-url]: https://www.npmjs.com/package/@jswork/ant-i18n-init
npm package: @jswork/antbf-abstract
Description: Abstract components for table filters.
Latest version: 1.0.4

# antbf-abstract
> Abstract components for table filters.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install -S @jswork/antbf-abstract
```

## properties
| Name      | Type   | Required | Default | Description                           |
| --------- | ------ | -------- | ------- | ------------------------------------- |
| className | string | false    | -       | The extended className for component. |
| value     | object | false    | null    | Default value.                        |
| onChange  | func   | false    | noop    | The change handler.                   |


## usage
1. import css
  ```scss
  @import "~@jswork/boilerplate-react-component/dist/style.css";

  // or use sass
  @import "~@jswork/boilerplate-react-component/dist/style.scss";

  // customize your styles:
  $boilerplate-react-component-options: ()
  ```
2. import js
  ```js
  import React from 'react';
  import AntbfAbstract from '../@jswork/boilerplate-react-component';
  import styled from 'styled-components';

  const Container = styled.div`
    width: 80%;
    margin: 30px auto 0;
  `;

  export default (props: any) => {
    return (
      <Container>
        <AntbfAbstract />
      </Container>
    );
  };

  ```

## license
Code released under [the MIT license](https://github.com/afeiship/antbf-abstract/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/antbf-abstract
[version-url]: https://npmjs.org/package/@jswork/antbf-abstract

[license-image]: https://img.shields.io/npm/l/@jswork/antbf-abstract
[license-url]: https://github.com/afeiship/antbf-abstract/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/antbf-abstract
[size-url]: https://github.com/afeiship/antbf-abstract/blob/master/dist/antbf-abstract.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/antbf-abstract
[download-url]: https://www.npmjs.com/package/@jswork/antbf-abstract
npm package: @jswork/antbf-checkbox-group
Description: Checkbox group table filter for antd.
Latest version: 1.0.6

# antbf-checkbox-group
> Checkbox group table filter for antd.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install -S @jswork/antbf-checkbox-group
```

## properties
| Name      | Type   | Required | Default | Description                           |
| --------- | ------ | -------- | ------- | ------------------------------------- |
| className | string | false    | -       | The extended className for component. |
| value     | object | false    | null    | Default value.                        |
| onChange  | func   | false    | noop    | The change handler.                   |


## usage
1. import css
  ```scss
  @import "~@jswork/boilerplate-react-component/dist/style.css";

  // or use sass
  @import "~@jswork/boilerplate-react-component/dist/style.scss";

  // customize your styles:
  $boilerplate-react-component-options: ()
  ```
2. import js
  ```js
  import React from 'react';
  import AntbfCheckboxGroup from '../@jswork/boilerplate-react-component';
  import styled from 'styled-components';

  const Container = styled.div`
    width: 80%;
    margin: 30px auto 0;
  `;

  export default (props: any) => {
    return (
      <Container>
        <AntbfCheckboxGroup />
      </Container>
    );
  };

  ```

## license
Code released under [the MIT license](https://github.com/afeiship/antbf-checkbox-group/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/antbf-checkbox-group
[version-url]: https://npmjs.org/package/@jswork/antbf-checkbox-group

[license-image]: https://img.shields.io/npm/l/@jswork/antbf-checkbox-group
[license-url]: https://github.com/afeiship/antbf-checkbox-group/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/antbf-checkbox-group
[size-url]: https://github.com/afeiship/antbf-checkbox-group/blob/master/dist/antbf-checkbox-group.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/antbf-checkbox-group
[download-url]: https://www.npmjs.com/package/@jswork/antbf-checkbox-group
npm package: @jswork/antbf-radio-group
Description: Radio group table filter for antd.
Latest version: 1.0.6

# antbf-radio-group
> Radio group table filter for antd.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install -S @jswork/antbf-radio-group
```

## properties
| Name      | Type   | Required | Default | Description                           |
| --------- | ------ | -------- | ------- | ------------------------------------- |
| className | string | false    | -       | The extended className for component. |
| value     | object | false    | null    | Default value.                        |
| onChange  | func   | false    | noop    | The change handler.                   |


## usage
1. import css
  ```scss
  @import "~@jswork/boilerplate-react-component/dist/style.css";

  // or use sass
  @import "~@jswork/boilerplate-react-component/dist/style.scss";

  // customize your styles:
  $boilerplate-react-component-options: ()
  ```
2. import js
  ```js
  import React from 'react';
  import AntbfRadioGroup from '../@jswork/boilerplate-react-component';
  import styled from 'styled-components';

  const Container = styled.div`
    width: 80%;
    margin: 30px auto 0;
  `;

  export default (props: any) => {
    return (
      <Container>
        <AntbfRadioGroup />
      </Container>
    );
  };

  ```

## license
Code released under [the MIT license](https://github.com/afeiship/antbf-radio-group/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/antbf-radio-group
[version-url]: https://npmjs.org/package/@jswork/antbf-radio-group

[license-image]: https://img.shields.io/npm/l/@jswork/antbf-radio-group
[license-url]: https://github.com/afeiship/antbf-radio-group/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/antbf-radio-group
[size-url]: https://github.com/afeiship/antbf-radio-group/blob/master/dist/antbf-radio-group.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/antbf-radio-group
[download-url]: https://www.npmjs.com/package/@jswork/antbf-radio-group
npm package: @jswork/antbf-search-box
Description: Table filter for search box.
Latest version: 1.0.6

# antbf-search-box
> Table filter for search box.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install -S @jswork/antbf-search-box
```

## properties
| Name      | Type   | Required | Default | Description                           |
| --------- | ------ | -------- | ------- | ------------------------------------- |
| className | string | false    | -       | The extended className for component. |
| value     | object | false    | null    | Default value.                        |
| onChange  | func   | false    | noop    | The change handler.                   |


## usage
1. import css
  ```scss
  @import "~@jswork/boilerplate-react-component/dist/style.css";

  // or use sass
  @import "~@jswork/boilerplate-react-component/dist/style.scss";

  // customize your styles:
  $boilerplate-react-component-options: ()
  ```
2. import js
  ```js
  import React from 'react';
  import AntbfSearchBox from '../@jswork/boilerplate-react-component';
  import styled from 'styled-components';

  const Container = styled.div`
    width: 80%;
    margin: 30px auto 0;
  `;

  export default (props: any) => {
    return (
      <Container>
        <AntbfSearchBox />
      </Container>
    );
  };

  ```

## license
Code released under [the MIT license](https://github.com/afeiship/antbf-search-box/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/antbf-search-box
[version-url]: https://npmjs.org/package/@jswork/antbf-search-box

[license-image]: https://img.shields.io/npm/l/@jswork/antbf-search-box
[license-url]: https://github.com/afeiship/antbf-search-box/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/antbf-search-box
[size-url]: https://github.com/afeiship/antbf-search-box/blob/master/dist/antbf-search-box.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/antbf-search-box
[download-url]: https://www.npmjs.com/package/@jswork/antbf-search-box
npm package: @jswork/antd-form-builder
Description: A wrapper for antd-form-builder.
Latest version: 1.1.27

# antd-form-builder
> A wrapper for antd-form-builder.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install -S @jswork/antd-form-builder
```

## usage
1. import css
  ```scss
  @import "~@jswork/antd-form-builder/dist/style.css";

  // or use sass
  @import "~@jswork/antd-form-builder/dist/style.scss";

  // customize your styles:
  $antd-form-builder-options: ()
  ```
2. import js
  ```js
  import React from 'react';
  import AntdFormBuilder from '@jswork/antd-form-builder';
  import styled from 'styled-components';

  const Container = styled.div`
    width: 80%;
    margin: 30px auto 0;
  `;

  export default (props: any) => {
    return (
      <Container>
        <AntdFormBuilder />
      </Container>
    );
  };

  ```

## preview
- https://afeiship.github.io/antd-form-builder/

## license
Code released under [the MIT license](https://github.com/afeiship/antd-form-builder/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/antd-form-builder
[version-url]: https://npmjs.org/package/@jswork/antd-form-builder

[license-image]: https://img.shields.io/npm/l/@jswork/antd-form-builder
[license-url]: https://github.com/afeiship/antd-form-builder/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/antd-form-builder
[size-url]: https://github.com/afeiship/antd-form-builder/blob/master/dist/antd-form-builder.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/antd-form-builder
[download-url]: https://www.npmjs.com/package/@jswork/antd-form-builder
npm package: @jswork/antd-form-toolkits
Description: Form tookits for antd.
Latest version: 1.0.6

# antd-form-toolkits
> Form tookits for antd.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install -S @jswork/antd-form-toolkits
```

## usage
1. import css
  ```scss
  @import "~@jswork/antd-form-toolkits/dist/style.css";

  // or use sass
  @import "~@jswork/antd-form-toolkits/dist/style.scss";

  // customize your styles:
  $antd-form-toolkits-options: ()
  ```
2. import js
  ```js
  import React from 'react';
  import AntdFormToolkits from '@jswork/antd-form-toolkits';
  import styled from 'styled-components';

  const Container = styled.div`
    width: 80%;
    margin: 30px auto 0;
  `;

  export default (props: any) => {
    return (
      <Container>
        <AntdFormToolkits />
      </Container>
    );
  };

  ```

## preview
- https://afeiship.github.io/antd-form-toolkits/

## license
Code released under [the MIT license](https://github.com/afeiship/antd-form-toolkits/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/antd-form-toolkits
[version-url]: https://npmjs.org/package/@jswork/antd-form-toolkits

[license-image]: https://img.shields.io/npm/l/@jswork/antd-form-toolkits
[license-url]: https://github.com/afeiship/antd-form-toolkits/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/antd-form-toolkits
[size-url]: https://github.com/afeiship/antd-form-toolkits/blob/master/dist/antd-form-toolkits.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/antd-form-toolkits
[download-url]: https://www.npmjs.com/package/@jswork/antd-form-toolkits
npm package: @jswork/app-cache
Description: An app scripts cache solution based on localStorage.
Author: afei
Latest version: 1.0.2

# app-cache
> An app scripts cache solution based on localStorage.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

![snapshot](https://tva1.sinaimg.cn/large/0081Kckwgy1glt92a8oqwj31280cydi7.jpg)

## installation
```shell
npm i @jswork/app-cache
```

## usage
```js
AppCache.load([
  '//cdn.bootcss.com/antd/3.1.0/antd.min.css',
  '//cdn.bootcss.com/zepto/1.0rc1/zepto.min.js',
  '//cdn.bootcss.com/q.js/1.4.1/q.min.js'
]);
```

## resources
- https://www.cnblogs.com/snandy/p/4867731.html
- https://api.qunitjs.com/assert/async
- https://addyosmani.com/basket.js/


## lt ie9 polyfill
```html
<!--[if lt IE 9]>
<script type="text/javascript" src="https://cdn.polyfill.io/v2/polyfill.js?features=Array.prototype.indexOf,Array.prototype.filter,Object.keys"></script>
<![endif]-->
```

## license
Code released under [the MIT license](https://github.com/afeiship/app-cache/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/app-cache
[version-url]: https://npmjs.org/package/@jswork/app-cache

[license-image]: https://img.shields.io/npm/l/@jswork/app-cache
[license-url]: https://github.com/afeiship/app-cache/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/app-cache
[size-url]: https://github.com/afeiship/app-cache/blob/master/dist/app-cache.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/app-cache
[download-url]: https://www.npmjs.com/package/@jswork/app-cache
npm package: @jswork/apply7-english-font
Description: Extra english font.
Latest version: 1.0.2

# apply7-english-font
> Extra english font.

## installation
```bash
yarn add @jswork/apply7-english-font
```

## usage
```css
.ff-inter {
  font-family: 'Inter', Arial, Helvetica, sans-serif;
  font-style: normal;
}
```

## google fonts
```html
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap" rel="stylesheet">
```

## resources
- https://fonts.google.com/selection/embed
- https://fonts.googleapis.com/css2?family=Inter:wght@900&display=swap
npm package: @jswork/apply7-fonthub
Description: apply7-FontHub offers optimized Google Fonts for English text and numbers.
Latest version: 1.0.2

# apply7-fonthub
> apply7-FontHub offers optimized Google Fonts for English text and numbers.

## installation
```bash
yarn add @jswork/apply7-fonthub
```

## usage
```css
.ff-inter {
  font-family: 'Inter', Arial, Helvetica, sans-serif;
  font-style: normal;
}

.ff-open-sans {
  font-family: 'Open Sans', Arial, Helvetica, sans-serif;
  font-style: normal;
}
```

## google fonts
```html
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Open+Sans:ital,wght@0,300..800;1,300..800&display=swap" rel="stylesheet">
```

## resources
- https://fonts.google.com/selection/embed
- https://fonts.googleapis.com/css2?family=Inter:wght@900&display=swap
npm package: @jswork/apply7-frontend-sdk
Description: Sdk for apply7 frontend.
Latest version: 1.0.52

# apply7-frontend-sdk
> Sdk for apply7 frontend.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install @jswork/apply7-frontend-sdk
```

## usage
```js
import a7sdk from '@jswork/apply7-frontend-sdk';

// usage goes here.
```

## license
Code released under [the MIT license](https://github.com/afeiship/apply7-frontend-sdk/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/apply7-frontend-sdk
[version-url]: https://npmjs.org/package/@jswork/apply7-frontend-sdk

[license-image]: https://img.shields.io/npm/l/@jswork/apply7-frontend-sdk
[license-url]: https://github.com/afeiship/apply7-frontend-sdk/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/apply7-frontend-sdk
[size-url]: https://github.com/afeiship/apply7-frontend-sdk/blob/master/dist/index.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/apply7-frontend-sdk
[download-url]: https://www.npmjs.com/package/@jswork/apply7-frontend-sdk
npm package: @jswork/archiver-webpack-plugin
Description: Archiver webpack plugin.
Author: afei
Latest version: 1.0.0

# archiver-webpack-plugin
> Archiver webpack plugin.

## installation
```shell
npm install -D @jswork/archiver-webpack-plugin
```

## usage
```js
import ArchiverWebpackPlugin from '@jswork/archiver-webpack-plugin';

// plugins:
plugiins:[
  new ArchiverWebapckPlugin({
    transform: function (inValue) {
      return 'app/' + inValue;
    },
    output: function (inPath, inExt) {
      return inPath.replace('dist', 'dist/app') + inExt;
    }
  })
]
```

## options
| Name          | Type     | Default                            | Description                          |
| :------------ | :------- | :--------------------------------- | :----------------------------------- |
| format        | String   | tar                                | archiver format options              |
| formatOptions | Object   | { gzip: true, zlib: { level: 9 } } | archiver options                     |
| transform     | Function | -                                  | `replace` to transform package path. |
| output        | Function | -                                  | `replace` to output package path.    |
| ext           | String   | .tar.gz                            | Package extention                    |


## resources
- https://github.com/Seldszar/archiver-webpack-plugin
- https://archiverjs.com/docs/#quick-start
npm package: @jswork/argv
Description: Tiny argv impl.
Latest version: 1.0.3

# argv
> Tiny argv impl.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install @jswork/argv
```

## usage
```js
import argv from '@jswork/argv';

// node index.js --name=afei --age=18 file1 file2
const { args, opts } = argv();
console.log(args); // [ 'file1', 'file2' ]
console.log(opts); // { name: 'afei', age: '18' }
```

## license
Code released under [the MIT license](https://github.com/afeiship/argv/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/argv
[version-url]: https://npmjs.org/package/@jswork/argv

[license-image]: https://img.shields.io/npm/l/@jswork/argv
[license-url]: https://github.com/afeiship/argv/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/argv
[size-url]: https://github.com/afeiship/argv/blob/master/dist/argv.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/argv
[download-url]: https://www.npmjs.com/package/@jswork/argv
npm package: @jswork/audio-recorder
Description: An audio recorder.
Latest version: 1.0.3

# audio-recorder
> An audio recorder.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install @jswork/audio-recorder
```

## usage
```js
import AudioRecorder from '@jswork/audio-recorder';
```

## types
```ts
/// <reference types="@jswork/audio-recorder/global.d.ts" />
```

## license
Code released under [the MIT license](https://github.com/afeiship/audio-recorder/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/audio-recorder
[version-url]: https://npmjs.org/package/@jswork/audio-recorder

[license-image]: https://img.shields.io/npm/l/@jswork/audio-recorder
[license-url]: https://github.com/afeiship/audio-recorder/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/audio-recorder
[size-url]: https://github.com/afeiship/audio-recorder/blob/master/dist/index.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/audio-recorder
[download-url]: https://www.npmjs.com/package/@jswork/audio-recorder
npm package: @jswork/audio-utils
Description: Audio utils.
Latest version: 1.0.12

# audio-utils
> Audio utils.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
yarn add @jswork/audio-utils
```

## usage
```js
import { checkPermission, watchAmplitude } from '@jswork/audio-utils';

// checkPermission
checkPermission().then((res) => {
  console.log(res);
});

// watchAmplitude when recorder
useEffect(() => {
  if (!isPlaying) return;
  const res = watchAmplitude({
    type: 'recorder',
    context: recorder,
    callback: (v) => {
      console.log('volumn: ', v);
    },
  });
  return res.destroy;
}, [isPlaying]);

// watchAmplitude when howler
useEffect(() => {
  if (!isPlaying) return;
  const res = watchAmplitude({
    type: 'howler',
    context: Howler,
    callback: (v) => {
      console.log('volumn: ', v);
    },
  });
  return res.destroy;
}, [isPlaying]);

// watchAmplitude when audio
useEffect(() => {
  if (!isPlaying) return;
  const res = watchAmplitude({
    type: 'audio',
    context: document.querySelector('#audio1'),
    callback: (v) => {
      console.log('volumn: ', v);
    },
  });
  return res.destroy;
}, [isPlaying]);

```

## types
```ts
/// <reference types="@jswork/audio-utils/global.d.ts" />
```

## license
Code released under [the MIT license](https://github.com/afeiship/audio-utils/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/audio-utils
[version-url]: https://npmjs.org/package/@jswork/audio-utils

[license-image]: https://img.shields.io/npm/l/@jswork/audio-utils
[license-url]: https://github.com/afeiship/audio-utils/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/audio-utils
[size-url]: https://github.com/afeiship/audio-utils/blob/master/dist/index.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/audio-utils
[download-url]: https://www.npmjs.com/package/@jswork/audio-utils
npm package: @jswork/bad-gateway-pages
Description: Custom Bad Gateway Pages.
Author: afei
Latest version: 1.0.1

# bad-gateway-pages
> Custom Bad Gateway Pages.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]


## installation
```shell
npm install -S @jswork/bad-gateway-pages
```

## usage
```conf
#site-wide error pages
error_page 500 502 503 504 node_modules/@jswork/bad-gateway-pages/dist/502.html;
```

## resources
- https://stackoverflow.com/questions/7796237/custom-bad-gateway-page-with-nginx

## license
Code released under [the MIT license](https://github.com/afeiship/bad-gateway-pages/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/bad-gateway-pages
[version-url]: https://npmjs.org/package/@jswork/bad-gateway-pages

[license-image]: https://img.shields.io/npm/l/@jswork/bad-gateway-pages
[license-url]: https://github.com/afeiship/bad-gateway-pages/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/bad-gateway-pages
[size-url]: https://github.com/afeiship/bad-gateway-pages/blob/master/dist/bad-gateway-pages.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/bad-gateway-pages
[download-url]: https://www.npmjs.com/package/@jswork/bad-gateway-pages
npm package: @jswork/bark-jssdk
Description: Bark sdk for js.
Latest version: 1.0.6

# bark-jssdk
> Bark sdk for js.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install @jswork/bark-jssdk
```

## usage
```js
import BarkJssdk from '@jswork/bark-jssdk';

// use instance
const sdk = new BarkJssdk({ sdkKey: 'YOUR_SDK_KEY'});
// notify
sdk.notify({ title: 'Tips', body: 'New message comming.' });

// OR use BarkJssdk.notify directly
BarkJssdk.notify({
  sdkKey: 'YOUR_SDK_KEY',
  title: 'Tips', 
  body: 'New message comming.'
});
```

## resources
- https://github.com/Finb/Bark
- https://js.work/works/ea5a6f14d03cc
- https://day.app/2021/06/barkfaq/

## license
Code released under [the MIT license](https://github.com/afeiship/bark-jssdk/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/bark-jssdk
[version-url]: https://npmjs.org/package/@jswork/bark-jssdk

[license-image]: https://img.shields.io/npm/l/@jswork/bark-jssdk
[license-url]: https://github.com/afeiship/bark-jssdk/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/bark-jssdk
[size-url]: https://github.com/afeiship/bark-jssdk/blob/master/dist/bark-jssdk.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/bark-jssdk
[download-url]: https://www.npmjs.com/package/@jswork/bark-jssdk
npm package: @jswork/bio-fa2json
Description: Fasta file to json.
Latest version: 1.1.1

# bio-fa2json
> Fasta file to json.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install @jswork/bio-fa2json
```

## usage
```js
import bioFa2json from '@jswork/bio-fa2json';

// usage goes here.
```

## license
Code released under [the MIT license](https://github.com/afeiship/bio-fa2json/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/bio-fa2json
[version-url]: https://npmjs.org/package/@jswork/bio-fa2json

[license-image]: https://img.shields.io/npm/l/@jswork/bio-fa2json
[license-url]: https://github.com/afeiship/bio-fa2json/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/bio-fa2json
[size-url]: https://github.com/afeiship/bio-fa2json/blob/master/dist/bio-fa2json.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/bio-fa2json
[download-url]: https://www.npmjs.com/package/@jswork/bio-fa2json
npm package: @jswork/bio-seq-chunks
Description: Sequence chunks.
Latest version: 1.0.3

# bio-seq-chunks
> Sequence chunks.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install @jswork/bio-seq-chunks
```

## usage
```js
import bioSeqChunks from '@jswork/bio-seq-chunks';

// usage goes here.
```

## license
Code released under [the MIT license](https://github.com/afeiship/bio-seq-chunks/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/bio-seq-chunks
[version-url]: https://npmjs.org/package/@jswork/bio-seq-chunks

[license-image]: https://img.shields.io/npm/l/@jswork/bio-seq-chunks
[license-url]: https://github.com/afeiship/bio-seq-chunks/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/bio-seq-chunks
[size-url]: https://github.com/afeiship/bio-seq-chunks/blob/master/dist/bio-seq-chunks.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/bio-seq-chunks
[download-url]: https://www.npmjs.com/package/@jswork/bio-seq-chunks
npm package: @jswork/bitwise-permission-manager
Description: Bitwise permission manager.
Latest version: 1.0.1

# bitwise-permission-manager
> Bitwise permission manager.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install @jswork/bitwise-permission-manager
```

## usage
```js
import bpm from '@jswork/bitwise-permission-manager';

let r = 0b100;
let w = 0b010;
let x = 0b001;
let target = 0b111;

// add
let p = bpm.add(r, w, x);                // 0b111
// remove
let p = bpm.remove(target, r, w, x);            // 0b000
// toggle
let p = bpm.toggle(target, r, w, x);    // 0b000
// has
let p = bpm.has(target, r, w, x);       // true

```

## license
Code released under [the MIT license](https://github.com/afeiship/bitwise-permission-manager/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/bitwise-permission-manager
[version-url]: https://npmjs.org/package/@jswork/bitwise-permission-manager

[license-image]: https://img.shields.io/npm/l/@jswork/bitwise-permission-manager
[license-url]: https://github.com/afeiship/bitwise-permission-manager/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/bitwise-permission-manager
[size-url]: https://github.com/afeiship/bitwise-permission-manager/blob/master/dist/bitwise-permission-manager.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/bitwise-permission-manager
[download-url]: https://www.npmjs.com/package/@jswork/bitwise-permission-manager
npm package: @jswork/bomb-decorator
Description: Bomb decorator.
Author: feizheng
Latest version: 1.0.0

# bomb-decorator
> Bomb decorator.

## installation
```bash
npm install @jswork/bomb-decorator
```

## usage
```js
import bomb from '@jswork/bomb-decorator';

class MyHttp(){
  request(){
    // your codes...
  }

  @bomb
  'post,get,put,delete'(inName){
    return (inUrl,inData) => {
      this.request(inName, inUrl, inData);
    };
  }
}

// const http = new MyHttp();
// Now, http has these methods:

// http.post()
// http.get()
// http.put()
// http.delete()
// http.request()
```
npm package: @jswork/bootstrap4-custom
Description: A lightweight, customizable Bootstrap 4 partial import package.
Latest version: 1.0.1

# bootstrap-custom
> A lightweight, customizable Bootstrap 4 partial import package.

## description
- full: 全量的 bootstrap
- lite: 与 tailwindcss 兼容的 bootstrap
- slim: 精简的 bootstrap - 没有 buttons 等 components

## resources
- https://v3.tailwindcss.com/
- http://localhost:3000/docs/
- https://getbootstrap.com/docs/4.6/components/modal/
npm package: @jswork/calendar-vacation
Description: Get calendar vacation.
Latest version: 1.0.1

# calendar-vacation
> Get calendar vacation.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install @jswork/calendar-vacation
```

## usage
```js
import calendarVacation from '@jswork/calendar-vacation';

const { exchange, vacation } = calendarVacation();
// ['2022-04-02', '2022-04-24', '2022-10-08', '2022-10-09']
// ['2022-04-03', '2022-04-04', '2022-04-05', '2022-05-02', '2022-05-03',....]
```

## license
Code released under [the MIT license](https://github.com/afeiship/calendar-vacation/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/calendar-vacation
[version-url]: https://npmjs.org/package/@jswork/calendar-vacation

[license-image]: https://img.shields.io/npm/l/@jswork/calendar-vacation
[license-url]: https://github.com/afeiship/calendar-vacation/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/calendar-vacation
[size-url]: https://github.com/afeiship/calendar-vacation/blob/master/dist/calendar-vacation.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/calendar-vacation
[download-url]: https://www.npmjs.com/package/@jswork/calendar-vacation
npm package: @jswork/capwords
Description: Capwords in js like python stirng.capwords.
Latest version: 1.0.1

# capwords
> Capwords in js like python stirng.capwords.

[![version][version-image]][version-url]
[![license][license-image]][license-url]
[![size][size-image]][size-url]
[![download][download-image]][download-url]

## installation
```shell
npm install @jswork/capwords
```

## usage
```js
import capwords from '@jswork/capwords';

// usage goes here.
```

## license
Code released under [the MIT license](https://github.com/afeiship/capwords/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@jswork/capwords
[version-url]: https://npmjs.org/package/@jswork/capwords

[license-image]: https://img.shields.io/npm/l/@jswork/capwords
[license-url]: https://github.com/afeiship/capwords/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/capwords
[size-url]: https://github.com/afeiship/capwords/blob/master/dist/capwords.min.js

[download-image]: https://img.shields.io/npm/dm/@jswork/capwords
[download-url]: https://www.npmjs.com/package/@jswork/capwords