take-n-pipe
v1.1.2
Published
Simple tool to seamlessly chain code execution.
Downloads
4,102
Readme
take 'n pipe
Simple tool to seamlessly chain code execution.
Why take 'n pipe
?
- Easy way to process data in a linear and readable manner.
- You are not polluting current scope with unnecessary, single use variables.
- Catch errors predictably, at any point in a chain, instead of nesting multiple try-catch clauses.
- You can start processing your data synchronously and proceed to the asynchronous context at any point.
Features
- 😝 Ridiculously simple.
- ⚙️ Sync & async context.
- 📦 Distributions in ESM and CommonJS standards.
- 📘 Full TypeScript support.
- 🔋 Bateries included - no dependencies.
- 🧪 Well tested with Jest.
Installation
# With NPM
npm install take-n-pipe
# With Yarn
yarn add take-n-pipe
The way you go
Sync pipes
- Take any input data.
take(data)
- Transform data with the
pipe(...)
method as many times as you want.
.pipe((data: object) => {...})
- [Optionally] Catch errors with
catch(...)
method at any time.
.catch((error: unknown) => {...})
- Obtain results.
.get()
Async pipes
- Take any input data.
takeAsync(promise)
- Transform data with the
pipeAsync(...)
method as many times as you want.
.pipeAsync(async (data: object) => {...})
- [Optionally] Catch errors with
catchAsync(...)
method at any time.
.catchAsync((error: unknown) => {...})
- Obtain results as a Promise.
.toPromise()
Mixed pipes
- Start within sync context, take any input data.
take(data)
- Being in sync context transform data with the
pipe(...)
method as many times as you want.
.pipe((data: object) => {...})
- Call the
pipeAsync(...)
method to proceed to async context.
By calling the
pipeAsync(...)
method on a synchronous chain, you turn it into an asynchronous chain from that point on.This is a one-way ticket, there is no way to go back to the synchronous chain anymore.
.pipeAsync(async (data: object) => {...})
- Obtain results as a Promise.
.toPromise()
Examples
https://github.com/IdkMan2/take-n-pipe/blob/8a01d6223fa37f061db6074f09c7dd522d13e758/tests/examples/sync-pipes.ts#L14-L43
https://github.com/IdkMan2/take-n-pipe/blob/8a01d6223fa37f061db6074f09c7dd522d13e758/tests/examples/mixed-pipes.ts#L29-L66