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

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'config/esbuild.config.js')
-rw-r--r--config/esbuild.config.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/config/esbuild.config.js b/config/esbuild.config.js
new file mode 100644
index 00000000000..e876436e864
--- /dev/null
+++ b/config/esbuild.config.js
@@ -0,0 +1,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,
+};