UNPKG

extract-domain

Version:
122 lines (82 loc) 2.6 kB
# Extract domain name from URL [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4JDQMB6MRJXQE&source=url) This package provides a performant way to extract domain names from URLs without using regular expressions or array manipulations. Learn more about [What is a URL](https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_is_a_URL) ## Supports - ESM - Node.js - Browser ## Usage ### Installation ```bash $ npm i --save extract-domain ``` ### Development ``` # Install bun https://bun.sh/ curl -fsSL https://bun.sh/install | bash # tests bun test:watch ``` ### API - @param {Urls} urls ["https://www.google.com", "https://www.github.com"] or "https://www.google.com" - @param {GetDomainOptions} opts `{ tld: true }` permit to get Top Level Domain like `*.co.uk` - @returns {Urls | Promise<Urls>} Returns URL(s) or a promise of URL(s) if the PSL lib is being used ESM import ```js import extractDomain from 'extract-domain'; ``` Examples ```js const urls = [ 'https://www.npmjs.com/package/extract-domain', 'http://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument', 'http://user:password@example.com:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument', 'https://npmjs.com/package/extract-domain', 'ftp://example.org/resource.txt', 'http://example.co.uk/', 'this.is.my@email.com', ]; extractDomain(urls[0]); // npmjs.com extractDomain(urls); // [ 'npmjs.com', 'example.com', 'example.com', 'npmjs.com', 'example.org', 'co.uk', 'email.com' ] ``` ## TLD support TLD support requires the optional dependency of the [`psl` library](https://www.npmjs.com/package/psl). Examples ```bash npm i --save-optional psl ``` ```js const url = 'http://www.example.co.uk:80/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument'; async function extract(url) { console.log(await extractDomain(url, { tld: true })); // example.co.uk } // Or extractDomain(url, { tld: true }).then(console.log); // example.co.uk ``` Please note that using the tld flag may significantly slow down the process. Benchmark (old) results: ``` # extract domain 10,000 times end ~14 ms (0 s + 13572914 ns) # extract domain with tld 10,000 times end ~4.29 s (4 s + 288108681 ns) ``` ## Tests ```bash $ bun test ``` ## Coding style ```bash $ bun pretty ``` ## Benchmark ```bash $ bun benchmark ``` ## Contribution Contributions are appreciated. ## License MIT-licensed. See LICENSE.