Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
helper-fns
Advanced tools
Some common utilities functions for everyday backend usage with zero dependencies
JavaScript Utilities
npm i helper-fns
yarn add helper-fns
Common JavaScript packages and utilities used across my projects.
Checks if the a value is an empty object/collection, has no enumerable properties or is any type that is not considered a collection.
isEmpty([]) // true
isEmpty({}) // true
isEmpty('') // true
isEmpty([1, 2]) // false
isEmpty({ a: 1, b: 2 }) // false
isEmpty('text') // false
isEmpty(123) // false - type is not considered a collection
isEmpty(true) // false
Generates token based on user defined format
orderedToken('RU-XXXXX') // RU-16891
Picks the key-value pairs corresponding to the given keys from an object.
pick({ a: 1, b: '2', c: 3 }, ['a', 'c']) // { 'a': 1, 'c': 3 }
Omits the key-value pairs corresponding to the given keys from an object.
omit({ a: 1, b: '2', c: 3 }, ['b']) // { 'a': 1, 'c': 3 }
Calculates the sum of two or more numbers/arrays.
sumOfAnArray(1, 2, 3, 4) // 10
Performs left-to-right function composition.
const add5 = x => x + 5
const multiply = (x, y) => x * y
const multiplyAndAdd5 = pipeFunctions(multiply, add5)
multiplyAndAdd5(5, 2) // 15
Replaces the names of multiple object keys with the values provided.
const obj = { name: 'Bobo', job: 'Front-End Master', shoeSize: 100 }
renameKeys({ name: 'firstName', job: 'passion' }, obj)
// { firstName: 'Bobo', passion: 'Front-End Master', shoeSize: 100 }
Creates an array of key-value pair arrays from an object.
objectToEntries({ a: 1, b: 2 }) // [ ['a', 1], ['b', 2] ]
Creates a shallow clone of value.
const objects = [{ a: 1 }, { b: 2 }]
const shallow = clone(objects)
console.log(shallow[0] === objects[0])
Calculates the difference between two arrays, without filtering duplicate values.
difference([1, 2, 3, 3], [1, 2, 4]) // [3, 3]
Returns every element that exists in any of the two arrays at least once.
union([1, 2, 3], [4, 3, 2]) // [1, 2, 3, 4]
Checks if gicen string is date
console.log(isDate('not-date'))
// false
console.log(isDate('2019-01-10'))
// true
Groups the elements of an array based on the given function.
groupBy([6.1, 4.2, 6.3], Math.floor) // {4: [4.2], 6: [6.1, 6.3]}
groupBy(['one', 'two', 'three'], 'length') // {3: ['one', 'two'], 5: ['three']}
Sorts an array of objects, ordered by properties and orders.
const users = [
{ name: 'fred', age: 48 },
{ name: 'barney', age: 36 },
{ name: 'fred', age: 40 },
]
orderBy(users, ['name', 'age'], ['asc', 'desc'])
// [{name: 'barney', age: 36}, {name: 'fred', age: 48}, {name: 'fred', age: 40}]
orderBy(users, ['name', 'age'])
// [{name: 'barney', age: 36}, {name: 'fred', age: 40}, {name: 'fred', age: 48}]
Generates random number of between a min number and a max number.
console.log(randomNumber(0, 6)) // integer between 0 and 6
// 5
Generates random number of between a min number and a max number.
export enum AppRoles {
AUTHOR = 'AUTHOR',
ADMIN = 'ADMIN'
}
console.log(enumToString(AppRoles))
// ["AUTHOR", "ADMIN"]
Generates random string of giben length
console.log(randomString(6))
// a1t4ry
Get string after a substring
strAfter('pineapple', 'pine') // apple
Get string before a substring
strBefore('pineapple', 'apple') // pine
Checks if the passed value is an object or not.
isObject([1, 2, 3, 4]) // true
isObject([]) // true
isObject(['Hello!']) // true
isObject({ a: 1 }) // true
isObject({}) // true
isObject(true) // false
Get a number after truncating it from the decimal point. No round off is done
fixedDecimal(3.141525, 3) // 3.141
Get a random string of defined length
generateRandomString(6) // fd84bg
Generate a slug from a string
slugify('i love javascript') // i-love-javascript
capitalizeEveryWord('hello world!') // 'Hello World!'
window.addEventListener(
'resize',
throttle((evt) => {
console.log(window.innerWidth)
console.log(window.innerHeight)
}, 250),
) // Will log the window dimensions at most every 250ms
unescapeHTML('<a href="#">Me & you</a>')
// '<a href="#">Me & you</a>'
timeTaken(() => 2 ** 10) // 1024, (logged): timeTaken: 0.02099609375ms
formatDuration(1001) // '1 second, 1 millisecond'
formatDuration(34325055574)
// '397 days, 6 hours, 44 minutes, 15 seconds, 574 milliseconds'
template('Hello, {{name}}!', { name: 'world' })
// => Hello, world!
template('Howdy, {{0}}! {{1}}', ['partner', '🤠'])
// => Howdy, partner! 🤠
template('foo: "{{foo}}"; bar: "{{bar}}";', { foo: 123 })
// => foo: "123"; bar: "";
template(
`
Name: {{name.last}}, {{name.first}}
Location: {{address.city}} ({{address.country}})
Hobbies: {{hobbies.0}}, {{hobbies.1}}, {{hobbies.2}}
`,
{
name: {
first: 'Luke',
last: 'Edwards',
},
address: {
city: 'Los Angeles',
country: 'USA',
},
hobbies: ['eat', 'sleep', 'repeat'],
},
)
console.log(encrypt('hello','32 bytes hex key','16 bytes hex iv'))
// p5HX3eMlroLYJPhXr2zARg==
console.log(decrypt('p5HX3eMlroLYJPhXr2zARg==','32 bytes hex key','16 bytes hex iv'))
// hello
Any types of contributions are welcome. Feel free to send pull requests or create issues.
Licensed under The MIT License.
FAQs
Some common utilities functions for everyday backend usage with zero dependencies
We found that helper-fns demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers 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.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.