Fork me on GitHub

2020-12-01のJS: Workbox v6.0.0、TS auto mock、TypeScriptToLua

Edit on GitHub 編集履歴を見る

JSer.info #516 - Service WorkerライブラリであるWorkbox 6.0.0がリリースされました。

workbox-webpack-pluginのwebpack 5の対応が含まれています。
大きめな変更としてworkbox-strategiesのStrategy/Pluginの仕組みの変更がされています。
カスタムStrategyを作る場合はStrategyというbase classを継承して書くようになり、これに合わせてライフサイクルメソッドなどが追加されています。

またWorkboxのレシピをライブラリとして利用できるworkbox-recipesパッケージが追加されています。

その他には、WorkboxのskipWaitingはDeprecatedとなり、Service Workerのself.skipWaiting()を使うのを推奨するようになるといった変更も含まれています。


Typescript-TDD/ts-auto-mockは、TypeScriptの型定義から実行時にモックデータを作成するツールです。

TypeScriptの型はRuntimeには残らないため、TypeScriptのコンパイラをラップしたttypescriptts-patchなどを経由して実行する必要があります。

また、同じ仕組みを使ったJasmineJest向けのライブラリ/設定も用意されています。


TypeScriptToLuaは、TypeScriptのコードをLuaに変換するツールキットです。

TypeScriptで書いたコードをLuaに変換することで、Luaでの開発が必要な場合にもTypeScriptの型や関連するJavaScriptのエコシステムを利用できるようにすることが目的です。
既存のLuaコードとの連携は、TypeScriptの型定義ファイルをインターフェースとして利用することで解決しています。

  • Lua Types
    • LuaのStarndard Libraryの型定義

仕組みとしては、TypeScriptのASTからLua ASTに変換し、このLua ASTからLuaのコードを生成しています。
また、Array.prototype.concatといったJavaScriptのビルドインオブジェクトをSelf Hostで実装しています。
Playgroundで試してみると分かりますが、[1].concat(2)のようなコードを変換すると__TS__ArrayConcatのようなLua向けのpolyfillに差し替えされてからLuaのコードに変換されていることが分かります。

また、PluginsなどもTypeScriptで書けるようになっているようです。


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

JSer.info Sponsors

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


ヘッドライン


Release v5.0.0 · typicode/husky

github.com/typicode/husky/releases/tag/v5.0.0

JavaScript git Tools ReleaseNote

git hook管理ツールのhusky 5.0.0リリース。npm install husky@nextでインストールできる。
ライセンスをMITからLicense Zero Parity + MITに変更。
Git 2.9+のcore.hooksPathを使ったGit Hookの仕組みに変更、インストール時に自動でHook有効化はせずに明示的にhusky installで有効化するように変更など


Storybook 6.1

storybook.js.org/blog/storybook-6-1/

JavaScript UI Tools ReleaseNote React Angular

Storybook 6.1リリース。
ビルドパフォーマンスの改善、Asynchronous loadersの追加、React 17の対応、Angular 11の対応など


Node v12.20.0 (LTS) | Node.js

nodejs.org/en/blog/release/v12.20.0/

node.js ReleaseNote

Node.js 12.20.0リリース。
Node.js 14からのbackportが中心。
fs.FSWatcherref()unref()を追加、http.Agentschedulingオプションの追加、package.jsonでexports patternsのサポートなど


Release 3.8.0 - 2020.11.26 · zloirock/core-js

github.com/zloirock/core-js/releases/tag/v3.8.0

JavaScript polyfill library ReleaseNote

core-js 3.8.0リリース。
Array#atNumber.rangeArray.filterOutArray#uniqueByの追加など


Release Workbox v6.0.0 · GoogleChrome/workbox

github.com/GoogleChrome/workbox/releases/tag/v6.0.0

ServiceWorker ReleaseNote JavaScript library

Workbox 6.0.0リリース。
webpack 5の対応、Strategy/Pluginの仕組みの変更、workbox-recipesパッケージの追加など。
WorkboxのskipWaitingはDeprecatedとなり、Service Workerのself.skipWaiting()を使うのを推奨するようになるなど


アーティクル


How To Secure Node.js Applications with a Content Security Policy | DigitalOcean

www.digitalocean.com/community/tutorials/how-to-secure-node-js-applications-with-a-content-security-policy

node.js CSP article

Node.jsアプリでのCSP実装についてのチュートリアル記事。
CSPの設定方法、フォントや画像などの埋め込み許可の例、Nonceの設定、CSP Reporting APIとレポートの受け取り方法についてなど


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


Operator Lookup - Search JavaScript operators

www.joshwcomeau.com/operator-lookup/

JavaScript search ECMAScript Tools

JavaScriptの演算子の意味を検索できるサイト


funbox/harold: Compares frontend project bundles

github.com/funbox/harold

JavaScript Tools

プロジェクトのフロントエンド周りのファイルサイズなどのスナップショットを取り、スナップショット同士を比較できるツール。
プロジェクトのファイルサイズやビルド時間の変化などを計測できる


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


Typescript-TDD/ts-auto-mock: Typescript transformer to unlock automatic mock creation for interfaces and classes

github.com/Typescript-TDD/ts-auto-mock

TypeScript plugin test

TypeScriptの型定義から自動的にモックをつくるTypeScript Plugin。
ttypescriptとts-patchを経由したTypeSriptのtransformとして動作する


optoolco/tonic: A Low Profile Component Framework. Stable, Minimal, Auditable, and Build-Tool-Free.

github.com/optoolco/tonic

WebComponents library

Web Componentsフレームワーク。
コンポーネントの作成、htmlメソッドでのJSXライクなテンプレート、Proposでの値渡し、State、ライフサイクルイベントをもつ。
ビルドせずに使える。


Package Phobia

packagephobia.com/

JavaScript node.js npm webservice

npmパッケージの依存を含めたインスールサイズ、パッケージのみのサイズを取得できるウェブサービス


lukeed/uvu: uvu is an extremely fast and lightweight test runner for Node.js and the browser

github.com/lukeed/uvu

node.js JavaScript browser testing library

実行速度を目的にしたテストフレームワーク。
テストファイル自体が実行でき、Native ES Modulesのサポート、ブラウザでも動作する。
testsuiteメソッド、uvu/assertモジュールを持っている


FormidableLabs/urql: The highly customizable and versatile GraphQL client with which you add on features like normalized caching as you grow.

github.com/FormidableLabs/urql

GraphQL JavaScript library

GraphQLクライアントライブラリ。
GraphQLへのリクエスト、キャッシュ、Reactなどのライブラリに対応している。
Exchangesという拡張の仕組みやデバッグ用の開発者ツールを持っている


panva/jose: Universal "JSON Web Almost Everything" - JWA, JWS, JWE, JWT, JWK with no dependencies

github.com/panva/jose

JWT JavaScript library

UniversalなJWA, JWS, JWE, JWT, JWKの実装ライブラリ。
ブラウザではWeb Cryptography APIを利用している。


TypeScriptToLua

typescripttolua.github.io/

TypeScript Lua Tools

TypeScriptで書いてLuaのコードを出力するツール。
既存Luaコードに対しては型定義ファイルで対応し、TypeScriptを使った型安全とIDEサポートを得た状態でLuaのコードを生成できる。


talentlessguy/tinyhttp: ⚡ 0-legacy, tiny & fast web framework as a replacement of Express

github.com/talentlessguy/tinyhttp

express JavaScript library

express-likeなAPIを持つNode.jsウェブフレームワーク。
express middlewareとの互換性を持ち、async functionをサポートしている


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