Denoばた会議 Monthly 第19回

Deno v1.33

静的解析可能なdynamic importで--allow-net/--allow-readが不要に

以下の場合、パーミッションが不要です。

const { delay } = await import("https://deno.land/std@0.185.0/async/delay.ts");
await delay(3000);

URLを動的に組み立てる場合は、従来どおりパーミッションが必要です。

const { delay } = await import(`https://deno.land/std@0.185.0/async/${"delay.ts"}`);
await delay(3000);

Deno.serveについて

h2cが実装されています。

const ac = new AbortController();
const server = Deno.serve(
  () => new Response("foobar"),
  { signal: ac.signal },
);
$ curl --http2 --http2-prior-knowledge http://localhost:8000
foobar

Deno.serveについて

  • Flashが削除され、hyper v1.0のRC版をベースにバックエンドがリライトされています。
  • 次のマイナーリリース(v1.34)で安定化される計画のようです。

deno.json(c)のフラット化

{
  "lint": {
    "exclude": ["fresh.gen.ts"] // `"files"`を省略できます。

    // Before:
    // "files": {
    //    "exclude": ["fresh.gen.ts"]
    // }
  }
}

Deno.run()の非推奨化

今後はDeno.Commandの使用が推奨されます。

const command = new Deno.Command("deno", {
  args: ["info", "--json"],
});

const status = await command.output();
if (status.success) {
  console.info(new TextDecoder().decode(status.stdout));
}

deno_stdのアップデート

非推奨化されたファイルの削除

削除されたファイル 移行先
std/encoding/front_matter/* std/front_matter/mod.ts
std/encoding/jsonc.ts std/jsonc/mod.ts
std/encoding/toml.ts std/toml/mod.ts
std/encoding/yaml.ts std/yaml/mod.ts
std/encoding/csv.ts std/csv/mod.ts
std/encoding/csv/* std/csv/mod.ts
std/encoding/json/stream.ts std/json/mod.ts

std/fs: exists()の非推奨化が解除

import { exists } from "https://deno.land/std@0.186.0/fs/exists.ts";

if (await exists("./README.md", {
  isReadable: true,
  isFile: true,
})) {
  // ...
} else {
  // ...
}

その他の話題

Deno v2.0について

今年の夏頃にリリースが計画されているようです。

Deno KV

Deno v1.32で実装されていたDeno KVが正式に発表されました。

https://developer.twitter.com/en/docs/twitter-for-websites/embedded-tweets/guides/embedded-tweet-parameter-reference