Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/staltz/zii
Chain function calls using a prototype function z
https://github.com/staltz/zii
Last synced: 11 days ago
JSON representation
Chain function calls using a prototype function z
- Host: GitHub
- URL: https://github.com/staltz/zii
- Owner: staltz
- License: mit
- Created: 2018-07-31T18:39:44.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2021-01-29T13:58:06.000Z (almost 4 years ago)
- Last Synced: 2024-10-16T02:41:21.783Z (26 days ago)
- Language: JavaScript
- Homepage:
- Size: 8.79 KB
- Stars: 230
- Watchers: 8
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
- awesome-list - zii
README
# zii
**Chain function calls using a prototype function `.z()`**
Adds a function `z` to the Object prototype so that you can right-compose functions together. This is like the [proposed pipeline operator `|>`](https://github.com/tc39/proposal-pipeline-operator), but implemented in ES5.
**`value.z(first).z(second)` is the same as `second(first(value))`**
- 150 bytes small
- Works with RxJS 6+
- Works with Callbags
- Works with plain functions and numbers and strings
- Supports TypeScript## Installation
```sh
npm install zii
```## Usage
```js
require('zii');
// Nothing else needed! This require will mutate the Object prototype
```If you use TypeScript, then add this to your `tsconfig.json` file:
```
{
...
"types": [
"node_modules/zii/index.d.ts"
]
...
}
```## Examples
### RxJS
```js
require('zii')
const {from} = require('rxjs')
const {map, filter} = require('rxjs/operators')from([1, 2, 3, 4, 5])
.z(filter(x => x % 2 === 1))
.z(map(x => x * 10))
.subscribe({
next: x => console.log(x)
})
```### Callbags
```js
require('zii')
const {fromIter, map, filter, forEach} = require('callbag-basics')fromIter([1, 2, 3, 4, 5])
.z(filter(x => x % 2 === 1))
.z(map(x => x * 10))
.z(forEach(console.log))
```### Simple JS
```js
function doubleSay(str) {
return str + ', ' + str;
}
function capitalize(str) {
return str[0].toUpperCase() + str.substring(1);
}
function exclaim(str) {
return str + '!';
}'hello'
.z(doubleSay)
.z(capitalize)
.z(exclaim)
.z(console.log) // Hello, hello!
```## License
[MIT](LICENSE)