npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

fpipes

v2.0.2

Published

FPipes is a utility library that provides a way to chain synchronous and asynchronous functions in a readable manner. It simplifies the flow of data through a series of functions, making your code more readable and maintainable.

Downloads

6

Readme

FPipes (Functional Pipes)

FPipes is a utility library that provides a way to chain synchronous and asynchronous functions in a readable manner. It simplifies the flow of data through a series of functions, making your code more readable and maintainable.

This is heavily inspired on TC39 Pipe Operator proposal, and may be deprecated in the future if it gets approved

Table of Contents

Installation

To install FPipes, run the following command:

npm install --save fpipes

Usage

Basic Usage

To start a pipe, use the F.pipe() function:

import { F } from "fpipes"

const initialValue = 42

const pipe = F.pipe(initialValue)

To retrieve the final value from a pipe, use the value() method:

const result = pipe.value()
console.log(result) // 42

Chaining Functions

You can chain functions using the pipe() method:

import { F } from "fpipes"

const double = (value: number) => value * 2
const addTen = (value: number) => value + 10

const result = F.pipe(5)
  .pipe(double)
  .pipe(addTen)
  .value()

console.log(result) // 20

Working with Promises

FPipes supports chaining functions that return promises:

import { F } from "fpipes"

const asyncDouble = async (value: number) => value * 2

const result = await F.pipe(5)
  .pipe(asyncDouble)
  .value()

console.log(result) // 10

Behavior of Pipes with Promises

When you add a function that returns a promise to the pipe chain, the entire pipe chain is treated as a promise. This means that you must use the await keyword or the then() method on the final value to access the result. All subsequent functions in the pipe chain will also receive the resolved value of the previous promise.

import { F } from "fpipes"

const asyncDouble = async (value: number) => value * 2
const asyncAddTen = async (value: number) => value + 10

const result = await F.pipe(5)
  .pipe(asyncDouble) // The result of this function is a promise.
  .pipe(asyncAddTen) // This function receives the resolved value of the previous promise.
  .value() // The final value of the pipe is also a promise.

console.log(result) // 20

If you mix synchronous and asynchronous functions in the pipe chain, the pipe will be treated as a promise from the point where the first promise is encountered.

import { F } from "fpipes"

const double = (value: number) => value * 2
const asyncAddTen = async (value: number) => value + 10

const result = await F.pipe(5)
  .pipe(double) // This function returns a value.
  .pipe(asyncAddTen) // This function returns a promise, so the whole chain is treated as a promise from this point on.
  .value() // The final value of the pipe is a promise.

console.log(result) // 20

License

MIT License. See the LICENSE file for details.