Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

akost/parse-domain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

44 Commits

Repository files navigation

parse-domain

Splits a URL into sub-domain, domain and the effective top-level domain.

Dependency Status

Since domains are handled differently across different countries and organizations, splitting a URL into sub-domain, domain and top-level-domain parts is not a simple regexp. parse-domain uses a large list of effective tld names from publicsuffix.org to recognize different parts of the domain.

Please also read the note on effective top-level domains.


Installation

npm install --save parse-domain

Usage

// long subdomains can be handled
expect(parseDomain("some.subdomain.example.co.uk")).to.eql({
 subdomain: "some.subdomain",
 domain: "example",
 tld: "co.uk"
});
// usernames, passwords and ports are disregarded
expect(parseDomain("https://user:password@example.co.uk:8080/some/path?and&query#hash")).to.eql({
 subdomain: "",
 domain: "example",
 tld: "co.uk"
});
// non-canonical top-level domains are ignored
expect(parseDomain("unknown.tld.kk")).to.equal(null);
// invalid urls are also ignored
expect(parseDomain("invalid url")).to.equal(null);
expect(parseDomain({})).to.equal(null);

Introducing custom tlds

// custom top-level domains can optionally be specified
expect(parseDomain("mymachine.local",{ customTlds: ["local"] })).to.eql({
 subdomain: "",
 domain: "mymachine",
 tld: "local"
});
// custom regexps can optionally be specified (instead of customTlds)
expect(parseDomain("localhost",{ customTlds:/localhost|\.local/ })).to.eql({
 subdomain: "",
 domain: "",
 tld: "localhost"
});

It can sometimes be helpful to apply the customTlds argument using a helper function

function parseLocalDomains(url) {
 var options = {
 customTlds: /localhost|\.local/
 };
 return parseDomain(url, options);
}
expect(parseLocalDomains("localhost")).to.eql({
 subdomain: "",
 domain: "",
 tld: "localhost"
});
expect(parseLocalDomains("mymachine.local")).to.eql({
 subdomain: "",
 domain: "mymachine",
 tld: "local"
});

API

parseDomain(url: String, options: ParseOptions): ParsedDomain|null

Returns null if url has an unknown tld or if it's not a valid url.

ParseOptions

{
 customTlds: RegExp|String[]
}

ParsedDomain

{
 tld: String,
 domain: String,
 subdomain: String
}

Note on effective top-level domains

Technically, the top-level domain is always the part after the last dot. That's why publicsuffix.org is a list of effective top-level domains: It lists all top-level domains where users are allowed to host any content. That's why foo.blogspot.com will be split into

{
 tld: "blogspot.com",
 domain: "foo",
 subdomain: ""
}

See also #4


License

Unlicense

About

Splits an url into sub-domain, domain and effective top-level-domain

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • JavaScript 100.0%

AltStyle によって変換されたページ (->オリジナル) /