1a41f7320f24ae177afb7db6989dfc7fac029379e7021c4828301e01f742241db7ee9bdc49a7ecfa46cf291e2b229a7fe087f4fc07cd1feabc8690131a265c 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. type browserType = typeof import("./resolve-targets-browser");
  2. type nodeType = typeof import("./resolve-targets");
  3. // Kind of gross, but essentially asserting that the exports of this module are the same as the
  4. // exports of index-browser, since this file may be replaced at bundle time with index-browser.
  5. ({}) as any as browserType as nodeType;
  6. import type { ValidatedOptions } from "./validation/options.ts";
  7. import path from "node:path";
  8. import getTargets, {
  9. type InputTargets,
  10. } from "@babel/helper-compilation-targets";
  11. import type { Targets } from "@babel/helper-compilation-targets";
  12. export function resolveBrowserslistConfigFile(
  13. browserslistConfigFile: string,
  14. configFileDir: string,
  15. ): string | undefined {
  16. return path.resolve(configFileDir, browserslistConfigFile);
  17. }
  18. export function resolveTargets(
  19. options: ValidatedOptions,
  20. root: string,
  21. ): Targets {
  22. const optTargets = options.targets;
  23. let targets: InputTargets;
  24. if (typeof optTargets === "string" || Array.isArray(optTargets)) {
  25. targets = { browsers: optTargets };
  26. } else if (optTargets) {
  27. if ("esmodules" in optTargets) {
  28. targets = { ...optTargets, esmodules: "intersect" };
  29. } else {
  30. // https://github.com/microsoft/TypeScript/issues/17002
  31. targets = optTargets as InputTargets;
  32. }
  33. }
  34. const { browserslistConfigFile } = options;
  35. let configFile;
  36. let ignoreBrowserslistConfig = false;
  37. if (typeof browserslistConfigFile === "string") {
  38. configFile = browserslistConfigFile;
  39. } else {
  40. ignoreBrowserslistConfig = browserslistConfigFile === false;
  41. }
  42. return getTargets(targets, {
  43. ignoreBrowserslistConfig,
  44. configFile,
  45. configPath: root,
  46. browserslistEnv: options.browserslistEnv,
  47. });
  48. }