
Security News
Attackers Are Hunting High-Impact Node.js Maintainers in a Coordinated Social Engineering Campaign
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.
A tiny package that simulates the behavior of the pipeline-operator proposal.
This module is distributed via npm which is bundled with node and
should be installed as one of your project's dependencies:
npm install --save pipe-now
The pipeline operator is an awesome thing, but unfortunately the proposals available for babel vary quite a bit, and they can still change more, as they are still in early stages of development and there's no agreement on an API yet.
This package tries to solve the problem stated above by simulating the pipeline operator through a function. I know, it's not as nice as having an actual syntax for that, but until the proposal gets more stable this can be a good replacement.
This package exports a function which receives a plain value as the first argument, and all the next arguments are functions that receives the previous value, and returns the next value.
You can use it with inline functions:
import pipe from 'pipe-now'
function getFruits() {
const fruitsUppercase = ['APPLE', 'BANANA', 'ORANGE']
const fruitsLowercase = pipe(
fruitsUppercase,
(values) => values.map((value) => value.toLowerCase()),
)
return fruitsLowercase // ['apple', 'banana', 'orange']
}
To avoid code duplication, you can also extract the functions and just pass the reference to them:
import pipe from 'pipe-now'
function arrayToLowerCase(arr) {
return arr.map((value) => value.toLowerCase())
}
function getFruits() {
const fruitsUppercase = ['APPLE', 'BANANA', 'ORANGE']
const fruitsLowercase = pipe(
fruitsUppercase,
arrayToLowerCase,
)
return fruitsLowercase // ['apple', 'banana', 'orange']
}
You can also check below a more complex use of the pipe function, with data fetching and manipulating this data:
import pipe from 'pipe-now'
// Simulates an async data fetch
function fetchPeople() {
return Promise.resolve({
count: 3,
results: [
{
name: 'Luke Skywalker',
height: '172',
},
{
name: 'C-3PO',
height: '167',
},
{
name: 'Darth Vader',
height: '202',
},
],
})
}
function average(arr) {
const sum = arr.reduce((a, b) => a + b)
const avg = sum / arr.length
return avg
}
async function getPeopleHeightAverage() {
const peopleHeightAverage = pipe(
await fetchPeople(), // Get list of Star Wars people
(values) => values.results, // Get only the `results` property of the response
(values) => values.map((people) => people.height), // Get only the people height
(values) => values.map(Number), // Convert values from string to number
average, // Calculate the average
Math.round, // Round the value
)
return peopleHeightAverage // returns 180
}
flowYou can kind of use it to simulate the pipeline syntax, like the following:
const value = _.flow(
() => 'initial value',
(val) => val.toUpperCase(),
)()
If you are already using lodash, you can of course also create a wrapper for that.
MIT
FAQs
A pipe function that acts like the pipeline operator proposal.
We found that pipe-now demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Multiple high-impact npm maintainers confirm they have been targeted in the same social engineering campaign that compromised Axios.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.