--no-config
オプションがサポートされました。
このオプションを指定すると、deno.json(c)
の自動的な探索を無効化できます。
$ deno run --no-config main.ts
Worker
内でデフォルトでDeno APIが有効化// v1.21 (denoオプションでの有効化が必要)
new Worker(new URL('./worker.js', import.meta.url).href, {
deno: { namespace: true },
type: "module",
});
// v1.22 (denoオプションでの有効化は不要)
new Worker(new URL('./worker.js', import.meta.url).href, { type: "module" });
Deno.emit()
の削除Deno公式でdenoland/deno_emitという代替モジュールが公開されているので、Deno.emit()
を使用されている場合は、そちらへ移行できます。
import { bundle } from "https://deno.land/x/emit@0.0.2/mod.ts";
const { code } = await bundle("https://deno.land/std@0.140.0/examples/chat/server.ts");
await Deno.writeTextFile("bundle.js", code);
AbortSignal
のサポート
const controller = new AbortController();
const child = Deno.spawnChild(Deno.execPath(), {
args: [
"eval",
"setTimeout(() => console.log('foobar'), 10000)",
],
signal: controller.signal,
});
queueMicrotask(() => controller.abort());
const status = await child.status;
console.assert(!status.success);
(破壊的変更) ChildStatus.signal
が数値から文字列へ変更
const child = Deno.spawnChild(Deno.execPath(), { args });
// ...
const status = await child.status;
status.signal; // => "SIGTERM" (v1.21までは数値が設定)
Response.json()
がサポートapplication/json
形式のレスポンスを簡易的に作成できます。
const res = Response.json({ name: "foo" });
res.status; // => 200
res.headers.get("content-type"); // => "application/json"
await res.json(); // => { name: "foo" }
ヘッダのカスタマイズ
Response.json({ id: 1 }, { headers: { "x-foo": "foo" } });
deno lsp
でリントがデフォルトで有効化deno test
でテストレポートの出力が改善 (Uncaught errorの出力など)Deno.resolveDns()
でNSやSOAレコードなどの問い合わせがサポートperformance.timeOrigin
やperformance.toJSON
, navigator.userAgent
などのAPIがサポートencoding/jsonc
(v0.139.0)JSONCパーサが実装されました。
import { parse } from "https://deno.land/std@0.139.0/encoding/jsonc.ts";
console.log(parse(`{
// hello
"foo": 1
}`)); // => { foo: 1 }
deno.json(c)
でのパーミッションの宣言deno.json(c)
でパーミッションを宣言できるようにするPRが作成されています。
[WIP] feat: support “permissions” in config file (#14520)
{
"permissions": {
"read": true,
"env": ["PORT"]
}
}
Denoで.wasm
ファイルをimport
できるようにするPRが作成されています。
WIP: wasm modules in core (#14485)
import { some_function } from "./some_module.wasm";
正式に入るかどうかはまだわかりませんが、DenoでSQLiteのバインディングを公開するPRが作成されています。
experiment(runtime): expose SQLite bindings (#14627)
const { Connection } = Deno.sqlite;
const conn = new Connection("sqlite.db");
const stmt = conn.prepare(`SELECT * FROM users WHERE id = ?`);
stmt.query(123);
deno_std
へのdeno-sqlite
の追加deno_std
にdeno-sqliteモジュールを追加するPRが作成されています。
[WIP] feat: Add sqlite database driver (#2230)
こちらも正式に入るかどうかはまだ不明です
DenoやNode.js, Cloudflare Workersなどの非ブラウザ上で動作する各種JavaScriptランタイムの相互運用性の向上を目的としたコミュニティグループ
議論の内容やドキュメントなどはGitHub上で公開されています。
import blog from "https://deno.land/x/blog@0.0.1/blog.tsx";
blog(import.meta.url, {
title: "My first blog",
author: "uki00a",
header: "Hello world!",
style: "body { padding: 8rem 0; background-color: #f0f0f0; }",
});
これでDeno Deployで動作するブログが作れるようです。
今まではRemixでのDenoサポートは実験的という位置づけでしたが、Remix v1.5.0でDenoの公式サポートが発表されました。
$ npx create-remix@latest --template deno
useData()
フックなどがサポート)
#42: Deno News is back! Featuring v1.21, Netlify Edge Functions, and JavaScript Containers
メールやRSSフィードなどで購読できるようなので、もし興味がありましたら購読しておくとよいかもしれません。