Deno v1.20.5
Deno v1.20.5がリリースされました。
deno lspの新機能
deno lspでTesting APIがサポートされています (https://code.visualstudio.com/api/extension-guides/testing)
vscodeでTesting: Focus on Test Explorer Viewコマンドを実行すると、テストファイルに含まれるテストケースの一覧を表示できます。
Deno.Listenerにrefとunrefメソッドが追加 (unstable)
unref()が呼ばれたListenerはプロセスの終了をブロックしなくなります (タイマにDeno.unrefTimerを呼んだときと同様の挙動をします)
後述するdeno_std/node/netでのServer.ref()の実装で利用されています。
バグ修正
SubtleCrypto.exportKey()でextractable: falseに設定されたキーをエクスポートできてしまう問題が修正されました (https://github.com/denoland/deno/issues/14215)--compatを指定してdeno installを実行した際に、--compatフラグが維持されない問題が修正されました。
https://github.com/denoland/deno/releases/tag/v1.20.5
deno_std v0.134.0
deno_std v0.134.0がリリースされました。
encoding/csvやnodeモジュールへの機能の追加が行われています。
encoding/csv
CSVStreamが追加されました。
import { CSVStream } from "https://deno.land/std@0.134.0/encoding/csv/stream.ts";
const file = await Deno.open("path/to/data.csv");
const stream = file.readable
.pipeThrough(new TextDecoderStream())
.pipeThrough(new CSVStream());
for await (const record of stream) {
console.log(record);
}
node
child_process:ChildProcess.kill()でsignalパラメータがサポートされました。net:Server.ref()やServer.unref()がサポートされました。fs:fs.write()などで同じデータが重複して書き込まれてしまうことのある問題が修正されました。
https://github.com/denoland/deno_std/releases/tag/0.134.0
Ultra v0.8.0
ReactベースのフレームワークであるUltraのv0.8.0がリリースされました。
React v18のサポート
React v18がサポートされています。
また、disableStreaming環境変数に1を設定することで、SSR実行時のストリーミングを無効化できるようになっています。
APIルートのサポート
src/apiディレクトリ配下でRequestを受け取りResponseまたはPromise<Response>を返却する関数をdefault exportすることで、APIを定義することができます。
deno.jsonとの統合
deno.jsonがサポートされました。
deno.jsonでのimportMapの指定が必須になっているため、注意が必要そうです。
サードパーティモジュールのベンダリング
ultra/vendor.tsによって依存しているサードパーティモジュールをローカルに保存できるようになりました。
このスクリプトを実行すると、.ultra/vendorディレクトリへサードパーティモジュールが書き込まれます。
書き込まれたサードパーティモジュールはvendorMap.json経由で読み込むことができます。
Oakとの互換性について
Oakとの互換性を維持するために、ultra/mod.tsでultraHandlerが公開されました。
https://github.com/exhibitionist-digital/ultra/releases/tag/v0.8.0
Postgres.js
DenoとNode.jsの両方をサポートするPostgreSQLクライアント