まだunstableですが、テストケースを入れ子にできるようになりました
Deno.test("nested test case", async (t) => {
const success = await t.step("step 1", async (t) => {
const success = await t.step("step 1-1", () => {
throw new Error("Failed!");
});
if (!success) throw new Error("Failed!");
await t.step("step 1-2", () => {});
});
if (success) throw new Error("Failed!");
});
deno uninstall
コマンドdeno install
でインストールしたコマンドをアンインストールできます。
$ deno uninstall udd
Deno.createHttpClient
などのAPIで複数のルート証明書の指定がサポート(caCerts
オプション)const caCert = await Deno.readTextFile("./my_ca_cert.pem");
const client = Deno.createHttpClient({
caCerts: [caCert],
});
const res = await fetch("https://mydomain.com", { client });
console.log(await res.text());
--compat
オプションの実装に合わせてstd/node
にdns
, net
, 及びhttp
モジュールが追加std/fs
モジュールでexists
とexistsSync
が非推奨化されましたstd/hash
が非推奨化されました (代わりにWeb Crypto APIとstd/cyrpot
の使用を推奨)std/io
のディレクトリ構造が大幅に変更std/io
のディレクトリ構造が大幅に変更std/io/bufio.ts
が非推奨化されました (今後は代わりにstd/io/buffer.ts
から読み込むのを推奨)std/io/streams.ts
が非推奨化されました (今後は代わりにstd/streams
から読み込むのを推奨)std/io/ioutil.ts
が非推奨化されました (今後は代わりにstd/io/util.ts
から読み込むのを推奨)std/io
のディレクトリ構造が大幅に変更std/io/util.ts
で公開されていたAPIがreadRange
とreadRangeSync
を除いてstd/io/streams.ts
へ移動されました
iter
及びiterSync
がそれぞれiterateReader
及びiterateReaderSync
にリネームされていますstd/io/util.ts
のreadRange
とreadRangeSync
がstd/io/files.ts
へ移動されましたstd/io/ioutil.ts
にあったcopyN
/readShort
/readInt
/readLong
/sliceLongToBytes
がstd/io/util.ts
へ移動されましたdeno fmt
とdeno lint
で設定ファイルがサポートDeno.upgradeWebSocket()
が安定化Deno.flock()
などのファイルロックAPI (unstable)ArrayBuffer
のゼロコピー転送など
deno fmt
とdeno lint
で設定ファイルがサポート{
"fmt": {
"files": {
"include": ["main.ts"]
}
},
"lint": {
"rules": {
"exclude": ["no-unused-vars"]
}
}
}
deno_lintの公式サイトであるlint.deno.landがDeno Deployへ移行されました。
それに合わせて、内部実装がdext.ts+Tailwind CSSからFresh+Twindへ移行されています。
DenoやDeno Deployなどでフロントエンド開発を行う際に参考になるかもしれないため、興味のある方はソースコードも見てみるとよいかもしれません。
Denoネームスペースを提供するnpmパッケージ
import { Deno } from 'deno.ns';
console.log(Deno.version);
現在はdenolandオーガニゼーション配下で開発が行われています
<Suspense>
を使用したストリーミングレンダリングのサポート<Head>
コンポーネントのサポート/static
ディレクトリに置いたファイルの静的な配信がサポートされました今まではpages/api
配下のファイルはAPIルートとして扱われていました。
今後は、APIを定義したいときは、以下のようにpages
ディレクトリのファイルでhandler
関数をexportする必要があります。
import { HandlerContext } from "https://raw.githubusercontent.com/lucacasonato/fresh/044da545134b91142e215dc349ec37a59e52cd25/server.ts";
export const handler = (_ctx: HandlerContext): Response => {
return new Response("Hello, world!");
};
<Suspense>
のサポート/** @jsx h */
import { h, Suspense, useData } from "../deps.ts";
export default function Home() {
return (
<Suspense
fallback={(
<div>
Loading...
</div>
)}
>
<SuspendedComponent />
</Suspense>
);
}
function SuspendedComponent() {
const message = useData("/api/message", fetchMessage);
return <div>{message}</div>;
}
async function fetchMessage(key: string): Promise<string> {
const res = await fetch(key);
return await res.text();
}
<Head>
コンポーネントのサポート/** @jsx h */
import { h, Head } from "../deps.ts";
export default function Home() {
return (
<div>
<Head>
<title>Hello</title>
</Head>
<h2>Home</h2>
</div>
);
}