2017-08

ES proposal: Promise.try()

[2017-08-09] dev, javascript, esnext, es proposal, async, promises

The proposal “Promise.try()” by Jordan Harband is currently at stage 1. This blog post explains how it works.

Passing data between Promise callbacks

[2017-08-08] dev, javascript, esnext, async, promises

In Promise-based code, there are usually many callbacks, each one having a separate scope for variables. What if you want to share data between those callbacks? This blog post describes techniques for doing so.

2017-07

ES proposal: class fields

[2017-07-28] dev, javascript, esnext, es proposal, classes

The ECMAScript proposal “Class Fields” by Daniel Ehrenberg and Jeff Morrison is currently at stage 3. This blog post explains how it works.

ES2018: Promise.prototype.finally()

[2017-07-26] dev, javascript, esnext, es2018, promises

The proposal “Promise.prototype.finally” by Jordan Harband is at stage 4. This blog post explains it.

A minimal setup for Babel-based npm packages

[2017-07-24] dev, javascript, esnext, npm, jsmodules, babel

This blog post describes a minimal setup for producing npm packages via Babel. You can see that setup in action in the GitHub repository for re-template-tag.

Composing regular expressions via re-template-tag

[2017-07-22] dev, javascript, regexp, template literals

I’ve written the small library re-template-tag that provides a template tag function for composing regular expressions. This blog post explains how it works.

ES2018: s (dotAll) flag for regular expressions

[2017-07-20] dev, javascript, esnext, es2018, regexp

The proposal “s (dotAll) flag for regular expressions” by Mathias Bynens is at stage 4. This blog post explains how it works.

ES2018: RegExp Unicode property escapes

[2017-07-19] dev, javascript, esnext, es2018, regexp

The proposal “RegExp Unicode Property Escapes” by Mathias Bynens is at stage 4. This blog post explains how it works.

2017-06

Delivering untranspiled source code via npm

[2017-06-01] dev, javascript, esnext, npm, jsmodules, babel, webpack

The idea of babel-preset-env is brilliant: write JavaScript with stage 4 features (or earlier stages, if you want to take that risk) and transpile it so that it is an exact fit for your target platform(s).

However, at the moment, preset-env only works for your own app, but not for your dependencies, which are normally already transpiled.

This blog post shows how package authors and package users can use the package.json property esnext to work with untranspiled source code in npm packages. The code is available in the repository esnext-demo on GitHub.

2017-05

Node.js 8: util.promisify()

[2017-05-30] dev, javascript, nodejs, esnext, async, promises

Node.js 8 has a new utility function: util.promisify(). It converts a callback-based function to a Promise-based one.