Skip to content

Commit 8fcb525

Browse files
committed
WIP: add //tools/gen_browserslist
1 parent aca2643 commit 8fcb525

File tree

3 files changed

+59
-0
lines changed

3 files changed

+59
-0
lines changed

tools/gen_browserslist/BUILD.bazel

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
load("@aspect_rules_js//js:defs.bzl", "js_binary")
2+
load("@aspect_rules_ts//ts:defs.bzl", "ts_config")
3+
load("//tools:defaults2.bzl", "ts_project")
4+
5+
js_binary(
6+
name = "gen_browserslist",
7+
data = [":gen_browserslist_lib"],
8+
entry_point = "index.js",
9+
visibility = ["//:__subpackages__"],
10+
)
11+
12+
ts_project(
13+
name = "gen_browserslist_lib",
14+
srcs = ["index.ts"],
15+
source_map = True,
16+
tsconfig = ":tsconfig",
17+
deps = [
18+
"//:node_modules/baseline-browser-mapping",
19+
],
20+
)
21+
22+
ts_config(
23+
name = "tsconfig",
24+
src = "tsconfig.json",
25+
deps = [
26+
"//:build-tsconfig-esm",
27+
"//:node_modules/@types/node",
28+
],
29+
)

tools/gen_browserslist/index.ts

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
(async () => {
2+
const { getCompatibleVersions } = await import('baseline-browser-mapping');
3+
4+
const browsers = {
5+
chrome: 'Chrome',
6+
chrome_android: 'ChromeAndroid',
7+
edge: 'Edge',
8+
firefox: 'Firefox',
9+
firefox_android: 'FirefoxAndroid',
10+
safari: 'Safari',
11+
safari_ios: 'iOS',
12+
} as const;
13+
14+
const baselineBrowserslistConfig = getCompatibleVersions({
15+
widelyAvailableOnDate: '2025-01-01',
16+
includeDownstreamBrowsers: false,
17+
})
18+
.filter((version) => browsers[version.browser as keyof typeof browsers])
19+
.map(
20+
(version) => `${browsers[version.browser as keyof typeof browsers]} >= ${version.version}`,
21+
);
22+
23+
for (const line of baselineBrowserslistConfig) console.log(line);
24+
})();

tools/gen_browserslist/tsconfig.json

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"extends": "../../tsconfig-build-esm.json",
3+
"compilerOptions": {
4+
"types": ["node"]
5+
}
6+
}

0 commit comments

Comments
 (0)