npx create-react-app@next --scripts-version=@next --template=cra-template@next my-js-app
npx create-react-app@next --scripts-version=@next --template=typescript@next my-ts-app
🔍 see jay, yes! 🎉 / 👨🏻💻 see, JS! 👾 / ⚓️ sea JS ⛴
If you're publishing ES Modules, you need to also publish CommonJS versions of those modules.
This isn't to support old browsers or Node versions: even in Node 14, using require() to load a module won't work if it's only available as ESM.
cjyes is the bare minimum fix for this problem. You write ES Modules and fill out a valid package.json, and it'll generate the corresponding CommonJS files pretty much instantly. cjyes takes up 500kb of disk space including its two dependencies.
Update: I created jq-zsh-plugin that does this.
One of my favourite tools of my trade is jq. It essentially enables you to process json streams with the same power that sed, awk and grep provide you with for editing line-based formats (csv, tsv, etc.).
Another one of my favourite tools is fzf.
| // This is a proper alternative to | |
| // https://github.com/BuckleScript/bucklescript/blob/b9508105b1a35537bdea9a1fabd10f6c65f776b4/jscomp/bsb/templates/react-hooks/src/FetchedDogPictures/FetchedDogPictures.re#L14 | |
| // The one in that file uses Promise, but that's *wrong*. | |
| // We only used promise as a demo of its API. We'll remove it soon. | |
| // As you can see below, the pure XMLHttpRequest code is just as clean, | |
| // less mysterious for all, more performant, extensible, and actually correct. | |
| // Ignore these externals for now. They're just for illustration | |
| // purposes. I just copy pasted the Js code from |
| const express = require('express'); | |
| const app = express(); | |
| // Application | |
| app.get('/', function(req, res) { | |
| if (process.env.NODE_ENV === 'development') { | |
| for (var key in require.cache) { | |
| delete require.cache[key]; | |
| } | |
| } |
| const MY_DOMAIN = "agodrich.com" | |
| const START_PAGE = "https://www.notion.so/gatsby-starter-notion-2c5e3d685aa341088d4cd8daca52fcc2" | |
| const DISQUS_SHORTNAME = "agodrich" | |
| addEventListener('fetch', event => { | |
| event.respondWith(fetchAndApply(event.request)) | |
| }) | |
| const corsHeaders = { | |
| "Access-Control-Allow-Origin": "*", |
%GetOptimizationStatus return a set of bitwise flags instead of a single value,
to access the value, you need to take the binary representation of the returned value.
Now, for example, if 65 is returned, the binary representation is the following:
(65).toString(2).padStart(12, '0');
// 000001000001Each binary digit acts as a boolean with the following meaning:
| /* | |
| Let's Assume we want to have a Functor which creates a new Module from | |
| a specific Component Model | |
| The Functor recieves another Module named `Component`, which needs to satisfy certain constraints: | |
| - Component requires an abstract type t (no matter what concrete type) | |
| - It also needs to implement a `render` function which gets said type t and returns a `string` | |
| Also, the newly created module will then contain a function `doSomething`, which will handle any | |
| instance of `Component.t`. So our `Component` also will need a function to create an instance for that, |
This is the second article in a series of articles around Rusts new async/await
feature. The first article about interfaces can be found
here.
In this part of the series we want to a look at a mechanism which behaves very
different in Rust than in all other languages which feature async/await
support. This mechanism is Cancellation.