Deno v2.2のリリースタイミングと直近の変更について

Deno公式のXアカウントで、Deno v2.2のリリースが来週に行われる予定であることが発表されています:

直近でDeno v2.2に導入予定と思われる機能がいくつかマージされているため、紹介します。

deno lintのJavaScriptプラグインサポート

昨年の末頃から開発が進められていたdeno lintのJavaScriptプラグインmainブランチへマージされました。

まだリリースはされていませんが、canaryバージョンであれば試すことができます。

先程のDeno公式のXアカウントの投稿にも動画が掲載されていますが、プラグインを利用する際は、Deno.lint.Pluginを実装したオブジェクトをdefault exportしたファイルもしくはJSR/npmパッケージをdeno.jsonlint.pluginsで指定することで有効化することができます。

{
  "lint": {
    "plugins": [
      // ローカルプラグイン
      "./lint-plugin.ts",

      // jsrで公開されているプラグインも指定できます
      "jsr:@uki00a/deno-lint-plugin-extra-rules@0.1.0"
    ]
  }
}

lint.pluginsでプラグインを設定しておくと、deno lintの実行時に自動的に対象のプラグインも適用されます:

$ deno lint main.js                            
error[deno-lint-plugin-extra-rules/no-env-to-object]: `Deno.env.toObject()` requires full `--allow-env` permission.
 --> /home/uki00a/ghq/github.com/uki00a/deno-sandbox/main.js:3:13
  | 
3 | const env = Deno.env.toObject();
  |             ^^^^^^^^^^^^^^^^^
  = hint: Recommended to use `Deno.env.get()` or similar.

  docs: https://docs.deno.com/lint/rules/deno-lint-plugin-extra-rules/no-env-to-object


Found 1 problem
Checked 1 file

node:sqlite

Denoにnode:sqliteモジュールを実装するPRがmainブランチへマージされています:

インメモリーデータベース(:memory:)を利用する場合を除いて、該当のデータベースファイルに対する読み込み(--allow-read)と書き込み権限(--allow-write)を与える必要があります:

import { join } from "node:path";
import { DatabaseSync } from "node:sqlite";

const denoDir = Deno.env.get("DENO_DIR");
const db = new DatabaseSync(join(denoDir, "check_cache_v2"));
const stmt = db.prepare("SELECT * FROM tsbuildinfo");
const rows = stmt.all();
for (const row of rows) {
  console.info(row.specifier);
}
db.close();

deno outdatedで依存関係の対話的な更新がサポート

deno outdatedコマンドで依存関係を対話的に更新できるようにする機能が導入され、mainブランチにマージされています:

--interactiveオプションを指定することで、各依存パッケージとアップデート先のバージョンなどが表示され、対話的に各パッケージをアップデートできるようです:

$ deno outdated --update --interactive
? Select which packages to update (<space> to select, ↑/↓/j/k to navigate, a to select all, i to invert selection, enter to accept, <Ctrl-c> to cancel)
❯ ○ jsr:@hono/hono       4.6.14 -> 4.7.0
  ○ npm:@nestjs/common   10.4.4 -> 10.4.15
  ○ npm:@nestjs/core     10.4.4 -> 10.4.15
  ○ jsr:@oak/oak         17.1.0 -> 17.1.4

typescript-runtime-type-benchmarksにDenoが追加

typescript-runtime-type-benchmarksという各種バリデーションライブラリ向けのベンチマークを掲載しているサイトにDenoによる測定結果が追加されています:


Hono v4.7.0

Hono v4.7.0がリリースされています。以下のモジュールが追加されているようです:

モジュール概要
hono/proxy特定のエンドポイントをリバースプロキシーとして運用するためのヘルパー
hono/language多言語対応向けのミドルウェア
hono/jwkJWKベースの認証ミドルウェア

また、@hono/standard-validatorというStandard Schemaをベースとしたバリデーション機能を提供するミドルウェアが公開されています。