
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
foreach-extra
Advanced tools
A javascript extended iteration tool written in typescript:
Because this tool use a callback to iterate, it can be used in a sync/async way.
const arr = ['pizza', 'pasta', 'salad']
foreachExtra(arr, (item, index, cb) => {
// Get next item after 1 second
setTimeout(() => {
// Call the callback to continue the iteration
cb()
}, 1000)
})
npm i foreach-extra
const foreachExtra = require('foreach-extra')
import foreachExtra from 'foreach-extra'
<script src="node_modules/foreach-extra/dist/foreach-extra.min.js"></script>
Next examples will asume you have installed and imported foreach-extra.
foreachExtra(['pizza', 'pasta', 'salad'], (item, index, cb) => {
console.log(item, index)
// Get the next item
cb()
}, () => {
console.log('done!')
})
// pizza 0
// pasta 1
// salad 2
const obj = {
food1: 'pizza',
food2: 'pasta',
food3: 'salad'
}
foreachExtra(obj, (value, key, cb) => {
console.log(value, key)
// Get the next value
cb()
}, () => {
console.log('done!')
})
// pizza food1
// pasta food2
// salad food3
// Default options are
const options = {
delay: 0,
skip: 0,
recursive: false,
skipRecursive: 0
}
foreachExtra(['pizza', 'pasta', 'salad'], options, (item, index, cb) => {
console.log(item, index)
// Get the next item
cb()
}, () => {
console.log('done!')
})
// pizza 0
// pasta 1
// salad 2
The callback function can receives the following options:
foreachExtra(['pizza', 'pasta', 'salad'], (item, index, cb) => {
console.log(item, index)
// Break the iteration
cb('break')
}, () => {
console.log('done!')
})
// pizza 0
foreachExtra(['pizza', 'pasta', 'salad'], (item, index, cb) => {
console.log(item, index)
// Get the next and last item - salad
cb('last')
}, () => {
console.log('done!')
})
// pizza 0
// salad 1
foreachExtra(['pizza', 'pasta', 'salad'], (item, index, cb) => {
// console.log(item, index)
const data = cb('data')
console.log(data)
// Get the next item
cb()
}, () => {
console.log('done!')
})
// ['pizza', 'pasta', 'salad']
// ['pizza', 'pasta', 'salad']
// ['pizza', 'pasta', 'salad']
const options = {
skip: 1,
recursive: true,
skipRecursive: 2
}
const arr = [
'pizza',
'pasta',
'salad',
[
'nachos',
'tacos',
'fries',
'burger',
'fajitas'
],
'burrito',
'sandwich',
'chicken',
{
food1: 'chicken',
food2: 'pizza',
food3: 'salad',
food4: 'burrito',
food5: 'sandwich',
food6: ['steak', 'burger', 'hotdog', 'crepe'],
},
'cake',
'chips',
'soup',
'sushi',
'ramen',
'pancakes',
'waffles',
'steak',
'salmon'
]
foreachExtra(arr, options, (item, index, cb) => {
console.log(item, index)
// Get next item after 1 second
setTimeout(() => {
if (item === 'hotdog') {
// This will not work as expected because
// "hotdog" is the last item in the current array.
// We know that "crepe" is the last item but we set skipRecursive to 2
cb('last')
return
}
if (item === 'chips') {
// The last item in the current array is "salmon"
// but we set skip to 1 so we will get steak as the last item
cb('last')
return
}
cb()
}, 1000)
}, () => {
console.log('done!')
})
// pasta 1
// fries 2
// sandwich 5
// salad food3
// hotdog 2
// chips 9
// steak 15
For more examples take a look to the unit test
Copyright (c) 2021 Saenzo
MIT License
FAQs
Common stuff we do with foreach loops
The npm package foreach-extra receives a total of 42 weekly downloads. As such, foreach-extra popularity was classified as not popular.
We found that foreach-extra 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
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.