Fork me on GitHub

2022-03-01のJS: Redux Toolkit 1.8.0、Node.js 17.6.0、CSS Cascade Layers

Edit on GitHub 編集履歴を見る

JSer.info #581 - Redux Toolkit 1.8.0がリリースされました。

1.8.0では、新しい非同期MiddlewareとしてcreateListenerMiddlewareが追加されています。

createListenerMiddlewareredux-sagaredux-observableなど同じく非同期処理を扱うためのMiddlewareです。
シンプルなdispatchgetStateなどのAPIや、redux-sagaをインスパイアしたtakeTemporalをインスパイアしたconditionなど複雑なタスクを扱うAPIも持っています。

次の動画で、このcreateListenerMiddlewareがどのように作られたのかを紹介しています。


Node.js 17.6.0がリリースされました。

Node v17.5.0でStreamに対して現在Stage 2のECMAScript ProposalであるIterator Helpersが実装されていました。
しかし、仕様に準拠した実装をした場合にmongooseなどのモジュールが動かなくなるリグレッションが発生したため、仕様への準拠を一部revertしています。

具体的にはIterator Helperの仕様では、mapなどのメソッドは{ [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }で実装されることなっています。

この場合、次のようにStreamのprototype.mapを上書きしようとする、Writablefalseであるため、例外が発生してできません。

// [Writable]]: falseでは書き込めない
ReadableStream.prototype.map = function(fn) { // 例外が発生する
  // ..
};

mongooseなどで、このような代入が存在したため、[[Writable]]: false[[Writable]]: trueにする変更(revert)がNode.js 17.6.0に含まれています。(BREAKING CHANGEとなってしまったため)


A Complete Guide to CSS Cascade Layers | CSS-Tricks - CSS-Tricksという記事では、Chrome/Edge 99+、Firefox 97+、Safari Technology Preview 133で実装されている CSS Cascade Layers について紹介されています。

CSSでは、UA、!important詳細度などによってどのスタイルが当たるかのCascadingの仕様があります。
この仕様にCascade Layersというものが追加され、各ブラウザでの実装が進んでいます。

この記事では、Cascade Layersの基本的な使い方、Important layers、Layerの優先度、sub layerについてなど書かれています。


ヘッドライン


Release v6.32.0 · pnpm/pnpm

github.com/pnpm/pnpm/releases/tag/v6.32.0

pnpm ReleaseNote

pnpm 6.32.0リリース。
インストールスクリプトを実行できるパッケージを指定するonlyBuiltDependenciesの追加、overridesフィールドがpnpm addに対して反映されるようになるなど


Astro 0.23 Release Notes | Astro

astro.build/blog/astro-023/

JavaScript library ReleaseNote

Astro 0.23リリース。
HTML以外のビルドに対応、set:htmlset:textディレクティブの追加、PUBLIC_ prefixの環境変数はフロントエンドへ公開するように変更。
また、次のバージョンではコンポーネント内のテキストを自動的にHTMLエスケープするよう変更予定。


Node v17.6.0 (Current) | Node.js

nodejs.org/en/blog/release/v17.6.0/

node.js ReleaseNote

Node.js 17.6.0リリース。
StreamにIterator helperのmapなどをメソッドを追加すると壊れるモジュールがあったため、仕様への準拠を一時的にrevert。
--experimental-https-modulesのフラグ付きでHTTP URLをESMモジュールとしてロードできるように。
またprocess.on("multipleResolves", ...)がDeprecatedとなった。


Release v1.8.0 · reduxjs/redux-toolkit

reduxjs/redux-toolkit/releases/tag/v1.8.0

redux library ReleaseNote

Redux Toolkit v1.8.0-rc.0リリース。
新しい非同期MiddlewareとしてcreateListenerMiddlewareを追加、configureStoreの型定義の改善など


アーティクル


What's New In DevTools (Chrome 99) - Chrome Developers

developer.chrome.com/blog/new-in-devtools-99/

Chrome article debug

Chrome 99の開発者ツールの変更点について。
WebSocketsのThrottilingに対応、Reporting APIのパネルを追加、ANSI escape codeを使ったコンソールログのスタイリングをサポートなど


How to publish Deno modules to NPM

deno.com/blog/dnt-oak

deno node.js npm article

Denoで書かれたライブラリをNode.js向けにnpmへ公開する方法について。
HTTPフレームワークであるoakをdntを使ってNode.jsでも動かすように変換して公開した方法について


A Complete Guide to CSS Cascade Layers | CSS-Tricks - CSS-Tricks

css-tricks.com/css-cascade-layers/

CSS article

CSS Cascade Layersの解説記事。
Cascade Layersの基本的な使い方、Important layers、Layerの優先度、sub layerについてなど


サイト、サービス、ドキュメント


microsoft/TypeScript-Compiler-Notes: A repo containing notes about the TypeScript Compiler codebase

github.com/microsoft/TypeScript-Compiler-Notes

TypeScript document

TypeScriptのコンパイラーについてのメモをまとめたリポジトリ。
重要な変更のPRのまとめ、コンパイルプロセスの解説やContributeする方法ついてなど書かれている


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


JoshuaKGoldberg/TypeStat: Converts JavaScript to TypeScript and TypeScript to better TypeScript.

github.com/JoshuaKGoldberg/TypeStat

JavaScript TypeScript Tools

JavaScriptのコードにTypeScriptの型をつけてTypeScriptのコードベースに変換するツール


xataio/screenshot: A zero-dependency browser-native way to take screenshots powered by the native web MediaDevices API.

github.com/xataio/screenshot

JavaScript library Image browser

MediaDevices.getDisplayMediaを使ったスクリーンショットライブラリ。
画面の表示そのものをキャプチャ画像として取得できる


leafac/caxa: 📦 Package Node.js applications into executable binaries 📦

github.com/leafac/caxa

node.js Tools

Node.jsアプリケーションを単一の実行バイナリにパッケージングするツール。
Node.jsとアプリを含む自己解凍型アーカイブとして扱うことで、fsなどへのpatchをせずにパッケージングしている


書籍関係


vinodotdev/node-to-rust

github.com/vinodotdev/node-to-rust/

JavaScript Rust book

JavaScriptユーザ向けのRust入門書


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