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

identifierfy

v2.0.0

Published

Rewrites an identifier string so its valid according to ES2015

Downloads

21,721

Readme

identifierfy

Rewrites an identifier string so it's valid according to ES2015. Works in Node.js 6 and above.

Please see this awesome article by Mathias Bynens for background.

Installation

npm install identifierfy

Usage

The module has one default export, the identifierfy function:

const identifierfy = require('identifierfy')

Call identifierfy() with an identifier string. It'll return a string that can be used as an identifier, which is useful when writing Babel plugins.

Characters that are not allowed in identifiers are dropped. Any character that follows a removed character is uppercased, except if the dropped character was at the front of the string.

If necessary the resulting identifier is prefixed with an underscore. This will happen if the string is a reserved word or if the first character cannot be used as the first character (but is fine as the second character).

This behavior can be overridden by passing a second options argument. This should be an object. Set prefixReservedWords to false to avoid reserved words being prefixed. Set prefixInvalidIdentifiers to false to avoid prefixing identifiers where the first character cannot be used. These options are useful if the resulting value is concatenated with other characters, making it valid after all.

Note that null is returned if all characters from the original string are dropped.

Examples

identifierfy(input)

Input|Resulting identifier|Reason :---|:---|:--- 'class|'_class'|Reserved word '42'|'_42'|Identifiers cannot start with a number '-foo'|'foo'|The - is dropped, but since it's as the front f is not uppercased 'foo-bar🙊baz'|'fooBarBaz'|The - and 🙊 characters are dropped, and the following characters uppercased 'foo-9'|foo9|9 can't be uppercased of course 😉 '💩'|null|Sadly emojis cannot be used as identifiers 😢

identifierfy(input, {prefixReservedWords: false})

Input|Resulting identifier|Reason :---|:---|:--- 'class|'class'|Reserved word, but prefixing is disabled '42'|'_42'|Identifiers cannot start with a number

identifierfy(input, {prefixInvalidIdentifiers: false})

Input|Resulting identifier|Reason :---|:---|:--- 'class|'_class'|Reserved word '42'|'42'|Identifiers cannot start with a number, however prefixing is disabled so it's OK

identifierfy(input, {prefixInvalidIdentifiers: false, prefixReservedWords: false})

Input|Resulting identifier|Reason :---|:---|:--- 'class|'class'|Reserved word, but prefixing is disabled '42'|'42'|Identifiers cannot start with a number, however prefixing is disabled so it's OK