Deno v2.2.3
Deno v2.2.3がリリースされています。
deno lint
プラグインシステムにおけるセレクターの改善
セレクターにおいて、以下のように特定のプロパティを保持するノードのみの問い合わせがサポートされています (#28324)
const plugin: Deno.lint.Plugin = {
name: "sample-plugin",
rules: {
"some-rule": {
create: (ctx) => {
const visitor = {
".callee": (node) => {
// `.callee`を保持するNodeのみを問い合わせる
},
};
return visitor;
},
},
},
};
また、セレクターの構文における:has()
/:is()
/:where()
/:not()
や属性に対する正規表現によるマッチング (例: MemberExpression[property.name=/Object/]
)がサポートされています (#28348, #28340)
これらの機能の追加に合わせて、公式ドキュメントも改善されています (https://github.com/denoland/docs/pull/1508)
プラグイン実行時のパーミッションの取り扱いの変更
プラグインの実行時に--no-prompt
が有効化されるよう挙動が変更されています (#28305)
deno lsp
とdeno lint
でJavaScriptプラグインを実行する際の方式を統一することを目的とした変更のようです。
現状、deno lint
においては--allow-read
などのパーミッションフラグを指定する方法はありませんが、要望はすでに挙げられているようです:
プラグインに関する型定義の修正
Deno.lint.PropertyDefinition.key
の型定義にDeno.lint.PrivateIdentifier
が追加されています (#28358)
また、Deno.lint.FixData
が削除され、Deno.lint.Fix
を使用するよう統一されています (#28344)
プラグインシステムに関するバグの修正
Deno.lint.ObjectPattern
がTSESTreeに準拠するよう修正されています (#28359)
また、Deno.lint.ExportAllDeclaration
においてexported
とsource
が逆に設定されていた問題が修正されています (#28357)
Node.js互換性の改善
"module.exports"
ESM形式のモジュールをrequire()
で読み込んだ際に、"module.exports"
という名前でexport
されている要素があった場合、Node.jsと同様にそれが返却されるよう修正されています (#28376)
また、CommonJSモジュールをimport
した際に、module.exports
キーが定義されるよう挙動が改善されています (#28373)
// sample.cjs
module.exports = 123;
// sample.mjs
import * as mod from "./sample.cjs";
console.info(mod); // [Module: null prototype] { default: 123, "module.exports": 123 }
node:sqlite
StatementSync#get
を呼ぶと、データベースがロックされたままとなってしまう問題が修正されています (#28298)
deno lsp
- 変数をリネームする際の挙動の改善
deno lsp
で変数をリネームする際の挙動が改善されています (#28327)
例えば、以下のケースにおいてhost
をhostname
にリネームした際に…
async function fetchUsers({host, port}: FetchUserOptions) {
const res = await fetch(`https://${host}:${port}/api/users`);
// ...
}
v2.2.2においては、以下のようにリネームされてしまっていたようです:
async function fetchUsers({hostname, port}: FetchUserOptions) {
const res = await fetch(`https://${hostname}:${port}/api/users`);
// ...
}
このリリースでは、以下のようにリネームされるよう修正されています:
async function fetchUsers({host: hostname, port}: FetchUserOptions) {
const res = await fetch(`https://${hostname}:${port}/api/users`);
// ...
}
OpenTelemetry - Tracer#startActiveSpan
に関する修正
モジュールのトップレベルでTracer#startActiveSpan
を呼ぶと、エラーが発生する問題が修正されています (#28323)
deno_std
のリリース
deno_std
がリリースされています (release-2025.03.04)
@std/cli@1.0.14
@std/cli@1.0.14がリリースされています。
@std/cli/unstable-progress-bar
- インターバルの調整
ProgressBar
の再描画に関するインターバルが200msから1sに変更されています (#6402)
@std/fs@1.0.14
@std/fs@1.0.14がリリースされています。
Node.jsサポートの改善
Node.jsサポートの改善に向けて、以下のモジュールが追加されています:
@std/fs/unstable-remove
(remove()
とremoveSync()
が提供されます)@std/fs/unstable-umask
(umask()
が提供されます)@std/fs/unstable-utime
(utime()
とutimeSync()
が提供されます)@std/fs/unstable-mkdir
(mkdir()
とmkdirSync()
が提供されます)@std/fs/unstable-copy-file
(copyFile()
とcopyFileSync()
が提供されます)@std/fs/unstable-truncate
(truncate()
とtruncateSync()
が提供されます)@std/fs/unstable-read-text-file
(readTextFile()
とreadTextFileSync()
が提供されます)
@std/tar@0.1.6
@std/tar@0.1.6がリリースされています。
mode
/uid
/gid
の取り扱いの変更
TarStream
及びUntarStream
においてmode
/uid
/gid
の3つが10進数ではなく8進数で取り扱われるよう修正されています (#6440)
@std/text@1.0.11
@std/text@1.0.11がリリースされています。
@std/text/unstable-reverse
が追加
新規モジュールとして@std/text/unstable-reverse
が追加されています。Unicodeに基づいて文字列を反転するreverse()
が提供されています (esreverをベースに実装されているようです)
@std/uuid@1.0.5
@std/uuid@1.0.5がリリースされています。
@std/uuid/v1
のバグ修正
rng
オプションを指定した場合、適切なUUIDが生成されない問題が修正されています。
Nitro v2.11.0
Nitro v2.11.0がリリースされています。
Deno v2との互換性の改善やデータベースレイヤーにおけるnode:sqlite
のサポートなどが実施されているようです。
Platform Node.js compat
Platform Node.js compatというページにおいて、Deno DeployやCloudflare Workers, Netlify Edgeなどの各プラットフォームにおけるNode.jsとの互換性について掲載されています:
前述したNitroにおいて、各プラットフォーム向けのプリセットの開発を行いやすくすることが目的のようです。