open-index/open-npm huggingface dataset:
npm package: @lchnnl/passport-canvas-app
Description: Passport.js authentication strategy for Salesforce Canvas App (POST signed requests)
Author: Loeng Chen
Latest version: 1.0.5

## Passport.js authentication strategy for Salesforce Canvas App (POST signed requests)

### Changelog
- v1.0.4 Added the Signed Request to the user body. This is useful when user object is stored in session, and you want to access the canvas parameters in a *consecutive* call. The signed request can be accessed through:
`{ req.user.signed_request }`
- v1.0.3 Added the access token to the user object. This is useful when the canvas app has to make an consecutive call to Salesforce to fetch additional data. Access token can then be used for authentication. Access token can be accessed through:
`{ req.user.access_token }`
- v1.0.2 Bug fix: In case Salesforce session has expired, and you perform a 'post' method with an old signed request body, the strategy will crash. 

### Setup

In order to use this Strategy, you'll need a Connected App with `Force.com Canvas` enabled, `Canvas App URL` that points to the authenticate endpoint, and `Access Method` set to `Signed Request (POST)`.

```bash
npm install --save @lchnnl/passport-canvas-app
```


### Strategy

Create a strategy using the connected app consumer secret:

```js
const strategy = new Strategy({
  consumerSecret: '....'
}, function verifyUser(token, profile, done) {
  console.log(profile);
  return done(null, profile);
});
```


### Authenticate

You will need to authenticate the canvas app endpoint, responding to POST (not GET) request:

```js
app.post('/',
  passport.authenticate('canvas-app'),
  function canvasAppPage(req, res) {
    res.render('index', {
      parameters: req.body.parameters,
      record:     req.body.record,
      user:       req.user
    });
  }
)
```

If you are using sessions, don't forget to limit the session duration, and to reject unauthenticated requests on all other routes/methods.

```js
app.use(function requireAuthentication(req, res, next) {
  if (req.isAuthenticated())
    next();
  else
    res.sendStatus(403);
});
```


### User profile

The user profile is available from `req.user`:

```js
req.user
=> {
  id:              'https://login.salesforce.com/id/00Dx00000001hxyEAA/005x0000001SyyEAAS',
  organization_id: '00Dx00000001hxyEAA',
  user_id:         '005x0000001SyyEAAS',
  display_name:    'Sean Forbes',
  email:           'admin@6457617734813492.com'
}
```


### Parameters

If the `apex:canvasApp` component specifies any parameters, these parameters are available from `req.body.parameters`:

```html
<apex:canvasApp parameters="{count: 2}" ... />
```

```js
req.body.parameters
=> {
  count: 2 
}
```


### Record

If the canvas app appears in association with an object, information about that object, and its fields, are available from `req.body.record`:

```js
req.body.record
=> {
  attributes: {
    type: 'Account',
    url: '/services/data/v36.0/sobjects/Account/001xx000003DGWiAAO'
  },
  Id: '001xx000003DGWiAAO',
  Phone: '(555) 555-5555',
  Fax: '(555) 555-5555',
  BillingCity: 'Seattle'
}
```
npm package: @lchooks/use-axios
Description: React Hook to update your document's title
Author: Changho Lee
Latest version: 1.0.2

# @lchooks/use-axios

React Hook to request data asynchronous And Refetch when the user executing a function.

노마드코더 수업을 들으면서 클론코딩했습니다.
Thank you nomadcoders!!
https://academy.nomadcoders.co/p/introduction-to-react-hooks

## Installation

#### yarn

`yarn add @lchooks/use-axios`

#### npm

`npm i @lchooks/use-axios`

## Usage

```js
import React from "react";
import useAxios from "@lchooks/use-axios";

function App() {
  const { loading, data, error, refetch } = useAxios({
    url: "https://yts.mx/api/v2/list_movies.json"
  });
  return (
    <div className="App">
      <h1>{data && data.status}</h1>
      <h2>{loading && "Loading"}</h2>
      <button onClick={refetch}>Refetch</button>
    </div>
  );
}
```

### Arguments

| Argument  | Type     | Description                                         | Required | Default value |
| --------- | -------- | --------------------------------------------------- | -------- | ------------- |
| opt   | array   | Array to request using Axios | yes      | null |
| axiosInstacne | axios | Axios for Asynchronous Processing | no      | defaultAxios |

### Return

| Return value | Type   | Description                                                             | Default value |
| ------------ | ------ | ----------------------------------------------------------------------- | ------------- |
| state | Object | An object containing the response value | null
| refetch | Function | An function to refetch | null  |
npm package: @lchooks/use-beforeleave
Description: React Hook to update your document's title
Author: Changho Lee
Latest version: 1.0.1

# @lchooks/use-before-leave

React Hook to execute a function when the mouse leaves the page. Useful to show a popup or for analytics.

노마드코더 수업을 들으면서 클론코딩했습니다.
Thank you nomadcoders!!
https://academy.nomadcoders.co/p/introduction-to-react-hooks

## Installation

#### yarn

`yarn add @lchooks/use-before-leave`

#### npm

`npm i @lchooks/use-before-leave`

## Usage

```js
import React from "react";
import useBeforeLeave from "@lchooks/use-before-leave";

function App() {
  const beforeLeave = () => console.log("User is leaving...");
  useBeforeLeave(beforeLeave);
  return <h1>Hello lchooks</h1>;
}
```

### Arguments

| Argument      | Type     | Description                                              | Required |
| ------------- | -------- | -------------------------------------------------------- | -------- |
| onBeforeLeave | function | Function to be called when the mouse leaves the document | yes      |
npm package: @lchooks/use-confirm
Description: React Hook to update your document's title
Author: Changho Lee
Latest version: 1.0.1

# @lchooks/use-confirm

React Hook to ask the user for a confirmation before executing a function.

노마드코더 수업을 들으면서 클론코딩했습니다.
Thank you nomadcoders!!
https://academy.nomadcoders.co/p/introduction-to-react-hooks

## Installation

#### yarn

`yarn add @lchooks/use-confirm`

#### npm

`npm i @lchooks/use-confirm`

## Usage

```js
import React from "react";
import useConfirm from "@lchooks/use-confirm";

function App() {
  const deleteWorld = () => console.log("Deleting world...");
  const confirmDelete = useConfirm("Are you sure?", deleteWorld);
  return <button onClick={confirmDelete}>Delete the world</button>;
}
```

### Arguments

| Argument  | Type     | Description                                         | Required |
| --------- | -------- | --------------------------------------------------- | -------- |
| message   | string   | Message to show the user on the confirmation propmt | yes      |
| onConfirm | function | Function to be executed when the user confirms      | yes      |
| onCancel  | function | Function to be executed when the user cancels       | no       |

### Return

| Return value | Type     | Description                                    | Default value |
| ------------ | -------- | ---------------------------------------------- | ------------- |
| function     | function | Function wrapped around the confirmation logic | null          |
npm package: @lchooks/use-fadein
Description: React Hook to update your document's title
Author: Changho Lee
Latest version: 1.0.1

# @lchooks/use-fade-in

React Hook to fade in any element.

노마드코더 수업을 들으면서 클론코딩했습니다.
Thank you nomadcoders!!
https://academy.nomadcoders.co/p/introduction-to-react-hooks

## Installation

#### yarn

`yarn add @lchooks/use-fade-in`

#### npm

`npm i @lchooks/use-fade-in`

## Usage

```js
import React from "react";
import useFadeIn from "@lchooks/use-fade-in";

function App() {
  const fadeIn = useFadeIn(5, 10);
  return <h1 {...fadeIn}>This will fade in.</h1>;
}
```

### Arguments

| Argument | Type   | Description                                     | Required | Default value |
| -------- | ------ | ----------------------------------------------- | -------- | ------------- |
| duration | number | Sets the duration of the transition. In seconds | no       | 1             |
| delay    | number | Delays of transition's start. In seconds        | no       | 0             |

### Return

`useScroll` returns an object containing the following:

| Name  | Type      | Description                                                               |
| ----- | --------- | ------------------------------------------------------------------------- |
| ref   | React Ref | A ref created to fadeIn the element                                       |
| style | Object    | Style object containing `{opacity:0}` to give to the element as a default |

It's recommended to just spread the returned object on the element as shown in the Usage section above.
npm package: @lchooks/use-fullscreen
Description: React Hook to update your document's title
Author: Changho Lee
Latest version: 1.0.1

# @lchooks/use-fullscreen

React Hook to make any element go Fullscreen

노마드코더 수업을 들으면서 클론코딩했습니다.
Thank you nomadcoders!!
https://academy.nomadcoders.co/p/introduction-to-react-hooks

## Installation

#### yarn

`yarn add @lchooks/use-fullscreen`

#### npm

`npm i @lchooks/use-fullscreen`

## Usage

```js
import React from "react";
import useFullscreen from "@lchooks/use-fullscreen";

function App() {
  const onChange = isFull =>
    console.log(isFull ? "Nomadcoders are in Fullscreen" : "Nomadcoders are not in Fullscreen");
  const { element, triggerFull, exitFull } = useFullscreen(onChange);
  return (
    <div ref={element}>
      <h1>Hello</h1>
      <button onClick={triggerFull}>Make this Fullscreen</button>
      <button onClick={exitFull}>Exit Fullscreen</button>
    </div>
  );
}
```

### Arguments

| Argument | Type     | Description                                                       | Arguments        | Required |
| -------- | -------- | ----------------------------------------------------------------- | ---------------- | -------- |
| onChange | function | Function to be called when the screen goes Fullscreen or exits is | isFull : Boolean | no       |

### Return

`useFullscreen` returns an object containing the following:

| Return value | Type      | Description                                                |
| ------------ | --------- | ---------------------------------------------------------- |
| element      | React Ref | Ref to add to the element that you want to make fullscreen |
| triggerFull  | Function  | Function to make the element enter fullscreen              |
| exitFull     | Function  | Function to make the document exit fullscreen              |
npm package: @lchooks/use-hover
Description: React Hook to update your document's title
Author: Changho Lee
Latest version: 1.0.1

# @lchooks/use-hover

React Hook to detect a hover on an any React Element

노마드코더 수업을 들으면서 클론코딩했습니다.
Thank you nomadcoders!!
https://academy.nomadcoders.co/p/introduction-to-react-hooks

## Installation

#### yarn

`yarn add @lchooks/use-hover`

#### npm

`npm i @lchooks/use-hover`

## Usage

```js
import React from "react";
import useHover from "@lchooks/use-hover";

function App() {
  const onHover = () => console.log("Nomadcoders hovered!");
  const markedRef = useClick(onHover);
  return <h1 ref={markedRef}>Hello Nomadcoders</h1>;
}
```

### Arguments

| Argument | Type     | Description                                       | Required |
| -------- | -------- | ------------------------------------------------- | -------- |
| onHover  | function | Function to be called when the element is hovered | yes      |

### Return

| Return value | Type      | Description                                                     | Default value |
| ------------ | --------- | --------------------------------------------------------------- | ------------- |
| ref          | React Ref | A React Ref listening to the hover event, add it to any element | null          |
npm package: @lchooks/use-input
Description: React Hook to update your document's title
Author: Changho Lee
Latest version: 1.0.1

# @lchooks/use-input

React Hook to get value which user entered and check validate.

노마드코더 수업을 들으면서 클론코딩했습니다.
Thank you nomadcoders!!
https://academy.nomadcoders.co/p/introduction-to-react-hooks

## Installation

#### yarn

`yarn add @lchooks/use-input`

#### npm

`npm i @lchooks/use-input`

## Usage

```js
import React from "react";
import useInput from "@lchooks/use-input";

function App() {
  const maxLen = value => value.length <= 20;
  const name = useInput("Nomadcoders", maxLen);
  return (
    <div className="App">
      <h1>Hi</h1>
      <input placeholder="hey" {...name} />
    </div>
  );
}
```

### Arguments

| Argument  | Type     | Description                                         | Required |
| --------- | -------- | --------------------------------------------------- | -------- |
| initialValue   | string   | Default string | yes      |
| validator | function | Function to check validate value which entered by user | no  | 

### Return

| Return value | Type   | Description                                                             | Default value |
| ------------ | ------ | ----------------------------------------------------------------------- | ------------- |
| value | string | String which entered by user | null  |
| onChange | function | Fucntion to get value which entered by user | null  |
npm package: @lchooks/use-network
Description: React Hook to update your document's title
Author: Changho Lee
Latest version: 1.0.1

# @lchooks/use-network

React Hook to listen when the user goes online or offline.

노마드코더 수업을 들으면서 클론코딩했습니다.
Thank you nomadcoders!!
https://academy.nomadcoders.co/p/introduction-to-react-hooks

## Installation

#### yarn

`yarn add @lchooks/use-network`

#### npm

`npm i @lchooks/use-network`

## Usage

```js
import React from "react";
import useNetwork from "@lchooks/use-network";

function App() {
  const onNetworkChange = isOnline =>
    console.log(isOnline ? "Nomadcoders are back online" : "Nomadcoders just got offline");
  const isOnline = useNetwork(onNetworkChange);
  return <h1>{isOnline ? "Nomadcoders are online" : "Nomadcoders are offline"}</h1>;
}
```

### Arguments

| Argument        | Type     | Description                                           | Arguments          | Required |
| --------------- | -------- | ----------------------------------------------------- | ------------------ | -------- |
| onNetworkChange | function | Function to be called when the network status changes | isOnline : Boolean | no       |

### Return

| Return value | Type    | Description                                         | Default value |
| ------------ | ------- | --------------------------------------------------- | ------------- |
| isOnline     | Boolean | A boolean representing if the user is online or not | true          |
npm package: @lchooks/use-notification
Description: React Hook to update your document's title
Author: Changho Lee
Latest version: 1.0.1

# @lchooks/use-notification

React Hook to request data asynchronous And Refetch when the user executing a function.

노마드코더 수업을 들으면서 클론코딩했습니다.
Thank you nomadcoders!!
https://academy.nomadcoders.co/p/introduction-to-react-hooks

## Installation

#### yarn

`yarn add @lchooks/use-notification`

#### npm

`npm i @lchooks/use-notification`

## Usage

```js
import React from "react";
import useNotification from "@lchooks/use-notification";

function App() {
  const triggerNotif = useNotification("Thank you Nomadcoders", {
    body: "notification~"
  });
  return (
    <div className="App">
      <button onClick={triggerNotif}>notification</button>
    </div>
  );
}
```

### Arguments

| Argument  | Type     | Description                                         | Required |
| --------- | -------- | --------------------------------------------------- | -------- |
| title   | string   | String to show the user on the notification prompt | yes      |
| options | array | array to be executed optional      | no      |

### Return

| Return value | Type   | Description                                                             | Default value |
| ------------ | ------ | ----------------------------------------------------------------------- | ------------- |
| Notification       | Object | An object containing the notification title and options | null  |
npm package: @lchooks/use-preventleave
Description: React Hook to update your document's title
Author: Changho Lee
Latest version: 1.0.1

# @lchooks/use-prevent-leave

React Hook to prompt the user for confirmation before leaving the page. Useful when changes haven't been saved.

노마드코더 수업을 들으면서 클론코딩했습니다.
Thank you nomadcoders!!
https://academy.nomadcoders.co/p/introduction-to-react-hooks

## Installation

#### yarn

`yarn add @lchooks/use-prevent-leave`

#### npm

`npm i @lchooks/use-prevent-leave`

## Usage

```js
import React from "react";
import usePreventLeave from "@lchooks/use-prevent-leave";

function App() {
  const { enablePrevent, disablePrevent } = usePreventLeave();
  const saveChanges = async () => {
    enablePrevent();
    await sendToApi();
    disablePrevent();
  };
  return <button onClick={saveChanges}>Save changes</button>;
}
```

### Return

| Return value | Type   | Description                                                                                                                     |
| ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------- |
| Functions    | Object | A object containing functions `enablePrevent` and `disablePrevent`, use this functions to enable/disable the leaving prevention |
npm package: @lchooks/use-scroll
Description: React Hook to update your document's title
Author: Changho Lee
Latest version: 1.0.1

# @lchooks/use-scroll

React Hook to get X/Y coordinates of current position of the scroll.

노마드코더 수업을 들으면서 클론코딩했습니다.
Thank you nomadcoders!!
https://academy.nomadcoders.co/p/introduction-to-react-hooks

## Installation

#### yarn

`yarn add @lchooks/use-scroll`

#### npm

`npm i @lchooks/use-scroll`

## Usage

```js
import React from "react";
import useScroll from "@lchooks/use-scroll";

function App() {
  const { x, y } = useScroll();
  return (
    <h1>
      nomadcoders are in: {x} / {y}
    </h1>
  );
}
```

### Return

| Return value | Type   | Description                                                             | Default value |
| ------------ | ------ | ----------------------------------------------------------------------- | ------------- |
| Coords       | Object | An object containing the x/y coordinates of the current scroll position | `{x:0, y:0}`  |
npm package: @lchooks/use-tabs
Description: React Hook to update your document's title
Author: Changho Lee
Latest version: 1.0.1

# @lchooks/use-tabs

React Hook to get currentItem when the user excuting a function.

노마드코더 수업을 들으면서 클론코딩했습니다.
Thank you nomadcoders!!
https://academy.nomadcoders.co/p/introduction-to-react-hooks

## Installation

#### yarn

`yarn add @lchooks/use-tabs`

#### npm

`npm i @lchooks/use-tabs`

## Usage

```js
import React from "react";
import useTabs from "@lchooks/use-tabs";

function App() {
  const { currentItem, changeItem } = useTabs(0, content);
  return (
    <div className="App">
      {content.map((section, index) => (
        <button onClick={() => changeItem(index)}>{section.tab}</button>
      ))}
      <div>{currentItem.content}</div>
    </div>
  );
}
```

### Arguments

| Argument  | Type     | Description                                         | Required |
| --------- | -------- | --------------------------------------------------- | -------- |
| initialTab   | string   | String which index should start with | no      |
| allTabs | map | map to show the user on the DOM      | yes      | 

### Return

| Return value | Type   | Description                                                             | Default value |
| ------------ | ------ | ----------------------------------------------------------------------- | ------------- |
| index, content | string | String to show the index of item and content of currentItem | `{currentItem:allTabs[currentIndex], changeItem:setCurrentIndex}`  |
npm package: @lchooks/use-title
Description: React Hook to update your document's title
Author: Changho Lee
Latest version: 1.0.1

# @lchooks/use-title

React Hook to update your document's title.

노마드코더 수업을 들으면서 클론코딩했습니다.
Thank you nomadcoders!!
https://academy.nomadcoders.co/p/introduction-to-react-hooks

## Installation

#### yarn

`yarn add @lchooks/use-title`

#### npm

`npm i @lchooks/use-title`

## Usage

```js
import React from "react";
import useTitle from "@lchooks/use-title";

function App() {
  useTitle("Thank you nomadcoders!!");
  return <h1>Welcome</h1>;
}
```

### Arguments

| Argument | Type   | Description                                | Required |
| -------- | ------ | ------------------------------------------ | -------- |
| title    | string | The title you want to use on your document | yes      |
npm package: @lchristille/jp-numbers
Description: Convert between number and Japanese
Author: lchristille
Latest version: 1.0.1

# jp-numbers

[![Node.js Package](https://github.com/lchristille/jp-numbers/workflows/Node.js%20Package/badge.svg)](https://github.com/lchristille/jp-numbers/actions)
[![GitHub license](https://img.shields.io/github/license/lchristille/jp-numbers)](https://opensource.org/licenses/MIT)

Convert between number and Japanese.

[See in npmjs.com](https://www.npmjs.com/package/@lchristille/jp-numbers)

### TypeScript

```ts
import { number2jp, jp2number } from "@lchristille/jp-numbers";

console.log(number2jp(100001101));
// => 一億千百一
console.log(jp2number("一億千百一"));
// => 100001101
```

### JavaScript

```js
const { number2jp, jp2number } = require("@lchristille/jp-numbers");

console.log(number2jp(0));
// => 〇
```

## Supported Range

This library can handle numbers within the following range:

- Numbers: Up to JavaScript's `Number.MAX_SAFE_INTEGER` (9,007,199,254,740,991)
- Units: Supports units up to "kei" (京, 10^16)

**Not supported**:

- Units larger than "kei" (such as 垓, 𥝱, 穣, 溝, 澗, 正, 載, 極, etc.)
- Fractional units like "bu" (分), "rin" (厘), "mou" (毛), etc. (integers only)

Exceptions will be thrown for invalid inputs (numbers out of range, NaN, invalid kanji number strings, etc.).

## Other Styles

`jp2number` supports [Daiji](https://ja.wikipedia.org/wiki/%E5%A4%A7%E5%AD%97_(%E6%95%B0%E5%AD%97)) and Hiragana.

**What is Daiji?**: Daiji (大字) refers to the formal/old numerical kanji characters used in Japan for financial and legal documents to prevent forgery. These characters are more complex than standard numerals, making them harder to alter. Examples include 壱 (1), 弐 (2), 参 (3), etc.

```js
const { jp2number } = require("@lchristille/jp-numbers");

console.log(jp2number("零"));
// => 0
```

## Supported Notation Styles

The following notation styles are supported:

| Standard | Other Supported Notations | Numeric Value |
|------|-----------------|-------------|
| 〇 | 零, ぜろ, れい | 0 |
| 一 | 壱, 壹, 弌, いち, いっ | 1 |
| 二 | 弐, 貳, 貮, 贰, に | 2 |
| 三 | 参, 參, 弎, 叁, さん | 3 |
| 四 | 肆, 䦉, し, よん | 4 |
| 五 | 伍, ご | 5 |
| 六 | 陸, 陆, ろく, ろっ | 6 |
| 七 | 漆, 質, 柒, なな, しち | 7 |
| 八 | 捌, はち, はっ | 8 |
| 九 | 玖, きゅう | 9 |
| 十 | 拾, 什, じゅう, じっ, じゅっ | 10 |
| 二十 | 廿, 〹, 念 | 20 |
| 三十 | 丗, 卅 | 30 |
| 四十 | 卌 | 40 |
| 百 | 佰, 陌, ひゃく, びゃく, ぴゃく | 100 |
| 千 | 仟, 阡, せん, ぜん | 1,000 |
| 万 | 萬, まん | 10,000 |
| 億 | おく | 100,000,000 |
| 兆 | ちょう | 1,000,000,000,000 |
| 京 | けい | 10,000,000,000,000,000 |
| マイナス | -, 負の, 負, まいなす | - (negative) |
| (empty) | とんで | Indicates omission when reciting numbers (used when a digit place has zero value) |

## Install

Install from the command line:

```sh
npm install @lchristille/jp-numbers
```

Install via package.json:

```json
{
  "dependencies": {
    "@lchristille/jp-numbers": "latest"
  }
}
```
npm package: @lciii/rtk-slice-helper
Description: Cut your RTK slice code in half
Author: Luis Camacho III
Latest version: 0.1.1

# rtk-slice-helper
Cut your RTK slice code in half

## The Problem
Whenever you want to use your slice in a component, you have to import and use a lot of boilerplate code
- import useDispatch to dispatch reducer actions
- import useSelector to select from the store
- import RootState to safely type the state when selecting
- instantiating useDispatch and useSelector
- wrapping every reducer action with dispatch
```
import { RootState } from "store";
import { useSelector, useDispatch } from "react-redux";
import { decrement, increment, incrementByAmount } from "counterSlice";

export const Counter = () => {
  const dispatch = useDispatch();
  const counter = useSelector((state: RootState) => state.counter.value);

  return (
    <>
      <div>{counter}</div>
      <button onClick={() => dispatch(increment())}>
        Increment the counter!
      </button>
      <button onClick={() => dispatch(decrement())}>
        Decrement the counter!
      </button>
      <button onClick={() => dispatch(incrementByAmount(10))}>
        Increment by 10!
      </button>
    </>
  );
};
```

## The Solution
Simply pass your slice to useSliceHelper and it returns all the needed data and properties for you!

The properties also all have dispatch() built into them:

```
import { counterSlice } from './counterSlice'
import { useSliceHelper } from '../useSliceHelper'

export const Counter = () => {
  const {
    counter: { value },
    increment, decrement, incrementByAmount
  } = useSliceHelper(counterSlice)

  return (
    <>
      <div>{counter}</div>
      <button onClick={increment)}>
        Increment the counter!
      </button>
      <button onClick={decrement)}>
        Decrement the counter!
      </button>
      <button onClick={() => incrementByAmount(10)}>
        Increment by 10!
      </button>
    </>
  );
};
```

## What gets returned?
An object with the following keys and values:
- [The name of the slice]: [the current state of that slice]
- ...[every reducer method of that slice with dispatch built in]:
```
  const {
    counter: { value }, // the name of the slice along with each state property for that slice
    increment, decrement, incrementByAmount // every reducer method for that slice. No need to dispatch!
  } = useSliceHelper(counterSlice)
```
npm package: @lclhst/dev-cli
Description: CLI to help setup and run various Notarize development services
Author: Kevin Murphy @kevingelion
Latest version: 0.1.0

dev-cli
========

CLI to help start various Notarize development services

[![oclif](https://img.shields.io/badge/cli-oclif-brightgreen.svg)](https://oclif.io)
[![Version](https://img.shields.io/npm/v/notarize.svg)](https://npmjs.org/package/notarize)
[![CircleCI](https://circleci.com/gh/repositories/cli/tree/master.svg?style=shield)](https://circleci.com/gh/repositories/cli/tree/master)
[![Codecov](https://codecov.io/gh/repositories/cli/branch/master/graph/badge.svg)](https://codecov.io/gh/repositories/cli)
[![Downloads/week](https://img.shields.io/npm/dw/notarize.svg)](https://npmjs.org/package/notarize)
[![License](https://img.shields.io/npm/l/notarize.svg)](https://github.com/repositories/cli/blob/master/package.json)

<!-- toc -->
* [Usage](#usage)
* [Commands](#commands)
<!-- tocstop -->
# Usage
<!-- usage -->
```sh-session
$ npm install -g @lclhst/dev-cli
$ notarize-dev COMMAND
running command...
$ notarize-dev (-v|--version|version)
@lclhst/dev-cli/0.1.0 darwin-x64 node-v14.15.0
$ notarize-dev --help [COMMAND]
USAGE
  $ notarize-dev COMMAND
...
```
<!-- usagestop -->
# Commands
<!-- commands -->
* [`notarize-dev help [COMMAND]`](#notarize-dev-help-command)
* [`notarize-dev web SUBCOMMAND`](#notarize-dev-web-subcommand)

## `notarize-dev help [COMMAND]`

display help for notarize-dev

```
USAGE
  $ notarize-dev help [COMMAND]

ARGUMENTS
  COMMAND  command to show help for

OPTIONS
  --all  see all commands in CLI
```

_See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v3.2.2/src/commands/help.ts)_

## `notarize-dev web SUBCOMMAND`

Helper commands for running inside the Notarize web project

```
USAGE
  $ notarize-dev web SUBCOMMAND

ARGUMENTS
  SUBCOMMAND  (setup) subcommand

EXAMPLE
  $ notarize-dev web setup
```

_See code: [src/commands/web.ts](https://github.com/kevingelion/dev-cli/blob/v0.1.0/src/commands/web.ts)_
<!-- commandsstop -->
npm package: @lcluber/bumpjs
Description: 2D physics engine written in TypeScript
Author: Ludovic Cluber
Latest version: 0.5.5

## Synopsis

[Bump.js](http://bumpjs.lcluber.com) is a 2D physics engine written in TypeScript.

## Motivation

The main purpose of this library is to provide a simple way to handle physics.

## Installation

```bash
$ npm install @lcluber/bumpjs
```
Or download it **[here](http://bumpjs.lcluber.com/#download)**.

## Demo

See a basic example **[here](http://bumpjs.lcluber.com/#example)**.

## Usage

Learn how to use it **[here](http://bumpjs.lcluber.com/#source)**.

## API Reference

Read the documentation **[here](http://bumpjs.lcluber.com/doc/)**.


## Tests

No tests to run yet

## Contributors

There is still a lot of work to do on this project and I would be glad to get all the help you can provide.
To contribute you can clone the project on **[GitHub](https://github.com/LCluber/Bump.js)** and see  **NOTICE.md** for detailed installation walkthrough of the project.

## License

MIT License

Copyright (c) 2011 Ludovic CLUBER

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
npm package: @lcluber/pdfvjs
Description: PDF viewer written in Typescript
Author: Ludovic Cluber
Latest version: 0.3.1

## Synopsis

[PDFv.js](http://pdfvjs.lcluber.com) is an open source PDF viewer written in TypeScript.

## Motivation

The goal of this library is to provide an easy way to display pdf documents in the browser.

## Installation

```bash
$ npm install @lcluber/pdfvjs
```
Or download it **[here](http://pdfvjs.lcluber.com/#download)**.

## Usage

### ES6

*Include 'node-modules/@lcluber/pdfvjs/dist/pdf.min.js' before PDFv.js ES6 module when you create your bundle for the web.*

```html
<canvas id="pdfViewer"></canvas>
```

```javascript
import { Viewer } from '@lcluber/pdfvjs';

let viewer = new Viewer();
viewer.getDocument('./pdf/test.pdf').then(()=> {
  viewer.display('pdfViewer', viewer.numPages);// render the last page of the document
});
```

### ES5

```html
<script src="node-modules/@lcluber/pdfvjs/dist/pdfv.iife.min.js"></script>
<canvas id="pdfViewer"></canvas>
```

```javascript
var viewer = new PDFv.Viewer();
viewer.getDocument('./pdf/test.pdf').then(function() {
  viewer.display('pdfViewer', viewer.numPages);// render the last page of the document
});
```

## Demo

See a basic example **[here](http://pdfvjs.lcluber.com/#example)**.

## API Reference

Read the documentation **[here](http://pdfvjs.lcluber.com/doc/)**.

## Tests

No tests to run yet

## Contributors

PDFv.js is still in early development and I would be glad to get all the help you can provide for this project.
To contribute you can clone the project on **[GitHub](https://github.com/LCluber/PDFv.js)** and See **NOTICE.md** for detailed installation walkthrough.

## License

MIT License

Copyright (c) 2018 Ludovic CLUBER

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
npm package: @lcluber/roostrjs
Description: WebGL 3D engine written in TypeScript
Author: Ludovic Cluber
Latest version: 0.5.12

## Synopsis

[RoostR.js](http://roostrjs.lcluber.com) is An open source WebGL 3D engine written in TypeScript. To help you develop HTML5 / WebGL apps for desktop and mobile browsers.

## Motivation

The main purpose of this library is to provide a simple way to develop 3D apps for browsers.

## Installation

```bash
$ npm install @lcluber/roostrjs
```
Or download it **[here](http://roostrjs.lcluber.com/#download)**.

## Demo

See a basic example **[here](http://roostrjs.lcluber.com/#example)**.

## Usage

Learn how to use it **[here](http://roostrjs.lcluber.com/#source)**.

## API Reference

Read the documentation **[here](http://roostrjs.lcluber.com/doc/)**.

## Contributors

There is still a lot of work to do on this project and I would be glad to get all the help you can provide.
To contribute you can clone the project on **[GitHub](https://github.com/LCluber/RoostR.js)** and see  **NOTICE.md** for detailed installation walkthrough of the project.

## License

MIT License

Copyright (c) 2015 Ludovic CLUBER

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
npm package: @lcluber/squadjs
Description: Lightweight web chat written in Typescript
Author: Ludovic Cluber
Latest version: 0.1.2

## Synopsis

[Squad.js](http://squadjs.lcluber.com) is a lightweight web chat written in Typescript.

## Motivation

The purpose of this library is to provide a simple and easy way to chat on a web app.

## Installation

```bash
$ npm install @lcluber/squadjs
```
Or download it **[here](http://squadjs.lcluber.com/#download)**.

## Usage

Learn how to use it **[here](http://squadjs.lcluber.com/#source)**.

## API Reference

Read the documentation **[here](http://squadjs.lcluber.com/doc/)**.

## Tests

No tests to run yet

## Contributors

There is still a lot of work to do on this project and I would be glad to get all the help you can provide.
To contribute you can clone the project on **[GitHub](https://github.com/LCluber/Squad.js)** and see  **NOTICE.md** for detailed installation walkthrough of the project.

## License

MIT License

Copyright (c) 2015 Ludovic CLUBER

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
npm package: @lcluber/type6js
Description: Mathematics library for Javascript
Author: Ludovic Cluber
Latest version: 3.0.0

[![License: MIT](https://img.shields.io/npm/l/@lcluber/type6js.svg)](https://opensource.org/licenses/MIT)
[![npm version](https://badge.fury.io/js/%40lcluber%2Ftype6js.svg)](https://www.npmjs.com/package/@lcluber/type6js)
[![minified size](https://img.shields.io/bundlephobia/min/@lcluber/type6js)](https://www.npmjs.com/package/@lcluber/type6js)

## Synopsis

[Type6.js](http://type6js.lcluber.com) is an open source mathematics library written in TypeScript.
Vectors, matrices, trigonometry, bezier curves, lerp, random distribution and so on.

- No dependency
- Very lightweight
- Thoroughly tested
- Works in browsers and Node.js
- Old browsers support (IE9)

## Motivation

The main purpose of this library is to provide a comprehensive tool for all projects involving mathematics functions.

## Installation

### NPM

```bash
$ npm install @lcluber/type6js
```

### Yarn

```bash
$ yarn add @lcluber/type6js
```

## API Reference

Read the documentation **[here](http://type6js.lcluber.com/installation.html)**.

## Contributors

Type6.js is still in development and I would be glad to get all the help you can provide.
To contribute you can clone the project on **[GitHub](https://github.com/LCluber/Type6.js)** and See **NOTICE.md** for detailed installation walkthrough.

## License

MIT License

Copyright (c) 2011 Ludovic CLUBER

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.