├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ └── submit-extension.yml └── workflows │ ├── PULL_REQUEST_TEMPLATE.md │ ├── handle-submission.yml │ └── update-readme.yml ├── .gitignore ├── README.md ├── contributing.md ├── data.json ├── generate-readme.js ├── package.json ├── submission.js ├── update.js └── yarn.lock /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: [stefanbuck] 2 | custom: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=WSXA9GCDRMX7W 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/submit-extension.yml: -------------------------------------------------------------------------------- 1 | name: Submit new extension 2 | description: Submit new extension by raising an issue 3 | labels: [submit] 4 | 5 | title: "Submit new extension" 6 | 7 | body: 8 | - type: input 9 | id: name 10 | attributes: 11 | label: Name of the browser extension 12 | validations: 13 | required: true 14 | 15 | - type: input 16 | id: description 17 | attributes: 18 | label: A short description 19 | validations: 20 | required: true 21 | 22 | - type: input 23 | id: source 24 | attributes: 25 | label: Source code repository 26 | 27 | - type: checkboxes 28 | attributes: 29 | label: Please select one or more categories 30 | options: 31 | - label: Code 32 | - label: Codereview 33 | - label: Comments 34 | - label: IDE 35 | - label: Miscellaneous 36 | - label: Navigation 37 | - label: Newsfeed 38 | - label: Notifications 39 | - label: Profile 40 | - label: Pull Request 41 | - label: Repository 42 | - label: Search 43 | - label: Theme 44 | 45 | - type: input 46 | id: chrome 47 | attributes: 48 | label: Chrome web store url 49 | 50 | - type: input 51 | id: firefox 52 | attributes: 53 | label: Firefox Addons url 54 | 55 | - type: input 56 | id: edge 57 | attributes: 58 | label: Microsoft Edge Add-ons url 59 | 60 | - type: input 61 | id: opera 62 | attributes: 63 | label: Opera Addons url 64 | 65 | - type: input 66 | id: safari 67 | attributes: 68 | label: Mac App Store url 69 | -------------------------------------------------------------------------------- /.github/workflows/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /.github/workflows/handle-submission.yml: -------------------------------------------------------------------------------- 1 | on: 2 | issues: 3 | types: [labeled] 4 | jobs: 5 | setup: 6 | if: ${{ github.event.label.name == 'merge' }} 7 | 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v3 11 | - uses: actions/setup-node@v3 12 | 13 | - uses: stefanbuck/github-issue-parser@v3 14 | id: issue-parser 15 | with: 16 | template-path: .github/ISSUE_TEMPLATE/submit-extension.yml 17 | 18 | - run: echo '${{ steps.issue-parser.outputs.jsonString }}' > submission.json 19 | - run: node submission.js 20 | 21 | - run: yarn 22 | 23 | - run: node ./update.js 24 | env: 25 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 26 | 27 | - run: node ./generate-readme.js 28 | 29 | - run: | 30 | git config user.email "github@stefanbuck.com" 31 | git config user.name "Stefan Buck" 32 | git add README.md data.json 33 | git diff-index --quiet HEAD || git commit -m "Add new list item" 34 | 35 | - run: git push 36 | 37 | - uses: peter-evans/close-issue@v1 38 | with: 39 | comment: Merged! Check out the README. 40 | -------------------------------------------------------------------------------- /.github/workflows/update-readme.yml: -------------------------------------------------------------------------------- 1 | name: update-readme 2 | on: 3 | schedule: 4 | - cron: '0 20 * * *' 5 | push: 6 | branches: 7 | - 'main' 8 | jobs: 9 | update: 10 | runs-on: ubuntu-latest 11 | timeout-minutes: 5 12 | steps: 13 | - uses: actions/checkout@v2 14 | - uses: actions/setup-node@v1 15 | with: 16 | node-version: 12 17 | 18 | - run: yarn 19 | 20 | - run: node ./update.js 21 | env: 22 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 23 | 24 | - run: node ./generate-readme.js 25 | 26 | - run: | 27 | git config user.email "github@stefanbuck.com" 28 | git config user.name "Stefan Buck" 29 | git add README.md data.json 30 | git diff-index --quiet HEAD || git commit -m "Update awesome list" 31 | 32 | - run: git push -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome browser extensions for GitHub [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) 2 | 3 | All numbers are updated daily and include the overall usage of an extension across all browsers, the last publish date and stars of the GitHub repository! 4 | 5 | ## Codeless contribution 6 | 7 | Submitting a new extension is easy as opening an Issue. In fact, this is all you have to do. [Create a new issue](https://github.com/stefanbuck/awesome-browser-extensions-for-github/issues/new?assignees=&labels=submit&template=submit-extension.yml&title=Submit+new+extension), that's it! I'll take it from there. If you need to update an existing listing, please follow the formal pull request process. 8 | 9 | Want to know more about this process? Check out the [Codeless Contributions with GitHub Issue Forms](https://stefanbuck.com/blog/codeless-contributions-with-github-issue-forms) post on my blog. 10 | 11 |
12 |
13 |
14 |
15 |
16 | Visit the web version with additional filter options. 17 |
18 |
19 | 20 | # List of browser extensions for GitHub 21 | 22 | 23 | 24 | ### [Advanced GitHub Notifier](https://github.com/freaktechnik/advanced-github-notifier) 25 | 26 | Shows notifications when you get a new notification on GitHub and provides quick access to all notifications in a popup. 27 | 28 | Installs: 113 | Stars: 79 | Last update: 2 Jun 2023 29 | 30 | ### [Autoviewed](https://github.com/Luismahou/autoviewed) 31 | 32 | Removes clutter from your pull request by automatically marking as viewed files that aren't worth reviewing. 33 | 34 | Installs: 39 | Stars: 8 | Last update: n/a 35 | 36 | ### [CodeWing](https://github.com/codewing-dev/codewing) 37 | 38 | Next level code navigation for GitHub. 39 | 40 | Installs: 599 | Stars: 65 | Last update: n/a 41 | 42 | ### [Codeflower](https://github.com/code-flower/chrome) 43 | 44 | Visualize GitHub repos as d3 force-directed graphs. The extension gives you a quick overview of the size and composition of any repo. 45 | 46 | Installs: 18 | Stars: 15 | Last update: 25 Apr 2022 47 | 48 | ### [CoderStats link for GitHub](https://github.com/coderstats/cxt_coderstats) 49 | 50 | The CoderStats link for GitHub Chrome extension displays a link to the CoderStats page for the currently displayed user or organization profile page on GitHub. 51 | 52 | Installs: 13 | Stars: 20 | Last update: 2 May 2023 53 | 54 | ### [Contributors on GitHub](https://github.com/hzoo/contributors-on-github) 55 | 56 | Show the # of PRs and other contributors stats in the Issues/PRs tab. Can be helpful for maintainers that want to know if it's a contributor's first PR. 57 | 58 | Installs: 6 | Stars: 467 | Last update: 1 Mar 2021 59 | 60 | ### [Enhanced GitHub](https://github.com/softvar/enhanced-github) 61 | 62 | Displays size of each file, download link and an option of copying file contents directly to clipboard 63 | 64 | Installs: 626 | Stars: 2071 | Last update: 3 Jun 2024 65 | 66 | ### [GIFs for GitHub](https://github.com/N1ck/gifs-for-github) 67 | 68 | Easily search GIPHY to add a GIF into any GitHub comment box. 69 | 70 | Installs: 519 | Stars: 184 | Last update: 18 Jan 2024 71 | 72 | ### [Gifhub Pull Request](https://github.com/bguzmanrio/gifhub-pull-request) 73 | 74 | Find the best GIFs for your awesome pull requests. 75 | 76 | Installs: 136 | Stars: 22 | Last update: n/a 77 | 78 | ### [Git History](https://github.com/pomber/git-history) 79 | 80 | Quickly browse the history of a file from any git repository. 81 | 82 | Installs: 192 | Stars: 13534 | Last update: 13 Oct 2023 83 | 84 | ### [GitHub CSV Diff](https://github.com/banyan/github-csv-diff) 85 | 86 | GitHub provides a page that only shows diffs with a .diff at the end of the URL of the pull request. This browser extension makes it easier to view csv diffs by using daff on that page. 87 | 88 | Installs: 34 | Stars: 4 | Last update: n/a 89 | 90 | ### [GitHub Code Folding](https://github.com/noam3127/github-code-folding) 91 | 92 | Code folding - the ability to selectively hide and display sections of a code - is an invaluable feature in many text editors and IDEs. Now, developers can utilize that same style code-folding while poring over source code on the web in GitHub. Works for any type of indentation- spaces or tabs. 93 | 94 | Installs: 104 | Stars: 289 | Last update: 25 Apr 2024 95 | 96 | ### [GitHub Custom Tab Size](https://github.com/lukechilds/github-custom-tab-size) 97 | 98 | Set custom tab size for code view on GitHub.com 99 | 100 | Installs: 558 | Stars: 69 | Last update: n/a 101 | 102 | ### [GitHub Diff Navigator](https://github.com/daattali/github-diff-navigator-extension) 103 | 104 | Easily navigate through the changes in a file that has been edited on GitHub. 105 | 106 | Installs: 3 | Stars: 19 | Last update: 24 Jun 2020 107 | 108 | ### [GitHub File Icon](https://github.com/homerchen19/github-file-icons) 109 | 110 | A browser extension which gives different filetypes different icons on GitHub. 111 | 112 | Installs: 20000 | Stars: 1422 | Last update: n/a 113 | 114 | ### [GitHub Highlight Selected](https://github.com/Nuclides/github-highlight-selected) 115 | 116 | Highlight selected word in GitHub source view like Sublime Text. 117 | 118 | Installs: 1000 | Stars: 144 | Last update: n/a 119 | 120 | ### [GitHub Hovercard](https://github.com/Justineo/github-hovercard) 121 | 122 | Neat hovercards for GitHub. 123 | 124 | Installs: 18634 | Stars: 1822 | Last update: n/a 125 | 126 | ### [GitHub Issue Link Status](https://github.com/fregante/github-issue-link-status) 127 | 128 | Colorize issue and PR links to see their status (open, closed, merged). 129 | 130 | Installs: 92 | Stars: 299 | Last update: 30 Jun 2024 131 | 132 | ### [GitHub Npm Stats](https://github.com/katranci/github-npm-stats) 133 | 134 | Displays npm package stats on GitHub 135 | 136 | Installs: 606 | Stars: 57 | Last update: n/a 137 | 138 | ### [GitHub Recommender](https://github.com/IndexStorm/git-rec-ext/) 139 | 140 | Lists repositories that are similar to the one being viewed 141 | 142 | Installs: 29 | Stars: 49 | Last update: 10 Aug 2022 143 | 144 | ### [GitHub Red Issues](https://github.com/KatsuteDev/GitHub-Red-Issues) 145 | 146 | Revert closed GitHub issues from purple back to red 147 | 148 | Installs: 1 | Stars: 39 | Last update: 8 Aug 2024 149 | 150 | ### [GitHub Repo Size](https://github.com/harshjv/github-repo-size) 151 | 152 | Automatically adds repository size to GitHub's repository summary. 153 | 154 | Installs: 20000 | Stars: 1211 | Last update: n/a 155 | 156 | ### [GitHub Story Points](https://github.com/banyan/github-story-points) 157 | 158 | Chrome extension to see story points in GitHub projects. 159 | 160 | Installs: 15 | Stars: 60 | Last update: 16 Aug 2020 161 | 162 | ### [GitHub User Languages](https://github.com/freyamade/github-user-languages) 163 | 164 | Generates a pie chart on user profile pages displaying a breakdown of what languages they have used in their repositories. 165 | 166 | Installs: 41 | Stars: 47 | Last update: 25 Sep 2023 167 | 168 | ### [GitHub Writer](https://github.com/ckeditor/github-writer) 169 | 170 | This extension adds the simplicity of WYSIWYG editing to issues, comments, pull requests, wikis and discussions in GitHub. It accepts Markdown input and offers productive writing, starting with tables. 171 | 172 | Installs: 114 | Stars: 379 | Last update: 10 Apr 2024 173 | 174 | ### [GitHub to Linear](https://github.com/delucis/github-to-linear) 175 | 176 | View and create Linear tickets from any GitHub PR or issue. 177 | 178 | Installs: 9 | Stars: 24 | Last update: 2 Jun 2024 179 | 180 | ### [GitHub vscode-icons](https://github.com/dderevjanik/github-vscode-icons) 181 | 182 | Show [vscode-icons](https://github.com/vscode-icons/vscode-icons) in the repository browser. 183 | 184 | Installs: 2000 | Stars: 309 | Last update: n/a 185 | 186 | ### [GitZip for github](https://github.com/GitZip/chrome-extension) 187 | 188 | It can make the sub-directories and files of github repository as zip and download it 189 | 190 | Installs: 3358 | Stars: 38 | Last update: 21 Aug 2023 191 | 192 | ### [Github Saved Filters](https://www.producthunt.com/posts/github-saved-filters) 193 | 194 | Create, save, edit, pin, search and delete filters that you commonly use on the Github Issues and Pull Requests pages. You are able to scope filters to be shown globally (on each repo) or only have them show up on the repo you create them on. Pinning filters is also a feature that this extension allows you to do. So if you have several filters you use daily - you have a way to quickly access them, at the top of your list. 195 | 196 | Installs: 553 | Stars: n/a | Last update: n/a 197 | 198 | ### [GithubOriginalStreak](https://github.com/Naramsim/GithubOriginalStreak) 199 | 200 | Extension to get back current and longest streak. 201 | 202 | Installs: 23 | Stars: 231 | Last update: 30 Jun 2021 203 | 204 | ### [Hacker Tab](https://github.com/huchenme/hacker-tab-extension) 205 | 206 | Replace browser new tab screen with GitHub trending projects. 207 | 208 | Installs: 2000 | Stars: 352 | Last update: n/a 209 | 210 | ### [Hide files on GitHub](https://github.com/sindresorhus/hide-files-on-github) 211 | 212 | Hide dotfiles from the GitHub file browser. 213 | 214 | Installs: 33 | Stars: 320 | Last update: n/a 215 | 216 | ### [Isometric Contributions](https://github.com/jasonlong/isometric-contributions) 217 | 218 | Allows you to toggle between the normal GitHub contribution chart and an isometric pixel art version. 219 | 220 | Installs: 10000 | Stars: 3486 | Last update: n/a 221 | 222 | ### [Le Git Graph](https://github.com/NirmalScaria/le-git-graph) 223 | 224 | Browser extension to add git graph to GitHub website. 225 | 226 | Installs: 449 | Stars: 3313 | Last update: 6 Aug 2024 227 | 228 | ### [Like On GitHub](https://github.com/Idnan/like-on-github) 229 | 230 | Chrome extension that adds a button in browser and links this button to a GitHub repository that you will configure, then on any webpage just click this extension button and it will add the given link with the title of the page in that repository. 231 | 232 | Installs: 57 | Stars: 235 | Last update: n/a 233 | 234 | ### [Lovely forks](https://github.com/musically-ut/lovely-forks) 235 | 236 | See forks with the most stars under the names of repositories. 237 | 238 | Installs: 300 | Stars: 596 | Last update: 30 Mar 2024 239 | 240 | ### [Material Icons for Github](https://github.com/Claudiohbsantos/github-material-icons-extension) 241 | 242 | Show Material icons for files/folders in repository file viewer. Display the same icons from vscode-material-icon-theme VSCode extension. 243 | 244 | Installs: 792 | Stars: 491 | Last update: 11 Aug 2024 245 | 246 | ### [Module Linker](https://github.com/fiatjaf/module-linker) 247 | 248 | An extension that creates direct links to imported modules, external or internal, on source code on GitHub. Supports multiple languages, including common ones like Rust, Go, Python and Ruby, but also odd ones like Nim, Haskell, Julia and Elm. 249 | 250 | Installs: 36 | Stars: 250 | Last update: 27 Nov 2019 251 | 252 | ### [My Git Repo News](https://github.com/greybax/github-extension-my-repo-news) 253 | 254 | Chrome extension which helps you not to miss important changes in your news thread related to your repo 255 | 256 | Installs: 17 | Stars: 16 | Last update: n/a 257 | 258 | ### [Notifications Preview for GitHub](https://github.com/tanmayrajani/notifications-preview-github) 259 | 260 | A Chrome and Firefox extension to quickly see your notifications in a popup without leaving the current page. 261 | 262 | Installs: 58 | Stars: 141 | Last update: 16 Aug 2024 263 | 264 | ### [Notifier for GitHub](https://github.com/sindresorhus/notifier-for-github) 265 | 266 | Displays your GitHub notifications unread count. Supports GitHub Enterprise and an option to only show unread count for issues you're participating in. You can click the icon to quickly see your unread notifications. 267 | 268 | Installs: 518 | Stars: 1821 | Last update: 24 Apr 2024 269 | 270 | ### [OctoLenses](https://github.com/rgehan/octolenses) 271 | 272 | Filter your pull requests/issues in different categories giving you a big boost in productivity. Also suggests new trending repositories. 273 | 274 | Installs: 1 | Stars: 142 | Last update: 16 Jan 2020 275 | 276 | ### [OctoLinker](https://github.com/OctoLinker/OctoLinker) 277 | 278 | OctoLinker is the easiest and best way to navigate between files and projects on GitHub. It supports languages such as JavaScript, Ruby, Go, PHP, JAVA and more. It works with package.json as well as with Gemfiles. 279 | 280 | Installs: 12901 | Stars: 5263 | Last update: 13 Nov 2022 281 | 282 | ### [OctoPermalinker](https://github.com/josephfrazier/octopermalinker) 283 | 284 | OctoPermalinker is a browser extension that searches GitHub comments/files for links to files on branches, and adds a link to where the branch pointed when the comment/file was made/updated. This helps you avoid following a link that was broken after being posted. For context, here's some discussion about broken GitHub links: [Don't link to line numbers in GitHub](https://news.ycombinator.com/item?id=8046710). 285 | 286 | For example, suppose you're looking at a gist that links to a file on the master branch of a repo. At the time the gist was made, the link worked, but if the file gets removed, the link is broken. OctoPermalinker uses the gist creation date to add a permalink that still works. 287 | 288 | Installs: 232 | Stars: 27 | Last update: n/a 289 | 290 | ### [Octohint](https://github.com/pd4d10/octohint) 291 | 292 | The missing IntelliSense hint for GitHub and GitLab 293 | 294 | Installs: 4000 | Stars: 961 | Last update: n/a 295 | 296 | ### [Octotree](https://github.com/ovity/octotree) 297 | 298 | Useful for developers who frequently read source in GitHub and do not want to download or checkout too many repositories. 299 | 300 | Installs: 37142 | Stars: 22752 | Last update: 9 Jun 2024 301 | 302 | ### [Old School GitHub](https://github.com/daattali/oldschool-github-extension) 303 | 304 | Revert GitHub's UI back to its classic look (before the June 23, 2020 update that has a flat, rounded and more whitespaced design). 305 | 306 | Installs: 63 | Stars: 227 | Last update: 14 Jun 2024 307 | 308 | ### [Open GitHub file links in IDE](https://github.com/lmichelin/open-github-links-in-ide) 309 | 310 | This browser extension allows you to open files in your IDE directly from GitHub, assuming the repository you are working on is cloned on your computer. When a fragment of a file is displayed, your IDE opens the file and puts the cursor at the desired line. 311 | 312 | Installs: 34 | Stars: 71 | Last update: 23 Sep 2023 313 | 314 | ### [PR Monitor](https://github.com/fwouts/prmonitor) 315 | 316 | Helps you keep track of incoming and outgoing PRs, and notifies you when you receive a pull request on GitHub. 317 | 318 | Installs: 33 | Stars: 117 | Last update: 21 Jun 2023 319 | 320 | ### [Potential changes for GitHub](https://github.com/dzhavat/potential-changes-for-github) 321 | 322 | Browser extension that shows which pull requests contain changes related to a file. 323 | 324 | Installs: 4 | Stars: 97 | Last update: 15 Oct 2020 325 | 326 | ### [Refined GitHub](https://github.com/refined-github/refined-github) 327 | 328 | Extension that simplifies the GitHub interface and adds useful features. 329 | 330 | Installs: 8201 | Stars: 24024 | Last update: 13 Aug 2024 331 | 332 | ### [Render Whitespace on GitHub](https://github.com/glebm/render-whitespace-on-github) 333 | 334 | Are they tabs? Are they spaces? How many? Never wonder again! Renders spaces as `·` and tabs as `→` in all the code on GitHub. 335 | 336 | Installs: 22 | Stars: 76 | Last update: 25 Apr 2024 337 | 338 | ### [Semantic Code Reviews](https://reviewpad.com) 339 | 340 | Introduces the Explore tab in the pull request interface where you can review changes ordered by importance and see the semantic context surrounding each change. 341 | 342 | Installs: 36 | Stars: n/a | Last update: n/a 343 | 344 | ### [Sourcegraph](https://github.com/sourcegraph/sourcegraph/tree/main/client/browser) 345 | 346 | The Sourcegraph browser extension gives GitHub IDE-like powers when you're viewing code, pull requests, and diffs: 347 | 348 | 1. Go to definition 349 | 2. Find references 350 | 3. Powerful code search with regexp matching, diff searches, and other filters 351 | 4. Hover tooltips 352 | 5. File tree navigation 353 | 354 | Installs: 837 | Stars: 10035 | Last update: 14 Apr 2023 355 | 356 | ### [Tab Size on GitHub](https://github.com/sindresorhus/tab-size-on-github) 357 | 358 | Make tab indented code more readable by forcing the tab size to 4 instead of 8. 359 | 360 | Installs: 2000 | Stars: 281 | Last update: n/a 361 | 362 | ### [What's New on GitHub](https://github.com/flawyte/whats-new-github) 363 | 364 | Helps you see easily which activities happened since you last visited GitHub. 365 | 366 | Installs: 7 | Stars: 34 | Last update: n/a 367 | 368 | ### [WorkerB for Pull Requests](undefined) 369 | 370 | Generate a magic link for your PR and post it on shared Slack channel, to entice reviewers to pick up your PR faster! 371 | 372 | Installs: 1000 | Stars: n/a | Last update: n/a 373 | 374 | ### [ZenHub](https://www.zenhub.com/) 375 | 376 | ZenHub is the first and only project management suite that works natively within GitHub; enhancing your workflow with features built specifically for startups, fast-moving engineering teams, and the open-source community. The product is a browser extension that injects advanced functionality including real-time drag-and-drop Issue Task Boards, peer feedback via a +1 button, and support for uploading any file type directly into the GitHub interface. ZenHub makes it easy to centralize all processes into GitHub, keeping your team lean and agile. 377 | 378 | Installs: 70000 | Stars: n/a | Last update: n/a 379 | 380 | ### [eesel: The new tab for GitHub](https://www.eesel.app/) 381 | 382 | All your issues, PRs, repos and other work documents right in your new tab 383 | 384 | Installs: 113 | Stars: n/a | Last update: n/a 385 | 386 | ### [gitako - github file tree](https://github.com/enixcoda/gitako) 387 | 388 | file tree for github, and more than that. 389 | 390 | Installs: 299 | Stars: n/a | Last update: 7 Jul 2024 391 | 392 | ### [github.expandinizr](https://github.com/thecodejunkie/github.expandinizr) 393 | 394 | Add breakpoints at 1400px, 1600px and 1800px for full GitHub experience on large screens. Also removes the truncating of file and directory names in the repository browser. 395 | 396 | Installs: 2000 | Stars: 131 | Last update: n/a 397 | 398 | ### [gitpod - dev environments in a browser tab](https://github.com/gitpod-io/browser-extension) 399 | 400 | gitpod streamlines developer workflows by providing ready-to-code development environments in your browser - powered by vs code. 401 | 402 | Installs: 2280 | Stars: 143 | Last update: 21 Jun 2024 403 | 404 | ### [npmhub](https://github.com/npmhub/npmhub) 405 | 406 | When viewing a repository on github.com that has a package.json file, this extension will introspect the dependencies in package.json and display links and description for each dependency, just below the repo's README. 407 | 408 | Installs: 72 | Stars: 758 | Last update: 26 Jul 2024 409 | 410 | ### [xhub](https://github.com/nschloe/xhub) 411 | 412 | Extends GitHub pages with math, diagrams, embedded YouTube videos etc. 413 | 414 | Installs: 426 | Stars: 91 | Last update: n/a -------------------------------------------------------------------------------- /contributing.md: -------------------------------------------------------------------------------- 1 | ## Contributing 2 | 3 | First, thanks for your contribution to the community! Submitting new extensions is easy as opening an Issue. In fact all you have to do is 4 | [create a new issue](https://github.com/stefanbuck/awesome-browser-extensions-for-github/issues/new?assignees=&labels=submit&template=submit-extension.yml&title=Submit+new+extension). That's it! I'll take it from there. 5 | 6 | If you need to update an existing listing, please follow the formal pull request process. 7 | -------------------------------------------------------------------------------- /data.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "CodeWing", 4 | "source": "https://github.com/codewing-dev/codewing", 5 | "tags": [ 6 | "code" 7 | ], 8 | "store": { 9 | "chrome": "https://chrome.google.com/webstore/detail/codewing-github-code-navi/njkkfaliiinmkcckepjdmgbmjljfdeee" 10 | }, 11 | "description": "Next level code navigation for GitHub.", 12 | "stars": 65, 13 | "installCount": 599, 14 | "lastUpdate": "n/a" 15 | }, 16 | { 17 | "name": "Git History", 18 | "source": "https://github.com/pomber/git-history", 19 | "tags": [ 20 | "code" 21 | ], 22 | "store": { 23 | "chrome": "https://chrome.google.com/webstore/detail/git-history-browser-exten/laghnmifffncfonaoffcndocllegejnf", 24 | "firefox": "https://addons.mozilla.org/firefox/addon/github-history/" 25 | }, 26 | "description": "Quickly browse the history of a file from any git repository.", 27 | "stars": 13534, 28 | "installCount": 192, 29 | "lastUpdate": "13 Oct 2023" 30 | }, 31 | { 32 | "name": "GitHub Code Folding", 33 | "source": "https://github.com/noam3127/github-code-folding", 34 | "tags": [ 35 | "code" 36 | ], 37 | "store": { 38 | "chrome": "https://chrome.google.com/webstore/detail/github-code-folding/lefcpjbffalgdcdgidjdnmabfenecjdf", 39 | "firefox": "https://addons.mozilla.org/firefox/addon/github-code-folding" 40 | }, 41 | "description": "Code folding - the ability to selectively hide and display sections of a code - is an invaluable feature in many text editors and IDEs. Now, developers can utilize that same style code-folding while poring over source code on the web in GitHub. Works for any type of indentation- spaces or tabs.", 42 | "stars": 289, 43 | "installCount": 104, 44 | "lastUpdate": "25 Apr 2024" 45 | }, 46 | { 47 | "name": "GitHub Custom Tab Size", 48 | "source": "https://github.com/lukechilds/github-custom-tab-size", 49 | "tags": [ 50 | "code" 51 | ], 52 | "store": { 53 | "chrome": "https://chrome.google.com/webstore/detail/github-custom-tab-size/jcjfkmdkcaopkioccnpbhiemfcmpnghe" 54 | }, 55 | "description": "Set custom tab size for code view on GitHub.com", 56 | "stars": 69, 57 | "installCount": 558, 58 | "lastUpdate": "n/a" 59 | }, 60 | { 61 | "name": "GitHub Diff Navigator", 62 | "source": "https://github.com/daattali/github-diff-navigator-extension", 63 | "tags": [ 64 | "code" 65 | ], 66 | "store": { 67 | "chrome": "https://chrome.google.com/webstore/detail/diff-navigator-for-github/aoojogkiedabnddmokieplfnmjehlneo", 68 | "firefox": "https://addons.mozilla.org/addon/diff-navigator-for-github/" 69 | }, 70 | "description": "Easily navigate through the changes in a file that has been edited on GitHub.", 71 | "stars": 19, 72 | "installCount": 3, 73 | "lastUpdate": "24 Jun 2020" 74 | }, 75 | { 76 | "name": "Module Linker", 77 | "source": "https://github.com/fiatjaf/module-linker", 78 | "tags": [ 79 | "code" 80 | ], 81 | "store": { 82 | "firefox": "https://addons.mozilla.org/firefox/addon/module-linker/" 83 | }, 84 | "description": "An extension that creates direct links to imported modules, external or internal, on source code on GitHub. Supports multiple languages, including common ones like Rust, Go, Python and Ruby, but also odd ones like Nim, Haskell, Julia and Elm.", 85 | "stars": 250, 86 | "installCount": 36, 87 | "lastUpdate": "27 Nov 2019" 88 | }, 89 | { 90 | "name": "OctoLinker", 91 | "website": "https://octolinker.now.sh", 92 | "source": "https://github.com/OctoLinker/OctoLinker", 93 | "tags": [ 94 | "code", 95 | "navigation" 96 | ], 97 | "store": { 98 | "chrome": "https://chrome.google.com/webstore/detail/octolinker/jlmafbaeoofdegohdhinkhilhclaklkp", 99 | "firefox": "https://addons.mozilla.org/firefox/addon/octolinker/", 100 | "opera": "https://addons.opera.com/extensions/details/octolinker/", 101 | "safari": "https://apps.apple.com/app/octolinker/id1549308269", 102 | "edge": "https://microsoftedge.microsoft.com/addons/detail/lbbanfffjfmfdahnfbklminikafhcjjb" 103 | }, 104 | "description": "OctoLinker is the easiest and best way to navigate between files and projects on GitHub. It supports languages such as JavaScript, Ruby, Go, PHP, JAVA and more. It works with package.json as well as with Gemfiles.", 105 | "stars": 5263, 106 | "installCount": 12901, 107 | "lastUpdate": "13 Nov 2022" 108 | }, 109 | { 110 | "name": "Render Whitespace on GitHub", 111 | "source": "https://github.com/glebm/render-whitespace-on-github", 112 | "tags": [ 113 | "code" 114 | ], 115 | "store": { 116 | "chrome": "https://chrome.google.com/webstore/detail/ifdbipohclgnokjgpejhnbjdlgjkkhom", 117 | "firefox": "https://addons.mozilla.org/en-GB/firefox/addon/render-whitespace-on-github/" 118 | }, 119 | "description": "Are they tabs? Are they spaces? How many? Never wonder again! Renders spaces as `·` and tabs as `→` in all the code on GitHub.", 120 | "stars": 76, 121 | "installCount": 22, 122 | "lastUpdate": "25 Apr 2024" 123 | }, 124 | { 125 | "name": "Tab Size on GitHub", 126 | "source": "https://github.com/sindresorhus/tab-size-on-github", 127 | "tags": [ 128 | "code" 129 | ], 130 | "store": { 131 | "chrome": "https://chrome.google.com/webstore/detail/tab-size-on-github/ofjbgncegkdemndciafljngjbdpfmbkn" 132 | }, 133 | "description": "Make tab indented code more readable by forcing the tab size to 4 instead of 8.", 134 | "stars": 281, 135 | "installCount": 2000, 136 | "lastUpdate": "n/a" 137 | }, 138 | { 139 | "name": "GitHub Issue Link Status", 140 | "source": "https://github.com/fregante/github-issue-link-status", 141 | "tags": [ 142 | "comments" 143 | ], 144 | "store": { 145 | "chrome": "https://chrome.google.com/webstore/detail/github-issue-link-status/nbiddhncecgemgccalnoanpnenalmkic", 146 | "firefox": "https://addons.mozilla.org/firefox/addon/github-issue-link-status/" 147 | }, 148 | "description": "Colorize issue and PR links to see their status (open, closed, merged).", 149 | "stars": 299, 150 | "installCount": 92, 151 | "lastUpdate": "30 Jun 2024" 152 | }, 153 | { 154 | "name": "GitHub Writer", 155 | "source": "https://github.com/ckeditor/github-writer", 156 | "tags": [ 157 | "comments" 158 | ], 159 | "store": { 160 | "chrome": "https://chrome.google.com/webstore/detail/github-writer/diilnnhpcdjhhkjcbdljaonhmhapadap", 161 | "firefox": "https://addons.mozilla.org/firefox/addon/github-writer/" 162 | }, 163 | "description": "This extension adds the simplicity of WYSIWYG editing to issues, comments, pull requests, wikis and discussions in GitHub. It accepts Markdown input and offers productive writing, starting with tables.", 164 | "stars": 379, 165 | "installCount": 114, 166 | "lastUpdate": "10 Apr 2024" 167 | }, 168 | { 169 | "name": "Codeflower", 170 | "source": "https://github.com/code-flower/chrome", 171 | "tags": [ 172 | "miscellaneous" 173 | ], 174 | "store": { 175 | "chrome": "https://chrome.google.com/webstore/detail/codeflower/mnlengnbfpfgcfdgfpkjekoaeophmmeh", 176 | "firefox": "https://addons.mozilla.org/firefox/addon/codeflower/" 177 | }, 178 | "description": "Visualize GitHub repos as d3 force-directed graphs. The extension gives you a quick overview of the size and composition of any repo.", 179 | "stars": 15, 180 | "installCount": 18, 181 | "lastUpdate": "25 Apr 2022" 182 | }, 183 | { 184 | "name": "GitHub Story Points", 185 | "source": "https://github.com/banyan/github-story-points", 186 | "tags": [ 187 | "miscellaneous" 188 | ], 189 | "store": { 190 | "chrome": "https://chrome.google.com/webstore/detail/github-story-points/fdhfdpafombnahpjjjcfopmehfofbdko", 191 | "firefox": "https://addons.mozilla.org/firefox/addon/github-story-points/" 192 | }, 193 | "description": "Chrome extension to see story points in GitHub projects.", 194 | "stars": 60, 195 | "installCount": 15, 196 | "lastUpdate": "16 Aug 2020" 197 | }, 198 | { 199 | "name": "github.expandinizr", 200 | "source": "https://github.com/thecodejunkie/github.expandinizr", 201 | "tags": [ 202 | "miscellaneous" 203 | ], 204 | "store": { 205 | "chrome": "https://chrome.google.com/webstore/detail/githubexpandinizr/cbehdjjcilgnejbpnjhobkiiggkedfib" 206 | }, 207 | "description": "Add breakpoints at 1400px, 1600px and 1800px for full GitHub experience on large screens. Also removes the truncating of file and directory names in the repository browser.", 208 | "stars": 131, 209 | "installCount": 2000, 210 | "lastUpdate": "n/a" 211 | }, 212 | { 213 | "name": "Hacker Tab", 214 | "source": "https://github.com/huchenme/hacker-tab-extension", 215 | "tags": [ 216 | "miscellaneous" 217 | ], 218 | "store": { 219 | "chrome": "https://chrome.google.com/webstore/detail/hacker-tab/ibomigipadcieapbemkegkmadbbanbgm" 220 | }, 221 | "description": "Replace browser new tab screen with GitHub trending projects.", 222 | "stars": 352, 223 | "installCount": 2000, 224 | "lastUpdate": "n/a" 225 | }, 226 | { 227 | "name": "Like On GitHub", 228 | "source": "https://github.com/Idnan/like-on-github", 229 | "tags": [ 230 | "miscellaneous" 231 | ], 232 | "store": { 233 | "chrome": "https://chrome.google.com/webstore/detail/like-on-github/fbkngleiiccokoifohhjhlagkejlphkj" 234 | }, 235 | "description": "Chrome extension that adds a button in browser and links this button to a GitHub repository that you will configure, then on any webpage just click this extension button and it will add the given link with the title of the page in that repository.", 236 | "stars": 235, 237 | "installCount": 57, 238 | "lastUpdate": "n/a" 239 | }, 240 | { 241 | "name": "OctoLenses", 242 | "source": "https://github.com/rgehan/octolenses", 243 | "tags": [ 244 | "miscellaneous" 245 | ], 246 | "store": { 247 | "chrome": "https://chrome.google.com/webstore/detail/octolenses/ghlblfakaklgkdmfejdlffbmpcaidoci", 248 | "firefox": "https://addons.mozilla.org/firefox/addon/github-octolenses/" 249 | }, 250 | "description": "Filter your pull requests/issues in different categories giving you a big boost in productivity. Also suggests new trending repositories.", 251 | "stars": 142, 252 | "installCount": 1, 253 | "lastUpdate": "16 Jan 2020" 254 | }, 255 | { 256 | "name": "Refined GitHub", 257 | "source": "https://github.com/refined-github/refined-github", 258 | "tags": [ 259 | "miscellaneous" 260 | ], 261 | "store": { 262 | "chrome": "https://chrome.google.com/webstore/detail/refined-github/hlepfoohegkhhmjieoechaddaejaokhf", 263 | "firefox": "https://addons.mozilla.org/firefox/addon/refined-github-/", 264 | "safari": "https://apps.apple.com/app/id1519867270" 265 | }, 266 | "description": "Extension that simplifies the GitHub interface and adds useful features.", 267 | "stars": 24024, 268 | "installCount": 8201, 269 | "lastUpdate": "13 Aug 2024" 270 | }, 271 | { 272 | "name": "OctoPermalinker", 273 | "source": "https://github.com/josephfrazier/octopermalinker", 274 | "tags": [ 275 | "navigation" 276 | ], 277 | "store": { 278 | "chrome": "https://chrome.google.com/webstore/detail/octopermalinker/bcnkgcoohaaaclieohdlkphgfinkgbfm" 279 | }, 280 | "description": "OctoPermalinker is a browser extension that searches GitHub comments/files for links to files on branches, and adds a link to where the branch pointed when the comment/file was made/updated. This helps you avoid following a link that was broken after being posted. For context, here's some discussion about broken GitHub links: [Don't link to line numbers in GitHub](https://news.ycombinator.com/item?id=8046710).\n\nFor example, suppose you're looking at a gist that links to a file on the master branch of a repo. At the time the gist was made, the link worked, but if the file gets removed, the link is broken. OctoPermalinker uses the gist creation date to add a permalink that still works.", 281 | "stars": 27, 282 | "installCount": 232, 283 | "lastUpdate": "n/a" 284 | }, 285 | { 286 | "name": "Octotree", 287 | "website": "https://www.octotree.io/", 288 | "source": "https://github.com/ovity/octotree", 289 | "tags": [ 290 | "navigation" 291 | ], 292 | "store": { 293 | "chrome": "https://chrome.google.com/webstore/detail/octotree/bkhaagjahfmjljalopjnoealnfndnagc", 294 | "firefox": "https://addons.mozilla.org/firefox/addon/octotree/", 295 | "safari": "https://github.com/ovity/octotree#install-on-safari", 296 | "opera": "https://addons.opera.com/extensions/details/octotree/" 297 | }, 298 | "description": "Useful for developers who frequently read source in GitHub and do not want to download or checkout too many repositories.", 299 | "stars": 22752, 300 | "installCount": 37142, 301 | "lastUpdate": "9 Jun 2024" 302 | }, 303 | { 304 | "name": "My Git Repo News", 305 | "source": "https://github.com/greybax/github-extension-my-repo-news", 306 | "tags": [ 307 | "newsfeed" 308 | ], 309 | "store": { 310 | "chrome": "https://chrome.google.com/webstore/detail/my-git-repo-news/bpijgihicffjpcnjndpcdicohomlfbhp" 311 | }, 312 | "description": "Chrome extension which helps you not to miss important changes in your news thread related to your repo", 313 | "stars": 16, 314 | "installCount": 17, 315 | "lastUpdate": "n/a" 316 | }, 317 | { 318 | "name": "What's New on GitHub", 319 | "source": "https://github.com/flawyte/whats-new-github", 320 | "tags": [ 321 | "newsfeed" 322 | ], 323 | "store": { 324 | "chrome": "https://chrome.google.com/webstore/detail/whats-new-on-github/ldleapnlgbkpkabhbkkeangmnfpikahe", 325 | "firefox": "https://addons.mozilla.org/fr/firefox/addon/whats-new-github/" 326 | }, 327 | "description": "Helps you see easily which activities happened since you last visited GitHub.", 328 | "stars": 34, 329 | "installCount": 7, 330 | "lastUpdate": "n/a" 331 | }, 332 | { 333 | "name": "Advanced GitHub Notifier", 334 | "source": "https://github.com/freaktechnik/advanced-github-notifier", 335 | "tags": [ 336 | "notifications" 337 | ], 338 | "store": { 339 | "firefox": "https://addons.mozilla.org/firefox/addon/advanced-github-notifier/?src=external-awesome" 340 | }, 341 | "description": "Shows notifications when you get a new notification on GitHub and provides quick access to all notifications in a popup.", 342 | "stars": 79, 343 | "installCount": 113, 344 | "lastUpdate": "2 Jun 2023" 345 | }, 346 | { 347 | "name": "Notifications Preview for GitHub", 348 | "source": "https://github.com/tanmayrajani/notifications-preview-github", 349 | "tags": [ 350 | "notifications" 351 | ], 352 | "store": { 353 | "chrome": "https://chrome.google.com/webstore/detail/notifications-preview-for/kgilejfahkjidpaclkepbdoeioeohfmj", 354 | "firefox": "https://addons.mozilla.org/firefox/addon/notifications-preview-github/" 355 | }, 356 | "description": "A Chrome and Firefox extension to quickly see your notifications in a popup without leaving the current page.", 357 | "stars": 141, 358 | "installCount": 58, 359 | "lastUpdate": "16 Aug 2024" 360 | }, 361 | { 362 | "name": "Notifier for GitHub", 363 | "source": "https://github.com/sindresorhus/notifier-for-github", 364 | "tags": [ 365 | "notifications" 366 | ], 367 | "store": { 368 | "chrome": "https://chrome.google.com/webstore/detail/notifier-for-github/lmjdlojahmbbcodnpecnjnmlddbkjhnn", 369 | "firefox": "https://addons.mozilla.org/firefox/addon/notifier-for-github/", 370 | "opera": "https://github.com/sindresorhus/notifier-for-github#install" 371 | }, 372 | "description": "Displays your GitHub notifications unread count. Supports GitHub Enterprise and an option to only show unread count for issues you're participating in. You can click the icon to quickly see your unread notifications.", 373 | "stars": 1821, 374 | "installCount": 518, 375 | "lastUpdate": "24 Apr 2024" 376 | }, 377 | { 378 | "name": "CoderStats link for GitHub", 379 | "source": "https://github.com/coderstats/cxt_coderstats", 380 | "tags": [ 381 | "profile" 382 | ], 383 | "store": { 384 | "chrome": "https://chrome.google.com/webstore/detail/coderstats-link-for-githu/necogepejonacpphmlmcagmbjaogpbng", 385 | "firefox": "https://addons.mozilla.org/firefox/addon/coderstats/" 386 | }, 387 | "description": "The CoderStats link for GitHub Chrome extension displays a link to the CoderStats page for the currently displayed user or organization profile page on GitHub.", 388 | "stars": 20, 389 | "installCount": 13, 390 | "lastUpdate": "2 May 2023" 391 | }, 392 | { 393 | "name": "GitHub Hovercard", 394 | "source": "https://github.com/Justineo/github-hovercard", 395 | "tags": [ 396 | "profile" 397 | ], 398 | "store": { 399 | "chrome": "https://chrome.google.com/webstore/detail/github-hovercard/mmoahbbnojgkclgceahhakhnccimnplk", 400 | "opera": "https://addons.opera.com/extensions/details/github-hovercard/", 401 | "edge": "https://github.com/Justineo/github-hovercard/tree/master/extensions/edge" 402 | }, 403 | "description": "Neat hovercards for GitHub.", 404 | "stars": 1822, 405 | "installCount": 18634, 406 | "lastUpdate": "n/a" 407 | }, 408 | { 409 | "name": "GitHub User Languages", 410 | "source": "https://github.com/freyamade/github-user-languages", 411 | "tags": [ 412 | "profile" 413 | ], 414 | "store": { 415 | "chrome": "https://chrome.google.com/webstore/detail/github-user-languages/kikdmnikeponomghepmfipgiijlmfhfl", 416 | "firefox": "https://addons.mozilla.org/firefox/addon/github-user-languages/" 417 | }, 418 | "description": "Generates a pie chart on user profile pages displaying a breakdown of what languages they have used in their repositories.", 419 | "stars": 47, 420 | "installCount": 41, 421 | "lastUpdate": "25 Sep 2023" 422 | }, 423 | { 424 | "name": "GithubOriginalStreak", 425 | "source": "https://github.com/Naramsim/GithubOriginalStreak", 426 | "tags": [ 427 | "profile" 428 | ], 429 | "store": { 430 | "chrome": "https://chrome.google.com/webstore/detail/github-original-streak/jgfeifpakohnblfnjdpigclinhbkocja", 431 | "firefox": "https://addons.mozilla.org/firefox/addon/github-original-streak/", 432 | "opera": "https://addons.opera.com/it/extensions/details/github-original-streak/" 433 | }, 434 | "description": "Extension to get back current and longest streak.", 435 | "stars": 231, 436 | "installCount": 23, 437 | "lastUpdate": "30 Jun 2021" 438 | }, 439 | { 440 | "name": "Isometric Contributions", 441 | "source": "https://github.com/jasonlong/isometric-contributions", 442 | "tags": [ 443 | "profile" 444 | ], 445 | "store": { 446 | "chrome": "https://chrome.google.com/webstore/detail/isometric-contributions/mjoedlfflcchnleknnceiplgaeoegien" 447 | }, 448 | "description": "Allows you to toggle between the normal GitHub contribution chart and an isometric pixel art version.", 449 | "stars": 3486, 450 | "installCount": 10000, 451 | "lastUpdate": "n/a" 452 | }, 453 | { 454 | "name": "Autoviewed", 455 | "source": "https://github.com/Luismahou/autoviewed", 456 | "tags": [ 457 | "pullrequest" 458 | ], 459 | "store": { 460 | "chrome": "https://chrome.google.com/webstore/detail/autoviewed/occcjmolphcfebdeichmoflmfgeefjef" 461 | }, 462 | "description": "Removes clutter from your pull request by automatically marking as viewed files that aren't worth reviewing.", 463 | "stars": 8, 464 | "installCount": 39, 465 | "lastUpdate": "n/a" 466 | }, 467 | { 468 | "name": "Gifhub Pull Request", 469 | "source": "https://github.com/bguzmanrio/gifhub-pull-request", 470 | "tags": [ 471 | "pullrequest" 472 | ], 473 | "store": { 474 | "chrome": "https://chrome.google.com/webstore/detail/gifhub-pull-request/gfjohbpkkbbflchpioebapldlmiflfho" 475 | }, 476 | "description": "Find the best GIFs for your awesome pull requests.", 477 | "stars": 22, 478 | "installCount": 136, 479 | "lastUpdate": "n/a" 480 | }, 481 | { 482 | "name": "GitHub Highlight Selected", 483 | "source": "https://github.com/Nuclides/github-highlight-selected", 484 | "tags": [ 485 | "pullrequest" 486 | ], 487 | "store": { 488 | "chrome": "https://chrome.google.com/webstore/detail/github-highlight-selected/lhiklbgjcblimmjjflobpncgihagcmbj", 489 | "safari": "https://github.com/Nuclides/github-highlight-selected" 490 | }, 491 | "description": "Highlight selected word in GitHub source view like Sublime Text.", 492 | "stars": 144, 493 | "installCount": 1000, 494 | "lastUpdate": "n/a" 495 | }, 496 | { 497 | "name": "Potential changes for GitHub", 498 | "source": "https://github.com/dzhavat/potential-changes-for-github", 499 | "tags": [ 500 | "pullrequest" 501 | ], 502 | "store": { 503 | "chrome": "https://chrome.google.com/webstore/detail/potential-changes-for-git/neehipoljbecacjcgcceflmlikiadkob", 504 | "firefox": "https://addons.mozilla.org/firefox/addon/potential-changes-for-github/" 505 | }, 506 | "description": "Browser extension that shows which pull requests contain changes related to a file.", 507 | "stars": 97, 508 | "installCount": 4, 509 | "lastUpdate": "15 Oct 2020" 510 | }, 511 | { 512 | "name": "PR Monitor", 513 | "source": "https://github.com/fwouts/prmonitor", 514 | "tags": [ 515 | "pullrequest" 516 | ], 517 | "store": { 518 | "chrome": "https://chrome.google.com/webstore/detail/pr-monitor/pneldbfhblmldbhmkolclpkijgnjcmng", 519 | "firefox": "https://addons.mozilla.org/firefox/addon/pr-monitor/" 520 | }, 521 | "description": "Helps you keep track of incoming and outgoing PRs, and notifies you when you receive a pull request on GitHub.", 522 | "stars": 117, 523 | "installCount": 33, 524 | "lastUpdate": "21 Jun 2023" 525 | }, 526 | { 527 | "name": "Semantic Code Reviews", 528 | "website": "https://reviewpad.com", 529 | "tags": [ 530 | "pullrequest" 531 | ], 532 | "store": { 533 | "chrome": "https://chrome.google.com/webstore/detail/semantic-code-reviews/dclabbgfnbmjodobfdhindnleidefmda" 534 | }, 535 | "description": "Introduces the Explore tab in the pull request interface where you can review changes ordered by importance and see the semantic context surrounding each change.", 536 | "installCount": 36, 537 | "lastUpdate": "n/a" 538 | }, 539 | { 540 | "name": "Enhanced GitHub", 541 | "source": "https://github.com/softvar/enhanced-github", 542 | "tags": [ 543 | "repository" 544 | ], 545 | "store": { 546 | "chrome": "https://chrome.google.com/webstore/detail/github-plus/anlikcnbgdeidpacdbdljnabclhahhmd", 547 | "firefox": "https://addons.mozilla.org/firefox/addon/enhanced-github/", 548 | "edge": "https://microsoftedge.microsoft.com/addons/detail/enhanced-github/eibibhailjcnbpjmemmcaakcookdleon" 549 | }, 550 | "description": "Displays size of each file, download link and an option of copying file contents directly to clipboard", 551 | "stars": 2071, 552 | "installCount": 626, 553 | "lastUpdate": "3 Jun 2024" 554 | }, 555 | { 556 | "name": "GitHub File Icon", 557 | "source": "https://github.com/homerchen19/github-file-icons", 558 | "tags": [ 559 | "repository" 560 | ], 561 | "store": { 562 | "chrome": "https://chrome.google.com/webstore/detail/file-icons-for-github-and/ficfmibkjjnpogdcfhfokmihanoldbfe" 563 | }, 564 | "description": "A browser extension which gives different filetypes different icons on GitHub.", 565 | "stars": 1422, 566 | "installCount": 20000, 567 | "lastUpdate": "n/a" 568 | }, 569 | { 570 | "name": "GitHub Npm Stats", 571 | "source": "https://github.com/katranci/github-npm-stats", 572 | "tags": [ 573 | "repository" 574 | ], 575 | "store": { 576 | "chrome": "https://chrome.google.com/webstore/detail/github-npm-stats/oomfflokggoffaiagenekchfnpighcef" 577 | }, 578 | "description": "Displays npm package stats on GitHub", 579 | "stars": 57, 580 | "installCount": 606, 581 | "lastUpdate": "n/a" 582 | }, 583 | { 584 | "name": "GitHub Repo Size", 585 | "source": "https://github.com/harshjv/github-repo-size", 586 | "tags": [ 587 | "repository" 588 | ], 589 | "store": { 590 | "chrome": "https://chrome.google.com/webstore/detail/github-repository-size/apnjnioapinblneaedefcnopcjepgkci" 591 | }, 592 | "description": "Automatically adds repository size to GitHub's repository summary.", 593 | "stars": 1211, 594 | "installCount": 20000, 595 | "lastUpdate": "n/a" 596 | }, 597 | { 598 | "name": "GitHub vscode-icons", 599 | "source": "https://github.com/dderevjanik/github-vscode-icons", 600 | "tags": [ 601 | "repository" 602 | ], 603 | "store": { 604 | "chrome": "https://chrome.google.com/webstore/detail/github-vscode-icons/hoccpcefjcgnabbmojbfoflggkecmpgd", 605 | "firefox": "https://addons.mozilla.org/firefox/addon/github-vscode-icons/" 606 | }, 607 | "description": "Show [vscode-icons](https://github.com/vscode-icons/vscode-icons) in the repository browser.", 608 | "stars": 309, 609 | "installCount": 2000, 610 | "lastUpdate": "n/a" 611 | }, 612 | { 613 | "name": "Hide files on GitHub", 614 | "source": "https://github.com/sindresorhus/hide-files-on-github", 615 | "tags": [ 616 | "repository" 617 | ], 618 | "store": { 619 | "chrome": "https://chrome.google.com/webstore/detail/hide-files-on-github/lpnakhpaodhdkleejaehlapdhbgjbddp", 620 | "firefox": "https://addons.mozilla.org/firefox/addon/hide-files-on-github-/", 621 | "opera": "https://github.com/sindresorhus/hide-files-on-github#install" 622 | }, 623 | "description": "Hide dotfiles from the GitHub file browser.", 624 | "stars": 320, 625 | "installCount": 33, 626 | "lastUpdate": "n/a" 627 | }, 628 | { 629 | "name": "Lovely forks", 630 | "source": "https://github.com/musically-ut/lovely-forks", 631 | "tags": [ 632 | "repository" 633 | ], 634 | "store": { 635 | "chrome": "https://chrome.google.com/webstore/detail/lovely-forks/ialbpcipalajnakfondkflpkagbkdoib", 636 | "firefox": "https://addons.mozilla.org/firefox/addon/lovely-forks/", 637 | "opera": "https://github.com/musically-ut/lovely-forks/" 638 | }, 639 | "description": "See forks with the most stars under the names of repositories.", 640 | "stars": 596, 641 | "installCount": 300, 642 | "lastUpdate": "30 Mar 2024" 643 | }, 644 | { 645 | "name": "npmhub", 646 | "source": "https://github.com/npmhub/npmhub", 647 | "tags": [ 648 | "repository" 649 | ], 650 | "store": { 651 | "chrome": "https://chrome.google.com/webstore/detail/npmhub/kbbbjimdjbjclaebffknlabpogocablj", 652 | "firefox": "https://addons.mozilla.org/firefox/addon/npm-hub/", 653 | "safari": "https://apps.apple.com/app/npmhub/id1542090429" 654 | }, 655 | "description": "When viewing a repository on github.com that has a package.json file, this extension will introspect the dependencies in package.json and display links and description for each dependency, just below the repo's README.", 656 | "stars": 758, 657 | "installCount": 72, 658 | "lastUpdate": "26 Jul 2024" 659 | }, 660 | { 661 | "name": "ZenHub", 662 | "website": "https://www.zenhub.com/", 663 | "tags": [ 664 | "repository" 665 | ], 666 | "store": { 667 | "chrome": "https://chrome.google.com/webstore/detail/zenhub-for-github/ogcgkffhplmphkaahpmffcafajaocjbd", 668 | "firefox": "https://www.zenhub.com/extension" 669 | }, 670 | "description": "ZenHub is the first and only project management suite that works natively within GitHub; enhancing your workflow with features built specifically for startups, fast-moving engineering teams, and the open-source community. The product is a browser extension that injects advanced functionality including real-time drag-and-drop Issue Task Boards, peer feedback via a +1 button, and support for uploading any file type directly into the GitHub interface. ZenHub makes it easy to centralize all processes into GitHub, keeping your team lean and agile.", 671 | "installCount": 70000, 672 | "lastUpdate": "n/a" 673 | }, 674 | { 675 | "name": "Sourcegraph", 676 | "source": "https://github.com/sourcegraph/sourcegraph/tree/main/client/browser", 677 | "tags": [ 678 | "search" 679 | ], 680 | "store": { 681 | "chrome": "https://chrome.google.com/webstore/detail/sourcegraph/dgjhfomjieaadpoljlnidmbgkdffpack", 682 | "firefox": "https://addons.mozilla.org/firefox/addon/sourcegraph-for-firefox/", 683 | "safari": "https://apps.apple.com/us/app/sourcegraph-for-safari/id1543262193" 684 | }, 685 | "description": "The Sourcegraph browser extension gives GitHub IDE-like powers when you're viewing code, pull requests, and diffs:\n\n1. Go to definition\n2. Find references\n3. Powerful code search with regexp matching, diff searches, and other filters\n4. Hover tooltips\n5. File tree navigation", 686 | "stars": 10035, 687 | "installCount": 837, 688 | "lastUpdate": "14 Apr 2023" 689 | }, 690 | { 691 | "name": "GIFs for GitHub", 692 | "source": "https://github.com/N1ck/gifs-for-github", 693 | "tags": [ 694 | "pullrequest", 695 | "comments" 696 | ], 697 | "store": { 698 | "chrome": "https://chrome.google.com/webstore/detail/gifs-for-github/dkgjnpbipbdaoaadbdhpiokaemhlphep", 699 | "firefox": "https://addons.mozilla.org/firefox/addon/gifs-for-github/" 700 | }, 701 | "description": "Easily search GIPHY to add a GIF into any GitHub comment box.", 702 | "stars": 184, 703 | "installCount": 519, 704 | "lastUpdate": "18 Jan 2024" 705 | }, 706 | { 707 | "name": "Github Saved Filters", 708 | "website": "https://www.producthunt.com/posts/github-saved-filters", 709 | "tags": [ 710 | "search" 711 | ], 712 | "store": { 713 | "chrome": "https://chrome.google.com/webstore/detail/github-saved-filters/pmkbippobcmchabghaeonfbbcncjhmjm" 714 | }, 715 | "description": "Create, save, edit, pin, search and delete filters that you commonly use on the Github Issues and Pull Requests pages. You are able to scope filters to be shown globally (on each repo) or only have them show up on the repo you create them on. Pinning filters is also a feature that this extension allows you to do. So if you have several filters you use daily - you have a way to quickly access them, at the top of your list.", 716 | "installCount": 553, 717 | "lastUpdate": "n/a" 718 | }, 719 | { 720 | "name": "Open GitHub file links in IDE", 721 | "source": "https://github.com/lmichelin/open-github-links-in-ide", 722 | "tags": [ 723 | "ide", 724 | "code", 725 | "pullrequest", 726 | "codereview" 727 | ], 728 | "store": { 729 | "chrome": "https://chrome.google.com/webstore/detail/open-github-in-ide/bmifnnfmccmleigpaolofacllndmfned", 730 | "firefox": "https://addons.mozilla.org/firefox/addon/open-github-in-ide/" 731 | }, 732 | "description": "This browser extension allows you to open files in your IDE directly from GitHub, assuming the repository you are working on is cloned on your computer. When a fragment of a file is displayed, your IDE opens the file and puts the cursor at the desired line.", 733 | "installCount": 34, 734 | "lastUpdate": "23 Sep 2023", 735 | "stars": 71 736 | }, 737 | { 738 | "name": "Old School GitHub", 739 | "source": "https://github.com/daattali/oldschool-github-extension", 740 | "tags": [ 741 | "theme" 742 | ], 743 | "store": { 744 | "chrome": "https://chrome.google.com/webstore/detail/old-school-github/blkkkhifjoiedclojflfcenbjigdajeb", 745 | "firefox": "https://addons.mozilla.org/addon/old-school-github/" 746 | }, 747 | "description": "Revert GitHub's UI back to its classic look (before the June 23, 2020 update that has a flat, rounded and more whitespaced design).", 748 | "stars": 227, 749 | "installCount": 63, 750 | "lastUpdate": "14 Jun 2024" 751 | }, 752 | { 753 | "name": "GitHub CSV Diff", 754 | "source": "https://github.com/banyan/github-csv-diff", 755 | "tags": [ 756 | "pullrequest", 757 | "codereview" 758 | ], 759 | "store": { 760 | "chrome": "https://chrome.google.com/webstore/detail/github-csv-diff/dojeallnmgbmdjoboklnojkdfenfgiek" 761 | }, 762 | "description": "GitHub provides a page that only shows diffs with a .diff at the end of the URL of the pull request. This browser extension makes it easier to view csv diffs by using daff on that page.", 763 | "stars": 4, 764 | "installCount": 34, 765 | "lastUpdate": "n/a" 766 | }, 767 | { 768 | "name": "gitako - github file tree", 769 | "description": "file tree for github, and more than that.", 770 | "source": "https://github.com/enixcoda/gitako", 771 | "tags": [ 772 | "navigation", 773 | "repository", 774 | "search" 775 | ], 776 | "store": { 777 | "chrome": "https://chrome.google.com/webstore/detail/gitako-github-file-tree/giljefjcheohhamkjphiebfjnlphnokk", 778 | "firefox": "https://addons.mozilla.org/firefox/addon/gitako-github-file-tree/", 779 | "edge": "https://microsoftedge.microsoft.com/addons/detail/gitako-github-file-tree/alpoloddcggjhakjemghahlkofjekbca" 780 | }, 781 | "installCount": 299, 782 | "lastUpdate": "7 Jul 2024" 783 | }, 784 | { 785 | "name": "gitpod - dev environments in a browser tab", 786 | "description": "gitpod streamlines developer workflows by providing ready-to-code development environments in your browser - powered by vs code.", 787 | "source": "https://github.com/gitpod-io/browser-extension", 788 | "tags": [ 789 | "code", 790 | "ide", 791 | "repository" 792 | ], 793 | "store": { 794 | "chrome": "https://chrome.google.com/webstore/detail/gitpod-dev-environments-i/dodmmooeoklaejobgleioelladacbeki", 795 | "firefox": "https://addons.mozilla.org/firefox/addon/gitpod/" 796 | }, 797 | "stars": 143, 798 | "installCount": 2280, 799 | "lastUpdate": "21 Jun 2024" 800 | }, 801 | { 802 | "name": "Contributors on GitHub", 803 | "description": "Show the # of PRs and other contributors stats in the Issues/PRs tab. Can be helpful for maintainers that want to know if it's a contributor's first PR.", 804 | "source": "https://github.com/hzoo/contributors-on-github", 805 | "tags": [ 806 | "comments", 807 | "miscellaneous" 808 | ], 809 | "store": { 810 | "chrome": "https://chrome.google.com/webstore/detail/contributors-on-github/cjbacdldhllelehomkmlniifaojgaeph", 811 | "firefox": "https://addons.mozilla.org/en-US/firefox/addon/contributor-on-github/" 812 | }, 813 | "stars": 467, 814 | "installCount": 6, 815 | "lastUpdate": "1 Mar 2021" 816 | }, 817 | { 818 | "name": "xhub", 819 | "description": "Extends GitHub pages with math, diagrams, embedded YouTube videos etc.", 820 | "source": "https://github.com/nschloe/xhub", 821 | "tags": [ 822 | "miscellaneous" 823 | ], 824 | "store": { 825 | "chrome": "https://chrome.google.com/webstore/detail/xhub/anidddebgkllnnnnjfkmjcaallemhjee" 826 | }, 827 | "stars": 91, 828 | "installCount": 426, 829 | "lastUpdate": "n/a" 830 | }, 831 | { 832 | "name": "Material Icons for Github", 833 | "description": "Show Material icons for files/folders in repository file viewer. Display the same icons from vscode-material-icon-theme VSCode extension.", 834 | "source": "https://github.com/Claudiohbsantos/github-material-icons-extension", 835 | "tags": [ 836 | "repository", 837 | "theme" 838 | ], 839 | "store": { 840 | "chrome": "https://chrome.google.com/webstore/detail/material-icons-for-github/bggfcpfjbdkhfhfmkjpbhnkhnpjjeomc", 841 | "firefox": "https://addons.mozilla.org/en-US/firefox/addon/material-icons-for-github/", 842 | "edge": "https://microsoftedge.microsoft.com/addons/detail/material-icons-for-github/khckkdgomkcjjnpgjmdmbceiddlmiolb" 843 | }, 844 | "stars": 491, 845 | "installCount": 792, 846 | "lastUpdate": "11 Aug 2024" 847 | }, 848 | { 849 | "name": "WorkerB for Pull Requests", 850 | "description": "Generate a magic link for your PR and post it on shared Slack channel, to entice reviewers to pick up your PR faster!", 851 | "tags": [ 852 | "codereview", 853 | "notifications", 854 | "pullrequest" 855 | ], 856 | "store": { 857 | "chrome": "https://chrome.google.com/webstore/detail/workerb-for-pull-requests/cagholjopklnloocclidppnkmpnkghja" 858 | }, 859 | "installCount": 1000, 860 | "lastUpdate": "n/a" 861 | }, 862 | { 863 | "name": "Octohint", 864 | "description": "The missing IntelliSense hint for GitHub and GitLab", 865 | "source": "https://github.com/pd4d10/octohint", 866 | "tags": [ 867 | "code", 868 | "navigation" 869 | ], 870 | "store": { 871 | "chrome": "https://chrome.google.com/webstore/detail/octohint/hbkpjkfdheainjkkebeoofkpgddnnbpk" 872 | }, 873 | "stars": 961, 874 | "installCount": 4000, 875 | "lastUpdate": "n/a" 876 | }, 877 | { 878 | "name": "eesel: The new tab for GitHub", 879 | "description": "All your issues, PRs, repos and other work documents right in your new tab", 880 | "tags": [ 881 | "search" 882 | ], 883 | "website": "https://www.eesel.app/", 884 | "store": { 885 | "chrome": "https://chrome.google.com/webstore/detail/eesel-the-new-tab-for-wor/jffaiidojfhflballoapgofphkadiono", 886 | "firefox": "https://addons.mozilla.org/en-US/firefox/addon/eesel/reviews/" 887 | }, 888 | "installCount": 113, 889 | "lastUpdate": "n/a" 890 | }, 891 | { 892 | "name": "GitHub Red Issues", 893 | "description": "Revert closed GitHub issues from purple back to red", 894 | "source": "https://github.com/KatsuteDev/GitHub-Red-Issues", 895 | "tags": [ 896 | "miscellaneous", 897 | "theme" 898 | ], 899 | "store": { 900 | "chrome": "https://chrome.google.com/webstore/detail/github-red-issues/kjbbjibfgnnfdeabgmbieapkhpojikpc", 901 | "firefox": "https://addons.mozilla.org/firefox/addon/github-red-issues" 902 | }, 903 | "stars": 39, 904 | "installCount": 1, 905 | "lastUpdate": "8 Aug 2024" 906 | }, 907 | { 908 | "name": "GitZip for github", 909 | "description": "It can make the sub-directories and files of github repository as zip and download it", 910 | "source": "https://github.com/GitZip/chrome-extension", 911 | "tags": [], 912 | "store": { 913 | "chrome": "https://chrome.google.com/webstore/detail/gitzip-for-github/ffabmkklhbepgcgfonabamgnfafbdlkn", 914 | "firefox": "https://addons.mozilla.org/en-US/firefox/addon/gitzip/" 915 | }, 916 | "stars": 38, 917 | "installCount": 3358, 918 | "lastUpdate": "21 Aug 2023" 919 | }, 920 | { 921 | "name": "GitHub Recommender", 922 | "description": "Lists repositories that are similar to the one being viewed", 923 | "source": "https://github.com/IndexStorm/git-rec-ext/", 924 | "tags": [], 925 | "store": { 926 | "chrome": "https://chrome.google.com/webstore/detail/github-recommender/hbiichfklkmlebacdfhkojcpmmakmamk", 927 | "firefox": "https://addons.mozilla.org/en-US/firefox/addon/github-recommender/" 928 | }, 929 | "stars": 49, 930 | "installCount": 29, 931 | "lastUpdate": "10 Aug 2022" 932 | }, 933 | { 934 | "name": "GitHub to Linear", 935 | "description": "View and create Linear tickets from any GitHub PR or issue.", 936 | "source": "https://github.com/delucis/github-to-linear", 937 | "tags": [], 938 | "store": { 939 | "chrome": "https://chrome.google.com/webstore/detail/github-to-linear/hlambaminaoofejligodincejhcbljik", 940 | "firefox": "https://addons.mozilla.org/en-GB/firefox/addon/github-to-linear/" 941 | }, 942 | "stars": 24, 943 | "installCount": 9, 944 | "lastUpdate": "2 Jun 2024" 945 | }, 946 | { 947 | "name": "Le Git Graph", 948 | "description": "Browser extension to add git graph to GitHub website.", 949 | "source": "https://github.com/NirmalScaria/le-git-graph", 950 | "tags": [], 951 | "store": { 952 | "chrome": "https://chrome.google.com/webstore/detail/le-git-graph-commits-grap/joggkdfebigddmaagckekihhfncdobff", 953 | "firefox": "https://addons.mozilla.org/en-US/firefox/addon/le-git-graph-github-git-graph/" 954 | }, 955 | "stars": 3313, 956 | "installCount": 449, 957 | "lastUpdate": "6 Aug 2024" 958 | } 959 | ] -------------------------------------------------------------------------------- /generate-readme.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | 3 | const readme = fs.readFileSync('./README.md').toString(); 4 | const data = require('./data.json'); 5 | 6 | const listSorted = data.sort((a, b) => { 7 | if (a.name < b.name) { return -1; } 8 | if (a.name > b.name) { return 1; } 9 | return 0; 10 | }) 11 | 12 | const [intro] = readme.split('-->'); 13 | 14 | const markdownList = listSorted.map(item => { 15 | const browserIcons = Object.entries(item.store).map(([browserType, storeLink]) => { 16 | return `` 17 | }).join(' ') 18 | 19 | return `### [${item.name}](${item.source || item.website}) ${browserIcons} 20 | 21 | ${item.description} 22 | 23 | Installs: ${item.installCount || 'n/a'} | Stars: ${item.stars || 'n/a'} | Last update: ${item.lastUpdate || 'n/a'}` 24 | }).join('\n\n'); 25 | 26 | fs.writeFileSync('./README.md', [`${intro}-->\n`, markdownList].join('\n')) -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "date-fns": "^2.15.0", 4 | "got": "^11.5.2", 5 | "graphql-got": "^0.1.2" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /submission.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const data = require('./data.json') 3 | const submission = require('./submission.json') 4 | 5 | function removeEmptyKeys(obj) { 6 | return Object.fromEntries(Object.entries(obj).filter(([key, value]) => !!value)) 7 | } 8 | 9 | function cleanTags(arr) { 10 | return arr.filter(Boolean); 11 | } 12 | 13 | data.push(removeEmptyKeys({ 14 | name: submission.name, 15 | description: submission.description, 16 | source: submission.source, 17 | tags: cleanTags([ 18 | submission.code && 'code', 19 | submission.codereview && 'codereview', 20 | submission.comments && 'comments', 21 | submission.ide && 'ide', 22 | submission.miscellaneous && 'miscellaneous', 23 | submission.navigation && 'navigation', 24 | submission.newsfeed && 'newsfeed', 25 | submission.notifications && 'notifications', 26 | submission.profile && 'profile', 27 | submission.pull_request && 'pullrequest', 28 | submission.repository && 'repository', 29 | submission.search && 'search', 30 | submission.theme && 'theme', 31 | ]), 32 | store: removeEmptyKeys({ 33 | chrome: submission.chrome, 34 | firefox: submission.firefox, 35 | edge: submission.edge, 36 | opera: submission.opera, 37 | }) 38 | })) 39 | 40 | fs.writeFileSync('data.json', JSON.stringify(data, null, ' ')) 41 | 42 | -------------------------------------------------------------------------------- /update.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const { format } = require('date-fns'); 3 | const got = require('got'); 4 | const graphqlGot = require('graphql-got'); 5 | 6 | const readme = require('./data.json') 7 | 8 | const allExtensions = readme.map(item => { 9 | if (!item.source || !item.source.includes('https://github.com')) { 10 | return 11 | } 12 | return { 13 | name: item.name, 14 | url: item.source, 15 | } 16 | }).filter(Boolean); 17 | 18 | function getQuery(alias, owner, name) { 19 | return `repo${alias}: repository(owner:"${owner}" name:"${name}") { 20 | url, 21 | isArchived, 22 | stargazers { 23 | totalCount 24 | } 25 | }` 26 | } 27 | 28 | function getGraphqlQuery(list) { 29 | const innerQuery = list.map(({ name, url }, index) => { 30 | const [, , , owner, repo] = url.split('/'); 31 | 32 | return getQuery(index, owner, repo) 33 | }).join('\n') 34 | 35 | return `query { ${innerQuery} }` 36 | } 37 | 38 | async function updateGitHubStats() { 39 | const result = await graphqlGot('https://api.github.com/graphql', { 40 | query: getGraphqlQuery(allExtensions), 41 | token: process.env.GITHUB_TOKEN, 42 | }) 43 | 44 | Object.values(result.body).forEach((data) => { 45 | const it = readme.find((item) => { 46 | if (!item.source) { 47 | return false; 48 | } 49 | return item.source.includes(data.url) 50 | }) 51 | if (it) { 52 | it.stars = data.stargazers.totalCount; 53 | } 54 | }) 55 | } 56 | 57 | 58 | async function downloadStats(regexDownloads, regexVersion, storeUrl) { 59 | const ret = { 60 | download: 0, 61 | lastUpdate: '', 62 | } 63 | 64 | if (storeUrl.startsWith('https://github.com')) { 65 | return ret; 66 | } 67 | 68 | let res; 69 | try { 70 | res = await got.get(storeUrl, { 71 | headers: { 72 | 'accept-language': 'en,en-US', 73 | } 74 | }) 75 | } catch (error) { 76 | console.log(storeUrl) 77 | console.log(error) 78 | return ret; 79 | } 80 | 81 | const matchesDownloads = regexDownloads.exec(res.body); 82 | if (matchesDownloads && matchesDownloads[1]) { 83 | ret.download = parseInt(matchesDownloads[1].replace(/[.,]/g, ''), 10) 84 | } 85 | 86 | if (regexVersion) { 87 | const matchesVersion = regexVersion.exec(res.body); 88 | if (matchesVersion && matchesVersion[1]) { 89 | ret.lastUpdate = new Date(matchesVersion[1]) 90 | } 91 | } 92 | 93 | return ret; 94 | } 95 | 96 | async function chromeStats(storeUrl) { 97 | return downloadStats(/content=\"UserDownloads:([0-9,]+)/, /h-C-b-p-D-xh-hh">([^<]+)/, storeUrl) 98 | } 99 | async function firefoxStats(storeUrl) { 100 | return downloadStats(/average_daily_users":([0-9,]+)/, /AddonMoreInfo-last-updated">[^(]+\(([^)]+)/, storeUrl) 101 | } 102 | async function operaStats(storeUrl) { 103 | return downloadStats(/Downloads<\/dt>
([0-9,]+)/, '', storeUrl) 104 | } 105 | 106 | function findRecentVersion(dateList) { 107 | if (dateList.length === 0) { 108 | return 'n/a' 109 | } 110 | try { 111 | return format(new Date(Math.max(...dateList.filter(Boolean).map(a => new Date(a)))), 'd MMM yyyy'); 112 | } catch (error) { 113 | return 'n/a' 114 | } 115 | } 116 | 117 | async function updateDownloadStats(itemIndex) { 118 | const item = readme[itemIndex - 1]; 119 | 120 | if (!item) { 121 | return Promise.resolve() 122 | } 123 | 124 | let installCount = 0; 125 | const lastUpdates = []; 126 | 127 | if (item.store.chrome) { 128 | try { 129 | 130 | const res = await chromeStats(item.store.chrome) 131 | console.log('chrome', res.download); 132 | if (res.download) installCount += res.download; 133 | lastUpdates.push(res.lastUpdate); 134 | } catch (error) { 135 | console.log('chrome', error); 136 | } 137 | } 138 | if (item.store.firefox) { 139 | try { 140 | const res = await firefoxStats(item.store.firefox) 141 | if (res.download) installCount += res.download; 142 | console.log('firefox', res.download); 143 | lastUpdates.push(res.lastUpdate); 144 | } catch (error) { 145 | console.log('firefox', error); 146 | } 147 | } 148 | if (item.store.opera) { 149 | try { 150 | 151 | const res = await operaStats(item.store.opera) 152 | if (res.download) installCount += res.download; 153 | console.log('opera', res.download); 154 | } catch (error) { 155 | console.log('opera', error); 156 | } 157 | } 158 | 159 | if (installCount) item.installCount = installCount; 160 | item.lastUpdate = findRecentVersion(lastUpdates.filter(Boolean)); 161 | 162 | console.log(item.name, item.lastUpdate, installCount) 163 | 164 | return updateDownloadStats(itemIndex - 1) 165 | } 166 | 167 | async function init() { 168 | await updateGitHubStats(); 169 | await updateDownloadStats(readme.length); 170 | fs.writeFileSync('data.json', JSON.stringify(readme, null, ' ')); 171 | } 172 | 173 | init(); -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@sindresorhus/is@^3.0.0": 6 | version "3.1.1" 7 | resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-3.1.1.tgz#6e39e4222add8b362da35720c9dd5d53345d5851" 8 | integrity sha512-tLnujxFtfH7F+i5ghUfgGlJsvyCKvUnSMFMlWybFdX9/DdX8svb4Zwx1gV0gkkVCHXtmPSetoAR3QlKfOld6Tw== 9 | 10 | "@szmarczak/http-timer@^4.0.5": 11 | version "4.0.5" 12 | resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" 13 | integrity sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ== 14 | dependencies: 15 | defer-to-connect "^2.0.0" 16 | 17 | "@types/cacheable-request@^6.0.1": 18 | version "6.0.1" 19 | resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976" 20 | integrity sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ== 21 | dependencies: 22 | "@types/http-cache-semantics" "*" 23 | "@types/keyv" "*" 24 | "@types/node" "*" 25 | "@types/responselike" "*" 26 | 27 | "@types/http-cache-semantics@*": 28 | version "4.0.0" 29 | resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" 30 | integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A== 31 | 32 | "@types/keyv@*": 33 | version "3.1.1" 34 | resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.1.tgz#e45a45324fca9dab716ab1230ee249c9fb52cfa7" 35 | integrity sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw== 36 | dependencies: 37 | "@types/node" "*" 38 | 39 | "@types/node@*": 40 | version "14.6.0" 41 | resolved "https://registry.yarnpkg.com/@types/node/-/node-14.6.0.tgz#7d4411bf5157339337d7cff864d9ff45f177b499" 42 | integrity sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA== 43 | 44 | "@types/responselike@*", "@types/responselike@^1.0.0": 45 | version "1.0.0" 46 | resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" 47 | integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== 48 | dependencies: 49 | "@types/node" "*" 50 | 51 | aggregate-error@^1.0.0: 52 | version "1.0.0" 53 | resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-1.0.0.tgz#888344dad0220a72e3af50906117f48771925fac" 54 | integrity sha1-iINE2tAiCnLjr1CQYRf0h3GSX6w= 55 | dependencies: 56 | clean-stack "^1.0.0" 57 | indent-string "^3.0.0" 58 | 59 | cacheable-lookup@^5.0.3: 60 | version "5.0.3" 61 | resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz#049fdc59dffdd4fc285e8f4f82936591bd59fec3" 62 | integrity sha512-W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w== 63 | 64 | cacheable-request@^7.0.1: 65 | version "7.0.1" 66 | resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.1.tgz#062031c2856232782ed694a257fa35da93942a58" 67 | integrity sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw== 68 | dependencies: 69 | clone-response "^1.0.2" 70 | get-stream "^5.1.0" 71 | http-cache-semantics "^4.0.0" 72 | keyv "^4.0.0" 73 | lowercase-keys "^2.0.0" 74 | normalize-url "^4.1.0" 75 | responselike "^2.0.0" 76 | 77 | clean-stack@^1.0.0: 78 | version "1.3.0" 79 | resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-1.3.0.tgz#9e821501ae979986c46b1d66d2d432db2fd4ae31" 80 | integrity sha1-noIVAa6XmYbEax1m0tQy2y/UrjE= 81 | 82 | clone-response@^1.0.2: 83 | version "1.0.2" 84 | resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" 85 | integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= 86 | dependencies: 87 | mimic-response "^1.0.0" 88 | 89 | date-fns@^2.15.0: 90 | version "2.15.0" 91 | resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.15.0.tgz#424de6b3778e4e69d3ff27046ec136af58ae5d5f" 92 | integrity sha512-ZCPzAMJZn3rNUvvQIMlXhDr4A+Ar07eLeGsGREoWU19a3Pqf5oYa+ccd+B3F6XVtQY6HANMFdOQ8A+ipFnvJdQ== 93 | 94 | decompress-response@^3.2.0: 95 | version "3.3.0" 96 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" 97 | integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= 98 | dependencies: 99 | mimic-response "^1.0.0" 100 | 101 | decompress-response@^6.0.0: 102 | version "6.0.0" 103 | resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" 104 | integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== 105 | dependencies: 106 | mimic-response "^3.1.0" 107 | 108 | defer-to-connect@^2.0.0: 109 | version "2.0.0" 110 | resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.0.tgz#83d6b199db041593ac84d781b5222308ccf4c2c1" 111 | integrity sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg== 112 | 113 | duplexer3@^0.1.4: 114 | version "0.1.4" 115 | resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" 116 | integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= 117 | 118 | end-of-stream@^1.1.0: 119 | version "1.4.4" 120 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 121 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 122 | dependencies: 123 | once "^1.4.0" 124 | 125 | get-stream@^3.0.0: 126 | version "3.0.0" 127 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" 128 | integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= 129 | 130 | get-stream@^5.1.0: 131 | version "5.2.0" 132 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 133 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 134 | dependencies: 135 | pump "^3.0.0" 136 | 137 | got@^11.5.2: 138 | version "11.5.2" 139 | resolved "https://registry.yarnpkg.com/got/-/got-11.5.2.tgz#772e3f3a06d9c7589c7c94dc3c83cdb31ddbf742" 140 | integrity sha512-yUhpEDLeuGiGJjRSzEq3kvt4zJtAcjKmhIiwNp/eUs75tRlXfWcHo5tcBaMQtnjHWC7nQYT5HkY/l0QOQTkVww== 141 | dependencies: 142 | "@sindresorhus/is" "^3.0.0" 143 | "@szmarczak/http-timer" "^4.0.5" 144 | "@types/cacheable-request" "^6.0.1" 145 | "@types/responselike" "^1.0.0" 146 | cacheable-lookup "^5.0.3" 147 | cacheable-request "^7.0.1" 148 | decompress-response "^6.0.0" 149 | http2-wrapper "^1.0.0-beta.5.0" 150 | lowercase-keys "^2.0.0" 151 | p-cancelable "^2.0.0" 152 | responselike "^2.0.0" 153 | 154 | got@^7.1.0: 155 | version "7.1.0" 156 | resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" 157 | integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== 158 | dependencies: 159 | decompress-response "^3.2.0" 160 | duplexer3 "^0.1.4" 161 | get-stream "^3.0.0" 162 | is-plain-obj "^1.1.0" 163 | is-retry-allowed "^1.0.0" 164 | is-stream "^1.0.0" 165 | isurl "^1.0.0-alpha5" 166 | lowercase-keys "^1.0.0" 167 | p-cancelable "^0.3.0" 168 | p-timeout "^1.1.1" 169 | safe-buffer "^5.0.1" 170 | timed-out "^4.0.0" 171 | url-parse-lax "^1.0.0" 172 | url-to-options "^1.0.1" 173 | 174 | graphql-got@^0.1.2: 175 | version "0.1.2" 176 | resolved "https://registry.yarnpkg.com/graphql-got/-/graphql-got-0.1.2.tgz#1b43417b1c17ed5ab7371d9cde68391017f35131" 177 | integrity sha512-McrEv04zG28BU1aC1I8TH8j9aLsAVQM7jYVZurM4L0gDBKb7xJqftzrxndHSmHswgKPsEh3Lvc1Jm1sgg+DFow== 178 | dependencies: 179 | aggregate-error "^1.0.0" 180 | got "^7.1.0" 181 | prepend-http "^2.0.0" 182 | 183 | has-symbol-support-x@^1.4.1: 184 | version "1.4.2" 185 | resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" 186 | integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== 187 | 188 | has-to-string-tag-x@^1.2.0: 189 | version "1.4.1" 190 | resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" 191 | integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== 192 | dependencies: 193 | has-symbol-support-x "^1.4.1" 194 | 195 | http-cache-semantics@^4.0.0: 196 | version "4.1.0" 197 | resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" 198 | integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== 199 | 200 | http2-wrapper@^1.0.0-beta.5.0: 201 | version "1.0.0-beta.5.2" 202 | resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz#8b923deb90144aea65cf834b016a340fc98556f3" 203 | integrity sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ== 204 | dependencies: 205 | quick-lru "^5.1.1" 206 | resolve-alpn "^1.0.0" 207 | 208 | indent-string@^3.0.0: 209 | version "3.2.0" 210 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" 211 | integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= 212 | 213 | is-object@^1.0.1: 214 | version "1.0.1" 215 | resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" 216 | integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= 217 | 218 | is-plain-obj@^1.1.0: 219 | version "1.1.0" 220 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" 221 | integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= 222 | 223 | is-retry-allowed@^1.0.0: 224 | version "1.2.0" 225 | resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" 226 | integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== 227 | 228 | is-stream@^1.0.0: 229 | version "1.1.0" 230 | resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" 231 | integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= 232 | 233 | isurl@^1.0.0-alpha5: 234 | version "1.0.0" 235 | resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" 236 | integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== 237 | dependencies: 238 | has-to-string-tag-x "^1.2.0" 239 | is-object "^1.0.1" 240 | 241 | json-buffer@3.0.1: 242 | version "3.0.1" 243 | resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" 244 | integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== 245 | 246 | keyv@^4.0.0: 247 | version "4.0.1" 248 | resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.1.tgz#9fe703cb4a94d6d11729d320af033307efd02ee6" 249 | integrity sha512-xz6Jv6oNkbhrFCvCP7HQa8AaII8y8LRpoSm661NOKLr4uHuBwhX4epXrPQgF3+xdJnN4Esm5X0xwY4bOlALOtw== 250 | dependencies: 251 | json-buffer "3.0.1" 252 | 253 | lowercase-keys@^1.0.0: 254 | version "1.0.1" 255 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" 256 | integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== 257 | 258 | lowercase-keys@^2.0.0: 259 | version "2.0.0" 260 | resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" 261 | integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== 262 | 263 | mimic-response@^1.0.0: 264 | version "1.0.1" 265 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" 266 | integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== 267 | 268 | mimic-response@^3.1.0: 269 | version "3.1.0" 270 | resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" 271 | integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== 272 | 273 | normalize-url@^4.1.0: 274 | version "4.5.0" 275 | resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" 276 | integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== 277 | 278 | once@^1.3.1, once@^1.4.0: 279 | version "1.4.0" 280 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 281 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 282 | dependencies: 283 | wrappy "1" 284 | 285 | p-cancelable@^0.3.0: 286 | version "0.3.0" 287 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" 288 | integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== 289 | 290 | p-cancelable@^2.0.0: 291 | version "2.0.0" 292 | resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.0.0.tgz#4a3740f5bdaf5ed5d7c3e34882c6fb5d6b266a6e" 293 | integrity sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg== 294 | 295 | p-finally@^1.0.0: 296 | version "1.0.0" 297 | resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" 298 | integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= 299 | 300 | p-timeout@^1.1.1: 301 | version "1.2.1" 302 | resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" 303 | integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= 304 | dependencies: 305 | p-finally "^1.0.0" 306 | 307 | prepend-http@^1.0.1: 308 | version "1.0.4" 309 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" 310 | integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= 311 | 312 | prepend-http@^2.0.0: 313 | version "2.0.0" 314 | resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" 315 | integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= 316 | 317 | pump@^3.0.0: 318 | version "3.0.0" 319 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 320 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 321 | dependencies: 322 | end-of-stream "^1.1.0" 323 | once "^1.3.1" 324 | 325 | quick-lru@^5.1.1: 326 | version "5.1.1" 327 | resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" 328 | integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== 329 | 330 | resolve-alpn@^1.0.0: 331 | version "1.0.0" 332 | resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.0.0.tgz#745ad60b3d6aff4b4a48e01b8c0bdc70959e0e8c" 333 | integrity sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA== 334 | 335 | responselike@^2.0.0: 336 | version "2.0.0" 337 | resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.0.tgz#26391bcc3174f750f9a79eacc40a12a5c42d7723" 338 | integrity sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw== 339 | dependencies: 340 | lowercase-keys "^2.0.0" 341 | 342 | safe-buffer@^5.0.1: 343 | version "5.2.1" 344 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 345 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 346 | 347 | timed-out@^4.0.0: 348 | version "4.0.1" 349 | resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" 350 | integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= 351 | 352 | url-parse-lax@^1.0.0: 353 | version "1.0.0" 354 | resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" 355 | integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= 356 | dependencies: 357 | prepend-http "^1.0.1" 358 | 359 | url-to-options@^1.0.1: 360 | version "1.0.1" 361 | resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" 362 | integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= 363 | 364 | wrappy@1: 365 | version "1.0.2" 366 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 367 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 368 | --------------------------------------------------------------------------------