Deno Deploy Beta 4

Deno Deploy Beta 4が発表されました。

このリリースに合わせて、有料のProプランが公開されています。 詳しくは、以下の記事で価格設定などについて解説されています。

その他にも、ダッシュボードがリニューアルされています。 リクエストごとの平均CPU時間の可視化やログのUIの改善などが実施されています。


https://deno.com/blog/deploy-beta4

Deno v1.22.1

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

このリリースはバグ修正を中心に行われています。

主な変更点:

  • Deno.ChildStatus.signalの型がstringからDeno.Signalに変更されました。
  • deno test --coverageで、interfaceのみを含むファイルなどで計測結果がNaN%と表示される問題が修正されました。
  • WebSocket.closeを呼ぶと"close"イベントが2回発火される問題が修正されました。
  • globalThis.dispatchEventが改ざんされている(deleteによる削除など)と、Deno.exit()でエラーが発生する問題が修正されました。
  • Deno.permissions.query()などのパーミッション関連のAPIに不正な形式の引数を与えた際のエラーメッセージが改善されました。

https://github.com/denoland/deno/releases/tag/v1.22.1

deno_std v0.141.0

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

いくつかの破壊的変更が実施されています。

testing/asserts

assertStrictEqualsなどの改善

assertStrictEquals / assertAlmostEquals / assertNotStrictEqualsの内部の比較処理で、===の代わりにObject.is()を使用するように修正されています。(Node.jsのassertパッケージなどと同様の挙動に変わりました。)

assertEqualsなどの型定義の改善 (破壊的変更)

assertEqualsassertNotEqualsなどの型定義が修正されています。

例えば、下記のように異なる型の値同士を比較すると、型エラーが発生します。

assertEquals(123, "foo");

次のようにすると、型エラーを回避できます。

assertEquals<unknown>(123, "foo");

assertRejectsassertThrowsの戻り値の変更

assertRejectsassertThrowsで補足された例外が戻り値として返却されるように修正されました。

const error = assertThrows(() => {
  throw new Error("foo");
});
assert(error instanceof Error);
assertEquals(error.message, "foo");

flags

parse()関数にcollectオプションが追加されました。(破壊的変更)

下記のように、collectオプションで指定されたフラグのみ、複数回の指定が許容されるように挙動が変更されています。

import { parse } from "https://deno.land/std@0.140.0/flags/mod.ts";

parse([
  "deno",
  "run",
  "--check=true",
  "--config",
  "deno.json",
  "--check=false",
  "--config=tsconfig.json",
  "main.ts",
], {
  boolean: ["check"],
  string: ["config"],
  collect: ["config"],
});
// {
//   _: [ "deno", "run", "main.ts" ],
//   check: false,
//   config: [ "deno.json", "tsconfig.json" ]
// }

streams

toTransformStream()の追加

streams/conversiontoTransformStream()が追加されました。

ジェネレータ関数をTransformStreamに変換できます。

import { readableStreamFromIterable } from "https://deno.land/std@0.140.0/streams/conversion.ts";

const readable = readableStreamFromIterable(["a", "b", "c"])
  .pipeThrough(toTransformStream(async function* transformer(source) {
    for await (const x of source) {
      yield x.repeat(2);
    }
  }));

for await (const x of readable) {
  console.log(x); // aa, bb, cc
}

earlyZipReadableStreams()の追加

streams/mergeearlyZipReadableStreams()が追加されています。

既存のzipReadableStreams()とは異なり、指定されたReadableStreamのうちいずれか一つでも処理が停止したら、earlyZipReadableStreams()から返却されるReadableStreamも停止します。

import { readableStreamFromIterable } from "https://deno.land/std@0.140.0/streams/conversion.ts";
import { earlyZipReadableStreams } from "https://deno.land/std@0.140.0/streams/merge.ts";

const a = readableStreamFromIterable([1, 2, 3]);
const b = readableStreamFromIterable([4, 5, 6, 7, 8]);
for await (const x of earlyZipReadableStreams(a, b)) {
  console.log(x); // 1, 4, 2, 5, 3, 6
}

TextLineStreamの改善

streams/delimiterTextLineStream\rがサポートされました。

http

http/utilモジュールが追加されています。

現在は、ETag値を比較するcompareEtagという関数が公開されています。

node

dnsパッケージで下記レコードの問い合わせがサポートされました。

  • NAPTR (dns.resolveNaptr)
  • NS (dns.resolveNs)
  • CAA (dns.resolveCaa)
  • SOA (dns.resolveSoa)

また、fsパッケージのReadStreamが、実装はされていたもののexportされていなかった問題が修正されています。

async/pool

pooledMapの戻り値の順番が引数のIterableと一致するように修正されています。


https://github.com/denoland/deno_std/releases/tag/0.141.0

denoland/examples

denoland/examplesというリポジトリが公開されています。

Reactなどを使ったexampleアプリの一覧などが掲載されています。


https://github.com/denoland/examples

denoflare v0.5.0

denoflare v0.5.0がリリースされました。

大きな変更点として、R2のサポートが追加されています。


https://github.com/skymethod/denoflare/releases/tag/v0.5.0