open-index/open-npm huggingface dataset:
npm package: @nhsuk/user-feedback-form
Description: A form for collecting user feedback
Author: mike@mikemonteith.com
Latest version: 2.2.4

# User Feedback Form 

A javascript plugin to add a user feedback form to your website.

You will also need a backend data store. See [user-feedback-store](https://github.com/nhsuk/user-feedback-store).

## Quickstart

### npm

Install from npm
```bash
npm install @nhsuk/user-feedback-form
```

Use script in your javascript build

```js
import userFeedbackForm from '@nhsuk/user-feedback-form';

userFeedbackForm({
    cssSelector: "#my-div-id",
    formEndpoint: "https://example.com/my-api-endpoint/",
    enableTextResponse: false,
});
```

### script

If you do not have a node-based javascript frontend build, you can use the minified javascript distribution.

The latest javascript file can be found in github releases https://github.com/nhsuk/user-feedback-form/releases

```html
<!-- in the html <head> -->
<script src="./user-feedback-form.min.js" defer></script>

...

<!-- where you want the form to appear -->
<div id="nhsuk-user-feedback-form" data-form-endpoint="https://example.com/endpoint/"></div>
```

#### Attributes

`data-form-endpoint` - (required) An HTTP data store endpoint to POST data to. Include the trailing slash
`data-enable-text-response` - (optional) Include to enable text responses on the feedback form.

## API

- `userFeedbackForm(settings)`

Adds the user feedback form inside a `<div>` element. `settings.cssSelector` will be used to select the div from the DOM.

`settings` should be an object containing:

* `formEndpoint` - (required) An HTTP data store endpoint to POST data to.
* `cssSelector` - (optional) HTML selector insert the form into. `'#nhsuk-user-feedback-form'` by default.

### Events

An `onFeedback` event is emitted when the user gives satisfied or unsatisfied feedback by clicking on the yes or no buttons.

You can listen to this event to trigger custom javascript code.

```js
// Listen to the event on the container div
document.querySelector("#nhsuk-user-feedback-form").addEventListener('onFeedback', (event) => {
  // custom code using the boolean `isSatisfied` value.
  console.log(event.detail.isSatisfied)
});
```

## Contributing

### Development

Run `npm install` followed by `npm start` to start a development server. A test site will be available at http://localhost:8080/tests/example/

### Style

For now, this app is very simple, so we don't use any libraries like Vue or React.
The `App` class in `src/index.js` represents the app as a whole.
Each screen has it's own class which can be instantiated and rendered with the `render` method when the screen should be displayed.
The screen classes are responsible for screen-level interactions such as rendering, attaching event listeners and input validation.

Run `npm run lint` to run eslint code linting.

### Tests

Run `npm test` to run all tests.
npm package: @nhtacc/xchain-bitcoin
Description: Custom Bitcoin client NH and utilities used by XChainJS clients
Author: XChainJS
Latest version: 0.18.5

# `@xchainjs/xchain-bitcoin`

## Modules

- `client` - Custom client for communicating with Bitcoin using [BIP39](https://github.com/bitcoinjs/bip39) [bitcoinjs-lib](https://github.com/bitcoinjs/bitcoinjs-lib) and [WIF](https://github.com/bitcoinjs/wif)

## Installation

```
yarn add @xchainjs/xchain-bitcoin
```

Following peer dependencies have to be installed into your project. These are not included in `@xchainjs/xchain-bitcoin`.

```
yarn add @xchainjs/xchain-client @xchainjs/xchain-crypto @xchainjs/xchain-util axios bitcoinjs-lib wif
```

## Documentation

### [`xchain bitcoin`](http://docs.xchainjs.org/xchain-client/xchain-bitcoin/)
[`How xchain-bitcoin works`](http://docs.xchainjs.org/xchain-client/xchain-bitcoin/how-it-works.html)\
[`How to use xchain-bitcoin`](http://docs.xchainjs.org/xchain-client/xchain-bitcoin/how-to-use.html)


## Service Providers

This package uses the following service providers:

| Function                    | Service     | Notes                                                                            |
| --------------------------- | ----------- | -------------------------------------------------------------------------------- |
| Balances                    | Sochain     | https://sochain.com/api#get-balance                                              |
| Transaction history         | Sochain     | https://sochain.com/api#get-display-data-address, https://sochain.com/api#get-tx |
| Transaction details by hash | Sochain     | https://sochain.com/api#get-tx                                                   |
| Transaction fees            | Bitgo       | https://app.bitgo.com/docs/#operation/v2.tx.getfeeestimate                       |
| Transaction broadcast       | Sochain     | https://sochain.com/api#send-transaction                                         |
| Explorer                    | Blockstream | https://blockstream.info                                                         |

Sochain API rate limits: https://sochain.com/api#rate-limits (300 requests/minute)

Bitgo API rate limits: https://app.bitgo.com/docs/#section/Rate-Limiting (10 requests/second)
npm package: @nhtera/bera-agent-kit
Description: Open-source agent kit for interacting with Berachain protocols
Author: Webera Finance
Latest version: 1.1.1

# Bera Agent Kit 🐻🚀

Open-source agent kit for interacting with Berachain protocols using AI and blockchain technologies.

## 🌟 Features

- 🤖 AI-powered blockchain interaction
- 🔗 Seamless integration with Berachain
- 💻 TypeScript support
- 🛠️ Multiple blockchain tools and utilities
- 🔌 Model Context Protocol (MCP) support for integration with Claude and other LLMs

## 📦 Installation

```bash
yarn install bera-agent-kit
```

## 🚀 Quick Start
See [here](./guides/usage-guide.md)

### Using with Model Context Protocol

```typescript
import { createViemWalletClient, createViemPublicClient, getMcpTools } from "bera-agent-kit";

// Initialize clients
const walletClient = createViemWalletClient();
const publicClient = createViemPublicClient(false); // false for mainnet

// Get MCP tools
const { tools, toolHandler } = await getMcpTools(
  configChain,
  walletClient,
  publicClient
);

// Use with your MCP server
// See examples/mcp-server.ts for a complete example
```

## 🔧 Prerequisites

- Node.js 18+
- OpenAI API Key
- Berachain Wallet

## 📚 Documentation

Full documentation available in the [docs](./docs) directory.

## 🤝 Contributing

See [CONTRIBUTING.md](./guides/contribute-guide.md)

## 📄 License

MIT License

## 🐞 Issues

Report issues on our [GitHub Issues](https://github.com/Webera-Finance/bera-agent-kit/issues)
npm package: @nhtio/adonis-kyoo
Description: An Adonis plugin which provides a unified SDK for interacting with multiple types of queue brokers
Author: Jak Giveon
Latest version: 1.20260410.0

# Adonis Kyo͞o

An Adonis plugin which provides a unified SDK for interacting with multiple types of queue brokers

For more information, see the [official documentation](https://adonis.kyoo.nht.io)
npm package: @nhtio/adonis-maxmind
Description: An Adonis plugin which provides a consistent API for interacting with Maxmind GeoIP functionality
Author: Jak Giveon
Latest version: 1.20260220.0

# Adonis Maxmind

An Adonis plugin which provides a consistent API for interacting with Maxmind GeoIP functionality

For more information, see the [official documentation](https://adonis-maxmind.nht.io)
npm package: @nhtio/config
Description: Application Configuration Service Provider
Author: Jak Giveon
Latest version: 1.20240401.0

# NestMTX / Config

Utilities for creating and working with Environmental Variable based configurations.

## Install

Using your preferred package manager, you can install `@nhtio/config`

```shell
npm i @nhtio/config
```

```shell
yarn add @nhtio/config
```
npm package: @nhtio/create-ts-app-starter
Description: A project which can be used to create scripts / services
Author: Jak Giveon
Latest version: 1.20250704.0

# Typescript Script and Application Starter

A starter template which can be used as a quick and easy starter for getting a project up and running.

## Usage

From your command line, run:

```bash
 npm init @nhtio/ts-app-starter@latest
```

Provide the script with the answers and let it create the folder and initialise the dependencies for you

## Customization

You can search and replace all instances of `@example/script` within the project, but the main files which should be customized are:

* `./package.json`
* `./vite.config.mts`
* `./src/services/cli.ts`

These are the main files which handle the naming of the project. Additionally, you can customize the `./src/env.ts` file which is used to provide a validated and sanitized version of the environmental variables.

## Example Dockerfile

```dockerfile
ARG IMAGE_PREFIX=
ARG NODE_IMAGE=node:22-alpine
FROM ${IMAGE_PREFIX}${NODE_IMAGE} as base

##################################################
# Setup the Base Container
##################################################
ENV LC_ALL=C.UTF-8
RUN apk --no-cache add dumb-init postgresql-dev
RUN mkdir -p /home/node/app && chown node:node /home/node/app
WORKDIR /home/node/app
USER node

##################################################
# Setup Dependencies & Build
##################################################
FROM base AS build
ENV NODE_ENV=development
USER root
RUN apk --no-cache add python3 g++ make
COPY --chown=node:node ./package*.json ./
COPY --chown=node:node ./npm* ./
COPY --chown=node:node ./yarn* ./
COPY --chown=node:node ./.yarn* ./
RUN yarn install --frozen-lockfile --production=false
COPY --chown=node:node . .
RUN yarn build
RUN yarn package
USER node

##################################################
# Wrap for Production
##################################################
FROM base AS production
ARG VERSION=master
ENV NODE_ENV=production
COPY --chown=node:node --from=build /home/node/app/dist ./package*.json ./
COPY --chown=node:node --from=build /home/node/app/dist ./npm* ./
COPY --chown=node:node --from=build /home/node/app/dist ./yarn* ./
COPY --chown=node:node --from=build /home/node/app/dist ./.yarn* ./
USER root
RUN apk --no-cache add python3 g++ make
USER node
RUN yarn install --frozen-lockfile --production
USER root
RUN apk del python3 g++ make
COPY --chown=node:node --from=build /home/node/app/dist .
USER node
CMD [ "dumb-init", "node", "index.mjs" ]
```
npm package: @nhtio/create-ts-lib-starter
Description: A project which can be used to create libraries
Author: Jak Giveon
Latest version: 1.20260407.0

# Typescript Script Library Starter

A starter template which can be used as a quick and easy starter for getting a project up and running.

## Usage

From your command line, run:

```bash
 npm init @nhtio/ts-lib-starter
```

Provide the script with the answers and let it create the folder and initialise the dependancies for you

## Customization

You can search and replace all instances of `@example/lib` within the project, but the main files which should be customized are:

* `./package.json`
* `./vite.config.mts`
npm package: @nhtio/create-vue-lib-starter
Description: An example Vue + TS Library
Author: Jak Giveon
Latest version: 1.20250605.6

# Vue + Typescript Library Starter

A starter template which can be used as a quick and easy starter for getting a project up and running.

## Usage

From your command line, run:

```bash
npm init @nhtio/vue-lib-starter
```

Provide the script with the answers and let it create the folder and initialise the dependancies for you

## Customization

You can search and replace all instances of `@example/vue-lib` within the project, but the main files which should be customized are:

* `./package.json`
* `./vite.config.mts`
npm package: @nhtio/crows-nest
Description: Provides the "safe" full screen area that can be used without being cut off by the shape of the display or browser UI elements.
Author: Jak Guru
Latest version: 1.20250408.1

# Crow's Nest

Provides the safe full screen area that can be used without being cut off by the shape of the display or browser UI elements.

For more information, see the [official documentation](https://crows-nest.nht.io)
npm package: @nhtio/hooks
Description: A cross-environment (browser/node) simple yet effective implementation for executing hooks around an event based on @poppinss/hooks
Author: Jak Giveon
Latest version: 1.20251213.1

# @nhtio/hooks

A cross-environment (browser/node) simple yet effective implementation for executing hooks around an event based on [@poppinss/hooks](https://github.com/poppinss/hooks)

For more information, see the [official documentation](https://hooks.nht.io)
npm package: @nhtio/japa-junit-reporter
Description: Custom reporter for Japa testing framework to save test's summary in JUnix XML format
Author: Danil Makarov
Latest version: 1.20250620.0

# Japa JUnit Reporter

A reporter for the Japa test runner which outputs XML in JUnit format

For more information, see the [official documentation](https://japa-junit-reporter.nht.io)
npm package: @nhtio/lucid-resourceful
Description: A decorator-driven AdonisJS library that lets you annotate Lucid ORM models with metadata to automatically generate CRUD controllers, validation rules, OpenAPI schemas, and a unified query interface.
Author: Jak Giveon
Latest version: 1.20260401.0

# @nhtio/lucid-resourceful

A decorator-driven AdonisJS library that lets you annotate Lucid ORM models with metadata to automatically generate CRUD controllers, validation rules, OpenAPI schemas, and a unified query interface.

For more information, see the [official documentation](https://lucid-resourceful.nht.io)
npm package: @nhtio/middleware
Description: A cross-environment (browser/node) implementation of the chain of responsibility design pattern based on @poppinss/middleware
Author: Jak Giveon
Latest version: 1.20251213.1

# @nhtio/middleware

A cross-environment (browser/node) implementation of the chain of responsibility design pattern based on [@poppinss/middleware](https://github.com/poppinss/middleware)

For more information, see the [official documentation](https://middleware.nht.io)
npm package: @nhtio/p2pbus
Description: A peer-to-peer event emitter for multiple nodes on the same network
Author: Jak Giveon
Latest version: 1.20250421.0

# @nhtio/p2pbus

A peer-to-peer event emitter for multiple nodes on the same network

For more information, see the [official documentation](https://p2pbus.nht.io)
npm package: @nhtio/tiny-typed-emitter
Description: A zero-dependancy, web-safe, strongly typed, tiny event emitter
Author: Jak Giveon
Latest version: 1.20251213.1

# @nhtio/tiny-typed-emitter

A zero-dependancy, web-safe, strongly typed, tiny event emitter

For more information, see the [official documentation](https://tiny-typed-emitter.nht.io)
npm package: @nhtio/vue-re-active-record
Description: Vue plugin for a Reactive Active Record ORM for Web Browsers and Web Workers
Author: Jak Giveon
Latest version: 1.20251213.0

# @nhtio/vue-re-active-record

Vue plugin for a Reactive Active Record ORM for Web Browsers and Web Workers

For more information, see the [official documentation](https://vue-re-active-record.nht.io)
npm package: @nhtio/web-encryption
Description: A portable encryption library using aes for use within a web context such as a browser window, web worker or service worker.
Author: Jak Giveon
Latest version: 1.20250425.0

# @nhtio/web-encryption

A portable encryption library using aes for use within a web context such as a browser window, web worker or service worker.

For more information, see the [official documentation](https://web-encryption.nht.io)
npm package: @nhtio/web-re-active-record
Description: A Reactive Active Record ORM for Web Browsers and Web Workers
Author: Jak Giveon
Latest version: 1.20250531.0

# @nhtio/web-re-active-record

A Reactive Active Record ORM for Web Browsers and Web Workers

For more information, see the [official documentation](https://web-re-active-record.nht.io)
npm package: @nhtio/web-reactive-state
Description: Provides a syncronized state storage which is accessible in both browser and web worker contexts
Author: Jak Giveon
Latest version: 1.20251110.0

# @nhtio/web-reactive-state

Provides a syncronized state storage which is accessible in both browser and web worker contexts

For more information, see the [official documentation](https://web-reactive-state.nht.io)
npm package: @nhtio/web-serialization
Description: Provides a mechanism to serialize and deserialize data within a web context such as a browser window, web worker or service worker.
Author: Jak Giveon
Latest version: 1.20250425.1

# @nhtio/web-serialization

Provides a mechanism to serialize and deserialize data within a web context such as a browser window, web worker or service worker.

For more information, see the [official documentation](https://web-serialization.nht.io)
npm package: @nhtranngoc/react-native-pedometer-ios
Description: Pedometer for IOS to track steps count.
Author: Nam Tran
Latest version: 1.1.1

# react-native-pedometer-ios

React Native pedometer for versions >=0.60 updated for pod support. The module is CMPedometer wrapper. More info about CMPedometer can be found in https://developer.apple.com/library/ios/documentation/CoreMotion/Reference/CMPedometer_class/

## Getting started

`$ npm install @nhtranngoc/react-native-pedometer-ios --save`

### Mostly automatic installation

`$ react-native link @nhtranngoc/react-native-pedometer-ios`

`$ cd ios && pod install`

## Usage
```javascript
import PedometerIos from 'react-native-pedometer-ios';

// TODO: What to do with the module?
// start tracking from current time
var now = new Date()
PedometerIos.startPedometerUpdatesFromDate(now.getTime())

// query pedometer data from selected date to other selected date
const startDate = new Date(2019)
startDate.setHours(0,0,0,0)
const endDate = new Date()
PedometerIos.queryPedometerDataBetweenDates(startDate.getTime(), endDate.getTime(), (error, pedometerData) => {
  // do something with pedometer data
})

// determine pedometer availability
PedometerIos.isStepCountingAvailable(function(error, isAvailable) {
// do something
})

PedometerIos.isDistanceAvailable(function(error, isAvailable) {
// do something
})

PedometerIos.isFloorCountingAvailable(function(error, isAvailable) {
// do something
})

PedometerIos.isPaceAvailable(function(error, isAvailable) {
// do something
})

PedometerIos.isCadenceAvailable(function(error, isAvailable) {
// do something
})

PedometerIos.isPedometerEventTrackingAvailable(function(error, isAvailable) {
// do something
});

PedometerIos.authorizationStatus(function(error, status) {
// do something
/*
  Possible status values:
  -- 
  - "denied"
  - "authorized"
  - "restricted"
  - "not_determined"
  - "not_available" (on iOS < 11.0)
 */
});

// stop pedometer updates
PedometerIos.stopPedometerUpdates()
```
npm package: @nhui/cn
Description: Utililty for combining tailwind classes using clsx and tailwind-merge
Author: Nathan Hui
Latest version: 0.1.0

# Cn

Util for merging tailwind classes with clsx and tailwind-merge.

## Install

```
$ npm install --save @nhui/cn
```

## Usage

```js
  import cn from "@nhui/cn"
  // or
  import {cn} from "@nhui/cn"

  cn("bg-zinc-50 text-zinc-100", true && "bg-zinc-100", false && "text-zinc-50")
  //=> "text-zinc-100 bg-zinc-100"
```
npm package: @nhuttm/react-dropbox-chooser
Description: Simple react wrapper for dropbox chooser API
Author: Sviatoslav Shmatko
Latest version: 0.0.5

React dropbox chooser
============
Simple react wrapper for [Dropbox Chooser API](https://www.dropbox.com/developers/chooser)

Installation 
============
```
npm install react-dropbox-chooser
```

Usage
=====
```
<DropboxChooser 
    appKey={'your-uniq-app-key'}
    success={files => this.onSuccess(files)}
    cancel={() => this.onCancel()}
    multiselect={true}
    extensions={['.mp4']} >
    <div className="dropbox-button">Click me!</div>        
</DropboxChooser>
```

Demo 
====
```
npm install
npm start
open http://localhost:8080
```

### [How to create new app?](https://www.dropbox.com/developers/apps/create)

### Feel free to feel free
npm package: @nhvbeauty/tpl
Description: Pacote de integração com a API da TPL
Author: Bruno França
Latest version: 0.3.0

# @nhvbeauty/tpl

SDK TypeScript para integração com a API da TPL (`https://oms.tpl.com.br/api`).

## Instalação

```bash
npm install @nhvbeauty/tpl
```

## Uso rápido

```ts
import { Tpl } from '@nhvbeauty/tpl'

const client = new Tpl()

const auth = await client.auth.login({
  apikey: 'SUA_API_KEY',
  token: 'SEU_TOKEN',
  email: 'seu-email@dominio.com',
})

const authedClient = new Tpl(auth.token)
```

## Cliente

```ts
const client = new Tpl(authToken?, baseUrl?)
```

- `authToken` (opcional): token retornado em `auth.login`.
- `baseUrl` (opcional): padrão `https://oms.tpl.com.br/api`.

## Módulos disponíveis

### `auth`

#### `login(body)`

Endpoint: `POST /get/auth`

```ts
const result = await client.auth.login({
  apikey: 'SUA_API_KEY',
  token: 'SEU_TOKEN',
  email: 'seu-email@dominio.com',
})
```

### `orders`

#### `find(params)`

Endpoint: `POST /get/orderdetail`

Aceita um dos formatos:
- `{ id: number | bigint }`
- `{ number: string }`

```ts
const byId = await client.orders.find({ id: 12345 })
const byNumber = await client.orders.find({ number: 'PED-12345' })
```

### `shipping`

#### `validateZipcode(params)`

Endpoint: `POST /get/valid-zipcode`

Payload:
- `{ zipcode: string }`

```ts
const zipcode = await client.shipping.validateZipcode({
  zipcode: '13270000',
})
```

Resposta de sucesso:

```json
{
  "code": 200,
  "message": "Sucesso",
  "dados": [
    {
      "cidade": "Valinhos",
      "logradouro": "",
      "bairro": "Centro",
      "uf": "SP"
    }
  ]
}
```

Quando o CEP não é encontrado, a API responde `404` (ex.: `{ "code": 404, "message": "CEP nao encontrado" }`) e o SDK lança erro.

#### `getFreight(params)`

Endpoint: `POST /get/freight`

Payload nesta versão:
- `identification?: string`
- `to: string`
- `weight: number` (gramas)
- `value: number` (valor do pedido sem frete)

```ts
const freight = await client.shipping.getFreight({
  identification: '12345678901',
  to: '13270000',
  weight: 1200,
  value: 199.9,
})
```

Resposta (exemplo real):

```json
[
  {
    "shipmentCompany": "Loggi (4 dias)",
    "deadline": 4,
    "value": "9.90",
    "originalvalue": "8.20",
    "region": "INTERIOR",
    "observation": "",
    "safe": 0,
    "cost": 0,
    "safecost": 0,
    "role": "0",
    "extra": 0,
    "extraWeight": "0",
    "extraValue": "0.00",
    "icms": 0.88,
    "iss": "0",
    "aplicou": 0,
    "weightVolume": 15,
    "weightm3": -1,
    "shipmentId": "3",
    "state": "SP",
    "cubageFactor": "167.00"
  }
]
```

Observação: no retorno de frete, campos numéricos podem vir como `string` ou `number` dependendo da regra aplicada pela API.

## Tratamento de erros

Para respostas HTTP fora de `2xx`, o SDK lança erro contendo:
- `message`
- `statusCode`
- `response` (quando retornado pela API)

```ts
try {
  await client.shipping.validateZipcode({ zipcode: '00000000' })
}
catch (error: any) {
  console.error(error.statusCode)
  console.error(error.response)
}
```
npm package: @nhvu95/scully-plugin-emoji
Description: A Scully emoji plugin for convert github emoji syntax to emoji icon syntax.
Author: Vue Nguyen
Latest version: 1.2.0

# scully-plugin-emoji

The `scully-plugin-emoji` is a `postProcessByHtml` plugin for [Scully](http://scully.io/) that convert the emoji syntax of Github to Emoji Syntax.
It only converts content in the tag `<p>` of `Html`:

>Don't overestimate me! I don't remember and know all these **:grinning:**

Will convert to

>Don't overestimate me! I don't remember and know all these 😀

## 📦 Installation

To install this plugin with `npm` run

```
$ npm install npm i @nhvu95/scully-plugin-emoji --save-dev
```

peerDependencies is required:

```
$ npm install @types/jsdom --save-dev
```

## Usage

Add plugin to `scully.*.config.ts` config

```typescript
import { getEmojiPlugin } from "@nhvu95/scully-plugin-emoji";
const EmojiPlugin = getEmojiPlugin();

export const config: ScullyConfig = {
    projectRoot: "./src",
    projectName: "portfolio",
    distFolder: "./dist/portfolio/browser",
    outDir: "./dist/static",
    routes: {
        "/blog/:slug": {
            type: "contentFolder",
            slug: {
                folder: "./blog",
            },
            postRenderers: [EmojiPlugin],
        },
    },
};

```

You also can custom your icon sets and regex to detect icons by using `setPluginConfig` and by using a config object like the below interface. If you don't config your icons set, the default icon set will be used.

```typescript
export interface EmojiPluginConfig {
  emojiList?: Record<string, string>;
  regex?: RegExp;
}
```

For example in `scully.*.config.ts`:

```typescript
import { setPluginConfig } from "@scullyio/scully";

setPluginConfig(EmojiPlugin, {
    emojiList: {grinning: `=]]~`}
});
```
npm package: @nhvu95/scully-plugin-lazydisplay
Description: A Scully plugin to help render only scully-content items which display on the screen, and hide the others.
Author: Vue Nguyen
Latest version: 1.1.0

# scully-plugin-lazydisplay

The `scully-plugin-lazydisplay` is a `postProcessByHtml` plugin for [Scully](http://scully.io/) that help scully display only the items on screen, the others will be hidden.

For example:
* 📦 Usage(#usage)

This plugin helps `usage` above scroll to the `## Usage` bellow


## 📦 Installation

To install this plugin with `npm` run

```
$ npm install @nhvu95/scully-plugin-lazydisplay --save-dev
```

peerDependencies is required:

```
$ npm install @types/jsdom --save-dev
```

## Usage

Add plugin to `scully.*.config.ts` config

```typescript
import { getLazyDisplay } from "@nhvu95/scully-plugin-lazydisplay";

const LazyDisplay = getLazyDisplay();

export const config: ScullyConfig = {
    projectRoot: "./src",
    projectName: "portfolio",
    distFolder: "./dist/portfolio/browser",
    outDir: "./dist/static",
    routes: {
        "/blog/:slug": {
            type: "contentFolder",
            slug: {
                folder: "./blog",
            },
            postRenderers: [LazyDisplay],
        },
    },
};

```

Add `id="scully-content"` to <scully-content> parent

```html
<div class="s-content" id="scully-content">
    <scully-content></scully-content>
</div>
```

And in the component

```typescript
declare var loadLazyDisplay;
@Component({
    selector: "app-blog",
    templateUrl: "./blog.component.html",
    styleUrls: ["./blog.component.scss"]
})
export class BlogComponent implements OnInit, AfterViewInit {
    ngAfterViewInit(): void {
        setTimeout(() => {
            loadLazyDisplay();
        }, 0);
    }
}
```
npm package: @nhvu95/scully-plugin-scroll2section
Description: A Scully plugin to help <a> tag can smooth route to a section in a static site.
Author: Vue Nguyen
Latest version: 1.0.6

# scully-plugin-scroll2section

The `scully-plugin-scroll2section` is a `postProcessByHtml` plugin for [Scully](http://scully.io/) that help `<a>` tag can route and scroll to a section in current static site.

For example:
* 📦 Usage(#usage)

This plugin helps `usage` above scroll to the `## Usage` bellow


## 📦 Installation

To install this plugin with `npm` run

```
$ npm install @nhvu95/scully-plugin-scroll2section --save-dev
```

peerDependencies is required:

```
$ npm install @types/jsdom --save-dev
```

## Usage

Add plugin to `scully.*.config.ts` config

```typescript
import { getScrollToSection } from "@nhvu95/scully-plugin-scroll2section";

const ScrollToSection = getScrollToSection();

export const config: ScullyConfig = {
    projectRoot: "./src",
    projectName: "portfolio",
    distFolder: "./dist/portfolio/browser",
    outDir: "./dist/static",
    routes: {
        "/blog/:slug": {
            type: "contentFolder",
            slug: {
                folder: "./blog",
            },
            postRenderers: [ScrollToSection],
        },
    },
};

```
npm package: @nhz.io/abstract-resource-manager
Description: AbstractResourceManager Class
Author: Ishi Ruy
Latest version: 0.1.1

# AbstractResourceManager Class

[![Travis Build][travis]](https://travis-ci.org/nhz-io/nhz-io-abstract-resource-manager)
[![NPM Version][npm]](https://www.npmjs.com/package/@nhz.io/abstract-resource-manager)

## Install

```bash
npm i -S @nhz.io/abstract-resource-manager
```

## Usage
```js
const AbstractResourceManager = require('@nhz.io/abstract-resource-manager')

class Manager extends AbstractResourceManager {
  /* Implement the methods */
}

...
```

## Literate Source

### Manager

    class AbstractResourceManager

#### Start managing resource

      manage: (resource) ->

        return unless resource = @register resource

        job = @getJob resource

        if job

          @stop job, resource if @shouldStop job, resource

          config = @needUpgrade job, resource

          job = @upgrade job, config if config

          @start job, resource if @shouldStart job, resource

> Return the resource

        resource

#### Stop managing resouce

      unmanage: (resource) ->

        return unless resource = @unregister resource

        job = @getJob resource

        if job

          @stop job, resource if @shouldStop job, resource

          config = @needDowngrade job, resource

          job = @downgrade job, config if config

          @start job, resource if @shouldStart job, resource

> Return the resource

        resource

#### Unimplemented methods with *sane* defaults

      register: (resource) -> resource

      unregister: (resource) -> resource

      getJob: (resource) -> null

      shouldStart: (job, resource) -> false

      shouldStop: (job, resource) -> false

      needUpgrade: (job, resource) -> null

      needDowngrade: (job, resource) -> null

      upgrade: (job, config) -> null

      downgrade: (job, config) -> null

      start: (job, resource) -> job

      stop: (job, resource) -> job

    module.exports = AbstractResourceManager

## Tests

    test = require 'tape-async'

    test 'AbstractResourceManager constructor', (t) ->
      t.plan 1

      manager = new AbstractResourceManager

      t.ok manager instanceof AbstractResourceManager

## Version 0.1.1

## License [MIT](LICENSE)

[travis]: https://img.shields.io/travis/nhz-io/nhz-io-abstract-resource-manager.svg?style=flat
[npm]: https://img.shields.io/npm/v/@nhz.io/abstract-resource-manager.svg?style=flat
npm package: @nhz.io/arm
Description: Abstract Resource Manager
Author: Ishi Ruy
Latest version: 1.0.3

# Abstract Resource Manager

[![Travis Build][travis]](https://travis-ci.org/nhz-io/nhz-io-arm)
[![Coverage][coveralls]](https://coveralls.io/github/nhz-io/nhz-io-arm)
[![NPM Version][npm]](https://www.npmjs.com/package/@nhz.io/arm)

## Install

```bash
npm i -S @nhz.io/arm
```

## Usage
```js
const { Resource, Registry, Manager } = require('@nhz.io/arm')

...

```

## Version 1.0.3

## License [MIT](LICENSE)

[travis]: https://img.shields.io/travis/nhz-io/nhz-io-arm.svg?style=flat
[npm]: https://img.shields.io/npm/v/@nhz.io/arm.svg?style=flat
[coveralls]: https://coveralls.io/repos/github/nhz-io/nhz-io-arm/badge.svg?branch=v1.0.3
npm package: @nhz.io/autoindex
Description: Autoindex directory (require) with custom loader
Author: Ishi Ruy
Latest version: 1.0.0

<h1 align="center">@nhz.io/autoindex</h1>

<p align="center">
  <a href="https://npmjs.org/package/@nhz.io/autoindex">
    <img src="https://img.shields.io/npm/v/@nhz.io/autoindex.svg?style=flat"
         alt="NPM Version">
  </a>

  <a href="https://www.bithound.io/github/nhz-io/autoindex">
    <img src="https://www.bithound.io/github/nhz-io/autoindex/badges/score.svg"
         alt="Bithound Status">
  </a>

  <a href="https://github.com/nhz-io/autoindex/blob/master/LICENSE">
    <img src="https://img.shields.io/github/license/nhz-io/autoindex.svg?style=flat"
         alt="License">
  </a>

  <a href="https://npmjs.org/package/@nhz.io/autoindex">
  <img src="http://img.shields.io/npm/dm/@nhz.io/autoindex.svg?style=flat"
  alt="Downloads">
  </a>  
</p>

<h3 align="center">Autoindex directory (require) with custom loader<h2>

## Install
```shell
npm i -S @nhz.io/autoindex
```

## Usage
```javascript
const ai = require('@nhz.io/autoindex')

module.exports = ai(__dirname, glob, loader)
...
```

## Example

```javascript
/** +-+
  *   +- index.js
  *   +- a.js
  *   +- b.js
  */

// File: index.js
const ai = require('@nhz.io/autoindex')

module.exports = ai(__dirname) // a.js and b.js are autorequired and exported
```

## Notes
* `glob` and `loader` are optional
* Default `glob` is: `*.+(js|json)`
* Default loader will skip `index.*` files
* Custom `loader` will receive the path of the matching module as a first argument

## License

### [MIT](LICENSE)
npm package: @nhz.io/capture
Description: Capture errors from various sources and forward to reporter
Author: Ishi Ruy
Latest version: 1.0.4

# @nhz.io/capture

<p align="center">
  <a href="https://npmjs.org/package/@nhz.io/capture">
    <img src="https://img.shields.io/npm/v/@nhz.io/capture.svg?style=flat"
         alt="NPM Version">
  </a>
  
  <a href="https://travis-ci.org/nhz-io/capture">
    <img src="https://img.shields.io/travis/nhz-io/capture.svg?style=flat"
         alt="Travis Build">
  </a>

  <a href="https://coveralls.io/github/nhz-io/capture">
    <img src="https://img.shields.io/coveralls/nhz-io/capture.svg?style=flat"
         alt="Coveralls">
  </a>

  <a href="https://www.bithound.io/github/nhz-io/capture">
    <img src="https://img.shields.io/bithound/code/github/nhz-io/capture.svg?style=flat"
         alt="Bithound Status">
  </a>

  <a href="https://github.com/nhz-io/capture/blob/master/LICENSE">
    <img src="https://img.shields.io/github/license/nhz-io/capture.svg?style=flat"
         alt="License">
  </a>
</p>
<p align="center">
    <h3 align="center">Capture errors from various sources and forward to reporter</h3>
</p>

## Available auto-wrappers
* **Functions**
* **Callbacks**
* **Promises**
* **Event Emitters**

## Install

```sh
npm i -S @nhz.io/capture
```

## Usage

### Init all captures
```js
const $capture = require('@nhz.io/capture')(err => {
    console.log('Reporting error', err)
})
```

### Init captures selectively
```js
const {prepare, init} = require('@nhz.io/capture')

const $ = prepare(err => console.log('Reporting error', err))

/** `nothing` is advised to have first (fast fail) */
const $capture = init($.nothing, $.error, $.func)
```

### Capture and report an error explicitly
```js
$capture(new Error('Raw Error'))
```

### Wrap function with `try..catch` and expect a callback
```js
const func = $capture((...args) => {
    console.log('Called with args:', ...args)

    throw new Error('Thrown from function')
})

func() 
func(new Error('Error for callback'))
```

### Wrap promise (`.catch` with reporter)
```js
$capture(
    Promise.reject(new Error('Rejected from promise'))
).catch(err => console.log('Caught outside of promise:', err))
```

### Wrap EventEmitter instance (reporter as `error` listener)
```js
const ee = $capture(new EventEmitter())
ee.emit('error', new Error('Emitted error'))
```

## License [MIT](LICENSE)

## Version 1.0.4
npm package: @nhz.io/coffeetape
Description: Run tape tests written in coffeescript
Author: HFLW
Latest version: 2.0.2

Coffeetape (Coffeescript 2.0.2)
----------

Run [tape](https://github.com/substack/tape) tests written in coffeescript!

To install: `npm install -g @nhz.io/coffeetape`

The command works exactly the same as the regular `tape` runner, just do `coffeetape test/*.coffee` to run your tests. You can pipe `coffeetape` into any standard tap reporter as you would expect.

To write your tests, `require('tape')` and use it exactly like you would if you were writing your tests in javascript. You'll get the same API if you `require()` coffeetape, but it's not recommended.
npm package: @nhz.io/conf-streams
Description: Configure and compose streams from JSON config and plugins
Author: Ishi Ruy
Latest version: 1.0.1

<h1 align="center">@nhz.io/conf-streams</h1>

<p align="center">
  <a href="https://npmjs.org/package/@nhz.io/conf-streams">
    <img src="https://img.shields.io/npm/v/@nhz.io/conf-streams.svg?style=flat"
         alt="NPM Version">
  </a>

  <a href="https://www.bithound.io/github/nhz-io/conf-streams">
    <img src="https://www.bithound.io/github/nhz-io/conf-streams/badges/score.svg"
         alt="Bithound Status">
  </a>

  <a href="https://github.com/nhz-io/conf-streams/blob/master/LICENSE">
    <img src="https://img.shields.io/github/license/nhz-io/conf-streams.svg?style=flat"
         alt="License">
  </a>

  <a href="https://npmjs.org/package/@nhz.io/conf-streams">
  <img src="http://img.shields.io/npm/dm/@nhz.io/conf-streams.svg?style=flat"
  alt="Downloads">
  </a>  
</p>

<h3 align="center">Configure and compose streams from JSON config and plugins<h2>

## Install
```
npm i -D @nhz.io/conf-streams
```

## License

### [MIT](LICENSE)
npm package: @nhz.io/graph
Description: Graph
Author: Ishi Ruy
Latest version: 0.1.1

# Graph

[![Travis Build][travis]](https://travis-ci.org/nhz-io/nhz-io-graph)
[![Coverage][coveralls]](https://coveralls.io/github/nhz-io/nhz-io-graph)
[![NPM Version][npm]](https://www.npmjs.com/package/@nhz.io/graph)

## Install

```bash
npm i -S @nhz.io/graph
```

## Usage

This:

```js
const Graph = require('@nhz.io/graph')

const graph = new Graph()

graph.setEdge ['node-1', 'node-2', 'edge-1']
graph.setEdge ['node-1', 'node-3', 'edge-2']

console.log(JSON.stringify(graph, null, 2))
```

Will produce:
```json
{
  "id": "737e19e0-d447-11e7-901a-c91a9d397e30",
  "nodes": [
    "node-1",
    "node-2",
    "node-3"
  ],
  "edges": [
    [
      "node-1",
      "node-2",
      "edge-1"
    ],
    [
      "node-1",
      "node-3",
      "edge-2"
    ]
  ]
}
```

## Version 0.1.1

## License [MIT](LICENSE)

[travis]: https://img.shields.io/travis/nhz-io/nhz-io-graph.svg?style=flat
[npm]: https://img.shields.io/npm/v/@nhz.io/graph.svg?style=flat
[coveralls]: https://coveralls.io/repos/github/nhz-io/nhz-io-graph/badge.svg?branch=v0.1.1
npm package: @nhz.io/gulp-stream-config
Description: Merge JSON/CSON files and resolve references
Author: Ishi Ruy
Latest version: 1.0.5

<h1 align="center">@nhz.io/gulp-stream-config</h1>

<p align="center">
  <a href="https://npmjs.org/package/@nhz.io/gulp-stream-config">
    <img src="https://img.shields.io/npm/v/@nhz.io/gulp-stream-config.svg?style=flat"
         alt="NPM Version">
  </a>

  <a href="https://www.bithound.io/github/nhz-io/gulp-stream-config">
    <img src="https://www.bithound.io/github/nhz-io/gulp-stream-config/badges/score.svg"
         alt="Bithound Status">
  </a>

  <a href="https://github.com/nhz-io/gulp-stream-config/blob/master/LICENSE">
    <img src="https://img.shields.io/github/license/nhz-io/gulp-stream-config.svg?style=flat"
         alt="License">
  </a>

  <a href="https://npmjs.org/package/@nhz.io/gulp-stream-config">
  <img src="http://img.shields.io/npm/dm/@nhz.io/gulp-stream-config.svg?style=flat"
  alt="Downloads">
  </a>  
</p>

<h3 align="center">Merge and resolve JSON/CSON references<h2>

## Install
```
npm i -S @nhz.io/gulp-stream-config
```

## Reference resolution is done with [ref-resolve](https://github.com/nhz-io/ref-resolve)

## Example

### Load configuration from multiple files
```javascript
/** +-+- config
  *   |
  *   +--- a.cson
  *   +--- b.cson
  *   +--- c.cson
  */

const gulp = require('gulp')
const conf = require('@nhz-io/gulp-stream-config')
const config = {}
const unresolved = []

gulp.task('config', () =>
    gulp.src('config/*.cson').pipe(conf(config, unresolved))
)

/** After runing config task the configuration
  * will be in `config` and unresolved references
  * will be in `unresolved`.
  * Also, a warning will be shown for each unresolved match
  */
```

## License

### [MIT](LICENSE)
npm package: @nhz.io/hmac-sha1
Description: [![Travis Build][travis]](https://travis-ci.org/nhz-io/nhz-io-hmac-sha1) [![NPM Version][npm]](https://www.npmjs.com/package/@nhz.io/hmac-sha1)
Author: Ishi Ruy
Latest version: 1.0.3

# HMAC-SHA1 digest

[![Travis Build][travis]](https://travis-ci.org/nhz-io/nhz-io-hmac-sha1)
[![NPM Version][npm]](https://www.npmjs.com/package/@nhz.io/hmac-sha1)

    crypto = require 'crypto'

Curry `secret` to allow reuse

    hmacSha1 = (secret) -> (message) ->

      hmac = crypto.createHmac 'sha1', secret

      hmac.update message, 'utf8'

      hmac.digest 'hex'

    digest = (secret, message) ->

Start curried

      hmac = hmacSha1 secret

Complete invocation if possible

      if message then hmac message else hmac

## Exports

    module.exports = digest

## Test

    assert = require 'assert'

    pass = '0caf649feee4953d87bf903ac1176c45e028df16'

Test curried

    assert.strictEqual ((digest 'secret') 'message'), pass

Test full args

    assert.strictEqual (digest 'secret', 'message'), pass

    console.log 'pass'

## Version 1.0.3

## License [MIT](LICENSE)

[travis]: https://img.shields.io/travis/nhz-io/nhz-io-hmac-sha1.svg?style=flat
[npm]: https://img.shields.io/npm/v/@nhz.io/hmac-sha1.svg?style=flat
npm package: @nhz.io/md5
Description: Calculate MD5 Digest of a sting
Author: Ishi Ruy
Latest version: 1.0.0

# Calculate MD5 Digest of a sting (hex)

[![Travis Build][travis]](https://travis-ci.org/nhz-io/nhz-io-md5)
[![NPM Version][npm]](https://www.npmjs.com/package/@nhz.io/md5)

## Install

```bash
npm i -S @nhz.io/md5
```

## Usage
```js
const md5 = require('@nhz-io/md5')

const digest = md5('foobar')
...
```
## Imports

    crypto = require 'crypto'

    md5 = (string) ->

      hash = crypto.createHash 'md5'

      hash.update string

      hash.digest 'hex'


## Exports

    module.exports = md5

## Tests

    assert = require 'assert'

    assert.ok (md5 'foobar') is '3858f62230ac3c915f300c664312c63f'

    console.log 'pass'

## Version 1.0.0

## License [MIT](LICENSE)

[travis]: https://img.shields.io/travis/nhz-io/nhz-io-md5.svg?style=flat
[npm]: https://img.shields.io/npm/v/@nhz.io/md5.svg?style=flat
npm package: @nhz.io/mini-mock
Description: Patch require() to return mocks
Author: Ishi Ruy
Latest version: 1.0.2

<h1 align="center">@nhz.io/mini-mock</h1>

<p align="center">
  <a href="https://npmjs.org/package/@nhz.io/mini-mock">
    <img src="https://img.shields.io/npm/v/@nhz.io/mini-mock.svg?style=flat"
         alt="NPM Version">
  </a>

  <a href="https://www.bithound.io/github/nhz-io/mini-mock">
    <img src="https://www.bithound.io/github/nhz-io/mini-mock/badges/score.svg"
         alt="Bithound Status">
  </a>

  <a href="https://github.com/nhz-io/mini-mock/blob/master/LICENSE">
    <img src="https://img.shields.io/github/license/nhz-io/mini-mock.svg?style=flat"
         alt="License">
  </a>

  <a href="https://npmjs.org/package/@nhz.io/mini-mock">
  <img src="http://img.shields.io/npm/dm/@nhz.io/mini-mock.svg?style=flat"
  alt="Downloads">
  </a>  
</p>

<h3 align="center">Patch `require()` to return mocks<h2>

## Install
```
npm i -D @nhz.io/mini-mock
```

## Usage
```javascript
// will-get-mock.js
const someModule = require('some-module')
...
```

```javascript
// will-get-real.js
const someModule = require('some-module')
...
```

```javascript
// test.js
require('@nhz.io/mini-mock')

module.mock('some-module', 'Mocked value')
require('./will-get-mock.js')

module.unmock('some-module')
require('./will-get-real.js')
...
```

## License

### [MIT](LICENSE)
npm package: @nhz.io/nopt-stream
Description: nopt wrapped in stream
Author: Ishi Ruy
Latest version: 1.0.0

<h1 align="center">@nhz.io/nopt-stream</h1>

<p align="center">
  <a href="https://npmjs.org/package/@nhz.io/nopt-stream">
    <img src="https://img.shields.io/npm/v/@nhz.io/nopt-stream.svg?style=flat"
         alt="NPM Version">
  </a>

  <a href="https://www.bithound.io/github/nhz-io/nopt-stream">
    <img src="https://www.bithound.io/github/nhz-io/nopt-stream/badges/score.svg"
         alt="Bithound Status">
  </a>

  <a href="https://github.com/nhz-io/nopt-stream/blob/master/LICENSE">
    <img src="https://img.shields.io/github/license/nhz-io/nopt-stream.svg?style=flat"
         alt="License">
  </a>

  <a href="https://npmjs.org/package/@nhz.io/nopt-stream">
  <img src="http://img.shields.io/npm/dm/@nhz.io/nopt-stream.svg?style=flat"
  alt="Downloads">
  </a>  
</p>

<h3 align="center">[nopt](https://github.com/npm/nopt) wrapper stream<h2>

## Install
```
npm i -S @nhz.io/nopt-stream
```

## Usage
```
const nopt = require('nopt-stream')

nopt(...).pipe(...)
```

## License

### [MIT](LICENSE)
npm package: @nhz.io/nw-signer
Description: NWJS content signer vinyl stream
Author: Ishi Ruy
Latest version: 1.0.1

<h1 align="center">@nhz.io/nw-signer</h1>

<p align="center">
  <a href="https://npmjs.org/package/@nhz.io/nw-signer">
    <img src="https://img.shields.io/npm/v/@nhz.io/nw-signer.svg?style=flat"
         alt="NPM Version">
  </a>

  <a href="https://www.bithound.io/github/nhz-io/nw-signer">
    <img src="https://www.bithound.io/github/nhz-io/nw-signer/badges/score.svg"
         alt="Bithound Status">
  </a>

  <a href="https://github.com/nhz-io/nw-signer/blob/master/LICENSE">
    <img src="https://img.shields.io/github/license/nhz-io/nw-signer.svg?style=flat"
         alt="License">
  </a>
</p>

<h3 align="center">[NWJS](https://nwjs.io) content signer vinyl stream<h2>

## Install
```bash
npm i -D @nhz.io/nw-signer
```

## Usage
```js
const through = require('through2')
const vfs = require('vinyl-fs')
const signer = require('@nhz.io/nw-signer')

vfs.src(process.argv.slice(2))
    .pipe(signer())
    .pipe(through.obj((file, enc, cb) => {
        process.stdout.write(file.contents)
        cb()
    }))
```

## Dev

```bash
git clone https://github.com/nhz-io/nw-signer
cd nw-signer
npm i
npm start
```

### Docs
```bash
npm run doc
```

### Coverage
```bash
npm run coverage
```

### See also
* [https://github.com/nhz-io/nw-treehash](https://github.com/nhz-io/nw-treehash)
* [https://github.com/nwjs/nw.js/blob/nw18/tools/sign/sign.py](https://github.com/nwjs/nw.js/blob/nw18/tools/sign/sign.py)
* [https://github.com/nwjs/nw.js/blob/nw18/tools/payload.cc](https://github.com/nwjs/nw.js/blob/nw18/tools/payload.cc)

## License

### [MIT](LICENSE)
npm package: @nhz.io/nw-treehash
Description: NWJS treehash calculator stream
Author: Ishi Ruy
Latest version: 1.0.3

<h1 align="center">@nhz.io/nw-treehash</h1>

<p align="center">
  <a href="https://npmjs.org/package/@nhz.io/nw-treehash">
    <img src="https://img.shields.io/npm/v/@nhz.io/nw-treehash.svg?style=flat"
         alt="NPM Version">
  </a>

  <a href="https://www.bithound.io/github/nhz-io/nw-treehash">
    <img src="https://www.bithound.io/github/nhz-io/nw-treehash/badges/score.svg"
         alt="Bithound Status">
  </a>

  <a href="https://github.com/nhz-io/nw-treehash/blob/master/LICENSE">
    <img src="https://img.shields.io/github/license/nhz-io/nw-treehash.svg?style=flat"
         alt="License">
  </a>
</p>

<h3 align="center">[NWJS](https://nwjs.io) treehash calculator stream<h2>

## Install
```bash
npm i -D @nhz.io/nw-treehash
```

## Usage
```js
// treehash.js

const {createReadStream} = require('fs')
const through = require('through2')
const treehash = require('@nhz.io/nw-treehash')
const {fixBase64} = require('@nhz.io/nw-treehash/lib/helpers')
createReadStream(process.argv[2] || process.argv[1])
	.pipe(treehash())
	.pipe(through((hash, enc, cb) =>
        cb(null, fixBase64(hash.toString('base64')))
    ))
	.pipe(process.stdout)

```

```bash
node treehash.js
...
7rzmHkbwr5NzPjalKEVuArbxg--rbyt5tXdvMYUHXpQ
```

## Dev

```bash
git clone https://github.com/nhz-io/nw-treehash
cd nw-treehash
npm i
npm start
```

### Docs
```bash
npm run doc
```

### Coverage
```bash
npm run coverage
```

### See also

* [https://github.com/nwjs/nw.js/blob/nw18/tools/sign/sign.py](https://github.com/nwjs/nw.js/blob/nw18/tools/sign/sign.py)
* [https://github.com/nwjs/nw.js/blob/nw18/tools/payload.cc](https://github.com/nwjs/nw.js/blob/nw18/tools/payload.cc)

## License

### [MIT](LICENSE)