[6a3a178] | 1 | # caniuse-lite
|
---|
| 2 |
|
---|
| 3 | A smaller version of caniuse-db, with only the essentials!
|
---|
| 4 |
|
---|
| 5 | ## Why?
|
---|
| 6 |
|
---|
| 7 | The full data behind [Can I use][1] is incredibly useful for any front end
|
---|
| 8 | developer, and on the website all of the details from the database are displayed
|
---|
| 9 | to the user. However in automated tools, [many of these fields go unused][2];
|
---|
| 10 | it's not a problem for server side consumption but client side, the less
|
---|
| 11 | JavaScript that we send to the end user the better.
|
---|
| 12 |
|
---|
| 13 | caniuse-lite then, is a smaller dataset that keeps essential parts of the data
|
---|
| 14 | in a compact format. It does this in multiple ways, such as converting `null`
|
---|
| 15 | array entries into empty strings, representing support data as an integer rather
|
---|
| 16 | than a string, and using base62 references instead of longer human-readable
|
---|
| 17 | keys.
|
---|
| 18 |
|
---|
| 19 | This packed data is then reassembled (via functions exposed by this module) into
|
---|
| 20 | a larger format which is mostly compatible with caniuse-db, and so it can be
|
---|
| 21 | used as an almost drop-in replacement for caniuse-db for contexts where size on
|
---|
| 22 | disk is important; for example, usage in web browsers. The API differences are
|
---|
| 23 | very small and are detailed in the section below.
|
---|
| 24 |
|
---|
| 25 |
|
---|
| 26 | ## API
|
---|
| 27 |
|
---|
| 28 | ```js
|
---|
| 29 | import * as lite from 'caniuse-lite';
|
---|
| 30 | ```
|
---|
| 31 |
|
---|
| 32 |
|
---|
| 33 | ### `lite.agents`
|
---|
| 34 |
|
---|
| 35 | caniuse-db provides a full `data.json` file which contains all of the features
|
---|
| 36 | data. Instead of this large file, caniuse-lite provides this data subset
|
---|
| 37 | instead, which has the `browser`, `prefix`, `prefix_exceptions`, `usage_global`
|
---|
| 38 | and `versions` keys from the original.
|
---|
| 39 |
|
---|
| 40 | In addition, the subset contains the `release_date` key with release dates (as timestamps) for each version:
|
---|
| 41 | ```json
|
---|
| 42 | {
|
---|
| 43 | "release_date": {
|
---|
| 44 | "6": 998870400,
|
---|
| 45 | "7": 1161129600,
|
---|
| 46 | "8": 1237420800,
|
---|
| 47 | "9": 1300060800,
|
---|
| 48 | "10": 1346716800,
|
---|
| 49 | "11": 1381968000,
|
---|
| 50 | "5.5": 962323200
|
---|
| 51 | }
|
---|
| 52 | }
|
---|
| 53 | ```
|
---|
| 54 |
|
---|
| 55 |
|
---|
| 56 | ### `lite.feature(js)`
|
---|
| 57 |
|
---|
| 58 | The `feature` method takes a file from `data/features` and converts it into
|
---|
| 59 | something that more closely represents the `caniuse-db` format. Note that only
|
---|
| 60 | the `title`, `stats` and `status` keys are kept from the original data.
|
---|
| 61 |
|
---|
| 62 |
|
---|
| 63 | ### `lite.features`
|
---|
| 64 |
|
---|
| 65 | The `features` index is provided as a way to query all of the features that
|
---|
| 66 | are listed in the `caniuse-db` dataset. Note that you will need to use the
|
---|
| 67 | `feature` method on values from this index to get a human-readable format.
|
---|
| 68 |
|
---|
| 69 |
|
---|
| 70 | ### `lite.region(js)`
|
---|
| 71 |
|
---|
| 72 | The `region` method takes a file from `data/regions` and converts it into
|
---|
| 73 | something that more closely represents the `caniuse-db` format. Note that *only*
|
---|
| 74 | the usage data is exposed here (the `data` key in the original files).
|
---|
| 75 |
|
---|
| 76 |
|
---|
| 77 | ## License
|
---|
| 78 |
|
---|
| 79 | The data in this repo is available for use under a CC BY 4.0 license
|
---|
| 80 | (http://creativecommons.org/licenses/by/4.0/). For attribution just mention
|
---|
| 81 | somewhere that the source is caniuse.com. If you have any questions about using
|
---|
| 82 | the data for your project please contact me here: http://a.deveria.com/contact
|
---|
| 83 |
|
---|
| 84 | [1]: http://caniuse.com/
|
---|
| 85 | [2]: https://github.com/Fyrd/caniuse/issues/1827
|
---|
| 86 |
|
---|
| 87 |
|
---|
| 88 | ## Security contact information
|
---|
| 89 |
|
---|
| 90 | To report a security vulnerability, please use the
|
---|
| 91 | [Tidelift security contact](https://tidelift.com/security).
|
---|
| 92 | Tidelift will coordinate the fix and disclosure.
|
---|