Deno v2.5.2
Deno v2.5.2がリリースされています。
deno lsp
deno lspでdescribe()/it()で定義されたテストの検出と実行がサポートされています (#30802)
deno bundle
deno bundle --watchにHTMLエントリーポイントを指定している場合、変更の検出時に出力されたHTMLファイルが適切にビルドされない問題が修正されています (#30790)
また、deno bundleで--frozenのサポートが追加されています (#30825)
deno coverage
Worker内のコードに対してもカバレッジが計測されるよう改善されています (#30807)
TypeScript
compilerOptions.pathsのサポート
deno checkコマンドでcompilerOptions.pathsがサポートされています (#30766)
Uint8Arrayに Base64/Hex 関連のAPIに関する型定義が追加
Deno v2.5.0におけるV8のアップデートに伴い、下記APIの型定義が追加されました (#30686):
- Uint8Array#toBase64()
- Uint8Array#setFromBase64()
- Uint8Array#toHex()
- Uint8Array#setFromHex()
- Uint8Array.fromBase64()
- Uint8Array.fromHex()
Promise<undefined> から Promise<void> への変更
TypeScript 公式の型定義に合わせて、以下の各プロパティーの型定義が Promise<undefined> から Promise<void> へ変更されています (#30820):
ReadableStreamGenericReader#closedWritableStreamDefaultWriter#closedWritableStreamDefaultWriter#readyWebTransport#ready
WebSocket
Deno 2.5.1からWebSocketの接続時にUser-Agentヘッダーが送信されなくなっていた問題が修正されています (#30758)
node:fs
statfs()でpath引数にBufferの指定がサポートされています (#30662)
また、readFile()でencoding: "binary"の指定時にStringを返すよう挙動が修正されています (#30830)
node:crypto
timingSafeEqual()にArrayBufferのサポートが追加されています (#30773)
Deno の直近の変更やPRについて
パーミッションブローカー (DENO_PERMISSION_BROKER_PATH)
パーミッションブローカー という機能を実装するPRがマージされています。
DENO_PERMISSION_BROKER_PATHという環境変数が追加されており、この環境変数へUNIXドメインソケットのパスを指定することで、パーミッションブローカーが有効化されます。アプリケーションでパーミッションを要求するAPIが実行された際に、まずDenoはそのUNIXドメインソケットへJSON形式でメッセージを送信します (リクエストのスキーマ: cli/schemas/permission-broker-request.v1.json)
その後、DenoはUNIXドメインソケットからレスポンスが返却されるまで待機します (レスポンスのスキーマ: cli/schemas/permission-broker-response.v1.json)
レスポンスのresultフィールドに"deny"が設定されていた場合、Denoは要求されたAPIの実行を拒否します。
この機能は unstable という扱いのようなのでDeno v2.5.3あたりでリリースされる可能性がありそうです。
deno approve-scriptsコマンド
まだマージはされていませんが、deno approve-scriptsというコマンドを実装する PR が作成されています:
⚠️ このコマンドはまだ実装途中であり、本機能の説明には5ff6aeeのコミット時点の実装に基づいた推測も含まれます。
このコマンドはライフサイクルスクリプトを提供するnpmパッケージの管理を行いやすくすることを目的としたもののようです。
まず、Denoが未実行のライフサイクルスクリプトを持つnpmパッケージを検出すると、node_modules/.deno/.state.tomlのignored-scriptsに該当のパッケージを記録してくれるようです。
その後、deno approve-scripts コマンドの引数としてnode_modules/.deno/.state.tomlに記録されたnpmパッケージを指定すると、node_modules/.deno/.state.tomlのignored-scriptsから該当のパッケージが削除されます。
$ deno approve-scripts npm:esbuild
今回の修正において、deno.jsonにinstall.approvedScriptsというフィールドが追加されており、ここにdeno approve-scriptsで許可したnpmパッケージを記録する想定のようです。deno.jsonのinstall.approvedScriptsに記録されたnpmパッケージについては、ライフサイクルスクリプトの実行が自動的に許可されるものと推測されます。
deno.jsonへのprivate: trueフィールドの追加
まだマージはされていませんが、deno.jsonにprivateフィールドを追加するPRが作成されています:
package.jsonにおける同名フィールドと同様に、deno.jsonでprivate: trueを設定しておくと、Denoは該当のパッケージをdeno publishの対象から除外してくれるようです。ワークスペース機能などと併用すると便利そうです。
この機能はDeno v2.6.0のマイルストーンに含まれています。
Deploy EA Databases へのデータベースのプロビジョニング機能のサポートについて
Deno Deploy EAに関するドキュメントが更新されています。
Deploy EA Databasesにおいてデータベースのプロビジョニング機能が追加されたようで、現時点では Deno KV のみがサポートされている状況であるものの、今後、Prisma Postgresのサポートも追加が行われる想定のようです。