open-index/open-npm huggingface dataset:
npm package: @pitue/cdn-local
Description: jsdelivr cdn to local. 
Author: bibiuc
Latest version: 0.0.5

# cdn-local
这是一个cdn的下载工具，主要是希望开发测试的时候将cdn的npm包下下来使用，bower现在更新很慢，所以弄了这么个东西，现在暂时只有jsdelivr

## API
这只是一个下载方法。
### 安装

``` bash
npm install @pitue/cdn-local --save-dev
pnpm install @pitue/cdn-local --save-dev
yarn install @pitue/cdn-local --save-dev
```
### 使用
``` javascript
const download = require('@pitue/cdn-local')

download({
    dir: './.cache',
    dependencies: [
        {dependency: 'jquery', version: '3.7.1', alias: 'jquery', filter: download.filters.dist},
        {dependency: 'vue', version: '3.4.10'},
        {dependency: 'element-plus'}
    ],
    retry: 5
}, download.cdns.jsdelivr())
```


### 参数介绍

``` typescript

class File {
    type: 'file' | 'directory', 
    name: string, // 这里会拼接上级路径 
    files: File[]
    ... // 其他的暂时没用到
}

type Filter = (file: File) => boolean 
type GetVersion = (dependency: string, version?: string) => Promise<string>
type GetFiles = (dependency: string, version: string) => Promise<File[]>
type SaveFile = (dir: string, file: File, retry: number) => Promise<any>


interface CDN {
    getVersion： GetVersion
    getFiles: GetFiles
    getSaveFile: GetSaveFile
}

class Dependency {
    dependency: string // 库的名称
    version: string // 版本
    alias: string // 库的目标重命名
    filter: Filter // 返回true则下载 false则不下载
}

class Config {
    dir: string // 目标文件夹
    dependencies: Dependency[] // 下载的依赖
    retry: number // 重试次数
}

download(config: Config, cdn: CDN = download.cdns.jsdelivr())
download.filters: Filter[]
download.filters.dist // 只下载dist文件夹的文件
download.cdns: Record<string, DefineCdn>
download.cdns.jsdeliver // jsdelivr下载 参数是 sdkRoot = 'https://data.jsdelivr.com/v1/packages/npm/', cdnRoot = 'https://cdn.jsdelivr.net/npm/'

```
npm package: @pity/eslint-config
Description: * Single quotes, no semi * Auto fix for formatting (aimed to be used standalone without Prettier) * TypeScript, Vue, React out-of-box * Lint also for json, yaml, markdown * Sorted imports, dangling commas for cleaner commit diff * Reasonable defaults, bes
Author: priority
Latest version: 0.1.10

## @pity/eslint-config

* Single quotes, no semi
* Auto fix for formatting (aimed to be used standalone without Prettier)
* TypeScript, Vue, React out-of-box
* Lint also for json, yaml, markdown
* Sorted imports, dangling commas for cleaner commit diff
* Reasonable defaults, best practices, only one-line of config


### Usage

## install

```bash
pnpm add @pity/eslint-config -D
```

### Config .eslintrc

```json
{
  "extends": "@pity"
}
```
> You don't need .eslintignore normally as it has been provided by the preset.


### Add Script in package.json

```json
{
  "scripts": {
    "lint": "eslint .",
    "lint:fix": "eslint . --fix"
  }
}
```


### Config VS Code auto fix

```json
{
  "prettier.enable": "false",
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  }
}
```
npm package: @pity/eslint-config-monorepo
Description: eslint config 
Author: priority
Latest version: 0.1.10

## @pity/eslint-config

* Single quotes, no semi
* Auto fix for formatting (aimed to be used standalone without Prettier)
* TypeScript, Vue, React out-of-box
* Lint also for json, yaml, markdown
* Sorted imports, dangling commas for cleaner commit diff
* Reasonable defaults, best practices, only one-line of config


### Usage

## install

```bash
pnpm add @pity/eslint-config -D
```

### Config .eslintrc

```json
{
  "extends": "@pity"
}
```
> You don't need .eslintignore normally as it has been provided by the preset.


### Add Script in package.json

```json
{
  "scripts": {
    "lint": "eslint .",
    "lint:fix": "eslint . --fix"
  }
}
```


### Config VS Code auto fix

```json
{
  "prettier.enable": "false",
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  }
}
```
npm package: @piuccio/cached-function
Description: Cache the response from any function to a file
Author: Fabio Crisci
Latest version: 1.0.2

# cached-function

Incredibly simple caching wrapper around any asynchronous function


## Install

This module doesn't have any dependencies but it only works with node 10+ because it uses `async/await`

```
$ npm install cached-function
```


## Usage

```js
const cached = require('@piuccio/cached-function');
const fn = cached('./cache.json', async (url) {
  const { body } = await got(url);
  return body.slice(0, 100);
});

await fn('https://google.com'); // The first time it'll actually make a request
await fn('https://google.com'); // The second time it'll grab the response from cache

// In both cases the function returns the same response
```

The cache is is the first argument to the wrapped function so

```js
await fn('https://google.com');
await fn('https://amazon.com');
// Will both make an actual request
```
npm package: @piuccio/ejs-compiled-loader
Description: EJS webpack loader (without frontend dependencies)
Author: Vasily Ostanin
Latest version: 3.0.0

# ejs-compiled-loader for webpack

EJS loader for [webpack](http://webpack.github.io/). Uses [ejs](https://github.com/mde/ejs) function to compile templates.

To use [EJS by tj](https://github.com/tj/ejs) use 1.x branch and 1.x.x versions.

## Installation

`npm install ejs-compiled-loader`

## Usage

[Documentation: Using loaders](http://webpack.github.io/docs/using-loaders.html)

``` javascript
var template = require("ejs-compiled!./file.ejs");
// => returns the template function compiled with ejs templating engine.

// And then use it somewhere in your code
template(data) // Pass object with data

// Child Templates
// path is relative to where webpack is being run
<%- include templates/child -%>
```

## Options

Following options can be specified in query:

`beautify` — enable or disable uglify-js beautify of template ast

`compileDebug` — see ejs compileDebug option

`htmlmin` — see [htmlminify section](#htmlminify)

## htmlminify

```javascript
module: {
  loaders: [
    {test: /\.ejs$/, loader: 'ejs-compiled?htmlmin'} // enable here
  ]
},
'ejs-compiled-loader': {
  'htmlmin': true, // or enable here  
  'htmlminOptions': {
    removeComments: true
  }
}
```

See [all options reference](https://github.com/kangax/html-minifier#options-quick-reference)

## License

MIT (http://www.opensource.org/licenses/mit-license.php)
npm package: @piuccio/json-to-file
Description: Save a JS object to file and output its file size
Author: Fabio Crisci
Latest version: 1.0.1

Save a JS object to file and output its file size

## Usage

```js
const save = require('@piuccio/json-to-file');

await save('filepath.json', {
  myObject: '...',
});
```

It'll create a file called `filepath.json` and `console.log` the generated file size in human readable way

### Options

`save(filename, content, options)`

The third optional argument is an options object containing

* `pretty: Boolean` defaults to `false`, if `true` the generated JSON file will have indentation of 2 spaces.
* `cwd: String` defaults to `undefined`, it set, all paths will be prefixed with `cwd`
npm package: @piuccio/time-fn
Description: Measure how long it takes to call an asynchronous function
Author: Fabio Crisci
Latest version: 1.0.0

Measure how long it takes to call an asynchronous function

## Usage

```js
const time = require('@piuccio/time-fn');

await time(() => {
  // ... you code here
});
```

It'll print to stdout how long it took for the function to resolve.

## Return

```js
const time = require('@piuccio/time-fn');

const result = await time(myFunction);
// result will be the resolved value of myFunction
```
npm package: @piuiux/react-ui-layout
Description: A React layout components library to make awesome user interfaces, faster.
Author: Andrea Purracchio
Latest version: 0.9.2

# react-ui-layout
A React layout components library to make awesome user interfaces, faster.

## Installation
`npm install --save @piuiux/react-ui-layout`

## Authors
Andrea Purracchio <purracchio.andrea@gmail.com>

## License
MIT
npm package: @pium/stack-component
Description: 리액트와 스타일드 컴포넌트를 이용해서 구현한 스택 형태의 레이아웃 컴포넌트.
Latest version: 1.0.0

# Stack Layout Component

리액트와 스타일드 컴포넌트를 이용해서 구현한 스택 형태의 레이아웃 컴포넌트.

- [npm](https://www.npmjs.com/package/@pium/stack-component)
- [demo: storybook](https://blog.pium.life/stack-component/)

## 사용 전 주의사항

프로젝트에 다음 세 가지가 설치되어 있어야 해요.
- react
- react-dom
- styled-components

## 설치

```bash
npm install @pium/stack-component
```

## 컴포넌트 설명

### 기능

Stack은 주어진 자식 요소들을 세로로 정렬한 후, 원하는 만큼의 개수만 보여줍니다.

### 주의사항

- `Stack`은 자식 요소에 애니메이션을 삽입하므로 겹치지 않게 주의해주세요!
- JSX 상에서 `Stack`의 직속 자녀들만을 대상으로 합니다.

### Props

|이름|설명|가능한 값|기본값|
|:-:|:-:|:-:|:-:|
|`showCount`*|보여줄 요소의 개수.|`number`|-|
|`as`|Stack에 적용할 semantic tag|`"div"`, `"ul"`, `"ol"`, `"main"`, `"section"`, `"article"`|`"div"`|
|`flow`|`normal`: JSX에 나타난 순서대로 DOM에 표시됩니다. 새로운 요소는 아래에서 위로 올라옵니다.<br /><br />`reverse`: JSX에 나타난 순서의 반대로 DOM에 표시됩니다. 새로운 요소는 위에서 아래로 떨어집니다.|`"normal"`, `"reverse"`|`"reverse"`|
|`time`|새로운 요소가 생길 때 나타나는 애니메이션 시간(밀리초).|`number`|`400`|
|`justifyItems`|CSS의 `justify-items`|`React.CSSProperties['justifyItems']`|`"normal"`|
|`rowGap`|CSS의 `row-gap`|`React.CSSProperties['rowGap']`|`0`|

### 예제

```tsx
import { Stack } from '@pium/stack-component';

<Stack
  as="main"
  showCount={2}
  flow="normal"
  rowGap="2rem"
  time={777}
  justifyItems="center"
>
  <p>새는 자기 길을 안다</p>
  <p>김종해</p>
  <p>하늘에 길이 있다는 것을</p>
  <p>새들이 먼저 안다</p>
  <p>하늘에 길을 내며 날던 새는</p>
  <p>길을 또 지운다</p>
  <p>새들이 하늘 높이 길을 내지 않는 것은</p>
  <p>그 위에 별들이 가는 길이 있기 때문이다</p>
</Stack>
```
npm package: @piusnyakoojo/firework
Description: JavaScript Multiplayer Networking library with Firebase
Author: Pius Nyakoojo
Latest version: 0.0.0

# firework

JavaScript Multiplayer Networking library with Firebase

[![Travis](https://img.shields.io/travis/piusnyakoojo/firework.svg)](https://travis-ci.org/PiusNyakoojo/firework)
[![Codecov](https://img.shields.io/codecov/c/github/piusnyakoojo/firework.svg)](https://codecov.io/gh/PiusNyakoojo/firework)
[![npm](https://img.shields.io/npm/v/firework.svg)](https://npmjs.com/package/firework)
npm package: @pivanov/deep-clone
Description: Deep clone of objects
Author: Pavel Ivanov
Latest version: 2.0.0

# @pivanov/deep-clone

A versatile and lightweight deep clone utility for JavaScript and TypeScript.

## Installation

```bash
npm install @pivanov/deep-clone --save-dev
```

or with yarn:

```bash
yarn add @pivanov/deep-clone --dev
```

or with pnpm:

```bash
pnpm add @pivanov/deep-clone --dev
```

## Usage

```typescript
import { deepClone } from '@pivanov/deep-clone';
```
> Note that one of inject or fileName must be provided.

```typescript
const userProfile = {
  name: "Alice",
  contact: {
    email: "alice@example.com",
    phone: { mobile: "123-456", work: "789-101" },
  },
  preferences: new Set(["dark-mode", "notifications"]),
};

const clonedProfile = deepClone(userProfile);

// Modifying the cloned profile won’t affect the original
clonedProfile.contact.phone.mobile = '999-999';
```

## Author

Created by [pivanov](https://github.com/pivanov).

## License

MIT
npm package: @pivanov/event-bus
Description: A versatile and lightweight event bus implementation with a React hook for easy integration.
Author: Pavel Ivanov
Latest version: 2.1.0

# @pivanov/event-bus

A versatile and lightweight event bus implementation with a React hook for easy integration.

## Installation

Install the package using npm:

```bash
npm install @pivanov/event-bus
```

Or using yarn:

```bash
yarn add @pivanov/event-bus
```

## Usage

### Basic Example

First, import the `useEventBus` and `busDispatch` functions from the package. Define your event interface, then use the `useEventBus` hook to subscribe to events and `busDispatch` to dispatch events.

```tsx
import React from 'react';
import { useEventBus, busDispatch } from '@pivanov/event-bus';

// Define your event interface
interface MyEventBusMessage {
  topic: string;
  message: string;
}

export const ComponentA = () =>  {
  // Dispatch '@@-message' when the button is clicked
  const handleClick = () => {
    busDispatch<MyEventBusMessage>("@@-message", "Hello World!");
  };

  return (
    <button onClick={handleClick}>
      Dispatch Message
    </button>
  );
};

export const ComponentB = () =>  {
  const [message, setMessage] = useState('');

  // Subscribe to topic '@@-message'
  useEventBus<MyEventBusMessage>("@@-message", (message) => {
    console.log('Message received:', message);
    setMessage(message);
  });

  return (
    <>
      Message: {message}
    <>
  );
};
```

## API

### `busSubscribe<T>(filter, callback)`

- **filter**: The event topic to subscribe to, or a function that returns true for events to handle.
- **callback**: The function to call when an event of the specified type is dispatched.
- Returns a function to unsubscribe.

### `busDispatch<T>(topic, message)`

- **topic**: The event topic to dispatch.
- **message**: The message payload for the event.

### `useEventBus<T>(topic, callback, deps?)`

- **topic**: The event topic to subscribe to.
- **callback**: The function to call when an event of the specified topic is dispatched.
- **deps**: Optional array of dependencies for the useEffect hook.

## TypeScript Support

This package is written in TypeScript and provides full type definitions. You can define your own event interfaces to ensure type safety when using the event bus. Your event interface should extend the following structure:

```typescript
interface YourEventInterface {
  topic: string;
  message: unknown;
}
```

## License

MIT

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

## Testing

To run the tests for this package, use the following command:
npm package: @pivanov/use-toggle-visibility
Description: A React hook to toggle visibility of components
Author: pivanov
Latest version: 0.0.1


# @pivanov/use-toggle-visibility

A React hook to toggle the visibility of components.

## Installation

You can install the package via npm:

```bash
npm install @pivanov/use-toggle-visibility
```

or via yarn:

```bash
yarn add @pivanov/use-toggle-visibility
```

## Usage

### Basic Usage

Here's an example of how to use the `useToggleVisibility` hook in your React component:

```tsx
import React from 'react';
import { useToggleVisibility } from '@pivanov/use-toggle-visibility';

const MyComponent = (props: { message: string }) => {
  return <div>{props.message}</div>;
};

const App = () => {
  const [ToggledComponent, toggleVisibility, isVisible] = useToggleVisibility(MyComponent, false);

  return (
    <div>
      <button onClick={(e) => toggleVisibility(e)}>
        {isVisible ? 'Hide' : 'Show'}
      </button>
      <ToggledComponent message="Hello, World!" />
    </div>
  );
};

export default App;
```

### API

#### `useToggleVisibility`

```typescript
const [Component, toggleVisibility, isVisible] = useToggleVisibility(WrappedComponent, initialVisibility);
```

##### Parameters

- `WrappedComponent`: The component to be toggled.
- `initialVisibility` (optional): The initial visibility state of the component. Defaults to `false`.

##### Returns

- `Component`: The wrapped component that will be conditionally rendered.
- `toggleVisibility`: A function to toggle the visibility of the component. It can be called with an optional event and an optional boolean to explicitly set the visibility state.
- `isVisible`: The current visibility state of the component.

### Contributing

Contributions are welcome! Please open an issue or submit a pull request.

### License

This project is licensed under the MIT License.
npm package: @pivotable/shared
Description: Shared components, services, and utilities for Pivotable applications
Author: Casey Ferrara
Latest version: 1.0.5

# @pivotable/shared

Shared code between Pivotable web and mobile applications.

## Structure

- `services/` - Business logic and API services (Supabase, auth, jobs, etc.)
- `hooks/` - React hooks for data fetching with React Query
- `types/` - TypeScript type definitions
- `utils/` - Utility functions
- `styles/` - Shared Tailwind className strings for consistent styling

## Usage

### In Web App (Next.js)

```typescript
import { authService } from "@pivotable/shared/services/authService";
import { useTrackedJobs } from "@pivotable/shared/hooks/useTrackedJobs";
import { Job } from "@pivotable/shared/types";
```

### In Mobile App (React Native + Gluestack)

```typescript
import { authService } from "@pivotable/shared/services/authService";
import { useTrackedJobs } from "@pivotable/shared/hooks/useTrackedJobs";
import { Job } from "@pivotable/shared/types";
```

Same imports, same code! 🎉
npm package: @pivotal-tools/jvm-launch-utils
Description: Provides utilities useful for launching Java processes from node packages.
Author: Kris De Volder
Latest version: 0.0.23

JVM Launch Utils
================

Collection of utilities usful for node projects that need to launch JVM
processes. 

Mostly intended for internal use by various VScode and Atom 
extensions published by the Pivotal-tools team.
npm package: @pivotmade/slate-tools
Description: Tooling for Shopify themes - Working on Apple Silicon. Forked from @shopify/slate-tools
Author: Pivot Made
Latest version: 0.14.1

# @shopify/slate-tools

Tooling for Shopify themes using [Slate](https://github.com/Shopify/slate/tree/0.x).

Best used in conjunction with the [Slate CLI](https://www.npmjs.com/package/@shopify/slate) package.

## Installation

```bash
$ npm install @shopify/slate-tools
```

## Documentation

For full API documentation checkout the [API docs](https://shopify.github.io/slate/).

## Contributing

For help on setting up the repo locally, building, testing, and contributing
please see [CONTRIBUTING.md](https://github.com/Shopify/slate/blob/0.x/CONTRIBUTING.md).

## Code of Conduct

All developers who wish to contribute through code or issues, take a look at the
[CODE_OF_CONDUCT.md](https://github.com/Shopify/slate/blob/0.x/CODE_OF_CONDUCT.md).

## License

MIT, see [LICENSE.md](http://github.com/Shopify/slate/blob/0.x/LICENSE.md) for details.

<img src="https://cdn.shopify.com/shopify-marketing_assets/builds/19.0.0/shopify-full-color-black.svg" width="200" />
npm package: @pivoto/core
Description: ![build](https://img.shields.io/badge/build-passing-success.svg)
Author: Qt
Latest version: 1.1.0

# core

![build](https://img.shields.io/badge/build-passing-success.svg)

unpkg: https://unpkg.com/browse/@pivoto/core@latest/dist/index.umd.js

unpkg browse: https://unpkg.com/browse/@pivoto/core/
npm package: @pivoto/mock
Description: 扩展`mockjs`对`xhr`、`fetch`的模拟方法，示例
Author: Qt
Latest version: 1.0.0

扩展`mockjs`对`xhr`、`fetch`的模拟方法，示例

```
import mock from '@mmp/mock'

mock.setup({
  timeout: '100-200'
})
mock.mock(/\/api\/.*/, () => {
  return {response: {success: true, data: {}}, status: 200, statusText: 'OK', headers: {'x-api': 1}}
})
mock.mock(/\/test\/.*/, () => {
  return {response: {success: true, data: {}}, status: 200, statusText: 'OK', headers: {'x-test': 1}}
})

function test1() {
  window.fetch('/api/xxx').then(r => {
    console.log(r)
    r.json().then(d => {
      console.log(d)
    })
  })
}

function test2() {
  window.fetch('/test/xxx').then(r => {
    console.log(r)
    r.text().then(d => {
      console.log(d)
    })
  })
}

function test3() {
  let responseType = 'json'
  let request = new XMLHttpRequest();
  request.onreadystatechange = function () {
    if (!request || request.readyState !== 4) {
      return;
    }
    if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
      return;
    }
    let responseHeaders = {}
    request.getAllResponseHeaders().split('\n').forEach((e, i) => {
      let kv = e.split(':', 2)
      responseHeaders[kv[0]] = kv[1]
    });

    let responseData = responseType === 'json' ? request.response : request.responseText;
    let response = {
      data: responseData,
      status: request.status,
      statusText: request.statusText,
      headers: responseHeaders,
      request: request
    };
    console.log(response)
  }
  request.open('post', '/api/xxxxx')
  request.responseType = responseType
  request.send('test')
}
```
npm package: @piworks/angular-bootstrap-toggle-switch
Description: Toggle Switches for AngularJS (and optionally Bootstrap). Based off [Bootstrap switch](http://www.larentis.eu/switch/) by Matt Lartentis and forked from [cgarvis](https://github.com/cgarvis/angular-toggle-switch).
Author: Chris Garvis
Latest version: 0.5.8

# AngularJS Bootstrap 2/3 Toggle Switch [![Build Status](https://travis-ci.org/JumpLink/angular-toggle-switch.png?branch=master)](https://travis-ci.org/JumpLink/angular-toggle-switch)

Toggle Switches for AngularJS (and optionally Bootstrap). Based off [Bootstrap switch](http://www.larentis.eu/switch/) by Matt Lartentis and forked from [cgarvis](https://github.com/cgarvis/angular-toggle-switch).

**Note:** This repo was forked from [JumpLink's angular-toggle-switch] to provide a way for the package to be installed with npm.
No other improvement or maintaining was foreseen.
So any contribution should be made to the original repo at first and then be sent to this repo via a pull request.

![Preview](/preview.png)

## Demo
[jumplink.github.io/angular-toggle-switch](http://jumplink.github.io/angular-toggle-switch/)

## Installation

Download [angular-toggle-switch.min.js](https://raw.github.com/JumpLink/angular-toggle-switch/master/angular-toggle-switch.min.js) or install with bower.

```bash
$ bower install angular-bootstrap-toggle-switch --save
```

Or install with npm.

```bash
$ npm install @piworks/angular-bootstrap-toggle-switch
```

Load `angular-toggle-switch.min.js` then add the `toggle-switch` module to your Angular App.

```javascript
angular.module('app', ['toggle-switch']);
```

See [demo](http://jumplink.github.io/angular-toggle-switch) for usage.

## Less

If you want to use your bootstrap variables, include toggle-switch.less in your compilation stack. You can even choose among Bootstrap version 2 or 3 compatible source.

## Development

Testing is done using Karma Test Runner.

```bash
$ grunt test
```

## Release

```bash
$ grunt release
```

[JumpLink's angular-toggle-switch]: https://github.com/JumpLink/angular-toggle-switch
npm package: @piworks/pi-select
Description: Fork for ui-select
Author: https://github.com/piworks/pi-select/graphs/contributors
Latest version: 1.0.7

# @piworks/pi-select (based on AngularJS ui-select) 

AngularJS-native version of [Select2](http://ivaynberg.github.io/select2/) and [Selectize](http://brianreavis.github.io/selectize.js/). [http://angular-ui.github.io/ui-select/](http://angular-ui.github.io/ui-select/)

[Getting Started](https://github.com/angular-ui/ui-select/wiki/Getting-Started) 

- [Examples](http://angular-ui.github.io/ui-select/#examples)
- [Examples Source](./docs/examples)
- [Documentation](https://github.com/angular-ui/ui-select/wiki)

## Latest Changes

- Check [CHANGELOG.md](/CHANGELOG.md)

## Features

- Search, Select, Multi-select and Tagging
- Multiple Themes: Bootstrap, Select2 and Selectize
- Keyboard support
- No jQuery required (except for old browsers)
- Small code base: 4.57KB min/gzipped vs 20KB for select2


## Installation Methods

### npm
```
$ npm install @piworks/pi-select
```

## Development

### Prepare your environment
* Install [Node.js](http://nodejs.org/) and NPM (should come with)
* Install global dev dependencies: `npm install -g gulp`
* Install local dev dependencies: `npm install` in repository directory

### Development Commands

* `gulp` to jshint, build and test
* `gulp build` to jshint and build
* `gulp test` for one-time test with karma (also build and jshint)
* `gulp watch` to watch src files to jshint, build and test when changed
* `gulp docs` build docs and examples

## Contributing

- Check [CONTRIBUTING.md](/CONTRIBUTING.md)
- Run the tests
- Try the [examples](./docs/examples)

When issuing a pull request, please exclude changes from the "dist" folder to avoid merge conflicts.