caniuse-lite
A smaller version of caniuse-db, with only the essentials!
Why?
The full data behind Can I use is incredibly useful for any front end developer, and on the website all of the details from the database are displayed to the user. However in automated tools, many of these fields go unused; it’s not a problem for server side consumption but client side, the less JavaScript that we send to the end user the better.
caniuse-lite then, is a smaller dataset that keeps essential parts of
the data in a compact format. It does this in multiple ways, such as
converting null
array entries into empty strings,
representing support data as an integer rather than a string, and using
base62 references instead of longer human-readable keys.
This packed data is then reassembled (via functions exposed by this module) into a larger format which is mostly compatible with caniuse-db, and so it can be used as an almost drop-in replacement for caniuse-db for contexts where size on disk is important; for example, usage in web browsers. The API differences are very small and are detailed in the section below.
API
import * as lite from 'caniuse-lite';
lite.agents
caniuse-db provides a full data.json
file which contains
all of the features data. Instead of this large file, caniuse-lite
provides this data subset instead, which has the browser
,
prefix
, prefix_exceptions
,
usage_global
and versions
keys from the
original.
In addition, the subset contains the release_date
key
with release dates (as timestamps) for each version:
{
"release_date": {
"6": 998870400,
"7": 1161129600,
"8": 1237420800,
"9": 1300060800,
"10": 1346716800,
"11": 1381968000,
"5.5": 962323200
}
}
lite.feature(js)
The feature
method takes a file from
data/features
and converts it into something that more
closely represents the caniuse-db
format. Note that only
the title
, stats
and status
keys
are kept from the original data.
lite.features
The features
index is provided as a way to query all of
the features that are listed in the caniuse-db
dataset.
Note that you will need to use the feature
method on values
from this index to get a human-readable format.
lite.region(js)
The region
method takes a file from
data/regions
and converts it into something that more
closely represents the caniuse-db
format. Note that
only the usage data is exposed here (the data
key
in the original files).
Contributors
Thanks goes to these wonderful people (emoji key):
Ben Briggs 💻 📖 👀 ⚠️ |
Andy Jansson 💻 |
Andrey Sitnik 💻 |
Igor Deryabin 💻 |
---|
This project follows the all-contributors specification. Contributions of any kind welcome!
Big thanks to DigitalOcean for supporting this project by providing their great infrastructure for us.
License
The data in this repo is available for use under a CC BY 4.0 license (http://creativecommons.org/licenses/by/4.0/). For attribution just mention somewhere that the source is caniuse.com. If you have any questions about using the data for your project please contact me here: http://a.deveria.com/contact
Security contact information
To report a security vulnerability, please use the Tidelift security contact. Tidelift will coordinate the fix and disclosure.