mirror of
https://github.com/nodejs/node.git
synced 2024-11-21 10:59:27 +00:00
esm: improve typings and code coverage
PR-URL: https://github.com/nodejs/node/pull/42305 Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Mestery <mestery@protonmail.com> Reviewed-By: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com> Reviewed-By: Jacob Smith <jacob@frende.me> Reviewed-By: Darshan Sen <raisinten@gmail.com>
This commit is contained in:
parent
a718ef91f4
commit
68626dc451
@ -29,6 +29,10 @@ if (experimentalWasmModules) {
|
|||||||
extensionFormatMap['.wasm'] = legacyExtensionFormatMap['.wasm'] = 'wasm';
|
extensionFormatMap['.wasm'] = legacyExtensionFormatMap['.wasm'] = 'wasm';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {string} mime
|
||||||
|
* @returns {string | null}
|
||||||
|
*/
|
||||||
function mimeToFormat(mime) {
|
function mimeToFormat(mime) {
|
||||||
if (
|
if (
|
||||||
RegExpPrototypeTest(
|
RegExpPrototypeTest(
|
||||||
|
@ -32,6 +32,10 @@ const protocolHandlers = ObjectAssign(ObjectCreate(null), {
|
|||||||
'node:'() { return 'builtin'; },
|
'node:'() { return 'builtin'; },
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {URL} parsed
|
||||||
|
* @returns {string | null}
|
||||||
|
*/
|
||||||
function getDataProtocolModuleFormat(parsed) {
|
function getDataProtocolModuleFormat(parsed) {
|
||||||
const { 1: mime } = RegExpPrototypeExec(
|
const { 1: mime } = RegExpPrototypeExec(
|
||||||
/^([^/]+\/[^;,]+)(?:[^,]*?)(;base64)?,/,
|
/^([^/]+\/[^;,]+)(?:[^,]*?)(;base64)?,/,
|
||||||
@ -41,6 +45,12 @@ function getDataProtocolModuleFormat(parsed) {
|
|||||||
return mimeToFormat(mime);
|
return mimeToFormat(mime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {URL} url
|
||||||
|
* @param {{parentURL: string}} context
|
||||||
|
* @param {boolean} ignoreErrors
|
||||||
|
* @returns {string}
|
||||||
|
*/
|
||||||
function getFileProtocolModuleFormat(url, context, ignoreErrors) {
|
function getFileProtocolModuleFormat(url, context, ignoreErrors) {
|
||||||
const ext = extname(url.pathname);
|
const ext = extname(url.pathname);
|
||||||
if (ext === '.js') {
|
if (ext === '.js') {
|
||||||
@ -59,6 +69,11 @@ function getFileProtocolModuleFormat(url, context, ignoreErrors) {
|
|||||||
return getLegacyExtensionFormat(ext) ?? null;
|
return getLegacyExtensionFormat(ext) ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {URL} url
|
||||||
|
* @param {{parentURL: string}} context
|
||||||
|
* @returns {Promise<string> | undefined} only works when enabled
|
||||||
|
*/
|
||||||
function getHttpProtocolModuleFormat(url, context) {
|
function getHttpProtocolModuleFormat(url, context) {
|
||||||
if (experimentalNetworkImports) {
|
if (experimentalNetworkImports) {
|
||||||
return PromisePrototypeThen(
|
return PromisePrototypeThen(
|
||||||
@ -70,6 +85,11 @@ function getHttpProtocolModuleFormat(url, context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {URL | URL['href']} url
|
||||||
|
* @param {{parentURL: string}} context
|
||||||
|
* @returns {Promise<string> | string | undefined} only works when enabled
|
||||||
|
*/
|
||||||
function defaultGetFormatWithoutErrors(url, context) {
|
function defaultGetFormatWithoutErrors(url, context) {
|
||||||
const parsed = new URL(url);
|
const parsed = new URL(url);
|
||||||
if (!ObjectPrototypeHasOwnProperty(protocolHandlers, parsed.protocol))
|
if (!ObjectPrototypeHasOwnProperty(protocolHandlers, parsed.protocol))
|
||||||
@ -77,6 +97,11 @@ function defaultGetFormatWithoutErrors(url, context) {
|
|||||||
return protocolHandlers[parsed.protocol](parsed, context, true);
|
return protocolHandlers[parsed.protocol](parsed, context, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {URL | URL['href']} url
|
||||||
|
* @param {{parentURL: string}} context
|
||||||
|
* @returns {Promise<string> | string | undefined} only works when enabled
|
||||||
|
*/
|
||||||
function defaultGetFormat(url, context) {
|
function defaultGetFormat(url, context) {
|
||||||
const parsed = new URL(url);
|
const parsed = new URL(url);
|
||||||
return ObjectPrototypeHasOwnProperty(protocolHandlers, parsed.protocol) ?
|
return ObjectPrototypeHasOwnProperty(protocolHandlers, parsed.protocol) ?
|
||||||
|
@ -79,6 +79,7 @@ const DEFAULT_CONDITIONS_SET = new SafeSet(DEFAULT_CONDITIONS);
|
|||||||
* @typedef {string | string[] | Record<string, unknown>} Exports
|
* @typedef {string | string[] | Record<string, unknown>} Exports
|
||||||
* @typedef {'module' | 'commonjs'} PackageType
|
* @typedef {'module' | 'commonjs'} PackageType
|
||||||
* @typedef {{
|
* @typedef {{
|
||||||
|
* pjsonPath: string,
|
||||||
* exports?: ExportConfig;
|
* exports?: ExportConfig;
|
||||||
* name?: string;
|
* name?: string;
|
||||||
* main?: string;
|
* main?: string;
|
||||||
|
@ -1,7 +1,10 @@
|
|||||||
import '../common/index.mjs';
|
import '../common/index.mjs';
|
||||||
import assert from 'assert';
|
import assert from 'assert';
|
||||||
import ok from '../fixtures/es-modules/test-esm-ok.mjs';
|
import ok from '../fixtures/es-modules/test-esm-ok.mjs';
|
||||||
import okShebang from './test-esm-shebang.mjs';
|
import * as okShebangNs from './test-esm-shebang.mjs';
|
||||||
|
// encode the '.'
|
||||||
|
import * as okShebangPercentNs from './test-esm-shebang%2emjs';
|
||||||
|
|
||||||
assert(ok);
|
assert(ok);
|
||||||
assert(okShebang);
|
assert(okShebangNs.default);
|
||||||
|
assert.strict.equal(okShebangNs, okShebangPercentNs);
|
||||||
|
Loading…
Reference in New Issue
Block a user