Skip to main content

@kreisler/js-helpers

A comprehensive collection of utility functions for common JavaScript tasks including text normalization, number formatting, base64 encoding, unit conversions, and WhatsApp markdown formatting.

Installation

npm install @kreisler/js-helpers

Re-exported Utilities

This package also re-exports:
  • All exports from @kreisler/debounce
  • All exports from @kreisler/createapi
  • All exports from @kreisler/try-catch (as TCatch namespace)

Functions

Number Utilities

abbreviateNumber

Abbreviates large numbers with suffixes (k, M, B, T).
number
number
required
The number to abbreviate.
return
string
The abbreviated number as a string (e.g., “1.5k”, “2.3M”).

bytes2Kb

Converts bytes to kilobytes.
size
number
required
Size in bytes.
decimal
number
default:2
Number of decimal places.
return
string
Size in KB as a string.

bytes2Mb

Converts bytes to megabytes.
size
number
required
Size in bytes.
decimal
number
default:2
Number of decimal places.
return
string
Size in MB as a string.

bytes2Gb

Converts bytes to gigabytes.
size
number
required
Size in bytes.
decimal
number
default:2
Number of decimal places.
return
string
Size in GB as a string.

Temperature & Speed Conversions (converters namespace)

kToF

Converts Kelvin to Fahrenheit.
k
number
required
Temperature in Kelvin.
precision
number
default:0
Number of decimal places.
return
number
Temperature in Fahrenheit.

kToC

Converts Kelvin to Celsius.
k
number
required
Temperature in Kelvin.
precision
number
default:0
Number of decimal places.
return
number
Temperature in Celsius.

msToMph

Converts meters per second to miles per hour.
speed
number
required
Speed in m/s.
precision
number
default:0
Number of decimal places.
return
number
Speed in mph.

msToKmh

Converts meters per second to kilometers per hour.
speed
number
required
Speed in m/s.
precision
number
default:0
Number of decimal places.
return
number
Speed in km/h.

Base64 Utilities (base64converters namespace)

utf8Tob64

Converts UTF-8 string to base64.
str
string
required
UTF-8 encoded string.
return
string
Base64 encoded string.

b64Toutf8

Converts base64 to UTF-8 string.
str
string
required
Base64 encoded string.
return
string
UTF-8 decoded string.

Text Processing

normalize

Normalizes strings by removing accents and special characters.
str
string
required
String to normalize.
urls
boolean
default:true
If false, converts to URL-safe format (lowercase with dashes).
return
string
Normalized string.

trimText

Removes excessive whitespace and empty lines.
str
string
required
String to trim.
return
string
Cleaned string.

stripHtmlTags

Removes HTML tags from a string.
str
string
required
String containing HTML.
exp
RegExp
Custom regex pattern for tag removal.
return
string
String without HTML tags.

levenshteinDistance

Calculates the Levenshtein distance between two strings.
a
string
required
First string.
b
string
required
Second string.
return
number
Edit distance between the strings.

titleSimilarity

Calculates similarity between two titles (0-1 scale).
title1
string
required
First title.
title2
string
required
Second title.
return
number
Similarity score (0 = completely different, 1 = identical). A threshold of 0.8 is recommended for matching.

Command Line Utilities

argv2Object

Converts command-line arguments to a key-value object.
argv
string[]
required
Array of command-line arguments.
unixmode
boolean
default:true
Parse Unix-style arguments (--key=value, -k value).
return
O
Object with parsed key-value pairs.

WhatsApp Markdown (MarkdownWsp object)

Italic

text
string
required
Text to format.
return
string
Text wrapped in underscores: _text_

Bold

text
string
required
Text to format.
return
string
Text wrapped in asterisks: *text*

Strikethrough

text
string
required
Text to format.
return
string
Text wrapped in tildes: ~text~

Monospace

text
string
required
Text to format.
return
string
Text wrapped in triple backticks: ```text```

Quote

text
string
required
Text to format.
return
string
Text prefixed with >: > text

BulletedList

text
string | string[]
required
Text or array of strings to format.
bulletPoint
'-' | '*'
default:"-"
Bullet character.
return
string
Formatted bulleted list.

NumberedLists

text
string | string[]
required
Text or array of strings to format.
return
string
Formatted numbered list.

InlineCode

text
string
required
Text to format.
return
string
Text wrapped in backticks: `text`

Usage Examples

Number Formatting

import { abbreviateNumber, bytes2Mb } from '@kreisler/js-helpers'

console.log(abbreviateNumber(1500))      // "1.5k"
console.log(abbreviateNumber(2500000))   // "2.5M"
console.log(abbreviateNumber(1000000000)) // "1.0B"

console.log(bytes2Mb(1967917)) // "1.88"

Temperature Conversions

import { converters } from '@kreisler/js-helpers'

const kelvin = 300
console.log(`${kelvin}K = ${converters.kToC(kelvin)}°C`) // "300K = 27°C"
console.log(`${kelvin}K = ${converters.kToF(kelvin)}°F`) // "300K = 81°F"

Speed Conversions

import { converters } from '@kreisler/js-helpers'

const speed = 10 // m/s
console.log(`${speed} m/s = ${converters.msToKmh(speed)} km/h`) // "10 m/s = 36 km/h"
console.log(`${speed} m/s = ${converters.msToMph(speed)} mph") // "10 m/s = 22 mph"

Base64 Encoding

import { base64converters } from '@kreisler/js-helpers'

const text = 'Hello, World! 你好'
const encoded = base64converters.utf8Tob64(text)
console.log(encoded) // Base64 string

const decoded = base64converters.b64Toutf8(encoded)
console.log(decoded) // "Hello, World! 你好"

Text Normalization

import { normalize } from '@kreisler/js-helpers'

console.log(normalize('ÁÉÍÓÚáéíóú')) // "AEIOUaeiou"
console.log(normalize('Héllo Wörld!', false)) // "hello-world"

HTML Stripping

import { stripHtmlTags } from '@kreisler/js-helpers'

const html = '<p>Hello <strong>World</strong>!</p>'
console.log(stripHtmlTags(html)) // "Hello World!"

String Similarity

import { titleSimilarity } from '@kreisler/js-helpers'

const similarity = titleSimilarity('Hello World', 'Hello World!')
console.log(similarity) // 0.96

if (similarity > 0.8) {
  console.log('Titles are similar')
}

Command Line Parsing

import { argv2Object } from '@kreisler/js-helpers'

// Unix-style
const args1 = argv2Object(['--name=John', '--age=30', '-v'])
console.log(args1) // { name: 'John', age: '30', v: true }

// Simple format
const args2 = argv2Object(['name=John', 'age=30'], false)
console.log(args2) // { name: 'John', age: '30' }

WhatsApp Formatting

import { MarkdownWsp } from '@kreisler/js-helpers'
// or import individual functions:
// import { Bold, Italic, BulletedList } from '@kreisler/js-helpers'

const message = `
${MarkdownWsp.Bold('Important Notice')}

${MarkdownWsp.Italic('Please read carefully:')}

${MarkdownWsp.BulletedList(['Item 1', 'Item 2', 'Item 3'])}

${MarkdownWsp.InlineCode('const x = 10;')}

${MarkdownWsp.Quote('This is a quote')}
`

console.log(message)

Complete Example

import {
  abbreviateNumber,
  bytes2Mb,
  normalize,
  stripHtmlTags,
  titleSimilarity,
  converters,
  base64converters,
  MarkdownWsp
} from '@kreisler/js-helpers'

// Process user data
const userData = {
  name: stripHtmlTags('<strong>John Doe</strong>'),
  username: normalize('Jöhn Döe 123!', false), // "john-doe-123"
  followers: abbreviateNumber(125000), // "125.0k"
  storageUsed: bytes2Mb(5242880) + ' MB', // "5.00 MB"
  location: {
    temp: converters.kToC(300), // 27°C
    windSpeed: converters.msToKmh(5) // 18 km/h
  }
}

console.log(userData)

Build docs developers (and LLMs) love