{"id":13582831,"url":"https://github.com/7c/whoisserver-world","last_synced_at":"2025-09-10T12:38:41.652Z","repository":{"id":65772254,"uuid":"150297536","full_name":"7c/whoisserver-world","owner":"7c","description":"iana supported whoisserver metadata of all active generic/cc/sponsored tlds","archived":false,"fork":false,"pushed_at":"2025-04-26T20:49:58.000Z","size":14480,"stargazers_count":16,"open_issues_count":0,"forks_count":6,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-07-25T01:05:49.313Z","etag":null,"topics":["whois"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/7c.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-09-25T16:38:20.000Z","updated_at":"2025-04-26T20:50:04.000Z","dependencies_parsed_at":"2024-04-11T21:11:29.285Z","dependency_job_id":"7aced480-69bd-4244-a6c8-85145f16f834","html_url":"https://github.com/7c/whoisserver-world","commit_stats":{"total_commits":36,"total_committers":4,"mean_commits":9.0,"dds":0.5277777777777778,"last_synced_commit":"731fc8497af0e6f523e30b191c9c2a7b19ff5530"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/7c/whoisserver-world","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7c%2Fwhoisserver-world","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7c%2Fwhoisserver-world/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7c%2Fwhoisserver-world/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7c%2Fwhoisserver-world/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/7c","download_url":"https://codeload.github.com/7c/whoisserver-world/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/7c%2Fwhoisserver-world/sbom","scorecard":{"id":5798,"data":{"date":"2025-08-11","repo":{"name":"github.com/7c/whoisserver-world","commit":"c5fb09636213a6184b8b8f85a35a02a9d38de503"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-14T13:30:41.644Z","repository_id":65772254,"created_at":"2025-08-14T13:30:41.644Z","updated_at":"2025-08-14T13:30:41.644Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274463456,"owners_count":25290113,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-10T02:00:12.551Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["whois"],"created_at":"2024-08-01T15:03:03.611Z","updated_at":"2025-09-10T12:38:41.623Z","avatar_url":"https://github.com/7c.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# whoisserver-world\nlibrary with parsed data to support whois operations. Library contains information about every TLD available\n\n\n# install\n```\nnpm i --save whoisserver-world\n```\n\n# Usage\n```\nconst { tldDetails,tlds,parseDomain } = require('whoisserver-world')\n\nconsole.log(tlds())\n## returns json object with tlds as key\n\nconsole.log(tldDetails('com'))\n\n## returns\n{ tld: 'com',\n  tldUpdated: 1507161600000,\n  tldCreated: 473385600000,\n  whoisServer: [ 'whois.verisign-grs.com' ],\n  registry: 'http://www.verisigninc.com',\n  ianaUrl: 'https://www.iana.org/domains/root/db/com.html',\n  t: 1611784353122,\n  version: 1,\n  sampleDomains:\n   { com:\n      [ 'spotify.com',\n        'google.com',\n        'googleapis.com',\n        'microsoft.com',\n        'mcafee.com',\n        'esportsflag.com',\n        'esportsguide.com',\n        'dotesports.com',\n        'msn.com',\n        'youtube.com',\n        'gamepedia.com',\n        'amazonaws.com',\n        'googlevideo.com',\n        'thegamer.com',\n        'twitter.com',\n        'ip-api.com',\n        'keywordseverywhere.com',\n        'gvt2.com',\n        'gstatic.com',\n        'appspot.com' ] },\n  type: 'generic',\n  isIDN: false,\n  rdapServers: [ 'https://rdap.verisign.com/com/v1/domain/' ],\n  rdapUpdated: 1611697132397 }\n```\n\n# Features\n\n## parseDomain\nthis function parses given hostnames to domains and tlds, very useful tool if you do not want to deal with PSL parsers. Supports ascii/punycode hostnames/domains as input. If you pass unicode domain, you must make sure it is lowercased, because .toLowerCase() does not work with unicode characters and you should know the locale and use .toLocaleLowerCase with proper region in order to make this function. This function uses .toLowerCase and this fails with unicode input domains. Generally not good idea to use unicode domains, but if you do, you must make sure it is lowercased before passing to this function.\n\n```\n## console.log(parseDomain(\"sub.test.com\")) returns\n{\n  hostname: 'sub.test.com',\n  tldData: {\n    tld: 'com',\n    tldUpdated: 1565740800000,\n    tldCreated: 473385600000,\n    whoisServer: [ 'whois.verisign-grs.com' ],\n    registry: 'http://www.verisigninc.com',\n    ianaUrl: 'https://www.iana.org/domains/root/db/com.html',\n    t: 1672688512597,\n    version: 1,\n    sampleDomains: { com: [Array] },\n    type: 'generic',\n    isIDN: false,\n    rdapServers: [ 'https://rdap.verisign.com/com/v1/domain/' ],\n    rdapUpdated: 1658865599106\n  },\n  domain: 'test.com',\n  tld: 'com'\n}\n```\n\n## rdap support\nadded rdap support to tlds, tlds they do have rdap will have `rdapServers` array property\n\n## idn support\nif the tld is [IDN](https://en.wikipedia.org/wiki/Internationalized_domain_name), then the property `isIDN` will be set to `true`\n\n## single file support\nAdded `tlds/` folder for dynamically loading files instead of loading and keeping single .json file in memory\n\n## sampleDomains Property \nsampleDomains property contains examples of domains they are active and registered under that particular tld. These domains are taken from internet randomly. I do not have any relationship with these domains. These domains are there to verify whois servers at the end. Imagine you have a tld `abbott`, how do you want to test the whoisServer with a valid .abbott domain? That is the usage of sampleDomains property. These domains are taken randomly and might change on every commit. Do not stick to them. Final goal is to have at least 10 samples per tld\n\nThis repo is planned to be language independent (for now)\n\n## Example Structure\n```\n{\n  \"aaa\": {\n    \"tld\": \"aaa\",\n    \"tldUpdated\": 1602460800000,\n    \"tldCreated\": 1439424000000,\n    \"whoisServer\": [],\n    \"registry\": \"http://www.aaa.com\",\n    \"ianaUrl\": \"https://www.iana.org/domains/root/db/aaa.html\",\n    \"t\": 1611784170878,\n    \"version\": 1,\n    \"sampleDomains\": {\n      \"aaa\": [\n        \"nic.aaa\"\n      ]\n    },\n    \"type\": \"generic\",\n    \"isIDN\": false,\n    \"rdapServers\": [\n      \"https://rdap.nic.aaa/domain/\"\n    ],\n    \"rdapUpdated\": 1611696940295\n  },\n  \"aarp\": {\n    \"tld\": \"aarp\",\n    \"tldUpdated\": 1565913600000,\n    \"tldCreated\": 1445472000000,\n  \n  ...............\n\n   \"africa\": {\n    \"tld\": \"africa\",\n    \"tldUpdated\": 1569542400000,\n    \"tldCreated\": 1486771200000,\n    \"whoisServer\": [\n      \"africa-whois.registry.net.za\"\n    ],\n    \"registry\": \"http://nic.africa\",\n    \"ianaUrl\": \"https://www.iana.org/domains/root/db/africa.html\",\n    \"t\": 1611784190626,\n    \"version\": 1,\n    \"sampleDomains\": {\n      \"africa\": [\n        \"connexme.africa\",\n        \"justslidemedia.africa\",\n        \"gazettes.africa\",\n        \"africoninfragroup.africa\",\n        \"locanto.africa\",\n        \"singo.africa\",\n        \"cari.africa\",\n        \"nation.africa\",\n        \"afrik21.africa\",\n        \"techbuild.africa\",\n        \"umoja.africa\",\n        \"b-ok.africa\",\n        \"techpoint.africa\",\n        \"mybet.africa\",\n        \"zindi.africa\",\n        \"absa.africa\",\n        \"gehealthcare.africa\",\n        \"1lib.africa\",\n        \"truehost.africa\",\n        \"smehub.africa\"\n      ]\n    },\n    \"type\": \"generic\",\n    \"isIDN\": false,\n    \"rdapServers\": [\n      \"https://rdap.registry.net.za/rdap/domain/\"\n    ],\n    \"rdapUpdated\": 1611697020120\n  },\n  ....\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F7c%2Fwhoisserver-world","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F7c%2Fwhoisserver-world","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F7c%2Fwhoisserver-world/lists"}