Deno v1.24.1
Deno v1.24.1がリリースされました。
このリリースはバグ修正がメインです。
"unhandledrejection"イベントに関する修正
"unhandledrejection"イベントのリスナに関する型定義が修正されています。
また、モジュールのトップレベルで同期的にエラーが発生した際にも"unhandledrejection"イベントが発火されるように修正されています。
Deno.Child.unref()に関する修正
Deno.Child.unref()を呼ぶと、Deno.Child.stdoutやDeno.Child.stderrもunrefされるように修正されています。
その他の変更点
型チェック時(--check)に、TypeScriptのjsxFactoryとjsxFragmentFactoryオプションが自動で設定される問題が修正されています。
https://github.com/denoland/deno/releases/tag/v1.24.1
deno_std v0.150.0
deno_std v0.150.0がリリースされました。
http/http_errors
createHttpErrorでheadersオプションがサポートされています。
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アプリを作成するチュートリアルが公開されています。