Deno v1.33.3

Deno v1.33.3がリリースされました。

deno compileでnpmパッケージがサポート

deno compilenpm:node:URLに依存したアプリケーションの実行可能ファイルの生成がサポートされました。

利用する際は、現時点では--unstableの指定が必要です。

import chalk from "npm:chalk@5.2.0";

console.log(chalk.green.bold("Hello"));
$ deno compile --unstable --output=example main.js

$ ./example

また、deno compileによるコンパイル対象として、直接npmパッケージを指定することもできるようです。

$ deno compile --unstable --output=cowsay npm:cowsay@1.5.0

$ ./cowsay hello

Deno.serve()

レスポンスの自動的な圧縮が実装されました。

現時点ではgzipのみがサポートされています。(Content-Encoding: gzip)

それ以外には、--watchオプションと併用した際の安定性の改善が実施されています。

Deno.Command

Deno.ChildProcess#killが、システムの全実行可能ファイルに対する--allow-run権限を要求する問題が修正されました。

v1.33.2までは、例えば--allow-run=redis-cliのように特定のバイナリのみを許可している場合、Deno.ChildProcess#killで権限エラーが発生する問題があったため、このリリースで修正されています。

deno lsp

documentPreloadLimitオプションが追加されました。

これにより、deno lspがプリロードするドキュメント数をカスタマイズできます。

vscode_denoでは、v3.18.0documentPreloadLimitオプションのサポートが入っているようです。

その他

  • Deno.seekSyncDeno.seekの型定義が統一されていなかった問題が修正されました。(#19060)
  • node:module: Module.runMain()が実装されました。(ts-nodeで使用されているようです)
  • リダイレクトするリモートモジュールへの依存があった場合、deno vendorの実行時にパニックする問題が修正されました。
  • Deno.UnsafeCallbackが使用されていると、deno testがハングすることのある問題が修正されました。

deno_std v0.187.0

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

std/regexpが追加

新しいモジュールとしてstd/regexpが追加されました。

現状では、正規表現のメタ文字をエスケープするための機能が提供されています。

import { escape } from "https://deno.land/std@0.187.0/regexp/escape.ts";

const regexp = new RegExp(`^${escape("ba.")}$`);
assert(regexp.test("ba."))
assert(!regexp.test("bar"));
assert(!regexp.test("baz"));

std/collections/partition_entries.tsが追加

指定されたオブジェクトに含まれるエントリを述語関数を元に分割することができます。

import { partitionEntries } from "https://deno.land/std@0.187.0/collections/partition_entries.ts";

partitionEntries(
  {
    "foo": 1,
    "bar": 2,
    "baz": 3,
  },
  ([key, _value]) => key.startsWith("f"),
);
// Output: [ { foo: 1 }, { bar: 2, baz: 3 } ]

std/datetime/difference.ts

to < fromの際にdifferencemonths/quarters/yearsとして負数を返さないように修正されました。

std/http/file_server.ts

serveDirでパスが正規化されるようになりました。

例えば、/path//////to////file.txtのようなパスにアクセスされた場合、/path/to/file.txtへリダイレクトされます(正規化前と後のパスが違えばリダイレクトされます)

Deno Fresh OpenAI Doc Search Starter

FreshやSupabase, OpenAI APIを活用して、ChatGPTライクなドキュメント検索システムを作成するためのテンプレートが公開されています。

Denoの公式ブログでも解説記事が公開されています。

Garph

TypeScript向けのGraphQLフレームワーク

Denoでも動作するようです。


https://discord.com/channels/684898665143206084/712010403302866974/1105417313202741258