GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - xmppo/node-stringprep: ICU StringPrep profiles for NodeJS

BranchesTags
Open more actions menu

Latest commit

 

History

196 Commits
196 Commits

Folders and files

NameName
Last commit message
Last commit date
test
test
 
 
.gitignore
.gitignore
 
 
.jshintrc
.jshintrc
 
 
.travis.yml
.travis.yml
 
 
Gruntfile.js
Gruntfile.js
 
 
LICENSE
LICENSE
 
 
README.markdown
README.markdown
 
 
binding.gyp
binding.gyp
 
 
index.js
index.js
 
 
node-stringprep.cc
node-stringprep.cc
 
 
package.json
package.json
 
 

Repository files navigation

node-stringprep

Build Status

Flattr this!

Exposes predefined Unicode normalization functions that are required by many protocols. This is just a binding to ICU, which is said to be fast..

If ICU is not available then we make use of JavaScript fallbacks.

Usage

    var StringPrep = require('node-stringprep').StringPrep;
    var prep = new StringPrep('nameprep');
    prep.prepare('Äffchen')  // => 'äffchen'

For a list of supported profiles, see node-stringprep.cc

Javascript fallbacks can be disabled/enabled using the following methods on the StringPrep object:

var prep = new StringPrep('resourceprep')
prep.disableJsFallbacks()
prep.enableJsFallbacks()

Javascript fallbacks are enabled by default. You can also check to see if native icu bindings can/will be used by calling the isNative() method:

var prep = new StringPrep('resourceprep')
prep.isNative()  // true or false

We also implement the ToASCII and ToUnicode operations as defined in the IDNA RFC 3490. These routines convert Unicode to ASCII with NamePrep and then with Punycode, and vice versa.

    var nodeStringPrep = require('node-stringprep');
    nodeStringPrep.toASCII('i♥u') // 'xn--iu-t0x'
    nodeStringPrep.toUnicode('xn--iu-t0x') // 'i♥u'

The operations can be finessed with an optional second argument, a set of boolean flags:

    nodeStringPrep.toASCII('i♥u', {
        allowUnassigned: true, // allow unassigned code points to be converted
        throwIfError: true, // throw exception if error, don't return string unchanged
        useSTD3Rules: true // use the STD3 ASCII rules for host names
    })
    nodeStringPrep.toUnicode('xn--iu-t0x', {
        allowUnassigned: true // allow unassigned code points to be converted
    })

Installation

    npm i node-stringprep

If libicu isn't available installation will gracefully fail and javascript fallbacks will be used.

If experiencing issues with node-gyp please see nodejs/node-gyp#363 which may be able to help.

Debian

    apt-get install libicu-dev

RedHat & Centos

    yum install libicu-devel

Gentoo

    emerge icu

OSX

MacPorts

    port install icu +devel

Boxen

    sudo ln -s /opt/boxen/homebrew/Cellar/icu4c/52.1/bin/icu-config /usr/local/bin/icu-config
    sudo ln -s /opt/boxen/homebrew/Cellar/icu4c/52.1/include/* /usr/local/include

Homebrew

brew install icu4c
ln -s /usr/local/Cellar/icu4c/<VERSION>/bin/icu-config /usr/local/bin/icu-config
ln -s /usr/local/Cellar/icu4c/<VERSION>/include/* /usr/local/include

If experiencing issues with 'homebrew' installing version 50.1 of icu4c, try the following:

    brew search icu4c
    brew tap homebrew/versions
    brew versions icu4c
    cd $(brew --prefix) && git pull --rebase
    git checkout c25fd2f $(brew --prefix)/Library/Formula/icu4c.rb
    brew install icu4c

Running Tests

npm test

About

ICU StringPrep profiles for NodeJS

github.com/xmppo/node-stringprep

Resources

Readme
MIT license
Activity
Custom properties

Stars

39 stars

Watchers

3 watching

Forks

23 forks
Report repository

Releases

Used by

Contributors

Languages

You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.