@@ -2,6 +2,7 @@ import { URL, fileURLToPath, pathToFileURL } from 'url'
22import fs from 'fs'
33import { dirname } from 'path'
44import { build , transformSync } from 'esbuild'
5+ import semver from 'semver'
56
67const isWindows = process . platform === 'win32'
78
@@ -91,7 +92,7 @@ function isValidURL(s) {
9192 }
9293}
9394
94- export async function resolve ( specifier , context , defaultResolve ) {
95+ async function resolveBase ( specifier , context , defaultResolve ) {
9596 const {
9697 parentURL,
9798 } = context
@@ -137,9 +138,7 @@ export async function resolve(specifier, context, defaultResolve) {
137138 return defaultResolve ( specifier , context , defaultResolve )
138139}
139140
140- // New hook starting from Node v16.12.0
141- // See: https://github.com/nodejs/node/pull/37468
142- export async function load ( url , context , defaultLoad ) {
141+ async function loadBase ( url , context , defaultLoad ) {
143142 if ( httpRegex . test ( url ) ) {
144143 return {
145144 format : 'module' ,
@@ -166,7 +165,7 @@ export async function load(url, context, defaultLoad) {
166165 return defaultLoad ( url , context , defaultLoad )
167166}
168167
169- export function getFormat ( url , context , defaultGetFormat ) {
168+ function getFormatBase ( url , context , defaultGetFormat ) {
170169 if ( httpRegex . test ( url ) ) {
171170 return {
172171 format : 'module' ,
@@ -183,7 +182,7 @@ export function getFormat(url, context, defaultGetFormat) {
183182 return defaultGetFormat ( url , context , defaultGetFormat )
184183}
185184
186- export async function transformSource ( source , context , defaultTransformSource ) {
185+ async function transformSourceBase ( source , context , defaultTransformSource ) {
187186 const { url, format } = context
188187
189188 if ( httpRegex . test ( url ) ) {
@@ -208,7 +207,7 @@ export async function transformSource(source, context, defaultTransformSource) {
208207 return defaultTransformSource ( source , context , defaultTransformSource )
209208}
210209
211- export async function getSource ( url , context , defaultGetSource ) {
210+ async function getSourceBase ( url , context , defaultGetSource ) {
212211 if ( httpRegex . test ( url ) ) {
213212 return {
214213 source : await fetchNetworkModule ( url ) ,
@@ -218,11 +217,11 @@ export async function getSource(url, context, defaultGetSource) {
218217 return defaultGetSource ( url , context , defaultGetSource )
219218}
220219
221- export const networkModuleCache = new Map ( )
220+ const networkModuleCache = new Map ( )
222221
223222function fetchNetworkModule ( url ) {
224223 if ( ! networkModuleCache . has ( url ) ) {
225- const promise = ( async ( ) => {
224+ const promise = ( async ( ) => {
226225 const _fetch = ( typeof fetch != 'undefined' )
227226 ? fetch
228227 : ( await import ( 'node-fetch' ) ) . default
@@ -233,3 +232,22 @@ function fetchNetworkModule(url) {
233232 }
234233 return networkModuleCache . get ( url )
235234}
235+
236+ // New hook starting from Node v16.12.0
237+ // See: https://github.com/nodejs/node/pull/37468
238+ const _resolve = resolveBase
239+ let _load , _getFormat , _transformSource , _getSource
240+ if ( semver . satisfies ( process . versions . node , '>=16.12.0' ) ) {
241+ _load = loadBase
242+ }
243+ else {
244+ _getFormat = getFormatBase
245+ _transformSource = transformSourceBase
246+ _getSource = getSourceBase
247+ }
248+ export const resolve = _resolve
249+ export const load = _load
250+ export const getFormat = _getFormat
251+ export const transformSource = _transformSource
252+ export const getSource = _getSource
253+ export { networkModuleCache }
0 commit comments