forked from babel/babel
-
-
Notifications
You must be signed in to change notification settings - Fork 4
/
import-meta-resolve.ts
29 lines (25 loc) · 884 Bytes
/
import-meta-resolve.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import { resolve as polyfill } from "../../vendor/import-meta-resolve";
declare const USE_ESM: boolean;
let importMetaResolve: (specifier: string, parent: string) => string;
if (USE_ESM) {
// Node.js < 20, when using the `--experimental-import-meta-resolve` flag,
// have an asynchronous implementation of import.meta.resolve.
if (
typeof import.meta.resolve === "function" &&
typeof import.meta.resolve(import.meta.url) === "string"
) {
// @ts-expect-error: TS defines import.meta as returning a promise
importMetaResolve = import.meta.resolve;
} else {
importMetaResolve = polyfill;
}
} else {
importMetaResolve = polyfill;
}
export default function resolve(
specifier: string,
parent?: string | URL,
): string {
// @ts-expect-error: TS defines import.meta.resolve as returning a promises
return importMetaResolve(specifier, parent);
}