Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add compat data for Oculus Browser #1098

Merged
merged 5 commits into from Jul 24, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
@@ -1,6 +1,7 @@
## Changelog
##### Unreleased
- Polyfill `Promise` with `unhandledrejection` event support (browser style) in Deno < [1.24](https://github.com/denoland/deno/releases/tag/v1.24.0)
- Added compat data for Oculus Browser, [#1098](https://github.com/zloirock/core-js/issues/1098)

##### [3.23.5 - 2022.07.18](https://github.com/zloirock/core-js/releases/tag/v3.23.5)
- Fixed a typo in the `structuredClone` feature detection, [#1106](https://github.com/zloirock/core-js/issues/1106)
Expand Down
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Expand Up @@ -40,6 +40,7 @@ engine | mandatory check | how to run tests | base data inherits from
`ie` | features | browser runner | |
`ios` | | browser runner | `safari` | required
`node` | non-ES features | node runner | `chrome` (only ES) | required
`oculus` | | browser runner | `android` (-> `chrome`) | required
`opera` | | browser runner | `chrome` (>12) | in case of inconsistency
`opera_mobile` | | browser runner | `opera`, `chrome` | required
`phantom` | | browser runner | `safari` |
Expand Down
3 changes: 2 additions & 1 deletion packages/core-js-compat/README.md
Expand Up @@ -73,7 +73,8 @@ console.log(targets);
firefox: '15', // Firefox version
ie: '8', // Internet Explorer version
ios: '13.0', // iOS Safari version
node: 'current', // NodeJS version, you could use 'current' for set it to currently used
node: 'current', // NodeJS version, you can use 'current' for set it to currently used
oculus: '5.0', // Oculus Browser version
opera: '12', // Opera version
opera_mobile: '7', // Opera Mobile version
phantom: '1.9', // PhantomJS headless browser version
Expand Down
25 changes: 25 additions & 0 deletions packages/core-js-compat/src/mapping.mjs
Expand Up @@ -190,6 +190,31 @@ export default {
[30, '4.4'],
[33, '4.4.3'],
],
// https://developer.oculus.com/documentation/web/browser-release-notes/
// Need to find another data source since release notes are not available for new versions.
// https://github.com/mdn/browser-compat-data/blob/main/browsers/oculus.json
AndroidToOculus: [
[57, '3.0'],
[61, '4.0'],
[66, '5.0'],
[74, '6.0'],
[77, '7.0'],
[79, '8.0'],
[81, '9.0'],
[83, '10.0'],
[84, '11.0'],
[86, '12.0'],
[87, '13.0'],
[88, '14.0'],
[89, '15.0'],
[91, '16.0'],
[93, '17.0'],
[95, '18.0'],
[96, '19.0'],
[98, '20.0'],
[100, '21.0'],
[102, '22.0'],
],
// https://github.com/mdn/browser-compat-data/blob/main/browsers/safari_ios.json
SafariToIOS: [
['3.0', '1.0'],
Expand Down
1 change: 1 addition & 0 deletions packages/core-js-compat/targets-parser.js
Expand Up @@ -21,6 +21,7 @@ const validTargets = new Set([
'ie',
'ios',
'node',
'oculus',
'opera',
'opera_mobile',
'phantom',
Expand Down
1 change: 1 addition & 0 deletions scripts/build-compat-data.mjs
Expand Up @@ -52,6 +52,7 @@ for (const scope of [data, external]) {
map('ChromeToOperaMobile');
}
map('ChromeToSamsung');
map('AndroidToOculus');
map('SafariToIOS');
map('SafariToPhantom');

Expand Down
3 changes: 3 additions & 0 deletions scripts/check-compat-data-mapping.mjs
Expand Up @@ -40,6 +40,7 @@ const [
[{ v8 }],
electron,
deno,
oculus,
opera,
operaMobile,
ios,
Expand All @@ -48,6 +49,7 @@ const [
getJSON('https://nodejs.org/dist/index.json'),
getJSON('https://raw.githubusercontent.com/Kilian/electron-to-chromium/master/chromium-versions.js', 17, -1),
latestMDN('deno'),
latestMDN('oculus'),
latestMDN('opera'),
latestMDN('opera_android'),
latestMDN('safari_ios'),
Expand All @@ -57,6 +59,7 @@ const [
assert(modernV8ToChrome(v8) <= latest(mapping.ChromeToNode)[0], 'NodeJS');
assert(latest(Object.entries(electron))[0] <= latest(mapping.ChromeToElectron)[0], 'Electron');
assert(modernV8ToChrome(deno.engine) <= latest(mapping.ChromeToDeno)[0], 'Deno');
assert(oculus.engine <= latest(mapping.AndroidToOculus)[0], 'Oculus');
assert(opera.engine - opera.version === 14, 'Opera');
assert(operaMobile.engine <= latest(mapping.ChromeToOperaMobile)[0], 'Opera Mobile');
assert(cmp(coerce(ios.version), '<=', coerce(latest(mapping.SafariToIOS)[1])), 'iOS Safari');
Expand Down
2 changes: 2 additions & 0 deletions tests/compat-tools/targets-parser.mjs
Expand Up @@ -30,6 +30,7 @@ deepStrictEqual(targetsParser({ esmodules: true }), new Map([
['edge', '16'],
['firefox', '60'],
['ios', '10.3'],
['oculus', '4.0'],
['opera', '48'],
['opera_mobile', '45'],
['safari', '10.1'],
Expand Down Expand Up @@ -85,6 +86,7 @@ deepStrictEqual(targetsParser({
['ie', '8'],
['ios', '10.3'],
['node', String(process.versions.node)],
['oculus', '4.0'],
['opera', '48'],
['opera_mobile', '40'],
['safari', '5.1'],
Expand Down
1 change: 1 addition & 0 deletions tests/compat/browsers-runner.js
Expand Up @@ -13,6 +13,7 @@ var engines = [
'ie',
'ios',
'node',
'oculus',
'opera',
'opera_mobile',
'phantom',
Expand Down