From ce8532480c48195ff65c5e1be434664995001651 Mon Sep 17 00:00:00 2001 From: Denis Pushkarev Date: Sat, 2 Jul 2022 01:01:30 +0700 Subject: [PATCH 1/5] add compat data for Oculus Browser --- CHANGELOG.md | 1 + CONTRIBUTING.md | 1 + packages/core-js-compat/README.md | 3 ++- packages/core-js-compat/src/mapping.mjs | 18 ++++++++++++++++++ packages/core-js-compat/targets-parser.js | 1 + scripts/build-compat-data.mjs | 1 + scripts/check-compat-data-mapping.mjs | 3 +++ tests/compat-tools/targets-parser.mjs | 2 ++ tests/compat/browsers-runner.js | 1 + 9 files changed, 30 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a3df13e7186..6e9e9548f78c 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 ##### [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..83837cc2bd4c 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` | 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..88091c39e204 100644 --- a/packages/core-js-compat/src/mapping.mjs +++ b/packages/core-js-compat/src/mapping.mjs @@ -190,6 +190,24 @@ 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: [ + [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'], + ], // 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..7d3440c9955c 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', '5.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', '5.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', From bf6105fd50524891ca32c44b5a85c84a9d66e191 Mon Sep 17 00:00:00 2001 From: Denis Pushkarev Date: Sat, 2 Jul 2022 21:00:24 +0700 Subject: [PATCH 2/5] add a link --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e9e9548f78c..112e11cd7afd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +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 +- 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) From a45bef8fbce208fdf78988dd4151542a6ee2678b Mon Sep 17 00:00:00 2001 From: Denis Pushkarev Date: Sun, 3 Jul 2022 15:04:58 +0700 Subject: [PATCH 3/5] add some data from manual checks and user agents --- packages/core-js-compat/src/mapping.mjs | 7 +++++++ tests/compat-tools/targets-parser.mjs | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/core-js-compat/src/mapping.mjs b/packages/core-js-compat/src/mapping.mjs index 88091c39e204..59115fe10a6e 100644 --- a/packages/core-js-compat/src/mapping.mjs +++ b/packages/core-js-compat/src/mapping.mjs @@ -194,6 +194,8 @@ export default { // 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'], @@ -207,6 +209,11 @@ export default { [89, '15.0'], [91, '16.0'], [93, '17.0'], + [95, '18.0'], + [96, '19.0'], + // [???, '20.0'], + [100, '21.0'], + [102, '22.0'], ], // https://github.com/mdn/browser-compat-data/blob/main/browsers/safari_ios.json SafariToIOS: [ diff --git a/tests/compat-tools/targets-parser.mjs b/tests/compat-tools/targets-parser.mjs index 7d3440c9955c..cfd43ac5d7ca 100644 --- a/tests/compat-tools/targets-parser.mjs +++ b/tests/compat-tools/targets-parser.mjs @@ -30,7 +30,7 @@ deepStrictEqual(targetsParser({ esmodules: true }), new Map([ ['edge', '16'], ['firefox', '60'], ['ios', '10.3'], - ['oculus', '5.0'], + ['oculus', '4.0'], ['opera', '48'], ['opera_mobile', '45'], ['safari', '10.1'], @@ -86,7 +86,7 @@ deepStrictEqual(targetsParser({ ['ie', '8'], ['ios', '10.3'], ['node', String(process.versions.node)], - ['oculus', '5.0'], + ['oculus', '4.0'], ['opera', '48'], ['opera_mobile', '40'], ['safari', '5.1'], From 3a0b6116a325628827d7cc91a073f9fc7f4d2aed Mon Sep 17 00:00:00 2001 From: Denis Pushkarev Date: Mon, 4 Jul 2022 01:30:35 +0700 Subject: [PATCH 4/5] improve note --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 83837cc2bd4c..c18730a09ff1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -40,7 +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` | 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` | From a6be656f3572bb5b3720b1296d9b15cd6a7a1e59 Mon Sep 17 00:00:00 2001 From: Denis Pushkarev Date: Tue, 5 Jul 2022 19:53:53 +0700 Subject: [PATCH 5/5] add Oculus Browser 20.0 mapping --- packages/core-js-compat/src/mapping.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core-js-compat/src/mapping.mjs b/packages/core-js-compat/src/mapping.mjs index 59115fe10a6e..839c601c27bf 100644 --- a/packages/core-js-compat/src/mapping.mjs +++ b/packages/core-js-compat/src/mapping.mjs @@ -211,7 +211,7 @@ export default { [93, '17.0'], [95, '18.0'], [96, '19.0'], - // [???, '20.0'], + [98, '20.0'], [100, '21.0'], [102, '22.0'], ],