Sindre Sorhus sindresorhus Full-Time Open-Sourcerer. Wants more empathy & kindness in open source. Focuses on Swift & JavaScript. Makes macOS apps, CLI tools, npm packages. Likes unicorns

addyosmani/critical 8863

Extract & Inline Critical-path CSS in HTML pages

addyosmani/a11y 1665

Accessibility audit tooling for the web (beta)

addyosmani/tmi 1655

TMI (Too Many Images) - discover your image weight on the web

bcoe/awesome-cross-platform-nodejs 910

:two_men_holding_hands: A curated list of awesome developer tools for writing cross-platform Node.js code

avajs/ava-docs 454

Localized docs for AVA

avajs/awesome-ava 318

Awesome AVA resources

fregante/github-issue-link-status 245

Colorize issue and PR links to see their status (open, closed, merged)

avajs/eslint-plugin-ava 208

ESLint rules for AVA

download-directory/ 169

Web App: Download just a sub directory from a GitHub repo.

fregante/delegate-it 157

DOM event delegation, in <1KB


started time in 15 minutes


started time in 20 minutes

pull request commentsindresorhus/awesome




comment created time in an hour

PR opened sindresorhus/awesome


JAX brings automatic differentiation and the XLA compiler together through a numpy-like API for high performance machine learning research on accelerators like GPUs and TPUs.

I think JAX is an excellent alternative to frameworks like TensorFlow and PyTorch for researchers. A curated list of existing projects/libraries and other resources will help researchers build off others' work and use JAX effectively.

By submitting this pull request I confirm I've read and complied with the below requirements 🖖

Please read it multiple times. I spent a lot of time on these guidelines and most people miss a lot.

Requirements for your pull request

  • Don't waste my time. Do a good job, adhere to all the guidelines, and be responsive.
  • You have to review at least 2 other open pull requests. Try to prioritize unreviewed PRs, but you can also add more comments to reviewed PRs. Go through the below list when reviewing. This requirement is meant to help make the Awesome project self-sustaining. Comment here which PRs you reviewed. You're expected to put a good effort into this and to be thorough. Look at previous PR reviews for inspiration. Just commenting “looks good” or simply marking the pull request as approved does not count! You have to actually point out mistakes or improvement suggestions.

Commented on PRs: #1932, #1917.

  • You have read and understood the instructions for creating a list.
  • This pull request has a title in the format Add Name of List.
    • ✅ Add Swift
    • ✅ Add Software Architecture
    • ❌ Update
    • ❌ Add Awesome Swift
    • ❌ Add swift
    • ❌ add Swift
    • ❌ Adding Swift
    • ❌ Added Swift
  • Your entry here should include a short description about the project/theme of the list. It should not describe the list itself. The first character should be uppercase and the description should end in a dot. It should be an objective description and not a tagline or marketing blurb.
    • ✅ - [iOS](…) - Mobile operating system for Apple phones and tablets.
    • ✅ - [Framer](…) - Prototyping interactive UI designs.
    • ❌ - [iOS](…) - Resources and tools for iOS development.
    • ❌ - [Framer](…)
    • ❌ - [Framer](…) - prototyping interactive UI designs
  • Your entry should be added at the bottom of the appropriate category.
  • The suggested Awesome list complies with the below requirements.

Requirements for your Awesome list

  • Has been around for at least 30 days.<br>That means 30 days from either the first real commit or when it was open-sourced. Whatever is most recent.
  • Don't open a Draft / WIP pull request while you work on the guidelines. A pull request should be 100% ready and should adhere to all the guidelines when you open it.
  • Run awesome-lint on your list and fix the reported issues. If there are false-positives or things that cannot/shouldn't be fixed, please report it.

Fixed all issues except false positives on list items, opened issue here.

  • The default branch should be named main, not master.
  • Includes a succinct description of the project/theme at the top of the readme. (Example)
    • ✅ Mobile operating system for Apple phones and tablets.
    • ✅ Prototyping interactive UI designs.
    • ❌ Resources and tools for iOS development.
    • ❌ Awesome Framer packages and tools.
  • It's the result of hard work and the best I could possibly produce. If you have not put in considerable effort into your list, your pull request will be immediately closed.
  • The repo name of your list should be in lowercase slug format: awesome-name-of-list.
    • ✅ awesome-swift
    • ✅ awesome-web-typography
    • ❌ awesome-Swift
    • ❌ AwesomeWebTypography
  • The heading title of your list should be in title case format: # Awesome Name of List.
    • ✅ # Awesome Swift
    • ✅ # Awesome Web Typography
    • ❌ # awesome-swift
    • ❌ # AwesomeSwift

The library is named JAX with all uppercase, which is why it isn't titlecase.

  • Non-generated Markdown file in a GitHub repo.
  • The repo should have awesome-list & awesome as GitHub topics. I encourage you to add more relevant topics.
  • Not a duplicate. Please search for existing submissions.
  • Only has awesome items. Awesome lists are curations of the best, not everything.
  • Does not contain items that are unmaintained, has archived repo, deprecated, or missing docs. If you really need to include such items, they should be in a separate Markdown file.
  • Includes a project logo/illustration whenever possible.
    • Either centered, fullwidth, or placed at the top-right of the readme. (Example)
    • The image should link to the project website or any relevant website.
    • The image should be high-DPI. Set it to maximum half the width of the original image.

I used the logo from the JAX repo, which is 250px tall, and set the height to 100px (< half the width). If it must be precisely half, I will change this.

  • Entries have a description, unless the title is descriptive enough by itself. It rarely is though.
  • Includes the Awesome badge.
    • Should be placed on the right side of the readme heading.
      • Can be placed centered if the list has a centered graphics header.
    • Should link back to this list.
  • Has a Table of Contents section.
    • Should be named Contents, not Table of Contents.
    • Should be the first section in the list.
    • Should only have one level of nested lists, preferably none.
    • Must not feature Contributing or Footnotes sections.
  • Has an appropriate license.
    • We strongly recommend the CC0 license, but any Creative Commons license will work.
      • Tip: You can quickly add it to your repo by going to this URL:<user>/<repo>/community/license/new?branch=main&template=cc0-1.0 (replace <user> and <repo> accordingly).
    • A code license like MIT, BSD, Apache, GPL, etc, is not acceptable. Neither are WTFPL and Unlicense.
    • Place a file named license or LICENSE in the repo root with the license text.
    • Do not add the license name, text, or a Licence section to the readme. GitHub already shows the license name and link to the full text at the top of the repo.
    • To verify that you've read all the guidelines, please comment on your pull request with just the word unicorn.
  • Has contribution guidelines.
    • The file should be named Casing is up to you.
    • It can optionally be linked from the readme in a dedicated section titled Contributing, positioned at the top or bottom of the main content.
    • The section should not appear in the Table of Contents.
  • All non-important but necessary content (like extra copyright notices, hyperlinks to sources, pointers to expansive content, etc) should be grouped in a Footnotes section at the bottom of the readme. The section should not be present in the Table of Contents.
  • Has consistent formatting and proper spelling/grammar.
    • The link and description are separated by a dash. <br>Example: - [AVA](…) - JavaScript test runner.
    • The description starts with an uppercase character and ends with a period.
    • Consistent and correct naming. For example, Node.js, not NodeJS or node.js.
  • Doesn't use hard-wrapping.
  • Doesn't include a Travis badge.<br>You can still use Travis for list linting, but the badge has no value in the readme.
  • Doesn't include an Inspired by awesome-foo or Inspired by the Awesome project kinda link at the top of the readme. The Awesome badge is enough.

Go to the top and read it again.

+1 -0

0 comment

1 changed file

pr created time in an hour

issue openedsindresorhus/awesome-lint

Invalid list item link even though links work

Thanks for this great linting tool. These three items produce the following error:

✖ Linting
  ✖  90:4  Invalid list item link  remark-lint:awesome-list-item
  ✖  91:4  Invalid list item link  remark-lint:awesome-list-item
  ✖  92:4  Invalid list item link  remark-lint:awesome-list-item

  3 errors

All three links work (verified Jan 22, 2021). I added <!--lint ignore awesome-list-item--> to suppress the error for now. Is there something wrong with the way I added these list items, or is this a bug? Thanks in advance.

created time in an hour

fork mindstorms6/got

🌐 Human-friendly and powerful HTTP request library for Node.js

fork in an hour


started time in an hour


started time in 2 hours

Pull request review commentsindresorhus/p-throttle

Fixes #26: Throttle limit exceeded after a delay

 test('main', async t => { 	})); }); +test('limits after pause', async t => {+	const limit = 10;+	const interval = 1010;+	const throttled = pThrottle({limit, interval})(() =>;++	const promises = [];++	await throttled(0);++	await new Promise(resolve => {

Use yoctodelay instead.


comment created time in 2 hours

fork n2cholas/awesome

😎 Awesome lists about all kinds of interesting topics

fork in 2 hours


started time in 2 hours


started time in 2 hours


started time in 2 hours

issue commentsindresorhus/ky-universal

await is only valid in async functions and the top level bodies of modules

I'm sorry, but what am I missing?

  • This package is now pure ESM This means you need to use import ky from 'ky-universal' instead of const ky = require('ky-universal') to import it in Node.js.

I'm doing this.

  • Require Node.js 14

Does ky-universal only work with node 14 and not node 15?

  • Now requires Ky 0.26 or later

I am using ky 0.26.0.


comment created time in 2 hours


started time in 3 hours


started time in 3 hours

issue openedsindresorhus/ky-universal

await is only valid in async functions and the top level bodies of modules

After updating to 0.9.1 I'm getting:

        globalThis.ReadableStream = await Promise.resolve().then(function () {

    SyntaxError: await is only valid in async functions and the top level bodies of modules

    > 1 | import ky from 'ky-universal';
        | ^

I'm using node v15.6.0.

I'm not quite sure how I'm supposed to fix this. Any help would be greatly appreciated.

created time in 3 hours

pull request commentsindresorhus/awesome


Nice awesome list! I could not find issues in terms of the guidelines. Here are my suggestions for the list:

  1. Would be nice to include a brief description of the games in the games section (e.g. "Homebrew games with source code") to give readers an idea of what they're clicking into.
  2. Since some sections only have one item, it may be useful to consolidate them into one header instead of separate headers.

comment created time in 3 hours


started time in 3 hours

pull request commentsindresorhus/awesome

Add JavaScript Data Science

Nice awesome list! I have a few changes to suggest from the checklist:

  1. You need a table of contents named Contents
  2. The license must be CC0, not MIt.

Also, some of my personal opinion (you do not have to make these changes, if you don't want to):

  1. The order Machine Learning, Deep Learning, Natural Language Processing makes more sense to me than Machine Learning, Natural Language Processing, Deep Learning
  2. Would be nice to add a Computer Vision section since you have a Natural Language Processing section.
  3. It would be great to include awesome tutorials for the libraries you have.

comment created time in 3 hours

issue commentsindresorhus/eslint-plugin-unicorn


Breaking something? What's the original and fixed?


comment created time in 3 hours


started time in 3 hours


started time in 3 hours

issue openedsindresorhus/eslint-plugin-unicorn


 mergeWith(, (destValue, srcValue, key, dest, src, stack) => {
    if (!isArray(destValue) && !isArray(srcValue)) return

    if (isArray(destValue)) {
     // srcValue may be primitive value
      _destValue = destValue.concat(srcValue)
    } else if (isArray(srcValue)) {
      _destValue = [...srcValue]

    return _destValue

created time in 3 hours

issue commentsindresorhus/eslint-plugin-unicorn

Return null as JSX element (no-null with React + TS)

Or possibly return an empty React.Fragment. I do that instead of using null.

return isLoading
    ? <></> 
    : (
            /* ... */

comment created time in 4 hours


started time in 4 hours

push eventsindresorhus/refined-github

Federico Brigante

commit sha 69c63f332906b5bb9e814b6c145452360d3a8973

Disable `file-finder-buffer` on Safari AJAX navigation appears broken there and the buffer is lost. Fixes #3846

view details

Federico Brigante

commit sha 3aadf2f9141107d7ca92e8753f2a66cbc10ebd9d

Fix minor style issues in the options and in `file-finder-buffer` Fixes #3842

view details

push time in 4 hours

issue closedsindresorhus/refined-github

`file-finder-buffer` may be broken in Safari

  1. Visit
  2. Press <kbd>t</kbd>
  3. Type something before the page loads

Is the text preserved? Should the feature be updated? Dropped? Does the include need to be changed?


closed time in 4 hours



started time in 4 hours


started time in 4 hours