open-index/open-npm huggingface dataset:
npm package: @seangenabe/esbuild-cli
Description: Build Typescript files with esbuild
Author: Sean Marvi Oliver Genabe
Latest version: 4.0.0

# esbuild CLI

Build TypeScript packages with esbuild.

## Usage

```sh
esbuild-build [...patterns]
esbuild-watch [...patterns]
```

Arguments:

* patterns - One or more patterns to glob for files. Powered by [globby](https://www.npmjs.com/package/globby).

Working directory:

Your working directory must have a `tsconfig.json` file.
npm package: @seangenabe/fastify-apollo-2
Description: Fastify and Apollo Server integration
Author: Sean Genabe
Latest version: 1.1.5

# fastify-apollo-2

A new take on [Fastify](https://github.com/fastify/fastify) and [Apollo Server](https://github.com/apollographql/apollo-server) integration. Based on the official hapi plugin.

## Usage

```js
// Register GraphQL endpoint
fastify.register(require('@seangenabe/fastify-apollo-2'), {
  graphqlOptions: { schema },
  prefix: '/graphql'
})
// Registry GraphiQL endpoint
fastify.register(require('@seangenabe/fastify-apollo-2/graphiql', {
  graphiqlOptions: { endpointURL: '/graphql' },
  prefix: '/graphiql'
})
```

Reference:
* [GraphQL options](https://www.apollographql.com/docs/apollo-server/setup.html)
* [GraphiQL options](https://www.apollographql.com/docs/apollo-server/graphiql.html)
npm package: @seangenabe/fastify-bankai-hook
Description: Fastify plugin for bankai v9
Author: Sean Genabe
Latest version: 2.0.0

# fastify-bankai-hook

Fastify plugin for [bankai](https://github.com/choojs/bankai) v9.

## Usage

```javascript
const Path = require('path')
const fastify = require('fastify')()

fastify.register(require('@seangenabe/fastify-bankai-hook'), {
  prefix: '/',
  entry: Path.join(__dirname, 'client.js')
})
```

## Plugin options

* entry: The Browserify entry point for your Bankai app.
* opts: Bankai options. Refer to their [documentation](https://github.com/choojs/bankai#api) for more info. `quiet` defaults to `true` if not defined.
npm package: @seangenabe/multikey-map
Description: A `Map`-like structure with array keys
Author: Sean Marvi Oliver Genabe
Latest version: 1.2.0

## multikey-map

A `Map`-like structure with array keys

[![Gitlab pipeline status](https://img.shields.io/gitlab/pipeline/seangenabe/multikey-map.svg?style=flat-square)](https://gitlab.com/seangenabe/multikey-map)
[![npm](https://img.shields.io/npm/v/@seangenabe/multikey-map.svg?style=flat-square)](https://www.npmjs.com/package/@seangenabe/multikey-map)

## Usage

```typescript
import { MultikeyMap } from "@seangenabe/multikey-map"

const map = new MultikeyMap<[number, number, number], string>()

map.set([1, 2, 3], "a")
map.get([1, 2, 3]) // "a"
```

* All `Map` methods are implemented except that the keys are arrays.
* Empty array keys (`[]`) are supported.
* Storing keys differing in lengths are supported.
* Keys must always be an array.
* Insertion order is not kept.

### Map implementation

* `get size(): number`
* `get(key: K): V | undefined`
* `set(key: K, value: V): this`
* `delete(key: K): boolean`
* `has(key: K): boolean`
* `clear(): void`
* `entries(): IterableIterator<[K, V>]`
* `[Symbol.iterator](): IterableIterator<[K, V]>`
* `keys(): IterableIterator<K>`
* `values(): IterableIterator<V>`
* `forEach(callbackFn: (value: V, key: K, map: this) => void, thisArg?: any): void`
* `get [Symbol.toStringTag](): string`

### `map.setKV(key, value)`

```
setKV(key: K, value: V): boolean
```

Same as `set` except it returns a boolean indicating whether the value has been inserted. Otherwise, the value has replaced an existing value.

### `map.prefixEntries(prefixKey)`

```
prefixEntries(prefixKey: SubArray<K>): IterableIterator<[K, V]>
```

Returns all entries whose key starts with the given prefix.
npm package: @seangenabe/mutex
Description: Simple async-await mutex.
Author: Sean Marvi Oliver Genabe
Latest version: 1.1.1

# Mutex

Simple async-await mutex.

## Usage

```typescript
import { Mutex } from '@seangenabe/mutex'

const mutex = new Mutex()

;(async () => {
  const release = await mutex.wait()
  // ...
  release()
})()

```

### mutex.wait(): Promise<() => void>

Returns: `Promise<() => void>`

Waits for other claims on this mutex, then resolves with a function that can be called to release the claim on this mutex.
npm package: @seangenabe/semaphore
Description: Simple async semaphore
Author: Sean Marvi Oliver Genabe
Latest version: 1.0.0

# Semaphore

Simple async semaphore

If you like this package, be sure to star its repo, and please consider [donating](https://seangenabe.netlify.com/donate).

## Usage

```typescript
import { Semaphore } from "@seangenabe/semaphore"

const semaphore = new Semaphore(64)

;(async () => {
  const release = await semaphore.wait()
  // ...
  release()
})()
```


### const semaphore = new Semaphore(initialSize)

Parameters:
* `initialSize` - the maximum number of claims allowed. Must be a positive integer or `Infinity`.

Creates a new semaphore with the specified size.



### semaphore.wait(): Promise<() => void>

Returns: `Promise<() => void>`

Waits for other claims on this semaphore, then resolves with a function that can be called to release the claim on this semaphore.



### semaphore.size: number

Read-only access to the remaining number of claims that can be taken.
npm package: @seangenabe/shadow
Description: Glob files and copy/symlink/hardlink in another directory.
Author: Sean Genabe
Latest version: 6.0.1

# shadow

[![npm](https://img.shields.io/npm/v/@seangenabe/shadow.svg?style=flat-square)](https://www.npmjs.com/package/@seangenabe/shadow)
[![Build Status](https://img.shields.io/travis/seangenabe/shadow/master.svg&style=flat-square)](https://travis-ci.org/seangenabe/shadow)
[![Coveralls](https://img.shields.io/coveralls/github/seangenabe/shadow.svg?style=flat-square)](https://coveralls.io/github/seangenabe/shadow)
[![Dependency Status](https://img.shields.io/david/seangenabe/shadow.svg?style=flat-square)](https://david-dm.org/seangenabe/shadow)
[![devDependency Status](https://img.shields.io/david/dev/seangenabe/shadow.svg?style=flat-square)](https://david-dm.org/seangenabe/shadow#info=devDependencies)
[![node](https://img.shields.io/node/v/@seangenabe/shadow.svg?style=flat-square)](https://nodejs.org/en/download/)

Glob files and copy/symlink/hardlink in another directory.

## Usage

```javascript
import { shadow } from "@seangenabe/shadow"
```

### shadow(pattern, dest, opts)

Globs the current directory (`opts.cwd || process.cwd()`) and copies, symlinks, or hardlinks the globbed files with the globbed folder structure into dest.

Parameters:
* pattern - array | string - One or more [glob patterns](https://github.com/isaacs/minimatch#usage) to select the files to link
* dest - the destination directory
* opts - [options](https://github.com/sindresorhus/globby#options) to pass to `globby`
  * copyMode - `'symlink' | 'link'` - Symlink or hardlink the files. If unspecified, will simply copy the files.
  * fallback - Fall back to copying if there aren't enough permissions to symlink or hardlink (`EPERM`).

Returns a promise that resolves when all files have been hardlinked.

## CLI

```
shadow <cwd> <dest> [pattern = **]
```

Options:
* cwd, dest, pattern - same as above
* -m --mode - symlink or hardlink the file
* -f --fallback - fall back to copying the file on EPERM


## What happened to `hardlink`?

This package is modified from `hardlink`'s code and is a superset of its functionality.

## Related

* [copy-newer](https://github.com/seangenabe/copy-newer)

## License 

MIT
npm package: @seangenabe/switcher-component
Description: Switches display of children elements/components.
Author: Sean Genabe
Latest version: 1.0.0

# switcher-component

Switches display of children elements/components.

## Usage

```typescript
import { SwitcherComponent } from 'switcher-component'
import html from 'nanohtml'

class MyComponent extends SwitcherComponent {
  constructor() {
    super()
    // Children can be either
    // a component with a render() method,
    // or anything nanohtml can process.
    this.children = [component1, html`<div>hello</div>`]
  }

  toggle() {
    if (this.index === 1) {
      this.index = 0
    } else {
      this.index = 1
    }
  }
}
```

## API

```typescript
export { SwitcherComponent }
export default SwitcherComponent
```

### SwitcherComponent

Extends `nanocomponent`.

#### #children

The children of this component.

Changing the value of this property will trigger a render.

For array mutations, manually trigger a render.

#### #index

The index of the component to show.

Changing the index will trigger a non-rerendering update.
npm package: @seangenabe/tangonoya-provider-jmdict
Description: Tangonoya JMdict provider
Author: Sean Marvi Oliver Genabe
Latest version: 2.0.0
Deprecated: moved to @tangonoya/provider-jmdict

# tangonoya-provider-jmdict

Tangonoya JMdict provider

[Repo](https://gitlab.com/seangenabe/tangonoya)
npm package: @seangenabe/tangonoya-provider-townsend
Description: Tangonoya provider for list of kanji by phonetic components by Hiroko Townsend
Author: Sean Marvi Oliver Genabe
Latest version: 2.0.0
Deprecated: moved to @tangonoya/provider-townsend

# tangonoya-provider-townsend

Tangonoya provider for list of kanji by phonetic components by Hiroko Townsend

Source:
* https://www.tofugu.com/japanese/look-up-kanji/
* http://sdsu-dspace.calstate.edu/bitstream/handle/10211.10/1203/Townsend_Hiroko.pdf?sequence=1
npm package: @seangenabe/tangonoya-provider-wanikani
Description: Tangonoya WaniKani API provider
Author: Sean Marvi Oliver Genabe
Latest version: 2.0.0
Deprecated: moved to @tangonoya/provider-wanikani

# tangonoya-provider-wanikani

Tangonoya WaniKani API provider

[Repo](https://gitlab.com/seangenabe/tangonoya)
npm package: @seanhouli/react-mapbox-search
Description: A location picker component that uses Mapbox's places API to provide location suggestions
Author: Sean Houilhan
Latest version: 1.0.5

# react-mapbox-search

A location picker powered by mapbox, implemented in React.

![demo gif of react-mapbox-search](https://media.giphy.com/media/IffWfXObtB1KwxDUeQ/giphy.gif)

## Quick Start

`npm i @seanhouli/react-mapbox-search`

## Features

- Suggestions for locations using the mapbox API
- Autofill when user selects suggestion
- Suggestions selectable with mouse click or with arrow key up/down + enter key
- Callback when location is selected, providing the mapbox location object and click event if selected with mouse
- Custom selection color
- Optional ISO 3166-1 country code prop to narrow search
- Placeholder text set through prop for localization support

## Usage

```javascript
import SearchBox from "@seanhouli/react-mapbox-search";

<SearchBox
    token={mapBoxApiToken}
    country="US"
    callback={({ location, event }) => {
        // location object from mapbox
        // event onMouseDown supplied if suggestion clicked
    })}
    selectColor="#ef4836"
/>
```

## API

| Prop        | Type     | Default   | Description                                    |
| ----------- | -------- | --------- | ---------------------------------------------- |
| token       | string   |           | mapbox API token                               |
| country     | string   | undefined | ISO 3166-1 country code to narrow search       |
| callback    | function | undefined | Callback function fired when suggestion chosen |
| selectColor | string   | "#58A"    | Color for currently selected suggestion item   |
| searchHint  | string   | "Search"  | Placeholder text for input when empty          |
| query       | string   | ""        | Default query to populate input                |
npm package: @seanjmurray/notesy
Description: A simple note CL app using mongodb
Author: Sean Murray
Latest version: 1.0.1

# Notesy
[![Version](https://img.shields.io/badge/version-1.0.1-brightgreen.svg)](https://github.com/seanjmurray/notesy)
[![Build Status](https://travis-ci.com/seanjmurray/notesy.svg?branch=master)](https://travis-ci.com/seanjmurray/notesy)
[![License: MIT](https://img.shields.io/badge/License-MIT-brightgreen.svg)](https://github.com/seanjmurray/notesy/blob/master/LICENSE)
## Installation 

To install the app run the following:

```
$ npm i -g @seanjmurray/notesy
```


## Usage

To enter a note run the following

```
$ notes --add "This is the note" --category "category"
```
To view notes
```
$ notes --list (optional --category "category")
```
To delete notes
```
$ notes --delete "id"
```

### Flags
- --add or -a  --category or -c to add a note
- --list or -l to view notes optional category flag 
- --delete or -d to delete a note

## Testing

```
$ npm test
```
Jest will test all functionality 

```
$ npm run lint
```
Checks for linting errors

## Changelog
- 2020-08-10 Add files and start README
- 2020-08-11 Refactor to ES6 classes and add tests
- 2020-08-12 Add CRUD to note class with mongoose
- 2020-08-13 Refactor CRUD to collection file and publish V1
npm package: @seankovacs/material-renderers
Description: Material Renderer Set for JSON Forms
Latest version: 2.5.12

# JSON Forms - More Forms. Less Code

*Complex forms in the blink of an eye*

JSON Forms eliminates the tedious task of writing fully-featured forms by hand by leveraging the capabilities of JSON, JSON Schema and Javascript.

## Material Renderers Package

This is the JSON Forms Material Renderers Package. This package only contains renderers and must be combined with [JSON Forms React](https://github.com/eclipsesource/jsonforms/blob/master/packages/react).

See the official [documentation](https://jsonforms.io/docs/integrations/react/) and the JSON Forms React [seed repository](https://github.com/eclipsesource/jsonforms-react-seed) for examples on how to integrate JSON Forms with your application.

You can combine [JSON Forms React](https://github.com/eclipsesource/jsonforms/blob/master/packages/react) with other renderers too, for example with the [Vanilla Renderers](https://github.com/eclipsesource/jsonforms/blob/master/packages/vanilla-renderers).

Check <https://www.npmjs.com/search?q=%40jsonforms> for all published JSONForms packages.

### Quick start

Install JSON Forms Core, React and React Material Renderers

```bash
npm i --save @jsonforms/core @jsonforms/react @jsonforms/material-renderers
```

Use the `JsonForms` component for each form you want to render and hand over the renderer set.

```js
import React, { useState } from 'react';
import { JsonForms } from '@jsonforms/react';
import { materialCells, materialRenderers } from '@jsonforms/material-renderers';

function App() {
  const [data, setData] = useState(initialData);
  return (
    <div className='App'>
      <JsonForms
        schema={schema}
        uischema={uischema}
        data={data}
        renderers={materialRenderers}
        cells={materialCells}
        onChange={({ data, _errors }) => setData(data)}
      />
    </div>
  );
}
```

## License

The JSON Forms project is licensed under the MIT License. See the [LICENSE file](https://github.com/eclipsesource/jsonforms/blob/master/LICENSE) for more information.

## Roadmap

Our current roadmap is available [here](https://github.com/eclipsesource/jsonforms/blob/master/ROADMAP.md).

## Feedback, Help and Support

JSON Forms is developed by [EclipseSource](https://eclipsesource.com).

If you encounter any problems feel free to [open an issue](https://github.com/eclipsesource/jsonforms/issues/new/choose) on the repo.
For questions and discussions please use the [JSON Forms board](https://spectrum.chat/jsonforms).
You can also reach us via [email](mailto:jsonforms@eclipsesource.com?subject=JSON%20Forms).
In addition, EclipseSource also offers [professional support](https://jsonforms.io/support) for JSON Forms.
npm package: @seanlatimer/nodestone
Description: Easy to use Node Lodestone parser.
Latest version: 0.2.9

# Nodestone

Easy to use Node Lodestone parser.

## How to use

### Inside your own server

```shell
yarn
yarn run express:start
```

The server will then listen on port 8080 by default.

### Inside Cloud Run

```shell
gcloud builds submit --tag gcr.io/<your image name> && gcloud beta run deploy --image gcr.io/<your image name>
```

### Inside your Node.JS project

```shell
yarn add @xivapi/nodestone
```

```js
const character = await this.characterParser.parse({ params: { characterId: id } } as any);
console.log(character);
```

The Node.JS API will be changed later on so you don't have to provide this mock request.
npm package: @seanmcgary/tsconfig
Description: A common tsconfig file for sharing between projects
Latest version: 1.0.0

## tsconfig

A common tsconfig file for sharing between projects

### Install

```bash
yarn add @seanmcgary/tsconfig
```

### Usage

The following is all you need to add to your project to extend the base config:

_tsconfig.json_
```json
{
  "extends": "./node_modules/@seanmcgary/tsconfig/tsconfig-base.json",
  "compilerOptions": {
    "rootDir": ".",
    "outDir": "dist",
    "baseUrl": ".",
    "types": [ ]
  },
  "include": [
    "index.ts"
  ]
}
```
npm package: @seanmcgary/tslint-config
Description: tslint base config
Latest version: 1.0.0

## tslint-config

A base tslint config for sharing among node modules.

### Install

```bash
yarn add @seanmcgary/tslint-config --dev

```

### Usage

_tslint.json_
```json
{
  "extends": "@seanmcgary/tslint-config",
  "rules": {
  
  }
}
```
npm package: @seanmcp/class-list
Description: A simpler class list builder
Author: Sean McPherson
Latest version: 1.1.0
Deprecated: This package has moved to class-list-builder. Please uninstall @seanmcp/class-list and install class-list-builder instead, or use an older version of @seanmcp/class-list.

# Class List

[![npm](https://img.shields.io/npm/v/@seanmcp/class-list.svg)](https://npmjs.com/package/@seanmcp/class-list) [![npm bundle size (minified)](https://img.shields.io/bundlephobia/min/@seanmcp/class-list.svg)](https://npmjs.com/package/@seanmcp/class-list) [![npm](https://img.shields.io/npm/dt/@seanmcp/class-list.svg)](https://npmjs.com/package/@seanmcp/class-list)

🦆 A simpler class list builder

## Use

```js
classList('Build', 'class lists', true && 'without', 'fear')
// -> 'Build class lists without fear'
```

## Why

[Jed Watson's `classnames` library](https://github.com/JedWatson/classnames) is pretty much the industry standard for building a list of class names. Definitely check that out if you haven't already.

This library serves as an alternative with a simpler API for conditional classes. Instead of building dynamic keys on passed objects, you can use a simple `&&` binary to pass the class if the condition is `true`.

## Install

```sh
npm install @seanmcp/class-list
# or
yarn add @seanmcp/class-list
```

## API

Import or require the default function exported from `@seanmcp/class-list`, then call and pass the desired class names as arguments:

```js
classList('one', 2, 'three', 4)
// -> 'one 2 three 4'
```

Arguments at evaluate to `false` are removed from the output:

```js
classList(0, 'one', undefined, 'three')
// -> 'one three'
```

This means you can use conditions in the passed arguments to selectively add classes:

```js
let time = 1

classList('book', time < 1 && '--due')
// -> 'book'

time = 0

classList('book', time < 1 && '--due')
// -> 'book --due'
```

## Examples

### React

```jsx
import React from 'react'
import classList from '@seanmcp/class-list'

export default function ToggleButton(props) {
    const [isOn, toggle] = useToggle() // A basic custom hook
    return (
        <button
            className={classList('ToggleButton', isOn && 'ToggleButton--on')}
            onClick={toggle}
            {...props}
        >
            ToggleButton
        </button>
    )
}
```