get-tld

0.0.1 • Public • Published

JavaScript library to precisely get the TLD part of an URL in a browser.

After it's been installed via npm install or by running or requireing build.js the index.js file can be served as a UMD module which is a single function getTLD:

    /**
     * Returns the TLD part of a domain:
     * <input>         ==>   <output>       (<matching rule>)
     * 'a.b.com'       ==>   '.com'         ('com')
     * 'b.com.au'      ==>   '.com.au'      ('com.au')
     * 'com.au'        ==>   '.au'          ('au')
     * 'a.b.de'        ==>   '.de'          ('de')
     * 'a.b.com.de'    ==>   '.com.de'      ('com.de')
     * 'com.de'        ==>   '.de'          ('de')
     * 'a.foo.ck'      ==>   '.foo.ck'      ('*.ck')
     * 'com.ck'        ==>   null           ('*.ck', but no 'ck')
     * 'a.www.ck'      ==>   '.ck'          ('*.ck', but '!www.ck')
     * 'a.xn--unup4y'  ==>   '.xn--unup4y'  ('游戏')
     * 'a.github.io'   ==>   '.github.io'   ('github.io')
     * 'localhost'     ==>   ''
     * 'foo'           ==>   ''
     * @param  {string}  domain  Full domain (or a TLD including leading '.') from which to obtain the TLD
     * @return {string}          TLD including leading '.', null if no rule could be matched, '' if domain contains no '.'
     */

Features:

  • Precision: uses the same list of predefined TLDs as Mozilla (https://publicsuffix.org/list/public_suffix_list.dat by default)
  • Size: the list of the TLDs is saved as compact as possible. (< 80kB in total, which is smaller than the plain list itself)
  • Speed: most of the work is done in the build process on the server, testing urls is fast for the client

Installation: npm i get-tld

Update (of the TLD list):

  • either: npm i in the module root
  • or require('get-tld/build.js')({ name: 'get-tld', file: 'index.js', url, }) programmatically

Readme

Keywords

none

Package Sidebar

Install

npm i get-tld

Weekly Downloads

1

Version

0.0.1

License

MIT

Last publish

Collaborators

  • niklasg