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

@synotech/utils

v1.0.3

Published

a collection of utilities for internal use

Downloads

279

Readme

Table of Contents

App dictionary

App countries

validateEmail

This method validates email address

Parameters

  • contact Object

    • contact.email String the email to be validated

Examples

const isValid = await validateEmail({
     email: '[email protected]',
 })

Returns boolean {Promise} a boolean value indicating if the email is valid or not

validateEmailBulk

This method validates all supplied email addresses.

Parameters

  • mailingList Array array of email objects to be verified

Examples

const { data } = await validateEmailBulk(
  {
    email: '[email protected]',
  },
  {
      email: '[email protected]',
  },
])

Returns Array object consisting of valid and invalid email addresses { valid: [], invalid: [] }

email

Check if the email contains more than 3 numeric characters. If it does, throw an error.

tld

Validate TLD

Parameters

  • email any

atIndex

remove email modifier

Cryptography

The Cryptography class provides methods for encryption, decryption, signing, and verification of data using various cryptographic algorithms.

Examples

const cryptography = new Cryptography({
		keys: ['key1', 'key2', 'key3'],
		encryptKey: '',
		encryptKeySingle: '',
})

const encryptedData = cryptography.encrypt('Hello, World!')
const decryptedData = cryptography.decrypt(encryptedData)

const signature = cryptography.signature()
const isVerified = cryptography.signatureVerify(signature)

// creates a KrugerGold Token Address
const address = cryptography.address()

const encodedData = cryptography.base64Encode('Hello, World!')
const decodedData = cryptography.base64Decode(encodedData)
const isEncodedOrNot = cryptography.isBase64Encoded(encodedData)

cryptography.get('strong_pw') // returns i=SQ_qa3W[<RxoM
cryptography.random({ length: 20, useLowerCase: true, useUpperCase: true, useNumbers: true, useSpecial: true, useHex: false }) // returns *ajz:74,*ak0

random

Parameters

  • options RandomOptions

Examples

cryptography.random({ length: 20, useLowerCase: true, useUpperCase: true, useNumbers: true, useSpecial: true, useHex: false }) // returns *ajz:74,*ak0

// Decent Passwords - Good for nothing really, public accounts and other non-critical things.
cryptography.get('decent_pw') // returns rXjdx36oro

// Strong Passwords - Robust enough to keep your web hosting account secure.
cryptography.get('strong_pw') // returns i=SQ_qa3W[<RxoM

// Fort Knox Passwords - Secure enough for almost anything, like root or administrator passwords.
cryptography.get('ft_knox_pw') // returns P}U%H\OOYAYb;wc"3hgI,3Lz[gd-z]

// Encryption Keys - Can be used for any other 256-bit key requirement.
cryptography.get('ci_key') // returns CeXHpM3nDgzdv0o3AkMCs3OuxzepLGW8

// 160-bit WPA Key
cryptography.get('160_wpa') // returns oHI#gR8z#h7BS>cZ!zH(

// 504-bit WPA Key
cryptography.get('504_wpa') // returns <os[g`s}u06jqt"Ea]t11,HsI[UipHD)%F";:9RhJ@kTU8GknLpMAXtoCzsJjT`

// 64-bit WEP Keys
cryptography.get('64_wep') // returns 8911B

// 128-bit WEP Keys
cryptography.get('128_wep') // returns 9F4E4F933BCCC

// 152-bit WEP Keys
cryptography.get('152_wep') // returns 695E1EE96E483961

// 256-bit WEP Keys
cryptography.get('256_wep') // returns AC7E866246BA6B71BF5D88A6861AB

Returns string

salt

Examples

const salt = cryptography.salt()
console.log(salt)
// Output:
// 5eb63bbbe01eeed093cb22bb8f5acdc3

Returns any The generated salt value as a hexadecimal string.

iv

Returns any The generated IV as a Buffer.

signature

Examples

const signature = cryptography.signature()
console.log(signature)
// Output:
// 6a3a4b5c6d7e8f9a

Returns any The generated signature as a string.

signatureVerify

Parameters

  • signature string The signature to verify.

Examples

const signature = '6a3a4b5c6d7e8f9a'
const isValid = cryptography.signatureVerify(signature)
console.log(isValid)
// Output:
// true
  • Throws any An error if the signature contains unknown identifiers.

Returns any True if the signature is valid, false otherwise.

address

Examples

const address = cryptography.address()
console.log(address)
// Output:
// kK5HCVlAmmEnnlKh6wVX9TiJ6YGI7FCl
  • Throws any An error if an error occurs during address generation.

Returns any The generated address as a string.

getKeys

Parameters

  • count number? The number of keys to generate. Defaults to 12.

Returns any An array of randomly generated keys.

encryptSingle

Parameters

  • data any The data to encrypt.

Examples

const crypto = new Cryptography(['key1', 'key2', 'key3'], 'encryptKey', 'encryptKeySingle')
const data = 'Hello, World!'
const encryptedData = cryptography.encryptSingle(data)
console.log(encryptedData)
// Output:
// 5eb63bbbe01eeed093cb22bb8f5acdc3

Returns any The encrypted data as a base64-encoded string.

encrypt

Parameters

  • text any The text to encrypt.

Examples

const text = 'Hello, World!'
const encryptedText = cryptography.encrypt(text)
console.log(encryptedText)
// Output:
// 6a3a4b5c6d7e8f9a:6a3a4b5c6d7e8f9a:6a3a4b5c6d7e8f9a
  • Throws any An error if an error occurs during encryption.

Returns any The encrypted text as a string.

decrypt

Parameters

  • encryptedText any The encrypted text to decrypt.

Examples

const encryptedText = '6a3a4b5c6d7e8f9a:6a3a4b5c6d7e8f9a:6a3a4b5c6d7e8f9a'
const decryptedText = cryptography.decrypt(encryptedText)
console.log(decryptedText)
// Output:
// Hello, World!
  • Throws any An error if an error occurs during decryption.

Returns any The decrypted text as a string.

password

Parameters

  • password string The password to hash.
  • salt string The salt value to use for hashing.

Examples

const password = 'myPassword'
const salt = cryptography.salt()
const hashedPassword = cryptography.password(password, salt)
console.log(hashedPassword)
// Output:
// 5ebe2294ecd0e0f08eab7690d2a6ee69
  • Throws any An error if an error occurs during password hashing.

Returns any The hashed password as a hexadecimal string.

jwtIssue

Parameters

  • payload any The payload to include in the JWT. (optional, default {})
  • expiry string The expiry time for the JWT.

Examples

const payload = {
  sub: '1234567890',
  name: 'John Doe',
  iat: 1516239022
}

const expiry = '1h'
const token = cryptography.jwtIssue(payload, expiry)
console.log(token)
// Output:
// eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
  • Throws any An error if an error occurs during JWT issuance.

Returns any The issued JWT as a string.

jwtVerify

Parameters

  • token string The JWT to verify.

Examples

const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'
const payload = cryptography.jwtVerify(token)
console.log(payload)
// Output:
// {
//   sub: '1234567890',
//   name: 'John Doe',
//   iat: 1516239022
// }
  • Throws any An error if the JWT is invalid or an error occurs during verification.

Returns any The decoded payload if the JWT is valid.

privateKey

Examples

const privateKey = cryptography.privateKey()
console.log(privateKey)
// Output:
// -----BEGIN PRIVATE KEY-----
// MIHuAgEAMBAGByqGSM49AgEGBSuBBAAjBIHWMIHTAgEBBEIBA4GCAWqjggFMMIIB
// ...
// -----END PRIVATE KEY-----
  • Throws any An error if an error occurs during private key generation.

Returns any The generated private key as a PEM-encoded string.

publicKey

Parameters

  • privateKey string The private key to generate the public key from.

Examples

const privateKey = `-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDZ1Ck6vJQK0J5T
...
-----END PRIVATE KEY-----`

const publicKey = cryptography.publicKey(privateKey)
console.log(publicKey)
// Output:
// -----BEGIN PUBLIC KEY-----
// MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2dQpOryUCtCeUz8vZ6zB
// ...
// -----END PUBLIC KEY-----

Returns any The generated public key as a PEM-encoded string.

publicKeyVerify

Parameters

  • $0 {privateKey: string, publicKey: string}

    • $0.privateKey
    • $0.publicKey
  • privateKey The private key used to sign the data.

  • publicKey The public key used to verify the signature.

Examples

const privateKey = `-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDZ1Ck6vJQK0J5T
...
-----END PRIVATE KEY-----`
const publicKey = `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2dQpOryUCtCeUz8vZ6zB
...
-----END PUBLIC KEY-----`
const isAuthentic = cryptography.publicKeyVerify({ privateKey, publicKey })
console.log(isAuthentic)
// Output:
// true
  • Throws any An error if the public key fails to authenticate.

Returns any True if the public key is authentic, false otherwise.

isBase64Encoded

Parameters

  • string string The string to check.

Examples

const encodedString = 'SGVsbG8sIFdvcmxkIQ=='
const isEncoded = cryptography.isBase64Encoded(encodedString)
console.log(isEncoded)
// Output:
// true

Returns any True if the string is base64 encoded, false otherwise.

base64Encode

Parameters

  • data string The data to encode.

Examples

const data = 'Hello, World!'
const encodedData = cryptography.base64Encode(data)
console.log(encodedData)
// Output:
// SGVsbG8sIFdvcmxkIQ==

Returns any The base64-encoded string.

base64Decode

Parameters

  • encodedString string The base64-encoded string to decode.

Examples

const encodedString = 'SGVsbG8sIFdvcmxkIQ=='
const decodedString = cryptography.base64Decode(encodedString)
console.log(decodedString)
// Output:
// Hello, World!

Returns any The decoded string.

NODE_CIPHER

GCM is an authenticated encryption mode that not only provides confidentiality but also provides integrity in a secured way.

AUTH_TAG_BYTE_LEN

128 bit auth tag is recommended for GCM.

IV_BYTE_LEN

NIST recommends 96 bits or 12 bytes IV for GCM to promote interoperability, efficiency, and simplicity of design.

KEY_BYTE_LEN

Note: 256 (in ALG name) is key size. NODE size for AES is always 128.

SALT_BYTE_LEN

To prevent rainbow table attacks.

get

Parameters

  • strength The strength of the key to generate. decent_pw|strong_pw|ft_knox_pw|ci_key|160_wpa|504_wpa|64_wep|128_wep|152_wep|256_wep

invoiceTotals

Calculates the invoice totals based on the provided parameters.

Parameters

  • doc The invoice totals document.
  • docProducts An array of products in the invoice.
  • taxes An array of taxes applied to the invoice.

Examples

const doc = {
	number: 10001,
	objectId: 'testDocObject',
	discountAmount: 0,
	discountPercentage: 0,
	taxableSubTotal: 438.5,
	paid: 0,
	adjustment: 0,
	shipping: 0,
}

const docProducts = [{ qty: 2, price: 100, tax: 15 }]
const taxes = [
	{
		name: 'VAT',
		category: 'sales',
		value: 15,
	},
	{
		name: 'None',
		category: 'sales',
		value: 0,
	},
]

Returns any A Promise that resolves to an object containing the calculated invoice totals.

currencyParse

This method validates email address

Parameters

  • number String the number or string instance to parse as a floating currency string

Examples

currencyParse('123.43') // return '123.43'
 currencyParse('12xs3.3') // return '123.30'

Returns string {String} a boolean value indicating if the email is valid or not

phoneNumberGetInternationalString

Returns the international format of a phone number.

Parameters

  • phoneNumberObject An object containing the phone number and country code.

Examples

const phoneNumberObject = {
	phoneNumber: '+1234567890',
	countryCode: 'US',
}

const internationalPhoneNumber = phoneNumberGetInternationalString(phoneNumberObject);
console.log(internationalPhoneNumber); // Output: { national: '1234567890', international: '+1 234-567-890' }

Returns any The international format of the phone number as a string.

toJSON

This function returns a well structured json object

Parameters

  • object string a stringified object in string format

Examples

toJSON('{"name":"John Doe"}') // returns {"name": "John Doe"}

Returns object {Object} a well structured json object

initials

This method returns initials from a given name string

Parameters

  • alt string a name string to get initials from

Examples

initials('Zeal Murapa') // returns ZM

Returns string {String} a string of initials

currencyMask

This method validates email address

Parameters

  • number number a number to mask as currency

Examples

currencyMask(1000) // returns 1,000

Returns string {String} a string of currency

isTrue

This method is a truthy check for a given value

Parameters

  • value any a stringified object in string format

Examples

isTrue('') // returns false

Returns boolean {Boolean} a boolean value

sleep

This function sleeps for a given time

Parameters

  • ms ms a number in milliseconds

Examples

await sleep(1000) // sleeps for 1 second

Returns promise {Promise} blocking async promise

phoneNumberFormatString

This function formats a phone number string to international format

Parameters

  • numberString string a phone number string

Examples

phoneNumberFormatString('+276925411223') // returns +27 692 541 1223

Returns object {String} a formatted phone number string

emailGetFromString

This function extracts an email address from a string

Parameters

  • text string a string containing an email address

Examples

emailGetFromString('This is my email address: [email protected]')

Returns string {String} an email address

searchObject

This function searches an array of objects for a query string

Parameters

  • query string a string to search for
  • objects object an array of objects to search

Examples

searchObject('John', [{name: 'John Doe'}, {name: 'Jane Doe'}]) // returns [{name: 'John Doe'}]

Returns object {Array} a well structured json object

truncate

This method validates email address

Parameters

  • str string a string to truncate

Examples

truncate('This is a long string', 10) // returns 'This is a...'

Returns string {String} a truncated string

dateFormat

This method validates email address

Parameters

  • date date a date object
  • null @param {"full" | "long" | "short" | "time"} format - The format of the output.

Examples

dateFormat(new Date(), 'full') // returns 'Sun, Jan 3rd 2021 20:00:00'

Returns object {Object} a well structured json object

publicKeySetString

This function returns a public key string with the header and footer

Parameters

  • key string a public key string without the header and footer

Examples

publicKeySetString('MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA') // returns -----BEGIN PUBLIC KEY----- ...

Returns string {string} a public key string with the header and footer

publicKeyGetString

This function returns a public key string without the header and footer

Parameters

  • key string a stringified object in string format

Examples

publicKeyGetString('-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA)

Returns string {string} a public key string without the header and footer

bloodGroups

A list of bloodGroups

accountsAsset

A list of accountsAsset

accountsEquity

A list of accountsEquity

accountsPayable

A list of accountsPayable

accountsLiability

A list of accountsLiability

accountsReceivable

A list of accountsReceivable

currencyDenomination

A list of currencyDenomination

estimateTerm

A list of estimateTerm

invoiceTerm

A list of invoiceTerm

itemCategory

A list of itemCategory

employmentStatus

A list of employmentStatus

customerTypes

A list of customerTypes

bankAccountType

A list of bankAccountType

dateFormats

A list of dateFormats

contactType

A list of contactType

expenseStatus

A list of expenseStatus

salaryFrequency

A list of salaryFrequency

leavePolicy

A list of leavePolicy

languages

A list of alphabet

taxTypes

A list of taxTypes

expenseType

A list of expenseType

gender

A list of gender

documentSize

A list of documentSize

deliveryNoteStatus

A list of deliveryNoteStatus

creditNoteStatus

A list of creditNoteStatus

invoiceStatus

A list of invoiceStatus

estimateStatus

A list of estimateStatus

docTypes

A list of docTypes

months

A list of months

monthDays

A list of monthDays

industries

A list of industries

monthNameNumber

A list of monthNameNumber

orderStatus

A list of orderStatus

paymentMethods

A list of paymentMethods

deliveryMethods

A list of deliveryMethods

paymentStatus

A list of paymentStatus

paymentTerms

A list of paymentTerms

productTypes

A list of productTypes

alphabet

A list of alphabet

productUnits

A list of productUnits

quoteStatus

A list of quoteStatus

recurringFrequency

A list of recurringFrequency

salutations

A list of salutations

weekdays

A list of weekdays

timezones

A list of timezones

payoutMethod

A list of payment methods

paymentMethod

A list of payment methods

transactionStatus

A list of transaction status

Country

This method validates email address

Examples

// get country of andorra only
import { country_ad } from '@synotech/utils';

// get all countries
import { countries } from '@synotech/utils';

console.log(countries.find((country) => country.tld === country_ad.tld);

{
name: 'Andorra',
capital: 'Andorra la Vella',
population: '84000',
languages: 'ca',
callingCode: '376',
numeric: '020',
timezone: 'UTC+01:00',
region: 'Europe',
tld: 'ad',
currency: {
	name: 'Euro',
	symbol: '\u20ac',
	symbolNative: '\u20ac',
	decimalDigits: 2,
	rounding: 0,
	isoCode: 'EUR',
	namePlural: 'euros',
},
countryName: 'Andorra',
countryShortCode: 'AD',
regions: [
	{
		name: 'Andorra la Vella',
		shortCode: '07',
	},
	{
		name: 'Canillo',
		shortCode: '02',
	},
	{
		name: 'Encamp',
		shortCode: '03',
	},
	{
		name: 'Escaldes-Engordany',
		shortCode: '08',
	},
	{
		name: 'La Massana',
		shortCode: '04',
	},
	{
		name: 'Ordino',
		shortCode: '05',
	},
	{
		name: 'Sant Juli\u00e0 de L\u00f2ria',
		shortCode: '06',
	},
],
}

Returns object {Country} a country object