Skip to content

Commit

Permalink
split date calc from number of implementations for baseline
Browse files Browse the repository at this point in the history
  • Loading branch information
romainmenke committed Mar 7, 2024
1 parent 9f7f8b1 commit d69e38e
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 15 deletions.
45 changes: 34 additions & 11 deletions utils/baseline-data.mjs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { releaseDateForBrowserVersion } from "./release-date-for-browser-version.mjs";

const engines = {
const baselineEngines = {
blink: [
'and_chr',
'chrome',
Expand All @@ -16,18 +16,30 @@ const engines = {
]
};

const mobile_browsers = [
'and_chr',
'and_ff',
'ios_saf'
];
const engines = {
blink: [
'and_chr',
'chrome',
'edge',
],
gecko: [
'firefox',
'and_ff',
],
trident: [
'ie',
],
webkit: [
'safari',
'ios_saf'
]
};

export function baselineData(feature) {
let supportedEngines = 0;
let latestReleaseDate;


for (const engine in engines) {
for (const engine in baselineEngines) {
let engineIsSupported = false;
for (const browser of engines[engine]) {
const releaseDate = releaseDateForBrowserVersion(browser, feature.browser_support[browser]);
Expand All @@ -36,16 +48,27 @@ export function baselineData(feature) {
}

engineIsSupported = true;
if (!latestReleaseDate || releaseDate > latestReleaseDate) {
latestReleaseDate = releaseDate;
}
break;
}

if (engineIsSupported) {
supportedEngines++;
}
}

for (const engine in engines) {
for (const browser of engines[engine]) {
const releaseDate = releaseDateForBrowserVersion(browser, feature.browser_support[browser]);
if (!releaseDate) {
continue;
}

if (!latestReleaseDate || releaseDate > latestReleaseDate) {
latestReleaseDate = releaseDate;
}
}
}

if (supportedEngines < 3) {
latestReleaseDate = undefined;
}
Expand Down
10 changes: 6 additions & 4 deletions utils/release-date-for-browser-version.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@ export function releaseDateForBrowserVersion(browser, version) {
return;
}

// const firstVersion = Object.keys(bcd.browsers[browser].releases)[0];
// if (version === firstVersion) {
// return 0;
// }
const firstVersion = Object.keys(bcd.browsers[browser].releases)[0];
if (version === firstVersion) {
// If the first version of a browser implements a feature, then the date isn't a significant marker.
// A new browser can be created with support for all features in 2030, that doesn't indicate that those features are new in 2030.
return -1;
}

return (new Date(dateStr)).getTime() / 1000;
}

0 comments on commit d69e38e

Please sign in to comment.