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#closed
WritableStreamDefaultWriter#closed
WritableStreamDefaultWriter#ready
WebTransport#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のサポートも追加が行われる想定のようです。