Comparing version 0.0.2 to 0.0.3
74
index.js
'use strict'; | ||
const lodash = require('underscore'); | ||
let slds = { | ||
ar: require('./countries/ar.js'), | ||
at: require('./countries/at.js'), | ||
au: require('./countries/au.js'), | ||
br: require('./countries/br.js'), | ||
mx: require('./countries/mx.js'), | ||
nz: require('./countries/nz.js'), | ||
sg: require('./countries/sg.js'), | ||
uk: require('./countries/uk.js'), | ||
za: require('./countries/za.js') | ||
}; | ||
/** | ||
* This list is not at all exhaustive (yet). | ||
* @type {[[string,string]]} | ||
*/ | ||
const secondLevelDomains = [ | ||
['ar', 'com'], | ||
['at', 'co'], | ||
['at', 'or'], | ||
['au', 'asn'], | ||
['au', 'com'], | ||
['au', 'edu'], | ||
['au', 'gov'], | ||
['au', 'act'], | ||
['au', 'nsw'], | ||
['au', 'nt'], | ||
['au', 'oz'], | ||
['au', 'qld'], | ||
['au', 'sa'], | ||
['au', 'tas'], | ||
['au', 'vic'], | ||
['au', 'wa'], | ||
['au', 'id'], | ||
['au', 'net'], | ||
['au', 'org'], | ||
['br', 'com'], | ||
// France (.fr) | ||
// Hungary (.hu) | ||
// Israel (.il) | ||
// South Korea (.kr) | ||
['mx', 'com'], | ||
['sg', 'com'], | ||
['nz', 'co'], | ||
['nz', 'net'], | ||
['nz', 'org'], | ||
// Russia (.ru) | ||
// Spain (.es) | ||
// Turkey (.tr) | ||
['uk', 'co'], | ||
['uk', 'ltd'], | ||
['uk', 'me'], | ||
['uk', 'net'], | ||
['uk', 'org'], | ||
['uk', 'plc'], | ||
// US (.us) | ||
['za', 'co'] | ||
]; | ||
/** | ||
* Check whether a given domain name is a top level domain. | ||
@@ -59,7 +22,12 @@ * @param domain_name {string} | ||
const niamod = domain_name.split('.').reverse().splice(0, 2); | ||
// Probably not the most efficient, but it's only a few elements to iterate over | ||
let is2Ld = false; | ||
secondLevelDomains.forEach(sdl => is2Ld |= lodash.difference(sdl, niamod).length === 0); | ||
return !!is2Ld; | ||
let found = false; | ||
const sld = slds[niamod[0]]; | ||
if (sld !== undefined) { | ||
const N = sld.length; | ||
let i = 0; | ||
do { | ||
found = niamod[1] === sld[i++]; | ||
} while (!found && i < N); | ||
} | ||
return !!found; | ||
}; |
{ | ||
"name": "2ldcheck", | ||
"version": "0.0.2", | ||
"version": "0.0.3", | ||
"description": "Check whether a domain (a string) is a second level domain", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
# 2ldcheck | ||
This module does a simple check to see whether a domain name, like some.site.com.au, is a second level domain. Second | ||
level domains are of the form '*.co.uk', or '*.com.au'. | ||
level domains are of the form '\*.co.uk', or '\*.com.au'. | ||
@@ -6,0 +6,0 @@ # Usage |
3276
14
99