aboutsummaryrefslogtreecommitdiff
path: root/node_modules/caniuse-lite/dist/unpacker/feature.js
diff options
context:
space:
mode:
authorJoel Kronqvist <joel.h.kronqvist@gmail.com>2022-03-05 19:02:27 +0200
committerJoel Kronqvist <joel.h.kronqvist@gmail.com>2022-03-05 19:02:27 +0200
commit5d309ff52cd399a6b71968a6b9a70c8ac0b98981 (patch)
tree360f7eb50f956e2367ef38fa1fc6ac7ac5258042 /node_modules/caniuse-lite/dist/unpacker/feature.js
parentb500a50f1b97d93c98b36ed9a980f8188d648147 (diff)
downloadLYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.tar.gz
LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.zip
Added node_modules for the updating to work properly.
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