summaryrefslogtreecommitdiff
path: root/bin/wiki/ImportarDesdeURL/node_modules/tldts-core/dist/es6/src/factory.js
diff options
context:
space:
mode:
Diffstat (limited to 'bin/wiki/ImportarDesdeURL/node_modules/tldts-core/dist/es6/src/factory.js')
-rw-r--r--bin/wiki/ImportarDesdeURL/node_modules/tldts-core/dist/es6/src/factory.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/bin/wiki/ImportarDesdeURL/node_modules/tldts-core/dist/es6/src/factory.js b/bin/wiki/ImportarDesdeURL/node_modules/tldts-core/dist/es6/src/factory.js
new file mode 100644
index 00000000..840c2034
--- /dev/null
+++ b/bin/wiki/ImportarDesdeURL/node_modules/tldts-core/dist/es6/src/factory.js
@@ -0,0 +1,80 @@
+/**
+ * Implement a factory allowing to plug different implementations of suffix
+ * lookup (e.g.: using a trie or the packed hashes datastructures). This is used
+ * and exposed in `tldts.ts` and `tldts-experimental.ts` bundle entrypoints.
+ */
+import getDomain from './domain';
+import extractHostname from './extract-hostname';
+import isIp from './is-ip';
+import isValidHostname from './is-valid';
+import { setDefaults } from './options';
+import getSubdomain from './subdomain';
+export function parseImpl(url, step, suffixLookup, partialOptions) {
+ var options = setDefaults(partialOptions);
+ var result = {
+ domain: null,
+ hostname: null,
+ isIcann: null,
+ isIp: null,
+ isPrivate: null,
+ publicSuffix: null,
+ subdomain: null
+ };
+ // Very fast approximate check to make sure `url` is a string. This is needed
+ // because the library will not necessarily be used in a typed setup and
+ // values of arbitrary types might be given as argument.
+ if (typeof url !== 'string') {
+ return result;
+ }
+ // Extract hostname from `url` only if needed. This can be made optional
+ // using `options.extractHostname`. This option will typically be used
+ // whenever we are sure the inputs to `parse` are already hostnames and not
+ // arbitrary URLs.
+ //
+ // `mixedInput` allows to specify if we expect a mix of URLs and hostnames
+ // as input. If only hostnames are expected then `extractHostname` can be
+ // set to `false` to speed-up parsing. If only URLs are expected then
+ // `mixedInputs` can be set to `false`. The `mixedInputs` is only a hint
+ // and will not change the behavior of the library.
+ if (options.extractHostname === false) {
+ result.hostname = url;
+ }
+ else if (options.mixedInputs === true) {
+ result.hostname = extractHostname(url, isValidHostname(url));
+ }
+ else {
+ result.hostname = extractHostname(url, false);
+ }
+ if (step === 0 /* HOSTNAME */ || result.hostname === null) {
+ return result;
+ }
+ // Check if `hostname` is a valid ip address
+ if (options.detectIp === true) {
+ result.isIp = isIp(result.hostname);
+ if (result.isIp === true) {
+ return result;
+ }
+ }
+ // Perform optional hostname validation. If hostname is not valid, no need to
+ // go further as there will be no valid domain or sub-domain.
+ if (options.validateHostname === true &&
+ options.extractHostname === true &&
+ isValidHostname(result.hostname) === false) {
+ result.hostname = null;
+ return result;
+ }
+ // Extract public suffix
+ suffixLookup(result.hostname, options, result);
+ if (step === 2 /* PUBLIC_SUFFIX */ || result.publicSuffix === null) {
+ return result;
+ }
+ // Extract domain
+ result.domain = getDomain(result.publicSuffix, result.hostname, options);
+ if (step === 3 /* DOMAIN */ || result.domain === null) {
+ return result;
+ }
+ // Extract subdomain
+ result.subdomain = getSubdomain(result.hostname, result.domain);
+ return result;
+}
+//# sourceMappingURL=factory.js.map \ No newline at end of file