Welcome to mirror list, hosted at ThFree Co, Russian Federation.

esbuild.config.js « config - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: e876436e8640abc36bf3bb5214e34725c5577931 (plain)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
const browserslist = require('browserslist');
const esbuild = require('esbuild');

const ESBUILD_SUPPORTED_TARGETS = new Set([
  'chrome',
  'edge',
  'firefox',
  'hermes',
  'ie',
  'ios',
  'node',
  'opera',
  'rhino',
  'safari',
]);

const parseBrowserslist = (browserslistResult) => {
  return browserslistResult.map((browsers) => {
    const [family, version] = browsers.split(' ');
    let normalizedVersion = version;

    // browserslist can return a range: safari15.2-15.4
    if (version.indexOf('-') >= -1) {
      // we take the lowest version
      [normalizedVersion] = version.split('-');
    }

    return {
      family,
      version: normalizedVersion,
    };
  });
};

const mapBrowserslistToESBuildTarget = (browsersList) => {
  return parseBrowserslist(browsersList)
    .filter(({ family, version }) => {
      if (!ESBUILD_SUPPORTED_TARGETS.has(family)) {
        console.warning('Unknown ESBuild target %s, version %s', family, version);
        return false;
      }

      return true;
    })
    .map(({ family, version }) => {
      return `${family}${version}`;
    });
};

module.exports = {
  target: mapBrowserslistToESBuildTarget(browserslist()),
  supported: {
    'optional-chain': false,
    'nullish-coalescing': false,
    'class-static-field': false,
    'class-field': false,
  },
  implementation: esbuild,
};