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.Listenerrefunrefメソッドが追加 (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/csvnodeモジュールへの機能の追加が行われています。

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.tsultraHandlerが公開されました。


https://github.com/exhibitionist-digital/ultra/releases/tag/v0.8.0

Postgres.js

DenoとNode.jsの両方をサポートするPostgreSQLクライアント