Skip to content

Commit

Permalink
Refactoring to better support module imports on older *and* newer ver…
Browse files Browse the repository at this point in the history
…sions of node
  • Loading branch information
tonypconway committed Feb 17, 2025
1 parent 444c5a8 commit 3bf941c
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 27 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import bcdBrowsers from "@mdn/browser-compat-data" assert { type: "json" };
import otherBrowsers from "../data/downstream-browsers.json" assert { type: "json" };
import { createRequire } from "module";
const require = createRequire(import.meta.url);

const bcdBrowsers = require("@mdn/browser-compat-data");
const otherBrowsers = require("../data/downstream-browsers.json");

const bcdCoreBrowserNames: string[] = [
"chrome",
Expand All @@ -11,34 +14,62 @@ const bcdCoreBrowserNames: string[] = [
"safari_ios",
];

const coreBrowserData = Object.entries(bcdBrowsers.browsers).filter(
([browserName, browserData]) => bcdCoreBrowserNames.includes(browserName),
);
type BrowserData = {
[key: string]: {
releases: {
[key: string]: {
status: string;
release_date?: string;
};
};
};
};

interface Browser {
name: string;
releases: {
[version: string]: {
status: string;
release_date?: string;
engine?: string;
engine_version?: string;
};
};
}

interface BrowserVersion {
browser: string;
version: string;
release_date: string;
engine: string | null;
engine_version: string | null;
}

const coreBrowserData: [string, Browser][] = Object.entries(
bcdBrowsers.browsers as BrowserData,
).filter(([browserName, browserData]) =>
bcdCoreBrowserNames.includes(browserName),
) as [string, Browser][];

const bcdDownstreamBrowserNames: string[] = [
"webview_android",
"samsunginternet_android",
"opera_android",
"opera",
];

const downstreamBrowserData = [
...Object.entries(bcdBrowsers.browsers).filter(([browserName, browserData]) =>
bcdDownstreamBrowserNames.includes(browserName),
),
...Object.entries(otherBrowsers.browsers),
const downstreamBrowserData: [string, Browser][] = [
...(Object.entries(bcdBrowsers.browsers as BrowserData).filter(
([browserName, browserData]) =>
bcdDownstreamBrowserNames.includes(browserName),
) as [string, Browser][]),
...(Object.entries(otherBrowsers.browsers as BrowserData) as [
string,
Browser,
][]),
];

const acceptableStatuses: string[] = ["current", "esr", "retired", "unknown"];

interface BrowserVersion {
browser: string;
version: string;
release_date: string;
engine: string | null;
engine_version: string | null;
}

const compareVersions = (
incomingVersionString: string,
previousVersionString: string,
Expand Down Expand Up @@ -103,9 +134,7 @@ const getCoreVersionsByDate = (
return true;
})
.sort((a, b) => {
{
return compareVersions(a[0], b[0]);
}
return compareVersions(a[0], b[0]);
});
for (let i = 1; i < sortedVersions.length; i++) {
const thisVersion = sortedVersions[i];
Expand Down Expand Up @@ -161,6 +190,7 @@ const getDownstreamBrowsers = (
let downstreamArray: BrowserVersion[] = new Array();

downstreamBrowserData.forEach(([browserName, browserData]) => {
if (!browserData.releases) return;
let sortedAndFilteredVersions = Object.entries(browserData.releases)
.filter(([versionNumber, versionData]) => {
if (!versionData.engine) {
Expand All @@ -170,7 +200,8 @@ const getDownstreamBrowsers = (
return false;
}
if (
parseInt(versionData.engine_version) < parseInt(minimumChromeVersion)
versionData.engine_version &&
parseInt(versionData.engine_version) < parseInt(minimumChromeVersion!)
) {
return false;
}
Expand All @@ -187,9 +218,9 @@ const getDownstreamBrowsers = (
downstreamArray.push({
browser: browserName,
version: versionNumber,
release_date: versionData.release_date,
engine: versionData.engine,
engine_version: versionData.engine_version,
release_date: versionData.release_date ?? "unknown",
engine: versionData.engine ?? null,
engine_version: versionData.engine_version ?? null,
});
if (minOnly) {
break;
Expand Down
2 changes: 1 addition & 1 deletion packages/baseline-browser-mapping/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@
"strict": true,
"noUncheckedIndexedAccess": true
},
"include": ["./src"]
"include": ["./src", "./src/data/downstream-browsers.json"]
}

0 comments on commit 3bf941c

Please sign in to comment.