![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
@7c/parsedomain
Advanced tools
Splits an url into sub-domain, domain and effective top-level-domain
Splits a URL into sub-domain, domain and the top-level domain.
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. parsedomain uses a large list of known top-level domains from publicsuffix.org to recognize different parts of the domain.
This module uses a trie data structure under the hood to ensure the smallest possible library size and the fastest lookup. The library is roughly 30KB minified and gzipped. Since publicsuffix.org is frequently updated, the data structure is built on npm install
as a postinstall
hook. If something goes wrong during that step, the library falls back to a prebuilt list that has been built at the time of publishing.
npm install parsedomain
You might need to update the database from time to time. Sometimes database downloading might fail and you might need to download it manually
cd node-modules/parsedomain && node scripts-build-tries.js
// long subdomains can be handled
expect(parseDomain("some.subdomain.example.co.uk")).to.eql({
subdomain: "some.subdomain",
domain: "example",
tld: "co.uk"
});
// protocols, usernames, passwords, ports, paths, queries and hashes are disregarded
expect(parseDomain("https://user:password@example.co.uk:8080/some/path?and&query#hash")).to.eql({
subdomain: "",
domain: "example",
tld: "co.uk"
});
// unknown 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);
// 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) {
return parseDomain(url, {
customTlds: /localhost|\.local/
});
}
expect(parseLocalDomains("localhost")).to.eql({
subdomain: "",
domain: "",
tld: "localhost"
});
expect(parseLocalDomains("mymachine.local")).to.eql({
subdomain: "",
domain: "mymachine",
tld: "local"
});
parseDomain(url: string, options: ParseOptions): ParsedDomain|null
Returns null
if url
has an unknown tld or if it's not a valid url.
ParseOptions
{
// A list of custom tlds that are first matched against the url.
// Useful if you also need to split internal URLs like localhost.
customTlds: RegExp|Array<string>,
// There are lot of private domains that act like top-level domains,
// like blogspot.com, googleapis.com or s3.amazonaws.com.
// By default, these domains would be split into:
// { subdomain: ..., domain: "blogspot", tld: "com" }
// When this flag is set to true, the domain will be split into
// { subdomain: ..., domain: ..., tld: "blogspot.com" }
// See also https://github.com/peerigon/parse-domain/issues/4
privateTlds: boolean - default: false
}
ParsedDomain
{
tld: string,
domain: string,
subdomain: string
}
This repo was forked from peerigon and modified/extended
FAQs
Splits an url into sub-domain, domain and effective top-level-domain
We found that @7c/parsedomain demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.