Deno v1.24.1

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

このリリースはバグ修正がメインです。

"unhandledrejection"イベントに関する修正

"unhandledrejection"イベントのリスナに関する型定義が修正されています。

また、モジュールのトップレベルで同期的にエラーが発生した際にも"unhandledrejection"イベントが発火されるように修正されています。

Deno.Child.unref()に関する修正

Deno.Child.unref()を呼ぶと、Deno.Child.stdoutDeno.Child.stderrunrefされるように修正されています。

その他の変更点

型チェック時(--check)に、TypeScriptのjsxFactoryjsxFragmentFactoryオプションが自動で設定される問題が修正されています。


https://github.com/denoland/deno/releases/tag/v1.24.1

deno_std v0.150.0

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

http/http_errors

createHttpErrorheadersオプションがサポートされています。

import { createHttpError } from "https://deno.land/std@0.150.0/http/http_errors.ts";
import { Status, STATUS_TEXT } from "https://deno.land/std@0.150.0/http/http_status.ts";

const error = createHttpError(
  Status.Unauthorized,
  STATUS_TEXT[Status.Unauthorized],
  { headers: { "WWW-Authenticate": "Basic" } }
);

error.headers; // => `Headers { "www-authenticate": "Basic" }`

io/writers

StringWriterにデータを書き込む際に、引数のUint8Arrayがコピーされるようになりました。

引数に渡したUint8Arrayが別の箇所で変更されると、StringWriter#toStringが返却する文字列にも影響が出てしまう問題があったようです。

import { StringWriter } from "https://deno.land/std@0.150.0/io/writers.ts";

const encoder = new TextEncoder();
const w = new StringWriter();
const bytes = encoder.encode("Hello");
w.writeSync(bytes);
bytes[0] = 104;
w.toString(); // => v0.150.0だと"Hello", v0.149.0までは"hello"が返されます

node

  • process: process.on("uncaughtException")process.on("uncaughtExceptionMonitor")がサポートされました。
  • fs: fs.watch()のNode.jsとの互換性が向上しました。
  • child_process: Deno.spawnChild()を使用して内部実装が書き直されました。
  • child_process: ChildProcess.ref()ChildProcess.unref()が実装されました。

https://github.com/denoland/deno_std/releases/tag/0.150.0

Roll your own JavaScript runtime

Denoの内部でも使われているdeno_core crateを使って、JavaScriptランタイムを自作するチュートリアルが公開されています。

esm.sh v89

esm.shのv89がリリースされました。

?deno-stdパラメータがサポートされており、esm.shが使用するdeno_std/nodeのバージョンを指定できるようになりました。

https://esm.sh/<some-module>?deno-std=0.149.0

https://github.com/ije/esm.sh/releases/tag/v89

Build a Full-stack CRUD App using Deno’s Fresh and Postgres

Fresh/Remult/PostgreSQLを使用して、シンプルなCRUDアプリを作成するチュートリアルが公開されています。