Fork me on GitHub

2019-06-04のJS: async.js 3.0.0(async/await対応)、AVA 2.0.0、Verdaccio 4(npm registry)

Edit on GitHub 編集履歴を見る

JSer.info #438 - 非同期処理のフローを扱うライブラリであるAsync 3がリリースされました。

Async 3.0.0ではasync.mapLimitなどのAsyncのメソッドがPromiseを返すように変更されています。
これにより、async.mapLimitなどのメソッドがasync/awaitと組み合わせて利用できるようになっています。
2.3.0引数にAsync Functionを渡せるようになっていました。さらに今回のリリースでasync.*のメソッドにコールバック関数を渡さなかった場合は、Promiseを返すようになっています。

比較してみると次のようになると思います。

// DUMMY CODES
const async = require("async");
const urls = ["https://example.com", ...];

(async function(){
  // 2.3.0 <
  async.mapLimit(urls, 10, async.asyncify(async (url) => {
    const res = await fetch(url);
    return res.json();
  }), (err, results) => {
      if (err) throw err;
      console.log(results)
  });
  // 2.3.0 >=
  async.mapLimit(urls, 10, async (url) => {
    const res = await fetch(url);
    return res.json();
  }, (err, results) => {
      if (err) throw err;
      console.log(results)
  });
  // 3.0.0 >=
  try {
    const results = await async.mapLimit(urls, 10, async (url) => {
      const res = await fetch(url);
      return res.json();
    });
    console.log(results);
  } catch (err) {
    console.log(err);
  }
})();

また3.0でコードベースもES2015ベースとなったため、ES2015をサポートしていない実行環境はサポート外となっています。


Node.jsのテストフレームワークであるAVA 2.0.0がリリースされました。

Node.js 8.9.4以降のサポートのみとなっています。
破壊的な変更としては、snapshotが作られていない場合はCIで失敗するように、assertionメッセージが文字列ではない場合は例外を投げるようになるといった変更が含まれています。


OSSなnpm package registry serverの実装であるVerdaccio 4がリリースされました。

Verdaccioはもともとsinopiaというnpm registry serverをforkしたもので、
今回のリリースでsinopia時代の実装やウェブUIを刷新しています。
検索UI、Register情報、パッケージの詳細画面などのUIが変更されています。

同じくnpm package registryの話題として、npm incの元CTOである@ceejbotEntropicというFederatedなnpm package registryを作成するという発表がJSConf EU 2019でありました。
なぜ新しいnpm package registryを作ろうとしているかについてはJSConf EUの動画とスライドが上がっているので見てみるとよさそうです。


JSer.infoをサポートするには

JSer.info Sponsors

JSer.info SponsorsGitHub SponsorsとしてJSer.infoを支援してくれている方々です。


ヘッドライン


async/CHANGELOG.md at master · caolan/async

github.com/caolan/async/blob/master/CHANGELOG.md#v300

JavaScript library ReleaseNote

async 3.0.0リリース。
asyncモジュールのメソッドがcallbackを指定していない場合に、Promiseを返すように、コレクションメソッドでAsync Generatorのサポート、cargoQueueの追加など。
また、ES2015のコードベースになったため、古いブラウザやNode 4以下のサポート終了。


Node v10.16.0 (LTS) | Node.js

nodejs.org/en/blog/release/v10.16.0/

node.js ReleaseNote

Node v10.16.0(LTS)リリース。
npm 6.9.0への更新、zlibモジュールのbrotliサポートのバックポート、eventsモジュールのonceメソッドのバックポートなど


W3C and WHATWG to work together to advance the open Web platform | W3C Blog

www.w3.org/blog/2019/05/w3c-and-whatwg-to-work-together-to-advance-the-open-web-platform/

W3C WHATWG news

W3CはHTMLとDOMに関する標準策定をやめ、WHATWGが策定しているLiving Standardを共同で策定していくことに合意した。
また、WHATWGはレビュードラフトと呼ばれる定期的なスナップショットをだし、これをW3Cプロセスに従う形で勧告まで進めるなどのプロセスの変更について書かれている。


Version 8 of Angular — Smaller bundles, CLI APIs, and alignment with the ecosystem

blog.angular.io/version-8-of-angular-smaller-bundles-cli-apis-and-alignment-with-the-ecosystem-af0261112a27

Angular ReleaseNote

Angular 8.0.0リリース。
modern build(es2015)とlegacy build(es5)を出し分けロードするDifferential Loadingの有効化。
Route ConfigでDynamic Importsを使うように、CLI向けにBuilders APIの追加。
IvyをenableIvyで試せるようになるなど


Release Notes for Safari Technology Preview 83 | WebKit

webkit.org/blog/8967/release-notes-for-safari-technology-preview-83/

safari ReleaseNote

Safari Technology Preview 83リリース。
WebAuthNのデフォルト有効化、CSSのline-break: anywheredisplay: flow-rootのサポートなど


Release v0.19.0 · axios/axios

github.com/axios/axios/releases/tag/v0.19.0

JavaScript library ReleaseNote

axios 0.19.0リリース。
Node.jsでレスポンスがgzipなどでかつ204の場合に例外が発生する問題を修正、maxContentLengthの設定を無視してリクエストを継続するDosにつながる問題を修正など。


Announcing TypeScript 3.5 | TypeScript

devblogs.microsoft.com/typescript/announcing-typescript-3-5/

TypeScript ReleaseNote

TypeScript 3.5リリース。
型チェックのパフォーマンス改善、--incrementalビルドのパフォーマンス改善、Omitヘルパー型の追加など。
破壊的な変更として型パラメータの型が不明な場合の型が{}からunknownへ変更など


Release v2.8.0 · nuxt/nuxt.js

github.com/nuxt/nuxt.js/releases/tag/v2.8.0

Vue library ReleaseNote

Nuxt.js 2.8.0リリース。
SSRログの表示を改善、ビルド中のインジケータ表示の改善など


Release 2.0.0 · avajs/ava

github.com/avajs/ava/releases/tag/v2.0.0

JavaScript testing node.js ReleaseNote

AVA 2.0.0リリース。
Node.js 8.9.4以降のサポート、snapshotが作られていない場合はCIで失敗するように、assertionメッセージが文字列ではない場合は例外を投げるようになるなど。


Verdaccio 4 released !!! · Verdaccio

verdaccio.org/blog/2019/05/19/15-verdaccio-4-release.html

npm Tools ReleaseNote

npm registry serverのOSS実装であるVerdaccio 4リリース。
UIの刷新、npm star/npm profileのサポート、JWTサポート、Pluginsサポートの改善など


アーティクル


What's New In DevTools (Chrome 76)  |  Web  |  Google Developers

developers.google.com/web/updates/2019/05/devtools

Chrome article

Chrome 76の開発者ツールの変更点について。
ネットワークパネル設定のUIの変更、WebSocketメッセージをHARファイルとしてエクスポートできるように、合計メモリ消費量のリアルタイム表示、Background Fetchのデバッグ機能など。


イメージで伝われ!図解JavaScriptの非同期処理 - メモを揉め

memowomome.hatenablog.com/entry/js_async_viz

JavaScript article

JavaScriptの同期処理と非同期処理の動作の違い、非同期処理の実装方法や考え方について


スライド、動画関係


JSConf EU 2019 - YouTube

www.youtube.com/playlist?list=PL37ZVnwpeshHwJPVBqEnZild7QHWhdufu

JavaScript イベント video

JSConf EU 2019の動画まとめ


ソフトウェア、ツール、ライブラリ関係


Zdog · Round, flat, designer-friendly pseudo-3D engine for canvas and SVG

zzz.dog/

SVG canvas library

擬似的な3D描画を行うCanvas、SVGライブラリ。


atomicojs/atomico: Small library for the creation of interfaces based on web-components, only using functions and hooks.

github.com/atomicojs/atomico

WebComponents library

Web ComponentsベースのJSXでのDOM定義とReact HooksライクなAPIを提供するライブラリ


mholt/PapaParse: Fast and powerful CSV (delimited text) parser that gracefully handles large files and malformed input

github.com/mholt/PapaParse

JavaScript library

CSVパーサライブラリ


この記事へ修正リクエストをする
JSer.info Slackに参加する