Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gorhill/publicsuffixlist.js
A JavaScript utility to make use of Mozilla Foundation's Public Suffix List
https://github.com/gorhill/publicsuffixlist.js
Last synced: about 2 months ago
JSON representation
A JavaScript utility to make use of Mozilla Foundation's Public Suffix List
- Host: GitHub
- URL: https://github.com/gorhill/publicsuffixlist.js
- Owner: gorhill
- Created: 2013-11-26T19:11:56.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2022-11-12T00:05:34.000Z (almost 2 years ago)
- Last Synced: 2024-05-03T03:17:37.382Z (5 months ago)
- Language: JavaScript
- Homepage:
- Size: 370 KB
- Stars: 91
- Watchers: 6
- Forks: 13
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[![NPM](https://img.shields.io/npm/v/@gorhill/publicsuffixlist)](https://www.npmjs.com/package/@gorhill/publicsuffixlist)
[![Tests](https://github.com/gorhill/publicsuffixlist.js/actions/workflows/tests.yml/badge.svg)](https://github.com/gorhill/publicsuffixlist.js/actions/workflows/tests.yml)# publicsuffixlist.js
A JavaScript utility to make use of [Mozilla Foundation's Public Suffix
List](http://publicsuffix.org) ("PSL").## Why?
This is just an implementation to deal with domains while taking into account
[Mozilla Foundation's Public Suffix List](http://publicsuffix.org). Follow
the link to understand why such a list is needed.## Test and benchmark
```
npm install
npm test
```Also see [test and benchmark](https://gorhill.github.io/publicsuffixlist.js/) pages.
## API
```js
publicSuffixList = {
version: '3.0',
parse,
getDomain,
getPublicSuffix,
suffixInPSL,
toSelfie, fromSelfie,
disableWASM, enableWASM
};
```
## Usage```html
import publicSuffixList from 'publicsuffixlist.js';
/* … */
// Feed it the list (you choose how you obtain it).
// `list` must be unicode text.
publicSuffixList.parse(list, punycode.toASCII);/* … */
// Caller is responsible to pass in hostnames which are "canonicalized in the
// normal way for hostnames": lower-case, punycode, and only a-z, 0-9, -, .let domain = publicSuffixList.getDomain('haha.whatisthis.global.prod.fastly.net');
// domain = 'whatisthis.global.prod.fastly.net'domain = publicSuffixList.getDomain('police.uk');
// domain = ''domain = publicSuffixList.getDomain('www.xn--85x722f.xn--55qx5d.cn');
// domain = 'xn--85x722f.xn--55qx5d.cn'// Etc.
```
### Node.js
```sh
npm install gorhill/publicsuffixlist.js
```
```js
import suffixList from 'publicsuffixlist';
import { domainToASCII } from 'url';
import fs from 'fs';// Suffix list downloaded from https://publicsuffix.org/list/public_suffix_list.dat
const suffixData = fs.readFileSync('./public_suffix_list.dat', 'utf8');suffixList.parse(suffixData, domainToASCII);
let domain = suffixList.getDomain('haha.whatisthis.global.prod.fastly.net');
// domain = 'whatisthis.global.prod.fastly.net'domain = suffixList.getDomain('police.uk');
// domain = ''domain = suffixList.getDomain('www.xn--85x722f.xn--55qx5d.cn');
// domain = 'xn--85x722f.xn--55qx5d.cn'```
### Enable WebAssembly
```js
// Browser
await publicSuffixList.enableWASM();// Node.js
await publicSuffixList.enableWASM({
customFetch: fileURL => {
const buffer = fs.readFileSync(fileURL);
return ({
async arrayBuffer() {
return new Uint8Array(buffer).buffer;
}
});
}
});
```## Development
```
npm install
npm test
npm run docs-test
npm run show-memory-usage
npm run show-memory-usage -- --use-wasm
npm run show-memory-usage -- --heap-snapshot
```Before submitting a
[patch](https://github.com/gorhill/publicsuffixlist.js/pulls), please run both
`npm test` and `npm run docs-test` to make sure that there are no errors.If a change is likely to affect __memory usage__, please run
`npm run show-memory-usage` both with and without `--use-wasm` and share the
output in the pull request description.To analyze the heap, run `npm run show-memory-usage -- --heap-snapshot` and
open the generated `.heapsnapshot` files in the browser's memory profiler.