Skip to content
This repository was archived by the owner on May 12, 2022. It is now read-only.

Commit d52d0d7

Browse files
authored
fix: obsolete loader hook warning (#35)
Co-authored-by: loynoir <[email protected]>
1 parent 3a8c79c commit d52d0d7

File tree

3 files changed

+31
-13
lines changed

3 files changed

+31
-13
lines changed

loader.mjs

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { URL, fileURLToPath, pathToFileURL } from 'url'
22
import fs from 'fs'
33
import { dirname } from 'path'
44
import { build, transformSync } from 'esbuild'
5+
import semver from 'semver'
56

67
const 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

223222
function 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 }

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@
3434
},
3535
"dependencies": {
3636
"esbuild": ">=0.13.12",
37-
"node-fetch": "^3.2.1"
37+
"node-fetch": "^3.2.1",
38+
"semver": "^7.3.5"
3839
},
3940
"devDependencies": {
4041
"@antfu/eslint-config": "^0.16.1",

pnpm-lock.yaml

Lines changed: 2 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)