# jokio

> core, awesome, simple functions

Latest version **0.4.2** (published 2018-12-22) · MIT license · 0 weekly downloads

## Install

```sh
npm install jokio
pnpm add jokio
yarn add jokio
bun add jokio
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.4.2 |
| Published | 2018-12-22 |
| First published | 2018-01-27 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 18.5 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| Author | Jok Entertainers |
| Maintainers | ezeki |
| Keywords | jok |

## Links

- npm: https://www.npmjs.com/package/jokio
- Repository: https://github.com/jokio/jokio
- npm.io page: https://npm.io/package/jokio

## Dependencies (2)

- [uuid](https://npm.io/package/uuid.md) 3.2.1
- [fs-extra](https://npm.io/package/fs-extra.md) ^7.0.1

## Recent versions

- 0.4.2 (latest) — 2018-12-22
- 0.4.1 — 2018-12-22
- 0.4.0 — 2018-12-21
- 0.3.0 — 2018-03-05
- 0.2.1 — 2018-01-27
- 0.2.0 — 2018-01-27
- 0.1.0 — 2018-01-27

## README

# jokio 🃏

simple functions for creating complex apps 

[![Build Status](https://travis-ci.org/jokio/jokio.svg?branch=master)](https://travis-ci.org/jokio/jokio)
[![npm version](https://badge.fury.io/js/jokio.svg)](https://badge.fury.io/js/jokio)


## Quick Start:
just run:
```bash
yarn create jokio-app myapp
```
for detailed information and all options please visit [create-jokio-app](https://github.com/jokio/create-jokio-app) repository.


## Idea:
In every process we need three different objects:
* Props
* State
* Context

jokio provides following structure to describe processes and make it composable
```ts
type Process = (props: Props) => (state: State, context: Context) => Promise<State>

const process1: Process
const process2: Process

const run = compose(
  process1,
  process2,
)

run(initialState, initialContext)
```


## Functions:
- compose
- run
- runWith
- log
- timer
- pubsub
- uniqueId


## Example:
```js
import { compose, log } from 'jokio'

const process1 = (props) => (state, context) => {
  return { ...state, info: state.info + ' hello' }
}

const process2 = (props) => (state, context) => {
  return Promise.resolve({ ...state, info: state.info + ' world' })
}

const initialState = {
  info: '[Cool App]'
}

const run = compose(
  process1({}),
  process2({}),
  log(),
)

run(initialState)

```

## Related Projects:
* [GraphQL Server](https://github.com/jokio/jokio-graphql)
* [NextJS](https://github.com/jokio/jokio-nextjs)
* [Yo App Generator](https://github.com/jokio/generator-jokio)
* [create-jokio-app](https://github.com/jokio/create-jokio-app)


## Yeoman
You can also use yo generator

install once:
```bash
npm i -g yo generator-jokio
```

create app:
```
yo jokio
```
Note: this command will not create a new folder, it will generate files in current folder


## Badge:
```
[![engine: jokio](https://img.shields.io/badge/engine-%F0%9F%83%8F%20jokio-44cc11.svg)](https://github.com/jokio/jokio)
```
[![engine: jokio](https://img.shields.io/badge/engine-%F0%9F%83%8F%20jokio-44cc11.svg)](https://github.com/jokio/jokio)

---
_Source: https://npm.io/package/jokio · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
