open-index/open-npm huggingface dataset:
npm package: @jswork/styled-plugin-responsive-list
Description: Responsive list for styled plugin.
Latest version: 1.0.3

# styled-plugin-responsive-list
> Responsive list for styled plugin.

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

## installation
```shell
npm install @jswork/styled-plugin-responsive-list
```

## usage
```js
import boilerplateTypescriptPackage from '@jswork/styled-plugin-responsive-list';

// usage goes here.
```

## license
Code released under [the MIT license](https://github.com/afeiship/styled-plugin-responsive-list/blob/master/LICENSE.txt).

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/styled-plugin-responsive-list
[download-url]: https://www.npmjs.com/package/@jswork/styled-plugin-responsive-list
npm package: @jswork/styled-plugin-scaleable-image
Description: Scaleble image.
Latest version: 1.0.9

# styled-plugin-scaleable-image
> Scaleble image.

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

## installation
```shell
npm install @jswork/styled-plugin-scaleable-image
```

## usage
```js
import boilerplateTypescriptPackage from '@jswork/styled-plugin-scaleable-image';

// usage goes here.
```

## license
Code released under [the MIT license](https://github.com/afeiship/styled-plugin-scaleable-image/blob/master/LICENSE.txt).

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/styled-plugin-scaleable-image
[download-url]: https://www.npmjs.com/package/@jswork/styled-plugin-scaleable-image
npm package: @jswork/styled-plugin-shadow
Description: Styled plugin for shadow.
Latest version: 1.0.11

# styled-plugin-shadow
> Styled plugin for shadow.

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

## installation
```shell
npm install @jswork/styled-plugin-shadow
```

## usage
```js
import boilerplateTypescriptPackage from '@jswork/styled-plugin-shadow';

// usage goes here.
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/styled-plugin-shadow
[download-url]: https://www.npmjs.com/package/@jswork/styled-plugin-shadow
npm package: @jswork/styled-plugin-transform-center
Description: Styled plugin for transform-center.
Latest version: 1.0.13

# styled-plugin-transform-center
> Styled plugin for transform-center.

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

## installation
```shell
npm install @jswork/styled-plugin-transform-center
```

## usage
```js
import boilerplateTypescriptPackage from '@jswork/styled-plugin-transform-center';

// usage goes here.
```

## license
Code released under [the MIT license](https://github.com/afeiship/styled-plugin-transform-center/blob/master/LICENSE.txt).

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/styled-plugin-transform-center
[download-url]: https://www.npmjs.com/package/@jswork/styled-plugin-transform-center
npm package: @jswork/suwx-init
Description: Init for sync-uni-wxcomponents.
Latest version: 1.0.2

# suwx-init
> Init for sync-uni-wxcomponents.

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

## usage
```shell
$ npx @jswork/suwx-init --registry=https://registry.npmjs.org
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/suwx-init
[download-url]: https://www.npmjs.com/package/@jswork/suwx-init
npm package: @jswork/sw-runtime
Description: Service worker runtime for workbox.
Latest version: 1.0.13

# sw-runtime
> Service worker runtime for workbox.

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

## installation
```shell
npm install @jswork/sw-runtime
```

## skipWaiting
```js
// case1: skipWaiting true: will be update immediately
module.exports = {
  maximumFileSizeToCacheInBytes: 100 * 1024 * 1024,
  globDirectory: 'build/',
  globPatterns: ['**/*.{js,png,json,txt,css,map}'],
  globIgnores: ['*/fallback.js'],
  skipWaiting: true,
  clientsClaim: true,
  //...
};

// case2: skipWaiting false: will be update when you click sw-tips `reload` button
module.exports = {
  maximumFileSizeToCacheInBytes: 100 * 1024 * 1024,
  globDirectory: 'build/',
  globPatterns: ['**/*.{js,png,json,txt,css,map}'],
  globIgnores: ['*/fallback.js'],
  skipWaiting: false,
  clientsClaim: false,
  //...
};
```

## usage
```js
import SwRuntime from '@jswork/sw-runtime';

// App Did Mount, config sw
window.onload = function () {
  SwRuntime.install({
    autoUpdate: true,
    autoUpdateInterval: 5 * 1000,
    onAutoUpdate: function () {
      console.log('SW Event:', 'onAutoUpdate');
    },
    onUpdateReady: function ({ context }) {
      console.log('SW Event:', 'onUpdateReady');
      setTimeout(function () {
        console.log('SW Event:', 'do applyUpdate');
        // Need to reload page, or it will be pending.
        context.applyUpdate().then(()=>{
          window.location.reload();
        });
      }, 1000);
    },
  });
};
```

## todos
1. unpkg/jsdelivr cdn zero cache?(not ok)
2. auto update interval(ok)

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/sw-runtime
[download-url]: https://www.npmjs.com/package/@jswork/sw-runtime
npm package: @jswork/sync-uni-wxcomponents
Description: Sync uniapp node_modules for mp-weixin components.
Latest version: 1.0.11

# sync-uni-wxcomponents
> Sync uniapp node_modules for mp-weixin components.

## installation
```shell
# public
yarn add --dev @jswork/sync-uni-wxcomponents
# init project
npx @jswork/suwx-init --registry=https://registry.npmjs.org
```

## configrc
```json
{
  "app": {
    "page": "src/pages.json",
    "wxcomponents": "src/wxcomponents"
  },
  "packages": [
    {
      "name": "mind-ui-weapp",
      "dist": "miniprogram_dist"
    }
  ]
}
```
npm package: @jswork/sync-yo-boilerplate-cli
Description: Sync yeoman boilerplate cache.
Author: afei
Latest version: 1.0.0

# sync-yo-boilerplate-cli
> Sync yeoman boilerplate cache.

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

![snapshot](https://tva1.sinaimg.cn/large/008eGmZEly1gonvjgpxj2j30n205kt94.jpg)

## installation
```shell
npm install @jswork/sync-yo-boilerplate-cli
```

## usage
~~~
Usage: sybc [options]

Options:
  -V, --version          output the version number
  -p, --proxy            If use http(s) proxy url(default: 127.0.0.1:9090).
  -t, --target <string>  Boilerplate name (eg: boilerplate-cli).
  -h, --help             display help for command
~~~

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/sync-yo-boilerplate-cli
[download-url]: https://www.npmjs.com/package/@jswork/sync-yo-boilerplate-cli
npm package: @jswork/tailwind-rem-flexible
Description: Flexible solution for tailwind.
Latest version: 1.0.7

# tailwind-rem-flexible
> Flexible solution for tailwind.

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

## installation
```shell
npm install @jswork/tailwind-rem-flexible
```

## usage
```js
<script>
window.__TW_REM_STD_WIDTH__ = 390;
window.__TW_REM_MAX_WIDTH__ = 1280;
</script>
<script src="https://unpkg.com/@jswork/tailwind-rem-flexible"></script>
```

## types
```ts
/// <reference types="@jswork/tailwind-rem-flexible/global.d.ts" />
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/tailwind-rem-flexible
[download-url]: https://www.npmjs.com/package/@jswork/tailwind-rem-flexible
npm package: @jswork/taro-data-list
Description: Taro data list.
Author: afeiship
Latest version: 1.0.9

# taro-data-list
> Taro data list.

## installation
```shell
npm i @jswork/taro-data-list
```

## usage
```jsx
import TaroDataList from '@jswork/taro-data-list';

<TaroDataList
  scrollY
  refresherEnabled
  api={this.apiService}
  size={20}
  dataGetter={(e) => e.data}
  hasMore={(e) => {
    console.log("e", e, e.data.length <= 10);
    return e.data.length === 20;
  }}
  onChange={(e) => {
    const { items } = e.target.value;
    this.setState({ dataSource: items });
  }}
  template={(action, args) => {
    if (action === "ITEM") {
      const { item, index } = args;
      return (
        <View className="template-item">
          <Text>{item.id}</Text>
          <Checkbox checked={item.complete} />
          <Text>Hello {item.title}</Text>
        </View>
      );
    }

    if (action === "LOAD_MORE") {
      return <View className="template-init">上滑加载更多...</View>;
    }

    if (action === "INIT") {
      return <View className="template-init">数据加载中...</View>;
    }

    if (action === "NO_MORE") {
      return (
        <View className="template-no-more">没有可以加载的数据啦</View>
      );
    }
  }}
/>
```
npm package: @jswork/taro-envs
Description: Taro env manager.
Latest version: 1.0.7

# taro-envs
> Taro env manager.

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

## installation
```shell
npm install @jswork/taro-envs
```

## usage
```js
import TaroEnvs from '@jswork/taro-envs';

// todo: 实际使用发现 process.env 各种取不到值，所以暂时不考虑 taro 框架
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/taro-envs
[download-url]: https://www.npmjs.com/package/@jswork/taro-envs
npm package: @jswork/tether-select
Description: Styleable select elements built on Tether.
Author: afei
Latest version: 1.0.1

# tether-select
> Styleable select elements built on Tether.

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

## installation
```shell
npm install @jswork/tether-select
```

```conf
.
├── css
│   ├── select-theme-chosen.css
│   ├── select-theme-dark.css
│   └── select-theme-default.css
└── js
    ├── select.js
    └── select.min.js
```

## usage
```js
import 'tether';
import Select from '@jswork/tether-select';

let selectInstance = new Select({
  el: document.querySelector('select#language_id'),
  className: 'select-theme-default'
})
```

## resources
- https://github.com/HubSpot/select

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/tether-select
[download-url]: https://www.npmjs.com/package/@jswork/tether-select
npm package: @jswork/text2kv
Description: Text array to kv list.
Latest version: 1.0.0

# text2kv
> Text array to kv list.

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

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

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

const arr = ['a', 'b', 'c'];
const result = text2kv(arr);

/*
[
  { value: "a", label: "a" },
  { value: "b", label: "b" },
  { value: "c", label: "c" },
]
*/
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/text2kv
[download-url]: https://www.npmjs.com/package/@jswork/text2kv
npm package: @jswork/thunder-url
Description: Download url to thunder url.
Latest version: 1.0.3

# thunder-url
> Download url to thunder url.

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

## installation
```shell
npm install @jswork/thunder-url
```

## usage
```js
import ThunderUrl from '@jswork/thunder-url';

// usage goes here.
// encode:
const url = 'https://www.baidu.com';
const thunderUrl = ThunderUrl.encode(url);
console.log(thunderUrl);

// decode:
const url2 = ThunderUrl.decode(thunderUrl);
console.log(url2);
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/thunder-url
[download-url]: https://www.npmjs.com/package/@jswork/thunder-url
npm package: @jswork/tmpl-type
Description: Get tmpl type.
Latest version: 1.0.0

# tmpl-type
> Get tmpl type.

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

## installation
```shell
npm install @jswork/tmpl-type
```

## usage
```js
import tmplType from '@jswork/tmpl-type';

tmplType('abc is {0}, name is {1}');              // SIMPLE
tmplType('abc is {age}, name is {person.name}');  // SIMPLE
tmplType('abc is ${name}');                       // LITERAL
tmplType('abc is ${{env.home}}');                 // DOUBLE
tmplType('abc is aric.');                         // undefined
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/tmpl-type
[download-url]: https://www.npmjs.com/package/@jswork/tmpl-type
npm package: @jswork/topics2keywords
Description: Sync github topics to npm keywords.
Author: afei
Latest version: 1.0.1

# topics2keywords
> Sync github topics to npm keywords.

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

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

## usage
```shell
# 1. install
npm install -g @jswork/topics2keywords

# 2. go to your project
cd ~/github/topics2keywords

# 3. execute the cli
t2k

# 4. your package.json `keywords` key updated
```

~~~
Usage: t2k [options]

Options:
  -V, --version  output the version number
  -d, --debug    show debug info.
  -h, --help     display help for command
~~~

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/topics2keywords
[download-url]: https://www.npmjs.com/package/@jswork/topics2keywords
npm package: @jswork/transform-computed-interceptor
Description: Transform request computed payload for http schema.
Latest version: 1.0.9

# transform-computed-interceptor
> Transform request computed payload for http schema.

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

## installation
```shell
npm install @jswork/transform-computed-interceptor
```

## usage
```js
import transformComputedInterceptor from '@jswork/transform-computed-interceptor';

const opts = {
  adapter: 'Axios',
  slim: true,
  interceptors: [...interceptorRequest, ...interceptorResponse, ...transformComputedInterceptor],
  transformResponse(inResponse) {
    return inResponse.data;
  },
};

nx.$api = httpSchema(schema, opts);
```

## types
```ts
/// <reference types="@jswork/transform-computed-interceptor/global.d.ts" />
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/transform-computed-interceptor
[download-url]: https://www.npmjs.com/package/@jswork/transform-computed-interceptor
npm package: @jswork/tree-utils
Description: Tree Utils is the library to convert and manipulate with tree-like structures.
Latest version: 1.1.12

# tree-utils
> Tree Utils is the library to convert and manipulate with tree-like structures.

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

## installation
```shell
npm install @jswork/tree-utils
```

## usage
```js
import { findParent, buildTree } from '@jswork/tree-utils';
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/tree-utils
[download-url]: https://www.npmjs.com/package/@jswork/tree-utils
npm package: @jswork/tsconfig
Description: About Shared TypeScript config for my projects.
Author: afeiship
Latest version: 1.0.2

# tsconfig
> About [Shared TypeScript](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html) config for my projects.

## installation
```shell
npm i @jswork/tsconfig
```

## usage
```json
{
  "extends": "@jswork/tsconfig",
  "compilerOptions": {
    "outDir": "dist",
    "target": "ES2021"
  }
}
```
npm package: @jswork/unzip
Description: unzip tools based on zip-lib.
Latest version: 1.0.3

# unzip
> unzip tools based on zip-lib.

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

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

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

// will auto create target folder if not exists.
await unzip({
  source: '__tests__/dist.zip',
  target: '__tests__/test123'
});
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/unzip
[download-url]: https://www.npmjs.com/package/@jswork/unzip
npm package: @jswork/url-open
Description: Url open use anchor tag.
Latest version: 1.0.1

# url-open
> Url open use anchor tag.

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

## installation
```shell
npm install @jswork/url-open
```

## usage
```js
import urlOpen from '@jswork/url-open';

urlOpen('https://www.baidu.com', { target: '_self'});
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/url-open
[download-url]: https://www.npmjs.com/package/@jswork/url-open
npm package: @jswork/url-parse
Description: To parse an URL to object.
Latest version: 1.0.2

# url-parse
> To parse an URL to object.

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

## installation
```shell
yarn add @jswork/url-parse
```

## usage
```js
import urlParse from '@jswork/url-parse';

// URL with protocol
const parsedUrl1 = urlParse('https://www.example.com/path?query=value#hash');
console.log(parsedUrl1.protocol); // 'https:'
console.log(parsedUrl1.hostname); // 'www.example.com'

// URL without protocol (http:// will be added)
const parsedUrl2 = urlParse('www.example.com/another-path');
console.log(parsedUrl2.protocol); // 'http:'
console.log(parsedUrl2.hostname); // 'www.example.com'

// URL with only domain
const parsedUrl3 = urlParse('example.com');
console.log(parsedUrl3.protocol); // 'http:'
console.log(parsedUrl3.hostname); // 'example.com'
console.log(parsedUrl3.pathname); // '/'

// URL with IP address
const parsedUrl4 = urlParse('192.168.1.1/dashboard');
console.log(parsedUrl4.protocol); // 'http:'
console.log(parsedUrl4.hostname); // '192.168.1.1'
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/url-parse
[download-url]: https://www.npmjs.com/package/@jswork/url-parse
npm package: @jswork/url2file
Description: Make url to local file.
Latest version: 1.0.6

# url2file
> Make url to local file.

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

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

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

url2file([
  'https://fasimi.com/',
  'https://fasimi.com/filters/series.html',
  'https://fasimi.com/filters/movie.html'
], { 
  dst: '.tmp', 
  header: ['<!---abc --->'].join('\n'), 
  footer: ['\n<!--footer-->'].join('\n') 
});
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/url2file
[download-url]: https://www.npmjs.com/package/@jswork/url2file
npm package: @jswork/use-active-state
Description: React hook for active state.
Latest version: 1.0.8

# use-active-state
> React hook for active state.

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

## installation
```shell
npm install -S @jswork/use-active-state
```

## usage
  ```tsx
  import React from 'react';
  import useActiveState from '@jswork/use-active-state';
  import styled from 'styled-components';

  const Container = styled.div`
    width: 40%;
    min-width: 400px;
    margin: 30px auto 0;
    padding: 50px;
    border: 1px solid #ccc;
    .row {
      display: flex;
      margin-bottom: 10px;
      strong {
        display: inline-block;
        width: 120px;
      }
    }

    .result {
      background: #eee;
      padding: 20px;
      border: 1px dashed #f60;
      margin-top: 10px;
    }
  `;

  export default (props: any) => {
    const { state, sync, get, $ } = useActiveState(() => {
      console.log('state:', state, get('username'));
    });

    console.log('state:', state);

    return (
      <Container>
        <form autoComplete="off">
          <label className="row">
            <strong>username:</strong>
            <input type="text" name="username" onChange={sync()} />
          </label>
          <label className="row">
            <strong>email:</strong>
            <input type="text" name="email" onChange={sync()} />
          </label>
          <label className="row">
            <strong>password:</strong>
            <input type="password" name="password" onChange={sync()} />
          </label>
          <div className="actions">
            <button type="button">Submit</button>
            <button type="button" onClick={e => {
              $.reset();
            }}>reset</button>
          </div>
        </form>

        <div className="result">
          <pre>
            <code>{JSON.stringify(state, null, 2)}</code>
          </pre>
        </div>
        <div className="result">
          <pre>
            <code>isTouched: {String($.touched())}</code>
          </pre>
        </div>
      </Container>
    );
  };
  ```

## preview
- https://afeiship.github.io/use-active-state/

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/use-active-state
[download-url]: https://www.npmjs.com/package/@jswork/use-active-state
npm package: @jswork/use-define-state
Description: A simple and powerful tool for defining and managing component state in React.
Latest version: 1.0.1

# use-define-state
> A simple and powerful tool for defining and managing component state in React.

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

## installation
```shell
npm install @jswork/use-define-state
```

## usage
```js
import useDefineState from '@jswork/use-define-state';

// usage goes here.
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/use-define-state
[download-url]: https://www.npmjs.com/package/@jswork/use-define-state
npm package: @jswork/use-force-update
Description: React hook use-force-update.
Author: afei
Latest version: 1.0.2

# use-force-update
> React hook use-force-update.

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

## installation
```shell
npm install -S @jswork/use-force-update
```

## usage
  ```js
  import ReactDemokit from '@jswork/react-demokit';
  import React, { useState } from 'react';
  import ReactDOM from 'react-dom';
  import useForceUpdate from '../src/main';
  import './assets/style.scss';

  const ForceComponent = () => {
    const [count, setCount] = useState({ value: 0 });
    const forceUpdate = useForceUpdate();
    return (
      <div className="is-counter">
        <button
          className="button is-primary"
          onClick={(e) => {
            console.log('update value use forceUdpate');
            count.value = count.value + 1;
            forceUpdate();
          }}>
          increase
        </button>
        <span>{count.value}</span>
        <button
          className="button is-danger"
          onClick={(e) => {
            console.log('set count use a new object.');
            setCount({ value: count.value - 1 });
          }}>
          decrease
        </button>
      </div>
    );
  };

  class App extends React.Component {
    render() {
      return (
        <ReactDemokit
          className="p-3 app-container"
          url="https://github.com/afeiship/use-force-update">
          <ForceComponent />
        </ReactDemokit>
      );
    }
  }

  ReactDOM.render(<App />, document.getElementById('app'));
  ```

## documentation
- https://afeiship.github.io/use-force-update/


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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/use-force-update
[download-url]: https://www.npmjs.com/package/@jswork/use-force-update
npm package: @jswork/use-mounted
Description: React hook to check if the component is still mounted.
Latest version: 1.0.1

# use-mounted
> React hook to check if the component is still mounted.

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

## installation
```shell
npm install @jswork/use-mounted
```

## usage
```js
import React, { useState, useEffect } from 'react';
import useMounted from '@jswork/use-mounted';
import myService from './myService';
import Loading from './Loading';
import ResultsView from './ResultsView';

const MySecureComponent = () => {
  const isMounted = useMounted();
  const [results, setResults] = useState(null);

  useEffect(() => {
    myService.getResults().then(val => {
      if (isMounted.current) {
        setResults(val);
      }
    });
  }, [myService.getResults]);

  return results ? <ResultsView results={results} /> : <Loading />;
};

export default MySecureComponent;
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/use-mounted
[download-url]: https://www.npmjs.com/package/@jswork/use-mounted
npm package: @jswork/use-proxy-state
Description: A simple proxy state for react.
Latest version: 1.0.1

# use-proxy-state
> A simple proxy state for react.

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

## installation
```shell
npm install @jswork/use-proxy-state
```

## usage
```js
import useProxyState from '@jswork/use-proxy-state';

// usage goes here.
```

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

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/use-proxy-state
[download-url]: https://www.npmjs.com/package/@jswork/use-proxy-state
npm package: @jswork/ushell-module-ab
Description: Ushell module for apache ab.
Latest version: 1.0.2

# ushell-module-ab
> Ushell module for apache ab.

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

## installation
```shell
npm i -S @jswork/ushell-module-ab
```

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/ushell-module-ab
[download-url]: https://www.npmjs.com/package/@jswork/ushell-module-ab
npm package: @jswork/ushell-module-acme
Description: Acme for ushell module.
Latest version: 1.0.0

# ushell-module-acme
> Acme for ushell module.

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

## installation
```shell
npm i -S @jswork/ushell-module-acme
```

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

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

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

[download-image]: https://img.shields.io/npm/dm/@feizheng/ushell-module-acme
[download-url]: https://www.npmjs.com/package/@feizheng/ushell-module-acme
npm package: @jswork/ushell-module-autojump
Description: Unix like shell module for autojump.
Author: afei
Latest version: 1.0.2

# ushell-module-autojump
> Unix like shell module for autojump.

## installation
```shell
npm i -S @jswork/ushell-module-autojump
```

## how to find autojump
+ whereis autojump.sh
+ MAC OSX:
```bash
brew install autojump
## 如果没有这个，下面的 link 会报错
cd /usr/local && sudo chown -R $(whoami) bin etc include lib sbin share var Frameworks
brew link autojump

## 这个已经在 ushell-module-autojump 里处理过了
[[ -s $(brew --prefix)/etc/profile.d/autojump.sh ]] && . $(brew --prefix)/etc/profile.d/autojump.sh
```

+ centos:
```bash
yum install autojump;
source /etc/profile.d/autojump.sh;
echo '. /usr/share/autojump/autojump.sh'>>~/.bashrc;
```

+ ubuntu:
```bash
apt-get install autojump;

## add to .bashrc:
source /usr/share/autojump/autojump.sh;
```

## resources
- https://stackoverflow.com/questions/44195496/homebrew-could-not-symlink-usr-local-share-man-man7-is-not-writable
- https://blog.csdn.net/natural_story/article/details/50764354
- https://www.barretlee.com/blog/2015/03/30/autojump-in-mac/
npm package: @jswork/ushell-module-aws
Description: Aws cli for ushell module.
Latest version: 1.0.0

# ushell-module-aws
> Aws cli for ushell module.

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

## installation
```shell
npm i -S @jswork/ushell-module-aws
```

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/ushell-module-aws
[download-url]: https://www.npmjs.com/package/@jswork/ushell-module-aws
npm package: @jswork/ushell-module-base
Description: Unix like shell base module.
Author: afei
Latest version: 1.0.77

# ushell-module-base
> Unix like shell base module.

## installation
```shell
npm i @jswork/ushell-module-base
```

## dependencies
```shell
npm i -g del-cli
npm i -g ntl
npm i -g @jswork/git-url-cli
npm i -g npm-install-peers publish-preview yarn
```
npm package: @jswork/ushell-module-bash-completion
Description: Bash completion.
Latest version: 1.0.0

# ushell-module-bash-completion
> Bash completion.

## installation
```shell
npm i @jswork/ushell-module-bash-completion
```

## resources
- https://www.jianshu.com/p/9964ec6717c8
- http://wppurking.github.io/2013/03/03/wei-mac-os-tian-jia-bash-completion.html
npm package: @jswork/ushell-module-cra
Description: Ushell module for create-react-app.
Latest version: 1.0.2

# ushell-module-cra
> Ushell module for create-react-app.

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

## installation
```shell
npm i -S @jswork/ushell-module-cra
```

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

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

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

[download-image]: https://img.shields.io/npm/dm/@jswork/ushell-module-cra
[download-url]: https://www.npmjs.com/package/@jswork/ushell-module-cra
npm package: @jswork/ushell-module-dns
Description: Dns ushell module.
Latest version: 1.0.0

# ushell-module-dns
> Dns ushell module.

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

## installation
```shell
npm i -S @jswork/ushell-module-dns
```

## notes
```conf
nameserver 1.1.1.1
nameserver 114.114.114.114
nameserver 9.9.9.9
nameserver 8.8.8.8
nameserver 223.5.5.5
```

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

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

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

[download-image]: https://img.shields.io/npm/dm/@feizheng/ushell-module-dns
[download-url]: https://www.npmjs.com/package/@feizheng/ushell-module-dns
npm package: @jswork/ushell-module-docker
Description: Unix like shell module for docker.
Latest version: 1.0.7

# ushell-module-docker
> Unix like shell module for docker.

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

## installation
```shell
npm i -S @jswork/ushell-module-docker
```

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

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

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

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