open-index/open-npm huggingface dataset:
npm package: @koaris/bloom-ui
Description: Bloom-ui is a public design system from the Koaris Project developed with React, Typescript, and Tailwind.
Author: guilhermesalviano
Latest version: 1.3.3

# Bloom-ui
Bloom-ui is a public design system from the Koaris Project developed with React, Typescript, and Tailwind.

## Motivation
Bloom-ui is a design system developed exclusively for the Koaris project with the aim of unifying the interfaces and simplifying the construction of new React projects.

## Installation
Install the following package:
```bash
npm i @koaris/bloom-ui
```
## Usage
This design system is built with Tailwind, and you can import it into your project as follows:
In your CSS file:
```css
@import "@koaris/bloom-ui/tailwind.css";
```
Or in your JavaScript file:
```js
import '@koaris/bloom-ui/tailwind.css'
```

Components usage:
```tsx
import { Text } from '@koaris/bloom-ui'

<Text tag="p">Test</Text>
```

## Contributions and bug reports
You can follow and make contributions in [github](https://github.com/koaris/bloom-ui).

## License
Bloom-ui is open source under the [MIT License](LICENSE.md).
npm package: @koas/v-hscroll
Description: Vue directive thay enables mouse wheel horizontal scrolling on any element
Author: Koas
Latest version: 1.0.3

# v-hscroll
Vue directive for mouse wheel horizontal scrolling.

Documentation and examples available at the [demo page](https://koas.dev/v-hscroll/).

## Quick start
Install via npm:

`$ npm install @koas/v-hscroll`

Import in your main.js file:

`import HScroll from "@koas/v-hscroll";`

Add the directive to any element with an horizontal scroll:

```
<template>
	<div class="outer">
		<div v-hscroll class="inner">
			<div class="element">1</div>
			<div class="element">2</div>
			<div class="element">3</div>
			<div class="element">4</div>
		</div>
	</div>
</template>

<style type="text/css">
.outer {
	width: 650px;
}
.inner {
	overflow: auto;
	white-space: nowrap;
	border: 1px solid #000;
}
.element {
	width: 250px;
	height: 150px;
	background: #000;
	color: #fff;
	margin: 10px;
	display: inline-flex;
	justify-content: center;
	align-items: center;
}
</style>


```
npm package: @koas/v-max-items
Description: Vue directive to limit the number of items inside an element. It adds a +N button to reveal all items.
Author: Koas
Latest version: 1.0.2

# v-max-items
Vue directive to limit the number of items inside an element. It adds a +N more button to reveal all items.

Documentation and examples available at the [demo page](http://koas.github.io/v-max-items/).
npm package: @koax/aws
Description: AWS SDK effect driver.
Latest version: 0.1.1


# aws

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

AWS SDK effect driver.

## Installation

    $ npm install @koax/aws

## Usage

```js
import {aws, awsEffect} from '@koax/aws'
import koax from 'koax'

const io = koax()
io.use(awsEffect())

// run update
io(testableUpdate)

// Action creator that updates an s3 object.
function * testableUpdate () {
  // get object
  let data = yield aws('S3', 'getObject', {
    Bucket: 'test-bucket.weo.io',
    Key: 'test.json'
  })
  let obj = JSON.parse(data.BODY.toString())

  // update
  obj.foo = 'qux'

  // put object
  yield aws('S3', 'putObject', {
    Bucket: 'test-bucket.we.io',
    Key: 'test.json',
    Body: JSON.stringify(obj)
  })
}
```

## API

### awsEffect (config)
Effect driver.

- `config` - global AWS config (e.g. region, output...)

**Returns:** redux effects middleware

### aws (service, method, params)
Action creator.

  - `service` - The aws service. Optionally can be an object with the signature:
                {service, options}, if you need to specify service options.
  - `method` - Method to call on service.
  - `params` - Params to use for call.


## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/aws.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/aws
[git-image]: https://img.shields.io/github/tag/koaxjs/aws.svg
[git-url]: https://github.com/koaxjs/aws
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/aws.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/aws
npm package: @koax/bind
Description: Create a dispatch function for a koax middleware stack.
Latest version: 0.3.4


# bind

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

Exposes a curried api to create a middleware dispatcher with promise and thunk support. 

## Installation

    $ npm install @koax/bind

## Usage

```js
import bind from '@koax/bind'

let dispatch = bind({fetched: 'google'})(
  function * (action, next, ctx) {
    if (action === 'foo') return Promise.resolve('bar')
    return next()
  }
])

dispatch('foo').then((res) => res) // => 'bar'
disaptch('qux').then((res) => res) // => 'qux'
```

## API

### bind (ctx) => (middleware)

- `ctx` - the context to bind the middleware to
- `middleware` - array of koax middleware

**Returns:** dispatch function for koax middleware stack

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/bind.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/bind
[git-image]: https://img.shields.io/github/tag/koaxjs/bind.svg
[git-url]: https://github.com/koaxjs/bind
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/bind.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/bind
npm package: @koax/boot
Description: Boot up drivers.
Latest version: 1.0.0


# boot

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

Boot up drivers.

## Installation

    $ npm install @koax/boot

## API

### boot() (default)
Action creator.

**Returns:** boot action

### BOOT
Boot type.

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/boot.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/boot
[git-image]: https://img.shields.io/github/tag/koaxjs/boot.svg?sytle=flat-square
[git-url]: https://github.com/koaxjs/boot
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/boot.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/boot
npm package: @koax/channels
Description: Koax CSP channels.
Latest version: 0.1.2


# channels

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

Koax CSP channels [included in Koax].

## Installation

    $ npm install @koax/channels

## Usage

```js
import koax from 'koax'
import {put, take} from '@koax/channels'

let app = koax()
let CH = 'CHANNEL'

app(function * () {
  yield take(CH) // => 42
})

app (function * () {
  yield put(CH, 42) // => true
})

```

## API

### take(channel)

- `channel` - channel to take value from

**Returns:** a take action

### put(channel, val)

- `channel` - channel to put value on
- `val` - value to put on channel

**Returns:** a put action

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/channels.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/channels
[git-image]: https://img.shields.io/github/tag/koaxjs/channels.svg
[git-url]: https://github.com/koaxjs/channels
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/channels.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/channels
npm package: @koax/compose
Description: Compose koax middleware.
Latest version: 0.3.7


# compose

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

Compose koax middleware.

## Installation

    $ npm install @koax/compose

## Usage

```js
var compose = require('compose')

var composed = compose([function * (action, next) {
  if (action === 'foo') return 'bar'
  yield 'woot'
  return next()
}, function * (action, next) {
  if (action === 'bar') return 'qux'
  yield 'narf'
  return next()
}])

composed('foo')() // => 'bar' (done)
composed('bar')() // => 'woot', 'qux' (done)
composed('dup')() // => 'woot', 'narf', 'dup' (done)
```

## API

### compose(middleware)

- `middleware` - compose the given middleware

**Returns:** a generator of the same form as the middleware

### middleware

```js
/**
 * The middleware signature
 * @param {Mixed} action   an immutable action that middleware can process
 * @param {Function} next  pass execution to next middleware (can yield or return)
 * @param {Object} ctx     the global context
 * @return {Mixed}         whatever your heart desires
 */

function * middleware (action, next, ctx) {

}
```

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/compose.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/compose
[git-image]: https://img.shields.io/github/tag/koaxjs/compose.svg
[git-url]: https://github.com/koaxjs/compose
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/compose.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/compose
npm package: @koax/default
Description: Default middleware built-in to koax.
Latest version: 0.1.2


# default

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

Default middleware built-in to koax.

## Installation

    $ npm install @koax/default

## Middleware

```js
compose([promise, thunk, channelsEffect()])
```

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/default.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/default
[git-image]: https://img.shields.io/github/tag/koaxjs/default.svg
[git-url]: https://github.com/koaxjs/default
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/default.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/default
npm package: @koax/driver
Description: Koax drivers.
Latest version: 0.2.1


# driver

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

Koax drivers. Drivers are very similar to observables. A `subscriber` push changes to a `listener`. The difference between koax drivers and observables is that listeners are action creators and can optionally be generators. Additionaly, for the time being, a driver can only have one listener.

## Installation

    $ npm install @koax/driver

## Usage

```js
import driver from '@koax/driver'
import bindUrl from 'bind-url'

let subscriber = push => bindUrl(push)
let {drive} = driver(subscriber)
let listener = url => {type: 'CHANGE_URL', url}
drive(listener)

```

## API

### driver(subscriber)

- `subscriber` - a function with signature `subscriber(push)`. `push` receives the next value in the driver sequence.

**Returns:** {drive, push}

### drive(listener)

- `listener` - an action creator

### push(val)

- `val` - push val to `listener`

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/driver.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/driver
[git-image]: https://img.shields.io/github/tag/koaxjs/driver.svg?sytle=flat-square
[git-url]: https://github.com/koaxjs/driver
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/driver.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/driver
npm package: @koax/fetch
Description: Fetch effect driver and action creators.
Latest version: 0.1.3


# fetch

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

Fetch effect driver and action creator.

## Installation

    $ npm install @koax/fetch

## Usage

```js
import koax from 'koax'
import {fetch, fetchEffect} from '@koax/fetch'

let app = koax()
app.use(fetchEffect())

app(fetch('google.com')).then((res) => res.status) // => 200

```

## API

### fetch(url, params)
Action creator. See [sane-fetch](//github.com/joshrtay/sane-fetch) for more details.

- `url` - url
- `params` - request paramaters

**Returns:** action object

### fetchEffect()
Effect driver.

**Returns:** koax middleware

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/fetch.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/fetch
[git-image]: https://img.shields.io/github/tag/koaxjs/fetch.svg
[git-url]: https://github.com/koaxjs/fetch
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/fetch.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/fetch
npm package: @koax/fetch-json
Description: Fetch json sugar.
Latest version: 0.1.1


# fetch-json

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

Fetch json sugar.

## Installation

    $ npm install @koax/fetch-json

## Usage

```js
import koax from 'koax'
import {fetchEffect} from '@koax/fetch'
import {post} from '@koax/fetch-json'

let app = koax()

app.use(fetchEffect)

app(post('https://slack.com/api/chat.postMessage', {
  token: 'secret',
  channel: 'C1234567890',
  text: 'Hello world'
})).then(res => res.body) // {ok: true ...}
```

## API

### get(url, params)

- `url` - url string
- `params` - parameters to put in body (should we put in url for get?)

**Returns:** FETCH action

### post(url, params)

- `url` - url string
- `params` - parameters to put in body

**Returns:** FETCH action

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/fetch-json.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/fetch-json
[git-image]: https://img.shields.io/github/tag/koaxjs/fetch-json.svg
[git-url]: https://github.com/koaxjs/fetch-json
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/fetch-json.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/fetch-json
npm package: @koax/fork
Description: Koax support for non blocking async calls.
Latest version: 0.3.1


# fork

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

Koax support for non blocking async calls. (Included in koax)

## Installation

    $ npm install @koax/fork

## Usage

```js
import koax, {fork, join, delay} from 'koax'

let dispatch = koax()

function * child () {
  yield delay(5)
  return 'foo'
}

dispatch(function * () {
  const task = yield fork(child)

  // do some things

  yield join(task) // => 'foo'

})
```

## API

### fork(fn)
Action creator.

- `fn` - function, generator, or iterator to fork

**Returns:** a task

### join(task)
Action creator.

- `task` - task to block on

**Returns:** result of task

### cancel(task)
Action creator. Throws error in running task with message: 'TaskCanceled'.

- `task` - task to cancel

### taskRunner(dispatch)
Runs tasks. Used internally by koax.

- `dispatch` - dispatch function

**Returns:** `dispatch`

### task.isRunning()

**Returns:** whether task is running

### task.result()

**Returns:** the result of the task

### task.error()

**Returns:** the error thrown by the task

###task.cancel()
Cancels task

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/fork.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/fork
[git-image]: https://img.shields.io/github/tag/koaxjs/fork.svg
[git-url]: https://github.com/koaxjs/fork
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/fork.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/fork
npm package: @koax/location
Description: Location effects.
Latest version: 0.1.3


# location

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

Location effects.

## Installation

    $ npm install @koax/location

## Usage

```js
import {locationEffect, setUrl} from '@koax/location'
import koax, {run} from 'koax'

let state = {}

let io = koax()
io.use(locationEffect(url => {type: 'CHANGE_URL', url}))
io.use(function (action, next) {
  if (action.type === 'CHANGE_URL'){
    state.url = action.url
  }
  return next()
})

let interpret = run(io)

interpret(function * () {
  yield setUrl('/foo')
  state.url // /foo
})


```

## API

### locationEffect(listener)

- `listener` - listen for location changes

**Returns:** koax middleware

### setUrl(url)

- `url` - push url to history

**Returns:** set url action

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/location.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/location
[git-image]: https://img.shields.io/github/tag/koaxjs/location.svg?sytle=flat-square
[git-url]: https://github.com/koaxjs/location
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/location.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/location
npm package: @koax/logger
Description: Koax action logger.
Latest version: 0.1.1


# logger

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

Koax adapter for [redux-logger](//github.com/fcomb/redux-logger).

## Installation

    $ npm install @koax/logger

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/logger.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/logger
[git-image]: https://img.shields.io/github/tag/koaxjs/logger.svg?sytle=flat-square
[git-url]: https://github.com/koaxjs/logger
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/logger.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/logger
npm package: @koax/promise
Description: Koax promise middleware.
Latest version: 1.0.0


# promise

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

Promise middleware. Included in Koax to give it promise support.

## Installation

    $ npm install @koax/promise

## Middleware

```js
function promise (action, next) {
  if (isPromise(action)) return action
  return next()
}
```

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/promise.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/promise
[git-image]: https://img.shields.io/github/tag/koaxjs/promise.svg
[git-url]: https://github.com/koaxjs/promise
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/promise.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/promise
npm package: @koax/route
Description: Simple route middlekoax for koax.
Latest version: 0.3.0


# route

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

Simple route middlekoax for koax.

## Installation

    $ npm install @koax/route

## Usage

```js
import koax from 'koax'
import {route, request} from '@koax/route'

let router = koax()

router.use(route('/dep', () => 'norf'))
router.use(route('/foo', function * () {
  let res = yield request('/dep')
  return 'bar ' + res
}))

router(request('/foo')).then((res) => res) // => 'bar norf'
```

## API

### route(path, handler)
Route middleware.

- `path` - path
- `handler` - function to execute on matched path. `handler` has signature `handler(params)`.

**Returns:** koax middleware

### request(path, params)
Request action creator.

- `path` - path to request
- `params` - params to path to handler

**Returns:** action object

### mount(path, middleware)
Mount middleware.

- `path` - path to mount middleware at
- `middleware` - middleware to mount

**Returns:** koax middleware

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/route.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/route
[git-image]: https://img.shields.io/github/tag/koaxjs/route.svg
[git-url]: https://github.com/koaxjs/route
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/route.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/route
npm package: @koax/run
Description: Run a middleware stack.
Latest version: 0.4.1


# run

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

Run a koax middleware stack.

This is the raw middleware stack runner. The basic principal of the runner is that values that are yielded in the middleware stack are dispatched back through the middleware stack to get resolved. yielded functors (arrays, generators, and iterators) aren't dispatched directly - instead the functors values are mapped, using predefined mapping functions, over the middleware stack.

## Installation

    $ npm install @koax/run

## Usage

```js
import run from '@koax/run'

let dispatch = run([
  function * (action, next) {
    if (action === 'foo') return 'bar'
    else if (action === 'qux') return yield 'foo'
    return next()
  },
  function * (action, next) {
    if (action === 'multi') return yield ['foo', 'qux']
    return next()
  }
])

dispatch('foo').then((res) => res) // => 'bar'
disaptch('qux').then((res) => res) // => 'bar'
disaptch('multi').then((res) => res) // => ['bar', 'bar']

```

## API

### run(middleware, ctx)

- `middleware` - koax middleware array
- `ctx` - ctx for middleware stack

**Returns:** dispatch function: `dispatch(action, next)`

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/run.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/run
[git-image]: https://img.shields.io/github/tag/koaxjs/run.svg
[git-url]: https://github.com/koaxjs/run
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/run.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/run
npm package: @koax/store
Description: Redux style store.
Latest version: 0.1.2


# store

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

Redux style store.

## Installation

    $ npm install @koax/store

## Usage

```js
import koax from 'koax'
import createStore from '@koax/store'
import combineReducers from '@f/combine-reducers'
import getProp from '@f/get-prop'
import {fetchEffect, fetchType} from '@koax/fetch'
import {get} from '@koax/fetch-json'

const REQUEST_POSTS = 'REQUEST_POSTS'
const RECEIVE_POSTS = 'RECEIVE_POSTS'
const RETRIEVE_STATE = 'RETRIEVE_STATE'

let app = koax()
app.use(fetchEffect)
app.use(retrieveState)
let store = createStore(combineReducers({postsBySubredit}), {}, app)

app(getPosts('frontend')).then(res => res) // => frontend posts

function * getPosts (subredit) {
  let items = yield {type: RETRIEVE_STATE, path: `postsBySubredit.${subredit}.items`}
  if (!items) {
    yield {type: REQUEST_POSTS, subredit}
    items = yield get(`api.redit.com/posts/${subredit}`)
    yield {
      type: RECEIVE_POSTS,
      payload: items
      subredit
    }
  }
  return items
}

function retrieveState (action, next getState) {
  if (action.type === RETRIEVE_STATE) {
    return getProp(action.path, getState())
  }
  return next()
}

function postsBySubredit (state, action) {
  switch (action.type) {
    case REQUEST_POSTS:
      return {
        ...state,
        [action.subredit]: {
          isFetching: true
        }
      }
    case RECEIVE_POSTS:
      return {
        ...state,
        [action.subredit]: {
          isFetching: false,
          items: action.payload
        }
      }
  }
}

```

## API

### store(reducer, initialState, app)

- `reducer` - redux style reducer
- `initialState` - initial state object
- `app` - koax app to bind state and mount store dispatcher

**Returns:** store (redux store api excluding dispatch - koax app should be used to dispatch)

## .getState()

**Returns:** current state of store

## .subscribe(listener)

- `listener` - listener called when updates to state occur - recieves new state

## .replaceReducer(reducer)

- `reducer` - new reducer to

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/store.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/store
[git-image]: https://img.shields.io/github/tag/koaxjs/store.svg
[git-url]: https://github.com/koaxjs/store
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/store.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/store
npm package: @koax/thunk
Description: Koax thunk middleware.
Latest version: 1.0.1


# thunk

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

Koax thunk middleware. Included in Koax to give it thunk support.

## Installation

    $ npm install @koax/thunk

## Middleware

```js
function thunk (action, next) {
  if (isFunction(action)) return toPromise(action)
  return next()
}
```

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/thunk.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/thunk
[git-image]: https://img.shields.io/github/tag/koaxjs/thunk.svg
[git-url]: https://github.com/koaxjs/thunk
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/thunk.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/thunk
npm package: @koax/timing
Description: Delay, timeout, and interval effects.
Latest version: 0.1.2


# timing

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

Delay, timeout, and interval effects. (Included in koax)

## Installation

    $ npm install @koax/timing

## Usage

```js
import {delay, timeout, interval} from '@koax/timing'

function * () {
  yield delay(500)
  // do something later
}

function * () {
  yield timeout(doSomethingLater, 500)
  // do something now
}

function * () {
  let task = yield interval(repeatSomething, 500)
  // do something and then cancel
  yield cancel(task)
}

```

## API

### delay(wait)

- `wait` - time to block

**Returns:** delay action

### timeout(fn, wait)

- `fn` - function to run after `wait` ms
- `wait` - time to wait

**Returns:** timeout action

### interval(fn, wait)

- `fn` - function to run on an interval
- `wait` - time in between runs

**Returns:** interval action

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/timing.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/timing
[git-image]: https://img.shields.io/github/tag/koaxjs/timing.svg?style=flat-square
[git-url]: https://github.com/koaxjs/timing
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/timing.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/timing
npm package: @koax/ware
Description: &#x60;use&#x60; syntax for koax middleware
Latest version: 1.0.0


# ware

[![Build status][travis-image]][travis-url]
[![Git tag][git-image]][git-url]
[![NPM version][npm-image]][npm-url]
[![Code style][standard-image]][standard-url]

&#x60;use&#x60; syntax for koax middleware

## Installation

    $ npm install @koax/ware

## Usage

```js
import ware from '@koax/ware'

let app = ware()

app.use(function * (action, next) {
  if (action === 'foo') return 'bar'
  return next()
})

app('foo').then((res) => res) // => 'bar'
app('qux').then((res) => res) // => 'qux'
```

## API

### ware()

**Returns:** dispatch function for koax middleware stack

### .use(fn)

- `fn` - function to add to middleware stack

**Returns:** dispatch function

## License

MIT

[travis-image]: https://img.shields.io/travis/koaxjs/ware.svg?style=flat-square
[travis-url]: https://travis-ci.org/koaxjs/ware
[git-image]: https://img.shields.io/github/tag/koaxjs/ware.svg
[git-url]: https://github.com/koaxjs/ware
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat
[standard-url]: https://github.com/feross/standard
[npm-image]: https://img.shields.io/npm/v/@koax/ware.svg?style=flat-square
[npm-url]: https://npmjs.org/package/@koax/ware
npm package: @koba04/create-kintone-plugin
Description: A CLI tool for creating a kintone plugin!
Author: koba04
Latest version: 0.5.5
Deprecated: @koba04/create-kintone-plugin is deprecated. Please install @kintone/create-plugin instead.

# create-kintone-plugin

[![npm version](https://badge.fury.io/js/%40koba04%2Fcreate-kintone-plugin.svg)](https://badge.fury.io/js/%40koba04%2Fcreate-kintone-plugin)
[![CircleCI](https://circleci.com/gh/koba04/create-kintone-plugin.svg?style=shield)](https://circleci.com/gh/koba04/create-kintone-plugin)
[![Build status](https://ci.appveyor.com/api/projects/status/emvyvmk1vd4rwbef?svg=true)](https://ci.appveyor.com/project/koba04/create-kintone-plugin)

A CLI tool for creating a kintone plugin!

## Usage

```
npx create-kintone-plugin ${name}
```

or

```
npm install -g create-kintone-plugin
create-kintone-plugin ${name}
```

After the command has been finished, you can start development kintone plugin!

```
cd ${name}
npm start
```

## Language

`create-kintone-plugin` is supporting Japanese,
if you want to use console messages in Japanese, you can use `--lang ja` option.

```
npx create-kintone-plugin ${name} --lang ja
```

If you set `LANG` environment variable `ja_XX.XXX`, the lang option will be `ja` automatically.

## LICENSE

MIT License: Toru Kobayashi
npm package: @koba04/ios-imagefile-megapixel
Description: Fixes iOS6 Safari's image file rendering issue for large size image (over mega-pixel), which causes unexpected subsampling when drawing it in canvas.
Author: koba04
Latest version: 1.0.0

# Mega pixel image rendering library for iOS6 Safari

Fixes iOS6 Safari's image file rendering issue for large size image (over mega-pixel), which causes unexpected subsampling when drawing it in canvas.
By using this library, you can safely render the image with proper stretching.

About iOS Safari's resource limitation and subsampling, see following link:
[http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html#//apple_ref/doc/uid/TP40006482-SW15](http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/CreatingContentforSafarioniPhone/CreatingContentforSafarioniPhone.html#//apple_ref/doc/uid/TP40006482-SW15)

Although it mainly focuses fixing iOS Safari related issues, it can be safely used in the envionments other than iOS6.


## Usage

See ./test directory.


## FAQ
Q. Photos from iPhone is rotated and not in correct orientation.  
A. Orientation of jpeg file is recorded in EXIF format. This library won't detect exif information automatically. To detect the information in JavaScript, use exif.js (https://github.com/jseidelin/exif-js).


## Note

This project is not actively maintained by the author, and finding someone can contribute as a maintainer. See https://github.com/stomita/ios-imagefile-megapixel/issues/34 .
npm package: @koba04/kintone-plugin-uploader
Description: A kintone plugin uploader using puppetieer
Author: koba04
Latest version: 1.0.4
Deprecated: @koba04/kintone-plugin-uploader is deprecated. Please install @kintone/plugin-uploader instead.

# kintone-plugin-uploader

[![npm version](https://badge.fury.io/js/%40koba04%2Fkintone-plugin-uploader.svg)](https://badge.fury.io/js/%40koba04%2Fkintone-plugin-uploader)

A kintone plugin uploader using [puppeteer](https://github.com/GoogleChrome/puppeteer)

## Usage

```
% npm install @koba04/kintone-plugin-uploader
% ./node_modules/.bin/kintone-plugin-uploader
--domain ${yourDomain} \
--username ${yourLoginName} \
--password ${yourPassword} \
${pluginZipPath}
```

or

```
% npm install -g @koba04/kintone-plugin-uploader
% kintone-plugin-uploader \
--domain ${yourDomain} \
--username ${yourLoginName} \
--password ${yourPassword} \
${pluginZipPath}
```

If you want to upload the plugin automatically when the plugin is updated, you can use `--watch` option.

```
% kintone-plugin-uploader \
--domain ${yourDomain} \
--username ${yourLoginName} \
--password ${yourPassword} \
--watch \
${pluginZipPath}
```

It works fine with [kintone-plugin-packer](https://github.com/teppeis/kintone-plugin-packer).
You can create a project based on `kintone-plugin-packer` using [create-kintone-plugin](https://github.com/koba04/create-kintone-plugin) :).

## Options

```
  Usage
    $ kintone-plugin-uploader <pluginPath>
  Options
    --domain Domain of your kintone
    --username Login username
    --password User's password
    --proxy Proxy server
    --watch Watch the changes of plugin zip and re-run

    You can set the values through environment variables
    domain: KINTONE_DOMAIN
    username: KINTONE_USERNAME
    password: KINTONE_PASSWORD
    proxy: HTTPS_PROXY or HTTP_PROXY
```

## LICENSE

MIT License: Toru Kobayashi
npm package: @koba04/lerna-sandbox-package-a
Description: This is lerna-sandbox-pacakge-a
Author: Toru Kobayashi
Latest version: 1.4.0

# `@koba04/lerna-sandbox-package-a`

> TODO: description

## Usage

```
const lernaSandboxPackageA = require('@koba04/lerna-sandbox-package-a');

// TODO: DEMONSTRATE API
```
npm package: @koba04/lerna-sandbox-package-b
Description: This is lerna-sandbox-package-b
Author: Toru Kobayashi
Latest version: 1.5.0

# `@koba04/lerna-sandbox-package-b`

> TODO: description

## Usage

```
const lernaSandboxPackageB = require('@koba04/lerna-sandbox-package-b');

// TODO: DEMONSTRATE API
```
npm package: @koba04/lerna-yarn-sandbox-package-a
Description: This is lerna-yarn-sandbox-package-a
Author: Toru Kobayashi
Latest version: 1.5.3

# `@koba04/lerna-yarn-sandbox-package-a`

> TODO: description

## Usage

```
const lernaYarnSandboxPackageA = require('@koba04/lerna-yarn-sandbox-package-a');

// TODO: DEMONSTRATE API
```
npm package: @koba04/lerna-yarn-sandbox-package-b
Description: This is lerna-yarn-sandbox-package-b
Author: Toru Kobayashi
Latest version: 1.5.4

# `@koba04/lerna-yarn-sandbox-package-b`

> TODO: description

## Usage

```
const lernaYarnSandboxPackageB = require('@koba04/lerna-yarn-sandbox-package-b');

// TODO: DEMONSTRATE API
```
npm package: @koba04/react-fs
Description: A React custom renderer for file system APIs
Author: koba04
Latest version: 0.1.3

# @koba04/react-fs

**The GitHub repository will be published soon!!**

A React custom renderer for file system APIs.


## Install

This package depends on `recursive` option of `fs.rmdirSync`, so you have to use Node.js higher that `v12.10.0`.

```
npm i @koba04/react-fs
```

## How to use

```js
const React = require('react');
const { ReactFS } = require('@koba04/react-fs');

const targetDir = "test-react-fs-project";
ReactFS.render(
  <>
    <file name="README.md">
      # Title
    </file>
    <directory name="src">
      <file name="index.js">
        console.log("Hello");
      </file>
    </directory>
  </>,
  targetDir
);
```

## TypeScript

If you use `@koba04/react-fs` with TypeScript, you have to edit `typeRoots` liek the following.

```json
    "typeRoots": [
      "node_modules/@types",
      "node_modules/@koba04/react-fs/types",
    ]
```
npm package: @koba04/webpack-plugin-kintone-plugin
Description: A webpack plugin to generate a plugin zip
Author: koba04
Latest version: 0.3.4
Deprecated: @koba04/webpack-plugin-kintone-plugin has been transfered to @kintone/webpack-plugin-kintone-plugin

# webpack-plugin-kintone-plugin

[![npm version](https://badge.fury.io/js/%40koba04%2Fwebpack-plugin-kintone-plugin.svg)](https://badge.fury.io/js/%40koba04%2Fwebpack-plugin-kintone-plugin)
[![CircleCI](https://circleci.com/gh/koba04/webpack-plugin-kintone-plugin.svg?style=shield)](https://circleci.com/gh/koba04/webpack-plugin-kintone-plugin)
[![Build status](https://ci.appveyor.com/api/projects/status/13f2hhrllyv157x9?svg=true)](https://ci.appveyor.com/project/koba04/webpack-plugin-kintone-plugin)

A webpack plugin to create a plugin zip of kintone.

## Usage

```js
'use strict';

const path = require('path');
const KintonePlugin = require('@koba04/webpack-plugin-kintone-plugin');

module.exports = {
  entry: {
    desktop: './src/desktop.js',
    mobile: './src/mobile.js'
  },
  output: {
    path: path.resolve(__dirname, 'plugin', 'js'),
    filename: '[name].js'
  },
  plugins: [
    new KintonePlugin({
      manifestJSONPath: './plugin/manifest.json',
      privateKeyPath: './private.ppk',
      pluginZipPath: './dist/plugin.zip'
    })
  ]
};
```

The settings is the following structure.

* `src/desktop.js` is an entry point of desktop javascript.
* `src/mobild.js` is an entry point of desktop javascript.
* `plugin` is the directory of the plugin, which includes `manifest.json` and other resources.
* `private.ppk` is the private key for the plugin
* `dist/plugin.zip` is the plugin zip file.

## Install

```
npm install @koba04/webpack-plugin-kintone-plugin
```

## Options

You can customize the paths of manifest.json, privateKey and plugin zip.
Those default values are like the following.

```
manifestJSONPath: './manifest.json',
privateKeyPath: './private.ppk',
pluginZipPath: './dist/plugin.zip'
```

If you want to customize these values, you can update the values like this.

```js
'use strict';

const path = require('path');
const KintonePlugin = require('@koba04/webpack-plugin-kintone-plugin');

module.exports = {
  entry: {
    desktop: './src/desktop.js',
    mobile: './src/mobile.js'
  },
  output: {
    path: path.resolve(__dirname, 'plugin', 'js'),
    filename: '[name].js'
  },
  plugins: [
    new KintonePlugin({
      manifestJSONPath: './plugin/manifest.json',
      privateKeyPath: './private.ppk',
      pluginZipPath: './dist/plugin.zip'
    })
  ]
};
```

In addition to that, you can specify the plugin zip name based on the plugin id and values of the manifest.json.

```js
plugins: [
  new KintonePlugin({
    manifestJSONPath: './plugin/manifest.json',
    privateKeyPath: './private.ppk',
    pluginZipPath: (id, manifest) => `${id}.${manifest.version}.plugin.zip`
  })
];
```

## License

MIT License: Toru Kobayashi