diff --git a/index.js b/index.js index f8d05f2..9ff4a8c 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,6 @@ 'use strict' +const url = require('node:url') const { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizeComponentEncoding, isIPv4, nonSimpleDomain } = require('./lib/utils') const { SCHEMES, getSchemeHandler } = require('./lib/schemes') @@ -290,7 +291,7 @@ function parse (uri, opts) { if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) { // convert Unicode IDN -> ASCII IDN try { - parsed.host = URL.domainToASCII(parsed.host.toLowerCase()) + parsed.host = url.domainToASCII(parsed.host.toLowerCase()) } catch (e) { parsed.error = parsed.error || "Host's domain name can not be converted to ASCII: " + e } diff --git a/test/parse.test.js b/test/parse.test.js index 6a2be03..e741488 100644 --- a/test/parse.test.js +++ b/test/parse.test.js @@ -42,6 +42,18 @@ test('URI parse', (t) => { t.equal(components.query, undefined, 'query') t.equal(components.fragment, undefined, 'fragment') + // non simple domain with schemeHandler + components = fastURI.parse('https://foo-bar-123.example.com') + t.equal(components.error, undefined, 'host errors') + t.equal(components.scheme, 'https', 'scheme') + // t.equal(components.authority, "", "authority"); + t.equal(components.userinfo, undefined, 'userinfo') + t.equal(components.host, 'foo-bar-123.example.com', 'host non simple domain') + t.equal(components.port, undefined, 'port') + t.equal(components.path, '', 'path') + t.equal(components.query, undefined, 'query') + t.equal(components.fragment, undefined, 'fragment') + // port components = fastURI.parse('//:') t.equal(components.error, undefined, 'port errors')