aboutsummaryrefslogtreecommitdiff
path: root/node_modules/caniuse-lite/dist/unpacker/feature.js
diff options
context:
space:
mode:
authorJoel Kronqvist <work.joelkronqvist@pm.me>2022-03-11 20:46:06 +0200
committerJoel Kronqvist <work.joelkronqvist@pm.me>2022-03-11 20:46:06 +0200
commit080c5819d87b933816d724a83f3bf4f1686770a7 (patch)
tree4a2ccc68b27edf7d4cbc586c932cc7542b655e19 /node_modules/caniuse-lite/dist/unpacker/feature.js
parent5ac7049a9d30733165cc212dee308163c2a14644 (diff)
parentd003b82235a9329f912522a2f70aa950dfce4998 (diff)
downloadLYLLRuoka-080c5819d87b933816d724a83f3bf4f1686770a7.tar.gz
LYLLRuoka-080c5819d87b933816d724a83f3bf4f1686770a7.zip
Merge branch 'master' of https://github.com/JoelHMikael/FoodJS
Updating remote changes
Diffstat (limited to 'node_modules/caniuse-lite/dist/unpacker/feature.js')
-rw-r--r--node_modules/caniuse-lite/dist/unpacker/feature.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/node_modules/caniuse-lite/dist/unpacker/feature.js b/node_modules/caniuse-lite/dist/unpacker/feature.js
new file mode 100644
index 0000000..9440b8a
--- /dev/null
+++ b/node_modules/caniuse-lite/dist/unpacker/feature.js
@@ -0,0 +1,48 @@
+'use strict'
+
+const statuses = require('../lib/statuses')
+const supported = require('../lib/supported')
+const browsers = require('./browsers').browsers
+const versions = require('./browserVersions').browserVersions
+
+const MATH2LOG = Math.log(2)
+
+function unpackSupport(cipher) {
+ // bit flags
+ let stats = Object.keys(supported).reduce((list, support) => {
+ if (cipher & supported[support]) list.push(support)
+ return list
+ }, [])
+
+ // notes
+ let notes = cipher >> 7
+ let notesArray = []
+ while (notes) {
+ let note = Math.floor(Math.log(notes) / MATH2LOG) + 1
+ notesArray.unshift(`#${note}`)
+ notes -= Math.pow(2, note - 1)
+ }
+
+ return stats.concat(notesArray).join(' ')
+}
+
+function unpackFeature(packed) {
+ let unpacked = { status: statuses[packed.B], title: packed.C }
+ unpacked.stats = Object.keys(packed.A).reduce((browserStats, key) => {
+ let browser = packed.A[key]
+ browserStats[browsers[key]] = Object.keys(browser).reduce(
+ (stats, support) => {
+ let packedVersions = browser[support].split(' ')
+ let unpacked2 = unpackSupport(support)
+ packedVersions.forEach(v => (stats[versions[v]] = unpacked2))
+ return stats
+ },
+ {}
+ )
+ return browserStats
+ }, {})
+ return unpacked
+}
+
+module.exports = unpackFeature
+module.exports.default = unpackFeature