2024/12/23〜2024/12/29の最新情報

permission sets in deno.json まだDraft状態ですが、deno.jsonでパーミッションを管理する機能を追加するPRが作成されています: permission sets in deno.json #27483 このPRではdeno.jsonにpermissionSetsという項目が追加されており、複数のパーミッションセットを定義できるようです: { "permissionSets": { "default": { "read": ["data"], "net": ["http://localhost:3000/api"] }, "build": { "read": ["data"], "write": ["dist"] } } } Denoを実行する際に--permission-setオプションを指定することで、deno.jsonで定義されたパーミッションセットを適用する想定のようです: # デフォルトでは`default`という名前がついたパーミッションセットが適用されるようです $ deno run --permission-set main.ts # buildという名前がついたパーミッションセットを有効化します $ deno run --permission-set=build scripts/build.ts deno lint - JavaScriptプラグインでのセレクターのサポートについて deno lintのJavaScriptプラグインにセレクターの仕組みを実装するPRがマージされています: feat(unstable): support selectors in JS lint plugins #27452 サポートされている構文については上記のPRに詳しく記載されていますが、以下のように柔軟にノードの問い合わせを行うことができるようです:...

December 29, 2024

2024/12/16〜2024/12/22の最新情報

QUICとWebTransport APIのサポートについて QUICのサポート DenoのmainブランチにQUICを実装するPRがマージされています。Deno v2.2あたりでリリースされる可能性がありそうです: feat(unstable): Implement QUIC #21942 quinnをベースに以下のAPIが実装されており、利用には--unstable-netの指定が必要なようです: Deno.connectQuic Deno.listenQuic Deno.QuicBidirectionalStream (Deno.QuicConn#createBidirectionalStreamで作成できます) Deno.QuicConn (Deno.connectQuicなどから返却されます) Deno.QuicListener (Deno.listenQuicから返却されます) Deno.QuicReceiveStream (Deno.QuicConn.incomingUnidirectionalStreamsで取得できます) Deno.QuicSendStream (Deno.QuicConn#createUnidirectionalStreamで作成できます) WebTransport APIのサポート まだマージはされていませんが、先程のQUICサポートをベースにWebTransport APIを実装するPRも作成されています: feat(unstable): WebTransport #27431 このPRではWebTransport APIに加えてDeno.upgradeWebTransportというWebTransportサーバーを立てるための独自のAPIも実装されているようです。引数にDeno.QuicConnを渡すことで、WebTransportオブジェクトを返却してくれます。 WebTransport APIについてもQUICと同様に、利用するには--unstable-netの指定が必要なようです。 deno lint - JavaScriptプラグインを実行するための内部APIが追加 以前に紹介したdeno lintでのプラグインサポートの件についてですが、ひとまずDeno[Deno.internal].runLintPluginという内部的なAPIの実装(今のところdeno testコマンドの実行時以外では参照できないよう制御されています)がmainブランチへマージされています。 feat(unstable): add JS linting plugin infrastructure #27416 このPRではまだCLIオプションなどは実装されていないためまだ一般的に利用できる状況ではなさそうですが、JavaScriptプラグインに関するテストコードが追加されており、今後、プラグインを書く際などの参考になりそうです。 deno_stdのリリース deno_stdのリリースが行われています: release-2024.12.18 release-2024.12.20 @std/cli@1.0.9 @std/cli@1.0.9がリリースされています。 promptMultipleSelectが追加 以前に追加されたpromptSelect()に続いて、promptMultipleSelect() (@std/cli/unstable-prompt-multiple-select)というAPIが追加されています。promptMultipleSelect()は選択肢から複数の値を選択できます。 @std/fs@1.0.7 & @std/fs@1.0.8 @std/fs@1....

December 22, 2024

2024/12/09〜2024/12/15の最新情報

Deno v2.1.4 Deno v2.1.4がリリースされています。 Node.js互換性の改善 deno install --entrypointの挙動の改善と--unstable-npm-lazy-cachingの導入 今までDenoはnpmパッケージに依存したスクリプトを実行する際に、package.jsonで指定されたパッケージをすべてインストールしていました。 このリリースではdeno install --entrypointの挙動が変更され、指定したエントリポイントから依存されているnpmパッケージのみがキャッシュされるよう改善されています。 他のコマンドでもdeno install --entrypointと同様の振る舞いをさせたい場合は、--unstable-npm-lazy-cachingまたはDENO_UNSTABLE_NPM_LAZY_CACHINGを指定することで有効化できます。 feat(unstable): support caching npm dependencies only as they’re needed #27300 パスに@が含まれるモジュールを提供するパッケージの取り扱いの改善 npmパッケージからファイル名に@が含まれるモジュールをimportしようとするとエラーが発生する問題が修正されています。 fix: do not error when specifier subpath has an @ symbol #27290 node:fs readFile()でファイルディスクリプターの指定がサポートされています。 fix(ext/node): accept file descriptor in fs.readFile(Sync) #27252 node:v8 serialize()とdeserialize()でFloat16Arrayがサポートされています。 fix(ext/node): handle Float16Array in node:v8 module #27285 _http_common @mswjs/interceptorsなどのNode....

December 15, 2024

2024/12/02〜2024/12/08の最新情報

Deno v2.1.3 Deno v2.1.3がリリースされています。 deno task --recursiveオプション v2.1.0で追加された--recursiveオプションが動作していなかった問題が修正されています (--filter *を指定した場合と同様に動作します) # ワークスペース内の各パッケージで定義されたtestタスクを実行します $ deno task --recursive test fix(task): --recursive option not working #27183 (Unix環境向け) 子プロセスへのシグナルの転送がサポート Unix環境において、deno taskのプロセス向けに送信されたシグナルがタスクで起動された子プロセスへ転送されるよう挙動が改善されています。 fix(task): forward signals to spawned sub-processes on unix #27141 (Windows向け) 子プロセスの自動停止 Windowsにおいてdeno taskのプロセスを停止させた際に、deno taskによって起動された子プロセスも停止されるよう改善されています。 fix(task): kill descendants when killing task process on Windows #27163 タスクの依存関係が定義されている際の引数の取り扱いの変更 deno taskに追加の引数が渡された場合、その引数がルートのタスクにのみ渡されるよう修正されています (dependenciesで指定された子タスクには渡されません) # 例) a b cはbuildタスクにのみ渡され、dependenciesで指定された子タスクには渡されません $ deno task build a b c fix(task): only pass args to root task #27213 deno fmt HTMLファイルのフォーマットの安定性が改善 <script>タグを持つHTMLファイルに対するdeno fmtの安定性が改善されています。...

December 8, 2024

2024/11/25〜2024/12/01の最新情報

Deno v2.1.2 Deno v2.1.2がリリースされています。 WASMモジュール .wasmモジュールから提供される関数以外の要素の読み込みがサポートされています。 fix: support non-function exports in Wasm modules #26992 TypeScript deno checkコマンドでJSDocの@importタグがサポート .jsファイルにおける@importタグによる型チェックがサポートされています。 fix(check): support jsdoc @import tag #26991 resolution-mode属性のサポート TypeScriptのresolution-mode属性のサポートが追加されています。 fix(node): correct resolution of dynamic import of esm from cjs #27071 deno fmt --check - .sqlファイルに対してエラーが発生する問題の修正 .sqlファイルに対してdeno fmt --checkを実行すると、常にエラーが発生する問題が修正されています。 fix(fmt): Return None if sql fmt result is the same #27014 deno init --npm scopedパッケージのサポート deno init --npmでscopedパッケージがサポートされています (例: deno init --npm @foo/barを実行すると、@foo/create-barパッケージが実行されます)...

December 1, 2024

2024/11/18〜2024/11/24の最新情報

Deno v2.1.0 Deno v2.1.0がリリースされています。 以下に内容をまとめたため、よろしければこちらを参照いただければと思います。 Deno v2.1 Deno v2.1.1 Deno v2.1.1がリリースされています。Deno v2.1.0によって発生したリグレッションの解消が中心のようです。 --watchのバグ修正 引数なしで--watchを使うと、プロセスがパニックする問題が修正されています。 Node.js互換性 .jsファイルの取り扱いに関する修正 Deno v2.1.0における.jsファイルが誤って.tsファイルとして認識されてしまうことのある問題が修正されています。 --unstable-node-globals --unstable-node-globalsが指定された際に、globalThis.Bufferが適切な値を参照するよう修正されています。 deno task ワークスペースのルートで依存関係のあるタスクが定義されている場合、ワークスペースメンバーではなく常にルートで定義されているタスクが参照されるよう修正されています。 deno_stdのリリース deno_stdがリリースされています: release-2024.11.22 @std/http@1.0.11 @std/http@1.0.11がリリースされています。 @std/http/file-server セキュリティに関連する修正が実施されており、もしファイルサーバーを利用されている際はアップデートが推奨されます。 @std/archiveが削除 @std/archiveパッケージが削除されました。@std/tarへの移行が推奨されます。 @std/async@1.0.9 @std/async@1.0.9がリリースされています。 @std/async/unstable-retry @std/async/unstable-retryが追加されています。基本的には@std/async/retryと同様ですが、isRetriableオプションによってリトライを行うかどうかを柔軟に判断できる点が異なります。 @std/csv@1.0.4 @std/csv@1.0.4がリリースされています。 @std/csv/unstable-stringify @std/csv/unstable-stringifyが追加されています。@std/csv/stringifyとの違いとして、与えられた配列の最初の要素を元にカラム名を自動で推論してくれます。 @std/toml@1.0.2 @std/toml@1.0.2がリリースされています。 @std/toml/parse ポジティブなタイムゾーンオフセットが適切に取り扱われるよう修正が行われています。

November 24, 2024

2024/11/11〜2024/11/17の最新情報

Denoの直近の変更について 先週は特にDenoのリリースは行われていないため、直近でDenoのmainブランチにマージされている変更についていくつか紹介します。 deno task - オブジェクト形式でのタスクの定義がサポート deno.jsonでのタスクの定義においてオブジェクト形式がサポートされています。(おそらくdeno taskにおける依存関係の定義のサポートに向けた対応と思われます) { "tasks": { "test": { "command": "deno test --allow-read=. --doc", "description": "Run tests" } } } descriptionフィールドで指定した内容は、引数なしでdeno taskコマンドを実行した際のコメントとして表示されます: $ deno task Available tasks: - test // Run tests deno test --allow-read=. --doc このdescriptionフィールドの追加に伴い、引数なしでdeno taskコマンドを実行した際のdeno.jsoncで各タスクに記述されたコメントを認識してくれる機能が廃止されています: { "tasks": { // このコメントは引数なしでdeno taskを実行した際に表示されません "test": "deno test --allow-read=. --doc" } } feat(task): support object notation, remove support for JSDocs #26886 --unstable-detect-cjsの安定化 --unstable-detect-cjsが安定化されています。--unstable-detect-cjsを指定しなくても、package....

November 17, 2024

2024/11/04〜2024/11/10の最新情報

Deno v2.0.5 Deno v2.0.5がリリースされています。 Workspaces メンバーのワイルドカード形式での指定がサポート ワークスペースのメンバーの指定でワイルドカード形式がサポートされています: { "workspace": [ "./packages/*" ] } fix(workspace): support wildcard packages #26568 deno add/deno install package.jsonを更新する際の振る舞いの変更 Deno v2.0.0-rc.2では、package.jsonが存在する状態でdeno add/deno installによってnpmパッケージを追加しようとした場合、deno.jsonではなく常にpackage.jsonが更新されるよう挙動が変更されました。 Deno v2.0.5ではこの挙動が微調整され、deno.jsonとpackage.jsonの両方が検出された場合、package.jsonの配置場所がdeno.jsonよりも現在のパスに近いときだけpackage.jsonにnpmパッケージ(npm:)が追加されるよう変更されています。 fix(add): only add npm deps to package.json if it’s at least as close as deno.json #26683 deno fmt YAMLでのdeno-fmt-ignore-fileディレクティブのサポート # deno-fmt-ignore-fileから始まるYAMLファイルはdeno fmtコマンドによるフォーマット対象から除外されるように挙動が変更されています。 fix(fmt): ignore file directive for YAML files #26717 deno coverage コメントの集計対象からの除外 コメントの行がdeno coverageコマンドによる集計対象から除外されるよう振る舞いが改善されています。...

November 10, 2024

2024/10/28〜2024/11/03の最新情報

Deno v2.0.4 Deno v2.0.4がリリースされています。 deno lsp typescript.preferences.preferTypeOnlyAutoImports deno lspの設定項目としてtypescript.preferences.preferTypeOnlyAutoImportsがサポートされています。このオプションにtrueを設定すると、TypeScriptの型がAuto importされる際にimport typeが挿入されるようです。 このオプションに合わせて、以前に導入されたAuto importに関する振る舞いがデフォルトで無効化されているため、以前の振る舞いに戻したい場合は、typescript.preferences.preferTypeOnlyAutoImportsにtrueを設定する必要があります。 feat(lsp): “typescript.preferences.preferTypeOnlyAutoImports” setting #26546 (Windows) deno upgradeでのdeno lspの自動停止 Winodwsでdeno upgradeを実行した際に、実行中のdeno lspを自動で停止する機能が導入されています。 fix(upgrade): stop running deno lsp processes on windows before attempting to replace executable #26542 deno compile リダイレクトに関する取り扱いの修正 リダイレクトが発生するサードパーティモジュール(例: https://deno.land/std/http/mod.tsなど)に依存している場合、deno compileで生成した実行可能ファイルでエラーが発生する問題が修正されています。 fix(compile): regression handling redirects #26586 deno check compilerOptions.jsxImportSourceに関する修正 ソースコード中でJSXが使用されていない場合、compilerOptions.jsxImportSourceが解決されないよう挙動が改善されています。 fix(check): ignore resolving jsxImportSource when jsx is not used in graph #26548 deno add/deno install \r\nの取り扱いの修正 deno....

November 3, 2024

2024/10/21〜2024/10/27の最新情報

Deno v2.0.3 Deno v2.0.3がリリースされました。 deno lsp Interactive Inlay Hints for Types Interactive Inlay Hints for Typesが実装されています。Inlay Hintsの内容をクリックすることで、その定義元へジャンプできるようです。 feat(lsp): interactive inlay hints #26382 import-map-remap quickfix type imports (import type)に対してもimport-map-remap quickfixが利用できるよう改善されています。 fix(lsp): import-map-remap quickfix for type imports #26454 deno compile Node-APIのサポート deno compileで生成されたバイナリでNode-APIがサポートされています。 feat: support node-api in denort #26389 deno check --frozenのサポート deno checkコマンドで--frozenオプションの指定がサポートされています。 fix(check): support --frozen on deno check #26479 deno fmt --extの挙動の変更 deno fmtに--extオプションを指定した際に、引数でのファイルの指定が必須に変更されています。...

October 27, 2024