type browserType = typeof import("./resolve-targets-browser");
|
type nodeType = typeof import("./resolve-targets");
|
|
// Kind of gross, but essentially asserting that the exports of this module are the same as the
|
// exports of index-browser, since this file may be replaced at bundle time with index-browser.
|
({} as any as browserType as nodeType);
|
|
import type { ValidatedOptions } from "./validation/options";
|
import path from "path";
|
import getTargets from "@babel/helper-compilation-targets";
|
|
import type { Targets } from "@babel/helper-compilation-targets";
|
|
export function resolveBrowserslistConfigFile(
|
browserslistConfigFile: string,
|
configFileDir: string,
|
): string | undefined {
|
return path.resolve(configFileDir, browserslistConfigFile);
|
}
|
|
export function resolveTargets(
|
options: ValidatedOptions,
|
root: string,
|
): Targets {
|
// todo(flow->ts) remove any and refactor to not assign different types into same variable
|
let targets: any = options.targets;
|
if (typeof targets === "string" || Array.isArray(targets)) {
|
targets = { browsers: targets };
|
}
|
if (targets && targets.esmodules) {
|
targets = { ...targets, esmodules: "intersect" };
|
}
|
|
const { browserslistConfigFile } = options;
|
let configFile;
|
let ignoreBrowserslistConfig = false;
|
if (typeof browserslistConfigFile === "string") {
|
configFile = browserslistConfigFile;
|
} else {
|
ignoreBrowserslistConfig = browserslistConfigFile === false;
|
}
|
|
return getTargets(targets, {
|
ignoreBrowserslistConfig,
|
configFile,
|
configPath: root,
|
browserslistEnv: options.browserslistEnv,
|
});
|
}
|