Deno v1.35

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

以下に内容をまとめたため、よろしければそちらを参照いただければと思います。

deno_std v0.193.0

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

std/http/user_agent.ts

std/httpにユーザーエージェントを取り扱うためのユーティリティが追加されています。

import { UserAgent } from "https://deno.land/std@0.193.0/http/user_agent.ts";

const ua = new UserAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36");
console.info(ua.browser); // => { name: "Chrome", version: "114.0.0.0", major: "114" }

直近でリリースされたOak v12.6.0にも、このstd/http/user_agent.tsを使用したUser-Agentのサポートが入っています。

std/json/concatenated_json_parse_stream.ts

nullnullのように、セパレータなしで連続してnulltrueなどの値が現れた際に、適切に処理が行われるように修正されました。

import { ConcatenatedJsonParseStream } from "https://deno.land/std@0.193.0/json/concatenated_json_parse_stream.ts";

const result = [];
for await (
  const x of ReadableStream.from(["nullnull", "1"]).pipeThrough(
    new ConcatenatedJsonParseStream(),
  )
) {
  result.push(x);
}

console.info(result); // => [ null, null, 1 ]

std/testing/asserts.ts

assertObjectMatchactual引数にnullが値として含まれるオブジェクトを渡すと、AssertionErrorではなくTypeErrorが発生してしまう問題が修正されています。

Deno Deployで静的に解析可能なdynamic importがサポート

以下のように、静的に解析可能なdynamic importがDeno Deployでサポートされたようです。

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

以下のように、静的に解析ができないdynamic importについては動作しません。

let mod = "async/deferred.ts";
const { deferred } = await import(`https://deno.land/std@0.193.0/${mod}`);

https://deno.com/deploy/changelog#statically-analyzable-dynamic-imports

esm.sh v128

esm.sh v128がリリースされています。

esm.shをセルフホストするための公式Dockerイメージが公開されています。

HOSTING.mdで使用方法が解説されています。