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 🙏

© 2026 – Pkg Stats / Ryan Hefner

safe-strings

v1.0.6

Published

A collection of unicode-safe, pure, string functions inspired by other programming languages.

Readme

safe-strings

A collection of unicode-safe string functions inspired by other programming languages.

Installation

Install using NPM:

$ npm i safe-strings

Usage

Import specific functions:

const { center, capwords } = require('safe-strings');

center('my string', 20);
capwords('this is a test');

Import the entire library:

const stringUtil = require('safe-strings');

stringUtil.center('my string', 20);
stringUtil.capwords('this is a test');

Cross-language helpers

Includes aliases and helpers inspired by Go/Python/Rust naming: len, trim, trimStart, trimEnd, hasPrefix, hasSuffix, title, capitalize, contains, startsWith, endsWith, reverse, slice, repeat, join, count, replace, partition, rpartition, cut, removePrefix, removeSuffix, stripPrefix, stripSuffix, trimPrefix, trimSuffix, take, drop, and isEmpty.

Functions

length(string) ⇒ number

Get string length with unicode support

Kind: global function
Returns: number - The length of the string.

| Param | Description | | --- | --- | | string | The input string. |

split(string, [separator]) ⇒ Array.<string>

Return an array of strings split by the separator.

Kind: global function
Returns: Array.<string> - An array of split strings.

| Param | Type | Default | Description | | --- | --- | --- | --- | | string | string | | The input string. | | [separator] | string | "" | The separator char. |

ljust(string, width, [fillChar]) ⇒ string

Left-justify a string in a field of given width.

Kind: global function
Returns: string - The padded string.

| Param | Type | Default | Description | | --- | --- | --- | --- | | string | string | | The input string. | | width | number | | The length of the resulting string once. | | [fillChar] | string | " " | The character used to pad the string. |

rjust(string, width, [fillChar]) ⇒ string

Right-justify a string in a field of given width.

Kind: global function
Returns: string - The padded string.

| Param | Type | Default | Description | | --- | --- | --- | --- | | string | string | | The input string. | | width | number | | The length of the resulting string once. | | [fillChar] | string | " " | The character used to pad the string. |

center(string, width, [fillChar]) ⇒ string

Center a string in a field of given width.

Kind: global function
Returns: string - The padded string.

| Param | Type | Default | Description | | --- | --- | --- | --- | | string | string | | The input string. | | width | number | | The length of the resulting string once. | | [fillChar] | string | " " | The character used to pad the string. |

strip(string, [trimChar]) ⇒ string

Return a copy of the string with leading and trailing characters removed.

Kind: global function
Returns: string - The string with characters removed.

| Param | Type | Default | Description | | --- | --- | --- | --- | | string | string | | The input string. | | [trimChar] | string | " " | The character to be removed. |

lstrip(string, [trimChar]) ⇒ string

Return a copy of the string with leading characters removed.

Kind: global function
Returns: string - The string with characters removed.

| Param | Type | Default | Description | | --- | --- | --- | --- | | string | string | | The input string. | | [trimChar] | string | " " | The character to be removed. |

rstrip(string, [trimChar]) ⇒ string

Return a copy of the string with trailing characters removed.

Kind: global function
Returns: string - The string with characters removed.

| Param | Type | Default | Description | | --- | --- | --- | --- | | string | string | | The input string. | | [trimChar] | string | " " | The character to be removed. |

swapcase(string) ⇒ string

Return a copy of the string with lower case letters converted to upper case and vice versa.

Kind: global function
Returns: string - The swapped string

| Param | Type | Description | | --- | --- | --- | | string | string | The input string. |

capwords(string, [separator]) ⇒ string

Return a copy of the string with the first char of each separated word converted to upper case.

Kind: global function
Returns: string - The converted string

| Param | Type | Default | Description | | --- | --- | --- | --- | | string | string | | The input string. | | [separator] | string | " " | The separator char. |

ucfirst(string) ⇒ string

Return a copy of the string with the first char converted to upper case.

Kind: global function
Returns: string - The converted string

| Param | Type | Description | | --- | --- | --- | | string | string | The input string. |

lcfirst(string) ⇒ string

Return a copy of the string with the first char converted to lower case.

Kind: global function
Returns: string - The converted string

| Param | Type | Description | | --- | --- | --- | | string | string | The input string. |

nl2br(string, [breakElement]) ⇒ string

Return a copy of the string with HTML line breaks () inserted before all newlines.

Kind: global function
Returns: string - The converted string

| Param | Type | Default | Description | | --- | --- | --- | --- | | string | string | | The input string. | | [breakElement] | string | "<br>" | The HTML line break string. |

expandtabs(string, [tabsize]) ⇒ string

Return a copy of the string with tab chars (\t) replaced by spaces.

Kind: global function
Returns: string - The swapped string

| Param | Type | Default | Description | | --- | --- | --- | --- | | string | string | | The input string. | | [tabsize] | number | 8 | The input string. |

isEmpty(string) ⇒ boolean

Return true if the string is empty.

Kind: global function
Returns: boolean - True if the string is empty.

| Param | Type | Description | | --- | --- | --- | | string | string | The input string. |

contains(string, substring) ⇒ boolean

Return true if string contains the given substring.

Kind: global function
Returns: boolean - True if substring is found.

| Param | Type | Description | | --- | --- | --- | | string | string | The input string. | | substring | string | The substring to search for. |

startsWith(string, prefix) ⇒ boolean

Return true if string starts with the given prefix.

Kind: global function
Returns: boolean - True if string starts with prefix.

| Param | Type | Description | | --- | --- | --- | | string | string | The input string. | | prefix | string | The prefix to check. |

endsWith(string, suffix) ⇒ boolean

Return true if string ends with the given suffix.

Kind: global function
Returns: boolean - True if string ends with suffix.

| Param | Type | Description | | --- | --- | --- | | string | string | The input string. | | suffix | string | The suffix to check. |

reverse(string) ⇒ string

Return a new string with chars in reverse order.

Kind: global function
Returns: string - The reversed string.

| Param | Type | Description | | --- | --- | --- | | string | string | The input string. |

slice(string, [start], [end]) ⇒ string

Return a unicode-safe string slice.

Kind: global function
Returns: string - The sliced string.

| Param | Type | Default | Description | | --- | --- | --- | --- | | string | string | | The input string. | | [start] | number | 0 | The start index. | | [end] | number | | The end index. |

repeat(string, count) ⇒ string

Return a string repeated count times.

Kind: global function
Returns: string - The repeated string.

| Param | Type | Description | | --- | --- | --- | | string | string | The input string. | | count | number | Number of repetitions. |

join(strings, [separator]) ⇒ string

Join an array of strings with a separator.

Kind: global function
Returns: string - The joined string.

| Param | Type | Default | Description | | --- | --- | --- | --- | | strings | Array.<string> | | Strings to join. | | [separator] | string | "&quot;&quot;" | Separator string. |

count(string, substring) ⇒ number

Count non-overlapping substring occurrences.

Kind: global function
Returns: number - Number of occurrences.

| Param | Type | Description | | --- | --- | --- | | string | string | The input string. | | substring | string | The substring to count. |

replace(string, oldSubstring, newSubstring, [replaceCount]) ⇒ string

Replace at most count occurrences of a substring.

Kind: global function
Returns: string - The replaced string.

| Param | Type | Default | Description | | --- | --- | --- | --- | | string | string | | The input string. | | oldSubstring | string | | Substring to replace. | | newSubstring | string | | Replacement substring. | | [replaceCount] | number | -1 | Max replacements, -1 for all. |

partition(string, separator) ⇒ Array.<string>

Partition the string at the first occurrence of separator.

Kind: global function
Returns: Array.<string> - [before, separator, after]

| Param | Type | Description | | --- | --- | --- | | string | string | The input string. | | separator | string | The separator to search for. |

rpartition(string, separator) ⇒ Array.<string>

Partition the string at the last occurrence of separator.

Kind: global function
Returns: Array.<string> - [before, separator, after]

| Param | Type | Description | | --- | --- | --- | | string | string | The input string. | | separator | string | The separator to search for. |

cut(string, separator) ⇒ Array.<(string|boolean)>

Cut the string around the first occurrence of separator.

Kind: global function
Returns: Array.<(string|boolean)> - [before, after, found]

| Param | Type | Description | | --- | --- | --- | | string | string | The input string. | | separator | string | The separator to search for. |

removePrefix(string, prefix) ⇒ string

Remove a leading prefix from the string if present.

Kind: global function
Returns: string - The string without prefix.

| Param | Type | Description | | --- | --- | --- | | string | string | The input string. | | prefix | string | The prefix to remove. |

removeSuffix(string, suffix) ⇒ string

Remove a trailing suffix from the string if present.

Kind: global function
Returns: string - The string without suffix.

| Param | Type | Description | | --- | --- | --- | | string | string | The input string. | | suffix | string | The suffix to remove. |

take(string, count) ⇒ string

Return the first count unicode characters.

Kind: global function
Returns: string - The resulting string.

| Param | Type | Description | | --- | --- | --- | | string | string | The input string. | | count | number | Number of chars to keep. |

drop(string, count) ⇒ string

Drop the first count unicode characters.

Kind: global function
Returns: string - The resulting string.

| Param | Type | Description | | --- | --- | --- | | string | string | The input string. | | count | number | Number of chars to skip. |