diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a3df13e7186..112e11cd7afd 100644 --- a/CHANGELOG.md +++ b/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) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 53108d5b71c7..c18730a09ff1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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` | diff --git a/packages/core-js-compat/README.md b/packages/core-js-compat/README.md index 6e46e1bcfa42..33e63042078c 100644 --- a/packages/core-js-compat/README.md +++ b/packages/core-js-compat/README.md @@ -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 diff --git a/packages/core-js-compat/src/mapping.mjs b/packages/core-js-compat/src/mapping.mjs index 64961f573b12..839c601c27bf 100644 --- a/packages/core-js-compat/src/mapping.mjs +++ b/packages/core-js-compat/src/mapping.mjs @@ -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'], diff --git a/packages/core-js-compat/targets-parser.js b/packages/core-js-compat/targets-parser.js index 7b2369b5d975..7244b39bfd4d 100644 --- a/packages/core-js-compat/targets-parser.js +++ b/packages/core-js-compat/targets-parser.js @@ -21,6 +21,7 @@ const validTargets = new Set([ 'ie', 'ios', 'node', + 'oculus', 'opera', 'opera_mobile', 'phantom', diff --git a/scripts/build-compat-data.mjs b/scripts/build-compat-data.mjs index aef8f0303554..c052e00731e7 100644 --- a/scripts/build-compat-data.mjs +++ b/scripts/build-compat-data.mjs @@ -52,6 +52,7 @@ for (const scope of [data, external]) { map('ChromeToOperaMobile'); } map('ChromeToSamsung'); + map('AndroidToOculus'); map('SafariToIOS'); map('SafariToPhantom'); diff --git a/scripts/check-compat-data-mapping.mjs b/scripts/check-compat-data-mapping.mjs index a5e6ab2e54f5..b593dea7843b 100644 --- a/scripts/check-compat-data-mapping.mjs +++ b/scripts/check-compat-data-mapping.mjs @@ -40,6 +40,7 @@ const [ [{ v8 }], electron, deno, + oculus, opera, operaMobile, ios, @@ -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'), @@ -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'); diff --git a/tests/compat-tools/targets-parser.mjs b/tests/compat-tools/targets-parser.mjs index 837b5adedf00..cfd43ac5d7ca 100644 --- a/tests/compat-tools/targets-parser.mjs +++ b/tests/compat-tools/targets-parser.mjs @@ -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'], @@ -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'], diff --git a/tests/compat/browsers-runner.js b/tests/compat/browsers-runner.js index 044f676e55d8..8c04e638554b 100644 --- a/tests/compat/browsers-runner.js +++ b/tests/compat/browsers-runner.js @@ -13,6 +13,7 @@ var engines = [ 'ie', 'ios', 'node', + 'oculus', 'opera', 'opera_mobile', 'phantom',