jsdomain-parser

1.0.8 • Public • Published

JS Domain Parser

JS Domain Parser is a lightweight JavaScript library designed to parse and extract detailed information from URLs. It supports detecting TLDs (Top-Level Domains), handling private and unknown TLDs, and extending the TLD list with custom values.

Features

  • Extracts detailed URL components (protocol, domain, hostname, path, etc.).
  • Detects TLDs using a comprehensive list of ICANN and private TLDs.
  • Supports custom TLDs via configuration.
  • Allows toggling support for private and unknown TLDs.
  • Supports all protocols (e.g., http, https, ssh, ftp, telnet, etc.).

Installation

npm install jsdomain-parser

or you can include jsdomain-parser directly in your project by adding the following <script> tag to your HTML file:

<script src="./dist/jsdomain-parser.umd.min.js"></script>

This will expose the jsDomainParser global object in the browser.

Usage

Example 1: Basic Parsing

import { parse } from "jsdomain-parser";

const url = "https://www.example.com/path?query=test#hash";
const result = parse(url);

console.log(result);

Output:

{
  "tld": {
    "name": "com",
    "length": 1,
    "parts": ["com"]
  },
  "url": {
    "domain": "example.com",
    "origin": "https://www.example.com",
    "protocol": "https:",
    "host": "www.example.com",
    "hostname": "www.example.com",
    "port": "",
    "pathname": "/path",
    "search": "?query=test",
    "hash": "#hash",
    "query": {
      "query": "test"
    }
  }
}

Example 2: Using Custom Options

const url = "my.custom.tld";

const result = parse(url, {
  allowPrivate: true, // Enable private TLDs
  allowUnknown: false, // Disallow unknown TLDs
  extendedTlds: ["custom.tld", "tld"], // Add custom TLDs
});

console.log(result);

Output:

{
  "tld": {
    "name": "custom.tld",
    "length": 2,
    "parts": ["custom", "tld"]
  },
  "url": {
    "domain": "my.custom.tld",
    "origin": "http://my.custom.tld",
    "protocol": "http:",
    "host": "my.custom.tld",
    "hostname": "my.custom.tld",
    "port": "",
    "pathname": "/",
    "search": "",
    "hash": "",
    "query": {}
  }
}

Example 3: Error Handling

try {
  const result = parse("invalid-url");
  console.log(result);
} catch (e) {
  console.error("Error:", e.message);
}

Output:

Error: Invalid URL: Invalid URL: Error: Could not detect TLD. You can set allowUnknown to true for allowing unknown TLDs.

API Reference

parse(url, options = {})

Parses a URL string and returns an object containing TLD and URL details.

  • url: The URL to parse (string).
  • options (object): Optional configurations:
    • allowPrivate (boolean): Allow private TLDs (default: true).
    • allowUnknown (boolean): Allow unknown TLDs (default: false).
    • extendedTlds (array): Array of custom TLDs to extend the list.

Returns: An object with the following structure:

  • tld: Details of the detected TLD.
    • name: The TLD name.
    • length: The number of parts in the TLD.
    • parts: An array of the TLD parts.
  • url: Details of the parsed URL.
    • domain: The domain name.
    • origin: The full URL origin.
    • protocol: The protocol (e.g., http:).
    • host: The host.
    • hostname: The hostname.
    • port: The port (if any).
    • pathname: The path.
    • search: The query string.
    • hash: The hash fragment.
    • query: An object representation of query parameters.

Package Sidebar

Install

npm i jsdomain-parser

Weekly Downloads

2

Version

1.0.8

License

MIT

Unpacked Size

1.41 MB

Total Files

16

Last publish

Collaborators

  • toolsoverflow