open-index/open-npm huggingface dataset:
npm package: @feizheng/next-is-plain-object
Description: A isPlainObject implement.
Author: afei
Latest version: 1.0.4

# next-is-plain-object
> A isPlainObject implement.

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

## installation
```bash
npm install -S @feizheng/next-is-plain-object
```

## usage
```js
import '@feizheng/next-is-plain-object';

const v1 = { name: 'fei' };
nx.isPlainObject(v1);   //true
```

## license
Code released under [the MIT license](https://github.com/afeiship/next-is-plain-object/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@feizheng/next-is-plain-object
[version-url]: https://npmjs.org/package/@feizheng/next-is-plain-object

[license-image]: https://img.shields.io/npm/l/@feizheng/next-is-plain-object
[license-url]: https://github.com/afeiship/next-is-plain-object/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@feizheng/next-is-plain-object
[size-url]: https://github.com/afeiship/next-is-plain-object/blob/master/dist/next-is-plain-object.min.js

[download-image]: https://img.shields.io/npm/dm/@feizheng/next-is-plain-object
[download-url]: https://www.npmjs.com/package/@feizheng/next-is-plain-object
npm package: @feizheng/next-is-promise
Description: Test whether an object looks like a promises-a+ promise.
Author: afei
Latest version: 1.0.1

# next-is-promise
> Test whether an object looks like a promises-a+ promise.

## installation
```bash
npm install -S @feizheng/next-is-promise
```

## usage
```js
import '@feizheng/next-is-promise';

//DOCS here!
```

## resources
- https://github.com/then/is-promise
npm package: @feizheng/next-is-valid-proxy
Description: Check if proxy is valid.
Author: afei
Latest version: 1.1.1

# next-is-valid-proxy
> Check if proxy is valid.

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

## installation
```bash
npm install -S @feizheng/next-is-valid-proxy
```

## usage
```js
import '@feizheng/next-is-valid-proxy';

// check the ip
nx.isValidProxy('http://18.236.173.172:8888').then(res=>{
  console.log(res); // true/false
});
```

## license
Code released under [the MIT license](https://github.com/afeiship/next-is-valid-proxy/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@feizheng/next-is-valid-proxy
[version-url]: https://npmjs.org/package/@feizheng/next-is-valid-proxy

[license-image]: https://img.shields.io/npm/l/@feizheng/next-is-valid-proxy
[license-url]: https://github.com/afeiship/next-is-valid-proxy/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@feizheng/next-is-valid-proxy
[download-image]: https://img.shields.io/npm/dw/@feizheng/next-is-valid-proxy
npm package: @feizheng/next-is-wk-webview
Description: Detect if is wkwebview.
Author: afei
Latest version: 1.0.0

# next-is-wk-webview
> Detect if is wkwebview.

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

## installation
```bash
npm install -S @feizheng/next-is-wk-webview
```

## usage
```js
import '@feizheng/next-is-wk-webview';

nx.isWkWebview();
```

## resources
- https://stackoverflow.com/questions/28795476/detect-if-page-is-loaded-inside-wkwebview-in-javascript

## license
Code released under [the MIT license](https://github.com/afeiship/next-is-wk-webview/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@feizheng/next-is-wk-webview
[version-url]: https://npmjs.org/package/@feizheng/next-is-wk-webview

[license-image]: https://img.shields.io/npm/l/@feizheng/next-is-wk-webview
[license-url]: https://github.com/afeiship/next-is-wk-webview/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@feizheng/next-is-wk-webview
[size-url]: https://github.com/afeiship/next-is-wk-webview/blob/master/dist/next-is-wk-webview.min.js

[download-image]: https://img.shields.io/npm/dm/@feizheng/next-is-wk-webview
[download-url]: https://www.npmjs.com/package/@feizheng/next-is-wk-webview
npm package: @feizheng/next-jjencode
Description: jjencode for next.
Author: afei
Latest version: 1.0.0

# next-jjencode
> jjencode for next.

## installation
```bash
npm install -S @feizheng/next-jjencode
```

## usage
```js
import '@feizheng/next-jjencode';

const res = nx.jjencode('$', `console.log("Hello, JavaScript" )`, true);

// result
'\"+'+",$=~[];$={___:++$,$$$$:(![]+"")[$],__$:++$,$_$_:(![]+"")[$],_$_:++$,$_$$:({}+"")[$],$$_$:($[$]+"")[$],_$$:++$,$$$_:(!""+"")[$],$__:++$,$_$:++$,$$__:({}+"")[$],$$_:++$,$$$:++$,$___:++....
```

## resources
- http://utf-8.jp/public/jjencode.html
npm package: @feizheng/next-json
Description: Better json parse/stringify for JSON.
Author: afei
Latest version: 1.0.2

# next-json
> Better json parse/stringify for JSON.

## installation
```bash
npm install -S @feizheng/next-json
```

## usage
```js
import '@feizheng/next-json';

//DOCS here!
```
npm package: @feizheng/next-json2base64
Description: Json and base64 encode/decode.
Author: afei
Latest version: 1.1.3

# next-json2base64
> Json and base64 encode/decode.

## installation
```bash
npm install -S @feizheng/next-json2base64
```

## apis
| api    | params   | description                          |
| ------ | -------- | ------------------------------------ |
| decode | (string) | Transform base64 string to js object |
| encode | (object) | Transform object to base64 string    |

## usage
```js
import NxJson2base64 from '@feizheng/next-json2base64';

// code goes here:
NxJson2base64.decode('eyJuYW1lIjoiYWZlaSIsImFnZSI6MTA4fQ==');
// { name: 'afei', age: 108 }
```
npm package: @feizheng/next-kebab-case
Description: Kebab case for next.
Author: afei
Latest version: 1.0.1

# next-kebab-case
> Kebab case for next.

## installation
```bash
npm install -S @feizheng/next-kebab-case
```

## usage
```js
import '@feizheng/next-kebab-case';

const res = nx.kebabCase('raDiuScHan_ge d');

// ra-diu-sc-han-ge-d
```

## resources
- https://gist.github.com/tdukart/b87afb278c41245741ae7a0c355a0a0b
- https://gist.github.com/thevangelist/8ff91bac947018c9f3bfaad6487fa149
npm package: @feizheng/next-key-map
Description: Recursion replace object key use map.
Author: afei
Latest version: 1.0.0

# next-key-map
> Recursion replace object key use map.

## installation
```bash
npm install -S @feizheng/next-key-map
```

## apis
| API    | TYPE                    | DESCRIPTION          |
|--------|-------------------------|----------------------|
| keyMap | { sourceKey: targetKey} | Map source to target |

## usage
```js
import '@feizheng/next-key-map';

const data = {
  key: '1',
  name: 'Zhong Hua Men',
  desc: 'lsjdflsjdflsdjflsjdf'
};

const rs = nx.keyMap( data,{
  key:'id',
  name:'value',
  desc:'description'
});

// results:
const data = {
  id: '1',
  value: 'Zhong Hua Men',
  desc: 'lsjdflsjdflsdjflsjdf'
};
```
npm package: @feizheng/next-list2map
Description: Transform list to map.
Author: afei
Latest version: 1.0.2

# next-list2map
> Transform list to map.

## installation
```bash
npm install -S @feizheng/next-list2map
```

## usage
```js
import '@feizheng/next-list2map';

const items = [
  { id: 1, name: 'xiaoming' },
  { id: 2, name: 'lihua' },
  { id: 3, name: 'hanmeimei' }
];

const result = nx.list2map(items, {
  key: 'id',
  value: function(i, val) {
    return val;
  }
});

// result:
{
  '1': { id: 1, name: 'xiaoming' },
  '2': { id: 2, name: 'lihua' },
  '3': { id: 3, name: 'hanmeimei' }
}
```
npm package: @feizheng/next-local-expires
Description: LocalStorage which can be set expires.
Author: afei
Latest version: 1.1.1

# next-local-expires
> LocalStorage which can be set expires.

## installation
```bash
npm install -S @feizheng/next-local-expires
```

## apis
| api | params                    | description                                         |
| --- | ------------------------- | --------------------------------------------------- |
| set | inKey, inValue, inExpires | set value with expires (ms)                         |
| get | -                         | get the right value if is in time, or will get null |

## usage
```js
import NxLocalExpires from '@feizheng/next-local-expires';

// code goes here:
const store = new NxLocalExpires();
store.set('login',{ token: 'YWRmajEyMzMx' }, 5*24*60*60*1000)
store.get('login');
// { token: 'YWRmajEyMzMx' }
```
npm package: @feizheng/next-local-forage
Description: LocalForage for next.
Author: afei
Latest version: 1.0.1

# next-local-forage
> LocalForage for next.

## installation
```bash
npm install -S @feizheng/next-local-forage
```

## apis
| api    | params | description             |
| ------ | ------ | ----------------------- |
| get    | -      | Get item data.          |
| gets   | -      | Get items.              |
| set    | -      | Set value.              |
| sets   | -      | Set values.             |
| del    | -      | Delete a value by key.  |
| dels   | -      | Deleta multiple values. |
| clear  | -      | Clear the store.        |
| config | -      | Config the store.       |

## usage
```js
import NxLocalForage from '@feizheng/next-local-forage';
```

## resources
- https://localforage.docschina.org/
npm package: @feizheng/next-local-storage
Description: LocalStorage based on next.
Author: afei
Latest version: 1.1.0

# next-local-storage
> LocalStorage based on next.

## installation
```bash
npm install -S @feizheng/next-local-storage
```

## apis
| api | params | description   |
|-----|--------|---------------|
| get | -      | desc balabala |

## usage
```js
import NxLocalStorage from '@feizheng/next-local-storage';

// code goes here:
```
npm package: @feizheng/next-log
Description: Logger for next.
Author: afei
Latest version: 1.0.1

# next-log
> Logger for next.

## installation
```bash
npm install -S @feizheng/next-log
```

## usage
```js
import '@feizheng/next-log';

nx.log('hello');
// [23:22:20] hello
```

## resources
- https://github.com/gulpjs/fancy-log
npm package: @feizheng/next-loop-execute
Description: Loop execute for next.
Author: afei
Latest version: 1.0.4

# next-loop-execute
> Loop execute for next.

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

## installation
```bash
npm install -S @feizheng/next-loop-execute
```

## usage
```js
import '@feizheng/next-loop-execute';

const fetchApi = function ({ count }) {
  return fetch('https://api.github.com/users/afeiship').then(res=>res.json());
}

// loop 3 times:
nx.loopExecute({
  callback: fetchApi,
  done: function (res) {
    console.log('res.data:', res.data);
    return res.count === 3;
  }
}).then(res=>{
  console.log('loop DONE!', res);
});
```

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

[version-image]: https://img.shields.io/npm/v/@feizheng/next-loop-execute
[version-url]: https://npmjs.org/package/@feizheng/next-loop-execute

[license-image]: https://img.shields.io/npm/l/@feizheng/next-loop-execute
[license-url]: https://github.com/afeiship/next-loop-execute/blob/master/LICENSE.txt

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

[download-image]: https://img.shields.io/npm/dm/@feizheng/next-loop-execute
[download-url]: https://www.npmjs.com/package/@feizheng/next-loop-execute
npm package: @feizheng/next-match-words
Description: Get matched english words.
Author: afei
Latest version: 1.0.0

# next-match-words
> Get matched english words.

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

## installation
```bash
npm install -S @feizheng/next-match-words
```

## usage
```js
import '@feizheng/next-match-words';

const words = "How're you, i'm fine. And you?";
const res = nx.matchWords(words);

// ["How're", 'you', "i'm", 'fine', 'And', 'you']
```

## resources
- https://github.com/regexhq/word-regex

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

[version-image]: https://img.shields.io/npm/v/@feizheng/next-match-words
[version-url]: https://npmjs.org/package/@feizheng/next-match-words

[license-image]: https://img.shields.io/npm/l/@feizheng/next-match-words
[license-url]: https://github.com/afeiship/next-match-words/blob/master/LICENSE.txt

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

[download-image]: https://img.shields.io/npm/dm/@feizheng/next-match-words
[download-url]: https://www.npmjs.com/package/@feizheng/next-match-words
npm package: @feizheng/next-md5
Description: Md5 for next based on blueimp-md5.
Author: afei
Latest version: 1.0.0

# next-md5
> Md5 for next based on blueimp-md5.

## installation
```bash
npm install -S @feizheng/next-md5
```

## usage
```js
import '@feizheng/next-md5';

nx.md5('abc');
// 900150983cd24fb0d6963f7d28e17f72
```

## resources
- https://github.com/blueimp/JavaScript-MD5
npm package: @feizheng/next-memoize
Description: Memoize for next.
Author: afei
Latest version: 1.0.3

# next-memoize
> Memoize for next.

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

## installation
```bash
npm install -S @feizheng/next-memoize
```

## usage
```js
import '@feizheng/next-memoize';

const fibonacci = (n) => {
  return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2);
};
const memoized = nx.memoize(
  fibonacci
);

// First time: calc
const rs1 = memoized(number);
// Next time: From Cache
const rs2 = memoized(number);
```

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

[version-image]: https://img.shields.io/npm/v/@feizheng/next-memoize
[version-url]: https://npmjs.org/package/@feizheng/next-memoize

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

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

[download-image]: https://img.shields.io/npm/dm/@feizheng/next-memoize
[download-url]: https://www.npmjs.com/package/@feizheng/next-memoize
npm package: @feizheng/next-model-douban-book
Description: Douban book model for next.
Author: afei
Latest version: 1.0.0

# next-model-douban-book
> Douban book model for next.

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

## installation
```bash
npm install -S @feizheng/next-model-douban-book
```

## usage
```js
import NxModelDoubanBook from '@feizheng/next-model-douban-book';

const $ = cheerio.load(res, { decodeEntities: false });
const model = new NxModelDoubanBook({ $ });
const res = model.gets();

console.log(res.title);
// 海伯利安
```

## license
Code released under [the MIT license](https://github.com/afeiship/next-model-douban-book/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@feizheng/next-model-douban-book
[version-url]: https://npmjs.org/package/@feizheng/next-model-douban-book

[license-image]: https://img.shields.io/npm/l/@feizheng/next-model-douban-book
[license-url]: https://github.com/afeiship/next-model-douban-book/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@feizheng/next-model-douban-book
[size-url]: https://github.com/afeiship/next-model-douban-book/blob/master/dist/next-model-douban-book.min.js

[download-image]: https://img.shields.io/npm/dm/@feizheng/next-model-douban-book
[download-url]: https://www.npmjs.com/package/@feizheng/next-model-douban-book
npm package: @feizheng/next-model-douban-subject
Description: Douban subject model for next.
Author: afei
Latest version: 1.0.0

# next-model-douban-subject
> Douban subject model for next.

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

## installation
```bash
npm install -S @feizheng/next-model-douban-subject
```

## apis
| api  | params | description    |
| ---- | ------ | -------------- |
| gets | -      | Get the model. |

## usage
```js
import NxModelDoubanSubject from '@feizheng/next-model-douban-subject';

const model = new NxModelDoubanSubject({ $: jquery });
model.gets();
```

## license
Code released under [the MIT license](https://github.com/afeiship/next-model-douban-subject/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@feizheng/next-model-douban-subject
[version-url]: https://npmjs.org/package/@feizheng/next-model-douban-subject

[license-image]: https://img.shields.io/npm/l/@feizheng/next-model-douban-subject
[license-url]: https://github.com/afeiship/next-model-douban-subject/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@feizheng/next-model-douban-subject
[size-url]: https://github.com/afeiship/next-model-douban-subject/blob/master/dist/next-model-douban-subject.min.js

[download-image]: https://img.shields.io/npm/dm/@feizheng/next-model-douban-subject
[download-url]: https://www.npmjs.com/package/@feizheng/next-model-douban-subject
npm package: @feizheng/next-multiple-exec
Description: Multiple exec for regexp.
Author: afei
Latest version: 1.0.0

# next-multiple-exec
> Multiple exec for regexp.

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

## installation
```bash
npm install -S @feizheng/next-multiple-exec
```

## usage
```js
import '@feizheng/next-multiple-exec';

const re = /\${{(.*?)}}/g;
const str = '${{ GITHUB_API_TOKEN }} - ${{ afei }}';

nx.multipleExec(re, str);     // [ ' GITHUB_API_TOKEN ', ' afei ' ]
```

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

[version-image]: https://img.shields.io/npm/v/@feizheng/next-multiple-exec
[version-url]: https://npmjs.org/package/@feizheng/next-multiple-exec

[license-image]: https://img.shields.io/npm/l/@feizheng/next-multiple-exec
[license-url]: https://github.com/afeiship/next-multiple-exec/blob/master/LICENSE.txt

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

[download-image]: https://img.shields.io/npm/dm/@feizheng/next-multiple-exec
[download-url]: https://www.npmjs.com/package/@feizheng/next-multiple-exec
npm package: @feizheng/next-nice-comments
Description: Build nice comments.
Author: afei
Latest version: 1.1.1

# next-nice-comments
> Build nice comments.

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

## installation
```bash
npm install -S @feizheng/next-nice-comments
```

## usage
```js
var comments = [
  'name: next-nice-comments',
  'description: Just a lite',
  'licence: MIT'
];

// list, type:
nx.niceComments(comments,'js');
nx.niceComments(comments,'css');
nx.niceComments(comments,'html');
nx.niceComments(comments,'raw');

/*!
 * name: next-nice-comments
 * description: Build nice comments.
 * licence: MIT
 */

<!--!
  * name: next-nice-comments
  * description: Build nice comments.
  * licence: MIT
--> 
```

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

[version-image]: https://img.shields.io/npm/v/@feizheng/next-nice-comments
[version-url]: https://npmjs.org/package/@feizheng/next-nice-comments

[license-image]: https://img.shields.io/npm/l/@feizheng/next-nice-comments
[license-url]: https://github.com/afeiship/next-nice-comments/blob/master/LICENSE.txt

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

[download-image]: https://img.shields.io/npm/dm/@feizheng/next-nice-comments
[download-url]: https://www.npmjs.com/package/@feizheng/next-nice-comments
npm package: @feizheng/next-nl2br
Description: Replace 
 with <br /> in JavaScript.
Author: afei
Latest version: 1.0.0

# next-nl2br
> Replace \n with <br /> in JavaScript.

## installation
```bash
npm install -S @feizheng/next-nl2br
```

## usage
```js
import '@feizheng/next-nl2br';
//   example 1: nl2br('Kevin\nvan\nZonneveld')
//   returns 1: 'Kevin<br />\nvan<br />\nZonneveld'
//   example 2: nl2br("\nOne\nTwo\n\nThree\n", false)
//   returns 2: '<br>\nOne<br>\nTwo<br>\n<br>\nThree<br>\n'
//   example 3: nl2br("\nOne\nTwo\n\nThree\n", true)
//   returns 3: '<br />\nOne<br />\nTwo<br />\n<br />\nThree<br />\n'
//   example 4: nl2br(null)
//   returns 4: ''
```

## other solution
```js
while (message.indexOf("\\n") !== -1) {
   message = message.replace("\\n", "<br />");
}
```

## resources
- http://locutus.io/php/nl2br/
- https://stackoverflow.com/questions/6331895/how-to-replace-n-with-br-in-javascript
npm package: @feizheng/next-node-base64
Description: Base64 for nodejs.
Author: afei
Latest version: 1.0.1

# next-node-base64
> Base64 for nodejs.

## installation
```bash
npm install -S @feizheng/next-node-base64
```

## apis
| api    | params | description   |
| ------ | ------ | ------------- |
| encode | -      | Encode string |
| decode | -      | Decode string |

## usage
```js
import NxNodeBase64 from '@feizheng/next-node-base64';
const encoded = NxNodeBase64.encode('afei');
const decoded = NxNodeBase64.decode(encoded);

console.log(encoded, decoded);
// YWZlaQ== 
// afei
```

## resources
- https://gist.github.com/inadarei/4465153
npm package: @feizheng/next-node-cookie
Description: Node cookie for next.
Author: afei
Latest version: 1.0.1

# next-node-cookie
> Node cookie for next.

## installation
```bash
npm install -S @feizheng/next-node-cookie
```

## apis
| api | params | description   |
|-----|--------|---------------|
| get | -      | desc balabala |

## usage
```js
import NxNodeCookie from '@feizheng/next-node-cookie';

// code goes here:
```
npm package: @feizheng/next-node-exec
Description: Node exec for next.
Author: afei
Latest version: 1.0.1

# next-node-exec
> Node exec for next.

## installation
```bash
npm install -S @feizheng/next-node-exec
```

## usage
```js
import '@feizheng/next-node-exec';

//DOCS here!
```
npm package: @feizheng/next-node-fetch
Description: A wrapper for `node-fetch`.
Author: afei
Latest version: 1.2.6

# next-node-fetch
> A wrapper for `node-fetch`.

## installation
```bash
npm install -S @feizheng/next-node-fetch
```

## apis
| api     | params                               | description    |
| ------- | ------------------------------------ | -------------- |
| request | (inUrl, inMethod, inData, inOptions) | The entry api  |
| get     | (inUrl, inData, inOptions)           | The get api    |
| post    | (inUrl, inData, inOptions)           | The post api   |
| delete  | (inUrl, inData, inOptions)           | The delete api |
| put     | (inUrl, inData, inOptions)           | The put api    |
| head    | (inUrl, inData, inOptions)           | The head api   |
| patch   | (inUrl, inData, inOptions)           | The patch api  |

## options
| option       | type        | default               | description                       |
| ------------ | ----------- | --------------------- | --------------------------------- |
| fetch        | Function    | require('node-fetch') | Defult fetch implement            |
| dataType     | String      | json                  | json/raw/urlencoded/multipart     |
| delay        | Number      | 0                     | The every request delay timer(ms) |
| responseType | String/Null | json                  | json/text/null                    |

## usage
```js
import NxNodeFetch from '@feizheng/next-node-fetch';

NxNodeFetch.get('https://api.github.com/users/afeiship', null, { responseType:'json' }).then(res=>{
  console.log(res);
});

// {
//   login: 'afeiship',
//   id: 3038631,
//   node_id: 'MDQ6VXNlcjMwMzg2MzE=',
//   avatar_url: 'https://avatars2.githubusercontent.com/u/3038631?v=4',
    // .....
// }
```

## resources
- https://hackersandslackers.com/making-api-requests-with-nodejs/
- https://github.com/bitinn/node-fetch
npm package: @feizheng/next-npm-installed
Description: Check if npm package installed.
Author: afei
Latest version: 1.0.0

# next-npm-installed
> Check if npm package installed.

## installation
```bash
npm install -S @feizheng/next-npm-installed
```

## usage
```js
import '@feizheng/next-npm-installed';

//DOCS here!
```
npm package: @feizheng/next-npm-registries
Description: Npm reigistries for aric.
Author: afei
Latest version: 1.0.1

# next-npm-registries
> Npm reigistries for aric.

## installation
```bash
npm install -S @feizheng/next-npm-registries
```

## usage
```js
import '@feizheng/next-npm-registries';


nx.npmRegisties('alo7');
// nx.npmRegisties('npm');
// nx.npmRegisties('github');


// resutls
{
  publish: 'https://repos.saybot.net/repository/alo7-private-npm/',
  install: 'https://repos.saybot.net/repository/alo7npm/'
}
```
npm package: @feizheng/next-npm-version
Description: Get npm package version.
Author: afei
Latest version: 1.1.0

# next-npm-version
> Get npm package version.

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

## installation
```bash
npm install -S @feizheng/next-npm-version
```

## usage
```js
import '@feizheng/next-npm-version';

nx.npmVersion('@feizheng/next-js-core2');
// '2.6.0'

nx.npmVersion('@feizheng/next-js-core2xxx');
// null
```

## resources
- https://stackoverflow.com/questions/11949419/npm-how-to-show-the-latest-version-of-a-package

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@feizheng/next-npm-version
[download-url]: https://www.npmjs.com/package/@feizheng/next-npm-version
npm package: @feizheng/next-object-operator
Description: Object set/get/sets/gets and other operator.
Author: afei
Latest version: 1.0.0

# next-object-operator
> Object set/get/sets/gets and other operator.

## installation
```bash
npm install -S @feizheng/next-object-operator
```

## apis
| api  | params       | description           |
| ---- | ------------ | --------------------- |
| get  | (path)       | Get value by path.    |
| set  | (path,value) | Set value by parh.    |
| gets | -            | Get the whole object. |
| sets | (object)     | Sets multiple values. |

## usage
```js
import NxObjectOperator from '@feizheng/next-object-operator';

const data = {};
const operator = new NxObjectOperator(data);

// operators
operator.set
operator.get
operator.sets
operator.gets
```
npm package: @feizheng/next-object-replace
Description: Replace for object key/value.
Author: afei
Latest version: 1.1.1

# next-object-replace
> Replace for object key/value.

## installation
```bash
npm install -S @feizheng/next-object-replace
```

## usage
```js
import '@feizheng/next-object-replace';

const obj = {
  '÷': '/',
  '×': '*'
};

const res = 'A+b×0.8+(C÷D)';
nx.objectReplace(str, obj);

// A+b*0.8+(C/D)
```
npm package: @feizheng/next-offline-sw
Description: Offline plugin for service worker runtime helper.
Author: afei
Latest version: 1.0.2

# next-offline-sw
> Offline plugin for service worker runtime helper.

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

## install
```bash
npm install -S @feizheng/next-offline-sw
```

## apis
| api         | params  | description                                                           |
| ----------- | ------- | --------------------------------------------------------------------- |
| disabled    |         | You can implement it in your project(default: window.__SW_DISABLED__) |
| install     | options | Install with sevice worker                                            |
| uninstall   | -       | Remove all sevice worker                                              |
| update      | -       | ApplyUpdate & delay refresh                                           |
| applyUpdate | -       | Apply new resource                                                    |
| refresh     | -       | Global.reload                                                         |


## usage
```js
import NxOfflineSw from '@feizheng/next-offline-sw';

// code goes here:
NxOfflineSw.install();
```

## resources
- https://github.com/NekR/offline-plugin/blob/master/docs/updates.md
- https://stackoverflow.com/questions/33704791/how-do-i-uninstall-a-service-worker

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

[version-image]: https://img.shields.io/npm/v/@feizheng/next-offline-sw
[version-url]: https://npmjs.org/package/@feizheng/next-offline-sw

[license-image]: https://img.shields.io/npm/l/@feizheng/next-offline-sw
[license-url]: https://github.com/afeiship/next-offline-sw/blob/master/LICENSE.txt

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

[download-image]: https://img.shields.io/npm/dm/@feizheng/next-offline-sw
[download-url]: https://www.npmjs.com/package/@feizheng/next-offline-sw
npm package: @feizheng/next-operation-history
Description: Operation history for next.
Author: afei
Latest version: 1.0.3

# next-operation-history
> Operation history for next.

## installation
```bash
npm install -S @feizheng/next-operation-history
```

## structure
```js
{
  max: 100,
  engine: 'local', // session
  prefix:'wbs', // wbs__operation_history@
  index: 0,  // the pointer
  data: [
    { id:'obj_hash1', value: 'json1'},
    { id:'obj_hash2', value: 'json2'},
    { id:'obj_hash3', value: 'json3'},
    { id:'obj_hash4', value: 'json4'},
  ]
}
```


## configuration
```js
{
  max: 10,
  engine: 'local', // session
  prefix: 'nx'
}
```

## methods
| api     | params  | description                              |
| ------- | ------- | ---------------------------------------- |
| reset   | -       | Set index/data to default options value. |
| last    | -       | Get last index.                          |
| at      | -/index | Get current(index) item at index.        |
| get     | (id)    | Get data by id.                          |
| gets    | -       | Get all storage data.                    |
| forward | -       | Move index to next.                      |
| back    | -       | Move index to previous.                  |
| go      | index   | Move to the index.                       |
| push    | data    | Push data to items.                      |
| replace | data    | Replace the last item.                   |
| add     | data    | Add to the store without judgement.       |
| del     | id      | Remove all the equal id elements.        |

## properties
| api    | description                 |
| ------ | --------------------------- |
| next   | Property: can forward?      |
| prev   | Property: can back?         |
| length | Property: data size         |
| index  | Property: Pointer           |
| data   | Property: the original data |

## usage
```js
import NxOperationHistory from '@feizheng/next-operation-history';

// code goes here:
const noh = new NxOperationHistory({ prefix: 'abc', max: 20, engine:'local' });

// save:
noh.push();
noh.at():

// undo
noh.back();
noh.at();

// redo
noh.forward();
noh.at();

// can next?
noh.next

// can previous?
noh.prev
```
npm package: @feizheng/next-pad-index
Description: PadLeft with zero for index.
Author: afei
Latest version: 1.0.0

# next-pad-index
> PadLeft with zero for index.

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

## installation
```bash
npm install -S @feizheng/next-pad-index
```

## options
> { char: '0', step: 0, size: 2 }

| api   | type   | default |
| ----- | ------ | ------- |
| chart | string | '0'     |
| step  | number | 0       |
| size  | number | 2       |

## usage
```js
import '@feizheng/next-pad-index';

// default options:
nx.padIndex(2);               // 002
nx.padIndex(100);             // 100

// with options:
nx.padIndex(100, { step: 1})  //101
```

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

[version-image]: https://img.shields.io/npm/v/@feizheng/next-pad-index
[version-url]: https://npmjs.org/package/@feizheng/next-pad-index

[license-image]: https://img.shields.io/npm/l/@feizheng/next-pad-index
[license-url]: https://github.com/afeiship/next-pad-index/blob/master/LICENSE.txt

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

[download-image]: https://img.shields.io/npm/dm/@feizheng/next-pad-index
[download-url]: https://www.npmjs.com/package/@feizheng/next-pad-index
npm package: @feizheng/next-pad-start
Description: Pad start for next.
Author: afei
Latest version: 1.0.0

# next-pad-start
> Pad start for next.

## installation
```bash
npm install -S @feizheng/next-pad-start
```

## usage
```js
import '@feizheng/next-pad-start';

//DOCS here!
```

## simple solution
```js
('0' + 1).slice(-2)
// "01"
('0' + 12).slice(-2)
// "12"
```
npm package: @feizheng/next-pairs
Description: Object key value to pairs for next.
Author: afei
Latest version: 1.0.0

# next-pairs
> Object key value to pairs for next.

## installation
```bash
npm install -S @feizheng/next-pairs
```

## usage
```js
import '@feizheng/next-pairs';

const obj = { name: 'fei', email: '1290657123@qq.com' };
const res = nx.pairs(obj);
// result
[
  { key: 'name', value: 'fei' },
  { key: 'email', value: '1290657123@qq.com' }
];
```
npm package: @feizheng/next-param
Description: Param based on next.
Author: afei
Latest version: 2.0.0

# next-param
> Param based on next.

## installation
```bash
npm install -S @feizheng/next-param
```

## apis
| name    | type   | description    |
| ------- | ------ | -------------- |
| hash    | object | 传入的参数列表 |
| url     | string | URL            |
| options | object | 其它选项       |

## options
| name      | type     | description                                                          |
| --------- | -------- | -------------------------------------------------------------------- |
| joinKey   | string   | 当参数值为 `array` 的时候， `join` 的连接字符                        |
| encode    | function | `encodeURI` 或者 `encodeURIComponent` ，或者自定义                   |
| isEmpty   | function | 过渡掉不需要的 `value` ，可以用这个函数；默认过滤掉 `null/undefined` |
| transform | function | 对每一组 `key/value` 进行处理，最终返回需要用 `&` 拼接的字符串       |


## usage
```js
import '@feizheng/next-param';

nx.param({ var1: 123, var2: 'str', ids: [1,2,3] });
// var1=123&var2=str&ids=1%2C2%2C3
```
npm package: @feizheng/next-parse-request-args
Description: Request arguments parser.
Author: afei
Latest version: 1.0.11

# next-parse-request-args
> Request arguments parser.

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

## installation
```bash
npm install -S @feizheng/next-parse-request-args
```

## usage
```js
import '@feizheng/next-parse-request-args';

// input:
// 1. (config)
// 2. (url)
// 3. (url, config)
// 4. (method, config)
// 5. (method, url, config)
// 6. (method, url, data, config)

// output:
{
  url: '/api/v1',
  method:'get',
  data: { query:1, zx:1 },
  headers: { 
    'Authorization': 'eyJhbGciOiJIUzUxMiJ9',
    'Content-Type': 'application/json' 
  }
}
```

## license
Code released under [the MIT license](https://github.com/afeiship/next-parse-request-args/blob/master/LICENSE.txt).

[version-image]: https://img.shields.io/npm/v/@feizheng/next-parse-request-args
[version-url]: https://npmjs.org/package/@feizheng/next-parse-request-args

[license-image]: https://img.shields.io/npm/l/@feizheng/next-parse-request-args
[license-url]: https://github.com/afeiship/next-parse-request-args/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@feizheng/next-parse-request-args
[size-url]: https://github.com/afeiship/next-parse-request-args/blob/master/dist/next-parse-request-args.min.js

[download-image]: https://img.shields.io/npm/dm/@feizheng/next-parse-request-args
[download-url]: https://www.npmjs.com/package/@feizheng/next-parse-request-args
npm package: @feizheng/next-path-match
Description: A wrapper for path-to-regexp.
Author: afei
Latest version: 1.0.2

# next-path-match
> A wrapper for path-to-regexp.

## installation
```bash
npm install -S @feizheng/next-path-match
```

## usage
```js
import '@feizheng/next-path-match';

const res = nx.pathMatch(
  '/dashboard/self-analysis/:type/:id',
  '/dashboard/self-analysis/folder/13'
);

// result:
{
  type:'folder',
  id:'13'
}
```

## resources
- https://github.com/pillarjs/path-to-regexp
npm package: @feizheng/next-path-parse
Description: Parse path for next.
Author: afei
Latest version: 1.0.2

# next-path-parse
> Parse path for next.

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


## installation
```bash
npm install -S @feizheng/next-path-parse
```

## usage
```js
import '@feizheng/next-path-parse';


const res = nx.pathParse('/User/feizheng/github/test/build/static/css/8.f96cc274.chunk.css', {
  cwd: '/User/feizheng/github/test/',
  context:'build'
});

/*
{
  cwd: '/User/feizheng/github/test/',
  context: 'build',
  root: '/',
  dir: '/User/feizheng/github/test/build/static/css',
  base: '8.f96cc274.chunk.css',
  ext: '.css',
  name: '8.f96cc274.chunk',
  full: '/User/feizheng/github/test/build/static/css/8.f96cc274.chunk.css',
  parent: 'build/static/css/8.f96cc274.chunk.css',
  relative: 'static/css/8.f96cc274.chunk.css'
}
*/
```

## resources
- https://nodejs.org/api/path.html#path_path_basename_path_ext

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

[version-image]: https://img.shields.io/npm/v/@feizheng/next-path-parse
[version-url]: https://npmjs.org/package/@feizheng/next-path-parse

[license-image]: https://img.shields.io/npm/l/@feizheng/next-path-parse
[license-url]: https://github.com/afeiship/next-path-parse/blob/master/LICENSE.txt

[size-image]: https://img.shields.io/bundlephobia/minzip/@feizheng/next-path-parse
[download-image]: https://img.shields.io/npm/dw/@feizheng/next-path-parse
npm package: @feizheng/next-pdf-merge
Description: An npm module to merge PDFs based on pdfbox for next.
Author: afei
Latest version: 1.0.1

# next-pdf-merge
> An npm module to merge PDFs based on pdfbox for next.

## installation
```bash
npm install -S @feizheng/next-pdf-merge
```

## usage
```js
import '@feizheng/next-pdf-merge';

nx.pdfMerge({
  input: './__tests__/docs/*.pdf',
  output: './__tests__/output.pdf'
})
```

## resources
- https://pdfbox.apache.org/2.0/commandline.html#pdfmerger
- https://medium.com/@chetansachdev/solved-installing-node-pdfbox-in-osx-3af95f0285c2
- https://github.com/karuppiah7890/easy-pdf-merge
npm package: @feizheng/next-pick
Description: Creates an object composed of the picked object properties.
Author: afei
Latest version: 1.0.0

# next-pick
> Creates an object composed of the picked object properties.

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

## installation
```bash
npm install -S @feizheng/next-pick
```

## usage
```js
import '@feizheng/next-pick';

const object = {
  'a': 1,
  'c': 'c-value',
  some: {
    what: {
      and: {
        deep: {
          one: 1
        }
      }
    }
  }
};

const picked = nx.pick(object, ['a', 'c', 'some.what.and.deep.one']);
```

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

[version-image]: https://img.shields.io/npm/v/@feizheng/next-pick
[version-url]: https://npmjs.org/package/@feizheng/next-pick

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

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

[download-image]: https://img.shields.io/npm/dm/@feizheng/next-pick
[download-url]: https://www.npmjs.com/package/@feizheng/next-pick
npm package: @feizheng/next-pick-pairs
Description: Pick key/value pairs from object.
Author: afei
Latest version: 1.1.0

# next-pick-pairs
> Pick key/value pairs from object.

## installation
```bash
npm install -S @feizheng/next-pick-pairs
```

## usage
```js
import '@feizheng/next-pick-pairs';

const obj = {
  "nickname": null,
  "uid": "UR1785049326",
  "job": null,
  "last_name": null,
  "username": "15502115100",
  "last_active": "2017-09-22T13:08:04.753046Z",
  "is_staff": false,
  "login_count": 5,
  "gender": null,
  "is_active": true,
  "groups": [],
  "company": null,
  "is_superuser": false,
  "first_name": null,
  "last_login": "2017-09-22T13:08:04.753038Z",
  "permissions": [],
  "date_joined": "2017-09-19T14:13:10.129030Z",
  "email": 'test@email.com',
  "phone": "15502115100"
};

const res = nx.pickPairs(obj,['nickname','is_staff','email']);

//result:
[ { key: 'nickname', value: null },
  { key: 'is_staff', value: false },
  { key: 'email', value: 'test@email.com' } ]
```
npm package: @feizheng/next-points2range
Description: Points to range for next.
Author: afei
Latest version: 1.0.0

# next-points2range
> Points to range for next.

## installation
```bash
npm install -S @feizheng/next-points2range
```

## usage
```js
import '@feizheng/next-points2range';

const res = nx.points2range(1, 6, -1);

// results:
[
  [ 0, 1 ], 
  [ 1, 6 ], 
  [ 6, -1 ], 
  [ -1 ] 
]
```
npm package: @feizheng/next-priority-queue
Description: Priority queue for next.
Author: afei
Latest version: 1.0.1

# next-priority-queue
> Priority queue for next.

## installation
```bash
npm install -S @feizheng/next-priority-queue
```

## apis
| api | params | description   |
|-----|--------|---------------|
| get | -      | desc balabala |

## usage
```js
import NxPriorityQueue from '@feizheng/next-priority-queue';

// code goes here:
```
npm package: @feizheng/next-proxy-spys
Description: Spys proxy for next.
Author: afei
Latest version: 1.2.0

# next-proxy-spys
> Spys proxy for next.

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

## installation
```bash
npm install -S @feizheng/next-proxy-spys
```

## usage
```js
import '@feizheng/next-proxy-spys';

//DOCS here!
```

## resources
- http://spys.one/free-proxy-list/CN/

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

[version-image]: https://img.shields.io/npm/v/@feizheng/next-proxy-spys
[version-url]: https://npmjs.org/package/@feizheng/next-proxy-spys

[license-image]: https://img.shields.io/npm/l/@feizheng/next-proxy-spys
[license-url]: https://github.com/afeiship/next-proxy-spys/blob/master/LICENSE.txt

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

[download-image]: https://img.shields.io/npm/dm/@feizheng/next-proxy-spys
[download-url]: https://www.npmjs.com/package/@feizheng/next-proxy-spys
npm package: @feizheng/next-proxy-us
Description: Proxy for us-proxy.
Author: afei
Latest version: 1.2.0

# next-proxy-us
> Proxy for us-proxy.

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

## installation
```bash
npm install -S @feizheng/next-proxy-us
```

## usage
```js
import '@feizheng/next-proxy-us';

//DOCS here!
```

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

[version-image]: https://img.shields.io/npm/v/@feizheng/next-proxy-us
[version-url]: https://npmjs.org/package/@feizheng/next-proxy-us

[license-image]: https://img.shields.io/npm/l/@feizheng/next-proxy-us
[license-url]: https://github.com/afeiship/next-proxy-us/blob/master/LICENSE.txt

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

[download-image]: https://img.shields.io/npm/dm/@feizheng/next-proxy-us
[download-url]: https://www.npmjs.com/package/@feizheng/next-proxy-us
npm package: @feizheng/next-queue
Description: Queue for next.
Author: afei
Latest version: 1.6.2

# next-queue
> Queue for next.

## installation
```bash
npm install -S @feizheng/next-queue
```

## apis
| api     | params | description   |
| ------- | ------ | ------------- |
| enqueue | -      | desc balabala |
| dequeue | -      | desc balabala |
| front   | -      | desc balabala |
| isEmpty | -      | desc balabala |
| size    | -      | desc balabala |


## description
- enqueue(element(s))：向队列尾部添加一个（或多个）新的项。
- dequeue()：移除队列的第一（即排在队列最前面的）项，并返回被移除的元素。
- front()：返回队列中第一个元素——最先被添加，也将是最先被移除的元素。队列不
做任何变动（不移除元素，只返回元素信息——与Stack类的peek方法非常类似）。
- isEmpty()：如果队列中不包含任何元素，返回true，否则返回false。
- size()：返回队列包含的元素个数，与数组的length属性类似。

## other
- PriorityQueue
- LoopQueue

## usage
```js
import NxQueue from '@feizheng/next-queue';

// code goes here:
```
npm package: @feizheng/next-random
Description: Create random number.
Author: afei
Latest version: 1.0.2

# next-random
> Create random number.

## installation
```bash
npm install -S @feizheng/next-random
```

## usage
```js
import '@feizheng/next-random';

nx.random(1,100);
// 1 ~ 99
```
npm package: @feizheng/next-random-string
Description: Random string for next.
Author: afei
Latest version: 1.1.0

# next-random-string
> Random string for next.

## installation
```bash
npm install -S @feizheng/next-random-string
```

## usage
```js
import '@feizheng/next-random-string';

nx.randomString(8);

// c83kkaiq
```

## resources
- https://stackoverflow.com/questions/1349404/generate-random-string-characters-in-javascript
npm package: @feizheng/next-random-ua
Description: Get a random user agent.
Author: afei
Latest version: 1.0.0

# next-random-ua
> Get a random user agent.

## installation
```bash
npm install -S @feizheng/next-random-ua
```

## usage
```js
import '@feizheng/next-random-ua';

nx.randomUa();
nx.randomUa(3);

// Mozilla/5.0 (Linux; Android 6.0; Nexus 5X Build/MDB08L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.124 Mobile Safari/537.36

/**
[
  'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/534.14 (KHTML, like Gecko) Chrome/9.0.601.0 Safari/534.14',
  'Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13C75 Safari/601.1',
  'Mozilla/5.0 (Windows Phone 8.1; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 530) like Gecko'
] 
 * /
```

## resources
- https://github.com/skratchdot/random-useragent