open-index/open-npm huggingface dataset:
npm package: @jswork/next-map-to
Description: Map source to target.
Author: afei
Latest version: 1.0.0

# next-map-to
> Map source to target.

[![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 @jswork/next-map-to
```

## usage
```js
import '@jswork/next-map-to';

const obj = {
  name: 'afeiship',
  age: 18,
  email: 'email@example.com'
};

const ctx1 = {};
const ctx2 = {
  set: function (key, value) {
    this[`kv_${key}`] = value;
  }
};

const res2 = nx.mapTo(obj, ctx);

/*
// res1
{
  name: 'afeiship',
  age: 18,
  email: 'email@example.com'
}

// res2
{
  set: [Function: set],
  kv_name: 'afeiship',
  kv_age: 18,
  kv_email: 'email@example.com'
}
*/
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-map-to
[download-url]: https://www.npmjs.com/package/@jswork/next-map-to
npm package: @jswork/next-match
Description: Math groups with next.
Author: afei
Latest version: 1.0.1

# next-match
> Math groups with 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 @jswork/next-match
```

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

const str = '/api/v1/{id}/{uuid}/{a.b}';

nx.match(str, /{(.*?)}/g, 0);   // [ '{id}', '{uuid}', '{a.b}' ]
nx.match(str, /{(.*?)}/g, 1);   // ['id', 'uuid', 'a.b']
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-match
[download-url]: https://www.npmjs.com/package/@jswork/next-match
npm package: @jswork/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 @jswork/next-match-words
```

## usage
```js
import '@jswork/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/@jswork/next-match-words
[version-url]: https://npmjs.org/package/@jswork/next-match-words

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

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/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/@jswork/next-match-words
[download-url]: https://www.npmjs.com/package/@jswork/next-match-words
npm package: @jswork/next-max-by
Description: This method is like _.max except that it accepts iteratee which is invoked for each element in array to generate the criterion by which the value is ranked.
Author: afei
Latest version: 1.0.1

# next-max-by
> This method is like _.max except that it accepts iteratee which is invoked for each element in array to generate the criterion by which the value is ranked.

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

## installation
```bash
yarn add @jswork/next-max-by
```

## usage
```js
import '@jswork/next-max-by';

const arr = [
  { name: 'apple', value: 1 },
  { name: 'banana', value: 2 },
  { name: 'orange', value: 3 },
  { name: 'pear', value: 4 },
  { name: 'grape', value: 5 }
];

const result = nx.maxBy(arr, (x) => x.value);
console.log(result);
// { name: 'grape', value: 5 }
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-max-by
[download-url]: https://www.npmjs.com/package/@jswork/next-max-by
npm package: @jswork/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.

[![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 @jswork/next-md5
```

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

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

## resources
- https://github.com/blueimp/JavaScript-MD5

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-md5
[download-url]: https://www.npmjs.com/package/@jswork/next-md5
npm package: @jswork/next-memo
Description: Memoize for next.
Author: afei
Latest version: 1.0.1

# next-memo
> 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 @jswork/next-memo
```

## usage
```js
import '@jswork/next-memo';

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-memo/blob/master/LICENSE.txt).

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-memo
[download-url]: https://www.npmjs.com/package/@jswork/next-memo
npm package: @jswork/next-memoize
Description: Memoize for next.
Author: afei
Latest version: 1.0.0

# 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 @jswork/next-memoize
```

## usage
```js
import '@jswork/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/@jswork/next-memoize
[version-url]: https://npmjs.org/package/@jswork/next-memoize

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

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/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/@jswork/next-memoize
[download-url]: https://www.npmjs.com/package/@jswork/next-memoize
npm package: @jswork/next-merge
Description: Recursively merges own enumerable properties of the source object(s).
Author: afei
Latest version: 1.0.0

# next-merge
> Recursively merges own enumerable properties of the source object(s).

[![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 @jswork/next-merge
```

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

const object = {
  'a': [{ 'b': 2 }, { 'd': 4 }]
};
 
const other = {
  'a': [{ 'c': 3 }, { 'e': 5 }]
};
 
const res = nx.merge(object, other);
conosle.log(res);
conosle.log(res === object);

// { a: [ { b: 2, c: 3 }, { d: 4, e: 5 } ] }
// true
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-merge
[download-url]: https://www.npmjs.com/package/@jswork/next-merge
npm package: @jswork/next-min-by
Description: This method is like _.min except that it accepts iteratee which is invoked for each element in array to generate the criterion by which the value is ranked.
Author: afei
Latest version: 1.0.3

# next-min-by
> This method is like _.min except that it accepts iteratee which is invoked for each element in array to generate the criterion by which the value is ranked.

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

## installation
```bash
yarn add @jswork/next-min-by
```

## usage
```js
import '@jswork/next-min-by';

// given an array of objects
const arr = [
  { name: 'apple', value: 10 },
  { name: 'banana', value: 20 },
  { name: 'orange', value: 15 },
  { name: 'pear', value: 25 }
];

// find the min value by `value` property
const result = nx.minBy(arr, 'value');
// result: { name: 'apple', value: 10 }  

// find the min value by function
const result2 = nx.minBy(arr, (item) =>item.value);
// result: { name: 'apple', value: 10 }  
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-min-by
[download-url]: https://www.npmjs.com/package/@jswork/next-min-by
npm package: @jswork/next-mock-storage
Description: Mock storage for mock storage api based on next.
Author: afei
Latest version: 1.0.5

# next-mock-storage
> Mock storage for mock storage api based on 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 @jswork/next-mock-storage
```

## apis
| api        | params | description                      |
| ---------- | ------ | -------------------------------- |
| setItem    | -      | -                                |
| getItem    | -      | -                                |
| removeItem | -      | -                                |
| clear      | -      | -                                |
| keys       | -      | Extend, not default storage api. |
| _storage   | -      | For test.                        |

## usage
```js
import NxMockStorage from '@jswork/next-mock-storage';

const mockStorage = NxMockStorage.getInstance();
mockStorage.setItem('k1', 'v1');
mockStorage.setItem('k2', 'v2');
mockStorage.setItem('k3', 'v3');
mockStorage.removeItem('k3');
mockStorage.getItem('k3');  // null
```

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

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

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

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

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

# 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
yarn add @jswork/next-model-douban-book
```

## usage
```js
import cheerio from "cheerio";
import "@jswork/next-model-douban-book";

fetch("https://book.douban.com/subject/25941890/")
  .then((res) => res.text())
  .then((res) => {
    var $ = cheerio.load(res, { decodeEntities: false });
    var model = new nx.ModelDoubanBook({ $ });
    var res = model.gets();
    console.log("res: ", res);
    expect(res.title).toBe("海伯利安");
  });
```

## 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/@jswork/next-model-douban-book
[version-url]: https://npmjs.org/package/@jswork/next-model-douban-book

[license-image]: https://img.shields.io/npm/l/@jswork/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/@jswork/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/@jswork/next-model-douban-book
[download-url]: https://www.npmjs.com/package/@jswork/next-model-douban-book
npm package: @jswork/next-model-douban-subject
Description: Douban subject model for next.
Author: afei
Latest version: 1.0.3

# 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 @jswork/next-model-douban-subject
```

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

## usage
```js
import NxModelDoubanSubject from '@jswork/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/@jswork/next-model-douban-subject
[version-url]: https://npmjs.org/package/@jswork/next-model-douban-subject

[license-image]: https://img.shields.io/npm/l/@jswork/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/@jswork/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/@jswork/next-model-douban-subject
[download-url]: https://www.npmjs.com/package/@jswork/next-model-douban-subject
npm package: @jswork/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 @jswork/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 ' ]
```

## resources
- https://stackoverflow.com/questions/7954022/javascript-regular-expression-multiple-match

## 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/@jswork/next-multiple-exec
[version-url]: https://npmjs.org/package/@jswork/next-multiple-exec

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

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/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/@jswork/next-multiple-exec
[download-url]: https://www.npmjs.com/package/@jswork/next-multiple-exec
npm package: @jswork/next-ng-blank-merge
Description: Merge blank to one for kellis-ng rich editor.
Author: afei
Latest version: 1.0.1

# next-ng-blank-merge
> Merge blank to one for kellis-ng rich editor.

## installation
```bash
npm install -S @jswork/next-ng-blank-merge
```

## usage
```js
import '@jswork/next-ng-blank-merge';

const html = `<p>Did your brother a good <blank key="4zqD4hSQ">h[o]</blank><blank key="4zqD4hSQ">li[d]</blank><blank key="4zqD4hSQ">ay</blank> in <blank key="abds">Korea?</blank></p>`;

nx.ngBlankMerge(html);
// <p>Did your brother a good <blank key="4zqD4hSQ">h[o]li[d]ay</blank> in <blank key="abds">Korea?</blank></p>
```
npm package: @jswork/next-nice-comments
Description: Build nice comments.
Author: afei
Latest version: 1.0.12

# 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 @jswork/next-nice-comments
```

## usage
```js
import '@jswork/next-nice-comments';

const 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/@jswork/next-nice-comments
[version-url]: https://npmjs.org/package/@jswork/next-nice-comments

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

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/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/@jswork/next-nice-comments
[download-url]: https://www.npmjs.com/package/@jswork/next-nice-comments
npm package: @jswork/next-nl2br
Description: Replace 
 with &lt;br /&gt; in JavaScript.
Author: afei
Latest version: 1.0.2

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

[![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 @jswork/next-nl2br
```

## usage
```js
import '@jswork/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

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-nl2br
[download-url]: https://www.npmjs.com/package/@jswork/next-nl2br
npm package: @jswork/next-node-base64
Description: Base64 for nodejs.
Author: afei
Latest version: 1.0.0

# next-node-base64
> Base64 for nodejs.

[![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 @jswork/next-node-base64
```

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

## usage
```js
import NxNodeBase64 from '@jswork/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

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-node-base64
[download-url]: https://www.npmjs.com/package/@jswork/next-node-base64
npm package: @jswork/next-node-downfile
Description: Download file for next.
Author: afei
Latest version: 1.0.2

# next-node-downfile
> Download file for next.

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

## installation
```bash
yarn add @jswork/next-node-downfile
```

## usage
```js
import '@jswork/next-node-downfile';

nx.nodeDownfile({
  url: 'https://www.iconfont.cn/api/project/download.zip?pid=4644398&ctoken=ldvj2ogXUEvE6mDiLwqJ7BS3',
  headers: {
    cookie: 'EGG_SESS_ICONFONT=xxx'
  }
});
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-node-downfile
[download-url]: https://www.npmjs.com/package/@jswork/next-node-downfile
npm package: @jswork/next-node-exec
Description: Node exec for next.
Author: afei
Latest version: 1.0.5

# next-node-exec
> Node exec 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 @jswork/next-node-exec
```

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

// single cmd;
nx.nodeExec('npm run build');

// multiple cmds:
nx.nodeExec([
  'ls -alh',
  'pwd'
]);

// or with pip cmds
nx.nodeExec([
  'tail access.log -n 1000',
  `awk '{print $1}'`
], { joined: '|'});

//cmds: tail access.log -n 1000 | awk '{print $1}'
```

## options
| name         | type    | default            | description                    |
| ------------ | ------- | ------------------ | ------------------------------ |
| responseType | string  | string/buffer/null | Return string with trim.       |
| joined       | string  | `&&`/`&`/`\|`      | Joined with char.              |
| debug        | boolean | true/false         | If show the executed commands. |

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-node-exec
[download-url]: https://www.npmjs.com/package/@jswork/next-node-exec
npm package: @jswork/next-node-toolkits
Description: Node toolkits based on next.
Author: afei
Latest version: 1.0.2

# next-node-toolkits
> Node toolkits based on next.

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

## installation
```bash
yarn add @jswork/next-node-toolkits
```

## usage
```js
import '@jswork/next-node-toolkits';

nx.NodeToolkits.create();
```

## typings
```ts
/// <reference types="@jswork/event-mitt/index.d.ts" />
/// <reference types="@jswork/next-camelize/index.d.ts" />
/// <reference types="@jswork/next-capitalize/index.d.ts" />
/// <reference types="@jswork/next-classify/index.d.ts" />
/// <reference types="@jswork/next-compact-object/index.d.ts" />
/// <reference types="@jswork/next-deep-assign/index.d.ts" />
/// <reference types="@jswork/next-deep-clone/index.d.ts" />
/// <reference types="@jswork/next-deep-each/index.d.ts" />
/// <reference types="@jswork/next-deep-equal/index.d.ts" />
/// <reference types="@jswork/next-empty/index.d.ts" />
/// <reference types="@jswork/next-get2get/index.d.ts" />
/// <reference types="@jswork/next-is-empty-object/index.d.ts" />
/// <reference types="@jswork/next-is-plain-object/index.d.ts" />
/// <reference types="@jswork/next-json/index.d.ts" />
/// <reference types="@jswork/next-kebab-case/index.d.ts" />
/// <reference types="@jswork/next-key-map/index.d.ts" />
/// <reference types="@jswork/next-param/index.d.ts" />
/// <reference types="@jswork/next-qs/index.d.ts" />
/// <reference types="@jswork/next-sets/index.d.ts" />
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-node-toolkits
[download-url]: https://www.npmjs.com/package/@jswork/next-node-toolkits
npm package: @jswork/next-node-weibo-picupload
Description: Weibo picupload for node.
Author: afei
Latest version: 1.0.9

# next-node-weibo-picupload
> Weibo picupload for node.

[![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 @jswork/next-node-weibo-picupload
```

## usage
```conf
WEIBO_COOKIE=SUB=_2A25NmOccDeRhGeVI7VMZ8yzEyz-IHXVu7F_UrDV_PUNbm9AfLXbNkW9NTBpP0XrgXOp_OeWkgGQyy3tEb9mTbg6i
```

```js
import '@jswork/next-node-weibo-picupload';

const items = glob.sync('__tests__/*.jpg', { absolute: true });
nx.nodeWeiboPicupload(items).then(console.log);

/*
[
  {
    width: 350,
    size: 20251,
    ret: 1,
    height: 350,
    name: 'pic_2',
    pid: 'da432263gy1gqgtsu89utj209q09q0t2',
    type: 'jpg',
    url: 'https://tva1.sinaimg.cn/large/da432263gy1gqgtsu89utj209q09q0t2.jpg'
  },
  {
    width: 200,
    size: 9389,
    ret: 1,
    height: 200,
    name: 'pic_1',
    pid: 'da432263gy1gqgtsu7camj205k05k3yh',
    type: 'jpg',
    url: 'https://tva1.sinaimg.cn/large/da432263gy1gqgtsu7camj205k05k3yh.jpg'
  }
]
*/
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-node-weibo-picupload
[download-url]: https://www.npmjs.com/package/@jswork/next-node-weibo-picupload
npm package: @jswork/next-npm-installed
Description: Check if npm package installed.
Author: afei
Latest version: 1.0.0

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

[![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 @jswork/next-npm-installed
```

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

nx.npmInstalled('mocha');   // false
nx.npmInstalled('gulp');    // true
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-npm-installed
[download-url]: https://www.npmjs.com/package/@jswork/next-npm-installed
npm package: @jswork/next-npm-registries
Description: Npm reigistries for aric.
Author: afei
Latest version: 1.0.2

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

[![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 @jswork/next-npm-registries
```

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


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

// results
{
  publish: 'https://registry.npmjs.org',
  install: 'https://registry.npmjs.org',
  private: false,
  access: 'restricted'
}
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-npm-registries
[download-url]: https://www.npmjs.com/package/@jswork/next-npm-registries
npm package: @jswork/next-npm-version
Description: Get npm package version.
Author: afei
Latest version: 1.0.1

# 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 @jswork/next-npm-version
```

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

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

nx.npmVersion('@jswork/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/@jswork/next-npm-version
[version-url]: https://npmjs.org/package/@jswork/next-npm-version

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

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/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/@jswork/next-npm-version
[download-url]: https://www.npmjs.com/package/@jswork/next-npm-version
npm package: @jswork/next-object-filter
Description: Get new object like array filter.
Author: afei
Latest version: 1.0.0

# next-object-filter
> Get new object like array filter.

[![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 @jswork/next-object-filter
```

## usage
```js
import '@jswork/next-object-filter';

const env = process.env;
const res = nx.objectFilter(env, function (key, value) {
  return key.includes('npm_config');
});
const keys = Object.keys(res);
const allTruthy = keys.every(key => key.includes('npm_config'));

// true
```

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

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

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

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

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

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

[![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 @jswork/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
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-object-operator
[download-url]: https://www.npmjs.com/package/@jswork/next-object-operator
npm package: @jswork/next-object-replace
Description: Replace for object key/value.
Author: afei
Latest version: 1.0.0

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

[![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 @jswork/next-object-replace
```

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

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

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

// A+b*0.8+(C/D)
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-object-replace
[download-url]: https://www.npmjs.com/package/@jswork/next-object-replace
npm package: @jswork/next-object-url
Description: URL create/destroy for blob object.
Author: afei
Latest version: 1.0.1

# next-object-url
> URL create/destroy for blob object.

[![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 @jswork/next-object-url
```

## apis
| api     | params           | description                |
| ------- | ---------------- | -------------------------- |
| create  | (object,options) | window.URL.createObjectURL |
| destroy | (array)          | window.URL.revokeObjectURL |

## usage
```js
import NxObjectUrl from '@jswork/next-object-url';

const res = NxObjectUrl.create(obj,options);

// property ( blob:http://localhost:3000/5a15f3fc-8d52-45e4-9047-6cd941695a78)
res.url
// method
res.destroy()
```

```html
<input type="file" name="test" id="test1" />
<img id="img1" src="https://via.placeholder.com/200x100" />
<script src="/next-js-core2/dist/next-js-core2.js"></script>
<script src="/next-object-url.js"></script>
<script>
  var fileEl = document.getElementById('test1');
  var img1 = document.getElementById('img1');

  fileEl.onchange = function(e) {
    var file = e.target.files[0];
    var res = nx.ObjectUrl.create(file);
    // console.log(file, img1);
    img1.src = res.url;
    img1.onload = function() {
      res.destroy();
    };
  };
</script>
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/next-object-url
[download-url]: https://www.npmjs.com/package/@jswork/next-object-url
npm package: @jswork/next-offline-sw
Description: Offline plugin for service worker runtime helper.
Author: afei
Latest version: 1.0.3

# 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]

## installation
```bash
npm install -S @jswork/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 '@jswork/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/@jswork/next-offline-sw
[version-url]: https://npmjs.org/package/@jswork/next-offline-sw

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

[size-image]: https://img.shields.io/bundlephobia/minzip/@jswork/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/@jswork/next-offline-sw
[download-url]: https://www.npmjs.com/package/@jswork/next-offline-sw
npm package: @jswork/next-operation-history
Description: Operation history for next.
Author: afei
Latest version: 1.0.0

# next-operation-history
> Operation history 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 @jswork/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
```

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

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

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

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

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