From d85e1f070302babcb4649eae8705103eb49db7ac Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Mon, 7 Sep 2020 22:50:56 +0200 Subject: [PATCH] dns: use url module instead of punycode for IDNA MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR-URL: https://github.com/nodejs/node/pull/35091 Reviewed-By: Gus Caplan Reviewed-By: James M Snell Reviewed-By: Michaƫl Zasso --- doc/api/intl.md | 2 ++ lib/internal/idna.js | 4 ++-- test/parallel/test-bootstrap-modules.js | 2 +- test/parallel/test-url-format.js | 5 ++++- test/parallel/test-url-parse-format.js | 6 +++++- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/doc/api/intl.md b/doc/api/intl.md index 08571c637e56ea..e91db8002dc356 100644 --- a/doc/api/intl.md +++ b/doc/api/intl.md @@ -51,6 +51,7 @@ option: | `String.prototype.toLocale*Case()` | partial (not locale-aware) | full | full | full | | [`Number.prototype.toLocaleString()`][] | partial (not locale-aware) | partial/full (depends on OS) | partial (English-only) | full | | `Date.prototype.toLocale*String()` | partial (not locale-aware) | partial/full (depends on OS) | partial (English-only) | full | +| [Legacy URL Parser][] | partial (no IDN support) | full | full | full | | [WHATWG URL Parser][] | partial (no IDN support) | full | full | full | | [`require('buffer').transcode()`][] | none (function does not exist) | full | full | full | | [REPL][] | partial (inaccurate line editing) | full | full | full | @@ -193,6 +194,7 @@ to be helpful: [ECMA-262]: https://tc39.github.io/ecma262/ [ECMA-402]: https://tc39.github.io/ecma402/ [ICU]: http://site.icu-project.org/ +[Legacy URL parser]: url.md#url_legacy_url_api [REPL]: repl.md#repl_repl [Test262]: https://github.com/tc39/test262/tree/HEAD/test/intl402 [WHATWG URL parser]: url.md#url_the_whatwg_url_api diff --git a/lib/internal/idna.js b/lib/internal/idna.js index f57f042888f311..8591226d104d3a 100644 --- a/lib/internal/idna.js +++ b/lib/internal/idna.js @@ -4,6 +4,6 @@ if (internalBinding('config').hasIntl) { const { toASCII, toUnicode } = internalBinding('icu'); module.exports = { toASCII, toUnicode }; } else { - const { toASCII, toUnicode } = require('punycode'); - module.exports = { toASCII, toUnicode }; + const { domainToASCII, domainToUnicode } = require('internal/url'); + module.exports = { toASCII: domainToASCII, toUnicode: domainToUnicode }; } diff --git a/test/parallel/test-bootstrap-modules.js b/test/parallel/test-bootstrap-modules.js index 27202dee504880..32ccba5653c3b8 100644 --- a/test/parallel/test-bootstrap-modules.js +++ b/test/parallel/test-bootstrap-modules.js @@ -151,7 +151,7 @@ if (!common.isMainThread) { if (common.hasIntl) { expectedModules.add('Internal Binding icu'); } else { - expectedModules.add('NativeModule punycode'); + expectedModules.add('NativeModule url'); } if (process.features.inspector) { diff --git a/test/parallel/test-url-format.js b/test/parallel/test-url-format.js index 720a10a97a979b..883d060ac2a152 100644 --- a/test/parallel/test-url-format.js +++ b/test/parallel/test-url-format.js @@ -1,8 +1,11 @@ 'use strict'; -require('../common'); +const common = require('../common'); const assert = require('assert'); const url = require('url'); +if (!common.hasIntl) + common.skip('missing Intl'); + // Formatting tests to verify that it'll format slightly wonky content to a // valid URL. const formatTests = { diff --git a/test/parallel/test-url-parse-format.js b/test/parallel/test-url-parse-format.js index 58f0bccbd2757b..cbfc58b1123a72 100644 --- a/test/parallel/test-url-parse-format.js +++ b/test/parallel/test-url-parse-format.js @@ -1,5 +1,9 @@ 'use strict'; -require('../common'); +const common = require('../common'); + +if (!common.hasIntl) + common.skip('missing Intl'); + const assert = require('assert'); const inspect = require('util').inspect;