take-n-pipe
v1.1.2
Published
Simple tool to seamlessly chain code execution.
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-pipeThe 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
