summaryrefslogtreecommitdiff
path: root/bin/wiki/ImportarDesdeURL/node_modules/tldts-core/dist/es6/src/is-valid.js
diff options
context:
space:
mode:
Diffstat (limited to 'bin/wiki/ImportarDesdeURL/node_modules/tldts-core/dist/es6/src/is-valid.js')
-rw-r--r--bin/wiki/ImportarDesdeURL/node_modules/tldts-core/dist/es6/src/is-valid.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/bin/wiki/ImportarDesdeURL/node_modules/tldts-core/dist/es6/src/is-valid.js b/bin/wiki/ImportarDesdeURL/node_modules/tldts-core/dist/es6/src/is-valid.js
new file mode 100644
index 00000000..2d6f4e31
--- /dev/null
+++ b/bin/wiki/ImportarDesdeURL/node_modules/tldts-core/dist/es6/src/is-valid.js
@@ -0,0 +1,62 @@
+/**
+ * Implements fast shallow verification of hostnames. This does not perform a
+ * struct check on the content of labels (classes of Unicode characters, etc.)
+ * but instead check that the structure is valid (number of labels, length of
+ * labels, etc.).
+ *
+ * If you need stricter validation, consider using an external library.
+ */
+function isValidAscii(code) {
+ return ((code >= 97 && code <= 122) || (code >= 48 && code <= 57) || code > 127);
+}
+/**
+ * Check if a hostname string is valid. It's usually a preliminary check before
+ * trying to use getDomain or anything else.
+ *
+ * Beware: it does not check if the TLD exists.
+ */
+export default function (hostname) {
+ if (hostname.length > 255) {
+ return false;
+ }
+ if (hostname.length === 0) {
+ return false;
+ }
+ if (!isValidAscii(hostname.charCodeAt(0))) {
+ return false;
+ }
+ // Validate hostname according to RFC
+ var lastDotIndex = -1;
+ var lastCharCode = -1;
+ var len = hostname.length;
+ for (var i = 0; i < len; i += 1) {
+ var code = hostname.charCodeAt(i);
+ if (code === 46 /* '.' */) {
+ if (
+ // Check that previous label is < 63 bytes long (64 = 63 + '.')
+ i - lastDotIndex > 64 ||
+ // Check that previous character was not already a '.'
+ lastCharCode === 46 ||
+ // Check that the previous label does not end with a '-' (dash)
+ lastCharCode === 45 ||
+ // Check that the previous label does not end with a '_' (underscore)
+ lastCharCode === 95) {
+ return false;
+ }
+ lastDotIndex = i;
+ }
+ else if (!(isValidAscii(code) || code === 45 || code === 95)) {
+ // Check if there is a forbidden character in the label
+ return false;
+ }
+ lastCharCode = code;
+ }
+ return (
+ // Check that last label is shorter than 63 chars
+ len - lastDotIndex - 1 <= 63 &&
+ // Check that the last character is an allowed trailing label character.
+ // Since we already checked that the char is a valid hostname character,
+ // we only need to check that it's different from '-'.
+ lastCharCode !== 45);
+}
+//# sourceMappingURL=is-valid.js.map \ No newline at end of file