Skip to content

Commit

Permalink
Take minimum browser versions from browserslist section in package.json
Browse files Browse the repository at this point in the history
  • Loading branch information
MikkCZ committed Jun 14, 2022
1 parent 466e70c commit f220536
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 4 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@
},
"engineStrict": true,
"browserslist": [
"Firefox >= 91",
"Firefox >= 91.0",
"Chrome >= 88"
]
}
48 changes: 45 additions & 3 deletions src/manifest.json.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ import type { IPackageJson } from 'package-json-type';
import { DEFAULT_PONTOON_BASE_URL } from './const';
import { projectsListData } from './background/data/projectsListData';

interface PackageJson extends IPackageJson {
browserslist?: string[];
}

// ts-prune-ignore-next
export enum BrowserFamily {
MOZILLA = 'mozilla',
Expand All @@ -16,7 +20,41 @@ const packageJson = JSON.parse(
fs.readFileSync(path.resolve(__dirname, '../package.json'), {
encoding: 'utf-8',
}),
) as IPackageJson;
) as PackageJson;

function getMinBrowserVersionFromPackageJson(
targetBrowser: BrowserFamily,
): string {
let browserslistQueryBrowser: string;
switch (targetBrowser) {
case BrowserFamily.MOZILLA:
browserslistQueryBrowser = 'Firefox';
break;
case BrowserFamily.CHROMIUM:
browserslistQueryBrowser = 'Chrome';
break;
default:
throw new Error(
`No known browser specified to parse browserslist configuration. Was "${targetBrowser}", must be one of: ${Object.values(
BrowserFamily,
)}.`,
);
}
if (packageJson.browserslist) {
const browserslistVersionMatch = packageJson.browserslist
.find((it) => it.startsWith(browserslistQueryBrowser))
?.match(/([\d.]+$)/g);
if (browserslistVersionMatch) {
return browserslistVersionMatch[0];
} else {
throw new Error(
`Could not find "${browserslistQueryBrowser}" and it's version in browserslist configuration "${packageJson.browserslist}".`,
);
}
} else {
throw new Error('Could not find browserslist configuration.');
}
}

const pontoonLogoSvg = 'assets/img/pontoon-logo.svg';
const pontoonLogoGrayAlphaSvg = 'assets/img/pontoon-logo-gray-alpha.svg';
Expand Down Expand Up @@ -44,14 +82,18 @@ export function getManifestFor(
browser_specific_settings: {
gecko: {
id: 'pontoon-tools@mikk.cz',
strict_min_version: '91.0',
strict_min_version: getMinBrowserVersionFromPackageJson(
BrowserFamily.MOZILLA,
),
},
},
}
: {}),
...(forChromium
? {
minimum_chrome_version: '88',
minimum_chrome_version: getMinBrowserVersionFromPackageJson(
BrowserFamily.CHROMIUM,
),
}
: {}),
manifest_version: 2,
Expand Down

0 comments on commit f220536

Please sign in to comment.