O hirunewani blog

Frontend Weekly 2024-03-22

Created at

ESM in Node.jsについての記事や、Next.js AI Chatbot 2.0について紹介する。

require(esm) in Node.js

--experimental-require-moduleフラグで、CommonJSからESMをrequireできる仕組みが入った。 Top-Level awaitの非同期をスコープから外すことで実装が進んだ。「ESMは非同期で、CJSは同期であるため、CJSはESMをロードできない」という神話があった。

おもしろポイント:“昨年、メモリ リークを修正するためにV8コードを参照していたとき、ESM自体が実際には無条件に非同期になるように設計されていないことが偶然わかりました。”

require(esm) in Node.js

const esm = require("index.mjs")

Node.jsに入る新しいCJSからESMへの読み込み方法の紹介 - hiroppy’s site

Best Practices for Writing Tests with React Testing Library

CSSからReactコンポーネントを生成するライブラリ。data属性や@scopeを利用する仕組み。

MistCSS

エディター付きのReact開発環境をブラウザーだけで実装した話

https://speakerdeck.com/steelydylan/edeitafu-kinoreactkai-fa-huan-jing-wo-burauzadakedeshi-zhuang-sitahua

  • 型テスト:TypeScript Compiler API
  • ユニットテスト:testing-library/react + jest-lite
  • リント:BiomeJS on Worker + ComLink
  • プレビュー:Service Workerをブラウザとサーバーのプロキシとして利用
  • Reactなどのインポートの省略:importmap
  • サーバーを介さないトランスパイル:IndexedDBを使ってSW側でコードを取得、Wasmでトランスパイル
  • SW上でのTSトランスパイル:swc/wasm-web

仲間

https://github.com/matsuri-tech/generate-release-notes-body-based-on-pull-requests

Conventional CommitsとCHANGELOGの自動生成でリリースのユーザ影響をわかりやすくした話 - ドワンゴ教育サービス開発者ブログ

Next.js AI Chatbot 2.0

Next.js AI Chatbot 2.0 – Vercel

一般的なものが多いが、satisfies neverは知らない人が多そう。Utility typeを配布するパッケージを利用するならともかくts-resetを使うのには懐疑的。

TypeScriptで知ってコードの安全性が上がったtips集

satisfies never以外にも引数にneverを取る関数などでも表現できる。

const assertNever = (x: never): never => {
  throw new Error("Unreachable : " + x)
}

const selectType = (type: Type) => {
  switch (type) {
    case "File":
      return "file"
		// ...
    default:
      return assertNever(type)
	    //throw new Error(type satisfies never)
  }
}

あまり目新しいものはないが、あまりCSSに興味がない人は見ておくと学びがあるかも。currentColorやaspect-ratioなどはともかくinsetや-inline/-marginなどはlinterに怒られて学んでいくといいと思う。

あなたが教わってるそのCSSテクニックはもう古い | TAKLOG

商用利用無料のアイコンをVSCode上で検索してSVGまたはJSXコードをはける拡張機能

Iconbuddy — 200K+ open source free svg icons

JavaScriptの書き方による最適化

  • 昔ながらの記述やLinterに怒られそうな記述の方がはやいことが多い。
  • ただ実行環境側で新しい記述の最適化も随時行われており、必ずしも絶対的にそうではなく、当然実行環境にも拠る。
  • またトランスパイルで記述を変更させるという手段も取られることがある。
  • 現状だとコミュニティとしては、パフォーマンスより可読性などが優先されることが多い。
  • 個人的にもパフォーマンスが気になるところだけ、チューニングとしてやれば良い派。

romgrk

Introducing deployctl, the command line interface for Deno Deploy

Redisの次期ライセンスがBSDからSSPLv1またはRSALv2に。商用利用にRedis社とのライセンス契約が必要になる。

Redis、クラウドベンダなどによる商用サービスを制限するライセンス変更を発表。今後はRedis社とのライセンス契約が必須に

理由として、Redisの商用的な売り上げの大半が、Redis社の投資やオープンソースコミュニティをコモディティ化してしまった最大手のクラウドサービスプロバイダーを通じて行われていることを上げている。

合わせて読みたい。”RIP Redis:Garantia Data社はいかにしてオープンソース史上最大の強盗を成功させたか?”

RIP Redis: How Garantia Data pulled off the biggest heist in open source history — Momento

各JavaScript RuntimeのWinterCG API互換性テーブル

Runtime compatibility across JavaScript runtimes

COBOLがAndroidで動くぞ

GnuCOBOLがついに成熟。あらゆる環境でプロプライエタリな製品と争えるように | ソフトアンテナ

さくらで運用されているPublickeyがDDoS攻撃を受けどのような対策を行なったか

Publickeyが受けたDoS攻撃、これまでの経緯と対策まとめ

続、Publickeyが受けたDoS攻撃、これまでの経緯と対策まとめ