You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

103 lines
4.9 KiB

4 years ago
  1. # caniuse-lite
  2. > A smaller version of caniuse-db, with only the essentials!
  3. ## Why?
  4. The full data behind [Can I use][1] is incredibly useful for any front end
  5. developer, and on the website all of the details from the database are displayed
  6. to the user. However in automated tools, [many of these fields go unused][2];
  7. it's not a problem for server side consumption but client side, the less
  8. JavaScript that we send to the end user the better.
  9. caniuse-lite then, is a smaller dataset that keeps essential parts of the data
  10. in a compact format. It does this in multiple ways, such as converting `null`
  11. array entries into empty strings, representing support data as an integer rather
  12. than a string, and using base62 references instead of longer human-readable
  13. keys.
  14. This packed data is then reassembled (via functions exposed by this module) into
  15. a larger format which is mostly compatible with caniuse-db, and so it can be
  16. used as an almost drop-in replacement for caniuse-db for contexts where size on
  17. disk is important; for example, usage in web browsers. The API differences are
  18. very small and are detailed in the section below.
  19. ## API
  20. ```js
  21. import * as lite from 'caniuse-lite';
  22. ```
  23. ### `lite.agents`
  24. caniuse-db provides a full `data.json` file which contains all of the features
  25. data. Instead of this large file, caniuse-lite provides this data subset
  26. instead, which has the `browser`, `prefix`, `prefix_exceptions`, `usage_global`
  27. and `versions` keys from the original.
  28. In addition, the subset contains the `release_date` key with release dates (as timestamps) for each version:
  29. ```json
  30. {
  31. "release_date": {
  32. "6": 998870400,
  33. "7": 1161129600,
  34. "8": 1237420800,
  35. "9": 1300060800,
  36. "10": 1346716800,
  37. "11": 1381968000,
  38. "5.5": 962323200
  39. }
  40. }
  41. ```
  42. ### `lite.feature(js)`
  43. The `feature` method takes a file from `data/features` and converts it into
  44. something that more closely represents the `caniuse-db` format. Note that only
  45. the `title`, `stats` and `status` keys are kept from the original data.
  46. ### `lite.features`
  47. The `features` index is provided as a way to query all of the features that
  48. are listed in the `caniuse-db` dataset. Note that you will need to use the
  49. `feature` method on values from this index to get a human-readable format.
  50. ### `lite.region(js)`
  51. The `region` method takes a file from `data/regions` and converts it into
  52. something that more closely represents the `caniuse-db` format. Note that *only*
  53. the usage data is exposed here (the `data` key in the original files).
  54. ## Contributors
  55. Thanks goes to these wonderful people ([emoji key](https://github.com/kentcdodds/all-contributors#emoji-key)):
  56. <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
  57. <!-- prettier-ignore -->
  58. | [<img src="https://avatars.githubusercontent.com/u/1282980?v=3" width="100px;"/><br /><sub><b>Ben Briggs</b></sub>](http://beneb.info)<br />[💻](https://github.com/ben-eb/caniuse-lite/commits?author=ben-eb "Code") [📖](https://github.com/ben-eb/caniuse-lite/commits?author=ben-eb "Documentation") [👀](#review-ben-eb "Reviewed Pull Requests") [⚠️](https://github.com/ben-eb/caniuse-lite/commits?author=ben-eb "Tests") | [<img src="https://avatars.githubusercontent.com/u/1737375?v=3" width="100px;"/><br /><sub><b>Andy Jansson</b></sub>](https://github.com/andyjansson)<br />[💻](https://github.com/ben-eb/caniuse-lite/commits?author=andyjansson "Code") | [<img src="https://avatars1.githubusercontent.com/u/19343?v=4" width="100px;"/><br /><sub><b>Andrey Sitnik</b></sub>](http://twitter.com/sitnikcode)<br />[💻](https://github.com/ben-eb/caniuse-lite/commits?author=ai "Code") | <img src="https://avatars2.githubusercontent.com/u/947326?v=4" width="100px;"/><br /><sub><b>Igor Deryabin</b></sub><br />[💻](https://github.com/ben-eb/caniuse-lite/commits?author=rodweb "Code") |
  59. | :---: | :---: | :---: | :---: |
  60. <!-- ALL-CONTRIBUTORS-LIST:END -->
  61. This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!
  62. <img src="https://opensource.nyc3.digitaloceanspaces.com/attribution/assets/SVG/DO_Logo_icon_blue.svg" alt="Digital Ocean logo" width="40" align="left">
  63. Big thanks to [DigitalOcean](https://www.digitalocean.com/?utm_source=opensource&utm_campaign=caniuse-lite) for supporting this project by providing their great infrastructure for us.
  64. ## License
  65. The data in this repo is available for use under a CC BY 4.0 license
  66. (http://creativecommons.org/licenses/by/4.0/). For attribution just mention
  67. somewhere that the source is caniuse.com. If you have any questions about using
  68. the data for your project please contact me here: http://a.deveria.com/contact
  69. [1]: http://caniuse.com/
  70. [2]: https://github.com/Fyrd/caniuse/issues/1827
  71. ## Security contact information
  72. To report a security vulnerability, please use the
  73. [Tidelift security contact](https://tidelift.com/security).
  74. Tidelift will coordinate the fix and disclosure.