Deno v1.39.3

Deno v1.39.3がリリースされています。

Node.js互換性の改善

  • node:fs: cp/cpSync/promises.cpが実装されました。
  • deno.jsonなどでnodeModulesDir: falseが設定されている場合、package.jsonがある場合でもnpmパッケージを必要に応じてダウンロードするように挙動が変更されました。

deno compile

deno compileコマンドが--unstable-kvなどの--unstable-*オプションに対応しました。

deno lsp

Deno.testのテスト名にテンプレートリテラルが与えられているテストケースがTest code lensで検出されない問題が修正されています。

Web API

SubtleCrypto#importKeySubtleCrypto#generateKeyでP-521がサポートされています。

また、EventSourceの型定義が追加されています。

Androidサポート

Androidでのビルドがサポートされています。


https://github.com/denoland/deno/pull/19437

jsr:

⚠️jsr:は開発中の機能のため、基本的にまだ利用はできません。

deno_graphに導入された“fast check”という仕組みを利用して、jsr:からダウンロードされたモジュールの型チェックを高速化する仕組みが導入されているようです。対象パッケージのpublic APIとその型情報のみを含むグラフを構築することで、型チェックの高速化が図られているようです。

feat(unstable): fast subset type checking of JSR dependencies (denoland/deno#21873)

deno_std v0.212.0

deno_std v0.212.0がリリースされました。

非推奨モジュール・APIの削除

std/signal

非推奨化されていたstd/signalモジュールが削除されました。

std/log

  • std/log/levels.ts: LogLevelsの数値キーが削除されました。(getLevelByNameへの移行が推奨されています)
  • ログレベルをnumber型で取り扱っていた箇所がLogLevel型で取り扱われるように修正されています。

std/semver

以下のAPIやファイルが削除されています。

削除対象移行先
SemVerComparatorComparator
canParse(version: SemVer): booleancanParse(version: string): boolean
std/semver/cmp.tsstd/semver/compare.ts
std/semver/is_semver_comparator.tsstd/semver/is_semver_range.ts
parse(version: SemVer): SemVerparse(version: string): SemVer
std/semver/rcompare.tsstd/semver/compare.ts

std/encoding/base32.ts

非推奨化されていたbyteLength()が削除されています。

既存APIの非推奨化・リネーム

std/io

std/io/types.d.tsstd/io/types.tsにリネームされています。

また、std/streamsで提供されていた以下のモジュールについて、std/ioへ移動した上で非推奨化が解除されています。

移行元移行先
std/streams/read_all.tsstd/io/read_all.ts
std/streams/copy.tsstd/io/copy.ts
std/streams/readable_stream_from_reader.tsstd/io/to_readable_stream.ts
std/streams/write_all.tsstd/io/write_all.ts

Streams APIではカバーすることが難しい機能などもありそうなため、IO関連の機能をstd/ioで改めて管理することが検討されたようです。

suggestion: re-consider the deprecation of some IO-related APIs (denoland/deno_std#4120)

std/log

  • std/log/levels.ts: LogLevels.WARNINGが非推奨化されています。
  • std/log/handlers.tsが各種ハンドラーごとにファイルが分割されています。(std/log/file_handler.ts, std/log/console_handler.tsなど)
  • Loggerwarningメソッドがwarnにリネームされています。

std/semver

以下のファイルが非推奨化されています。

対象ファイル移行先
std/semver/comparator_format.tsComparatorformatRange
std/semver/comparator_intersects.tsrangeIntersects
std/semver/comparator_max.tsrangeMax
std/semver/comparator_min.tsrangeMin
std/semver/is_comparator.tsisSemVerRange
std/semver/parse_comparator.tsparseRange
std/semver/test_comparator.tstestRange
std/semver/try_parse_comparator.tstryParseRange
std/semver/sort.tscompare
std/semver/range_format.tsformatRange

std/fs/ensure_dir.ts: パーミッションの取り扱いの改善

対象のパスがすでに存在する場合は、--allow-read権限のみが要求されるように挙動が改善されました。

std/text/case.tsが追加

文字列のキャメルケースやPascalケース形式などへの変換機能が提供されています。

import { toCamelCase, toKebabCase } from "https://deno.land/std@0.212.0/text/case.ts";

toCamelCase("JavaScript"); // => "javaScript"
toKebabCase("TypeScript"); // => "type-script"

std/net/get_available_port.ts: preferredPortオプションが追加

このオプションが指定された場合、まずそのポートの取得を試みます。取得に失敗した場合は、従来通り、システムの空きポートを返却します。

import { getAvailablePort } from "https://deno.land/std@0.212.0/net/get_available_port.ts";

const port = await getAvailablePort({ preferredPort: 3000 });

Deno.serveHttpの非推奨化

Deno.serveが安定化されたため、Deno.serveHttpを非推奨化するPRが作成されています。

feat: Deprecate ‘Deno.serveHttp’ API (denoland/deno#21874)

今のところ、Deno v1.40でのリリースが検討されているようです。