Deno v1.22.2
Deno v1.22.2がリリースされました。
主な変更点:
Deno.getGid()
が実装されました。(unstable)- POSIX系プラットフォームではプロセスのグループIDが、Windowsでは
null
が返されます。 - 利用するには
--allow-env
の指定が必要です。
- POSIX系プラットフォームではプロセスのグループIDが、Windowsでは
Error.captureStackTrace()
の型定義が追加されました。Crypto.getRandomValues()
の型定義が改善されました。(BigInt64Array
やBigUint64Array
が受け取れず、Float32Array
やFloat64Array
が引数として受け取れてしまう問題が解消されています)
https://github.com/denoland/deno/releases/tag/v1.22.2
deno_std v0.142.0
deno_std v0.142.0がリリースされました。
FNVのサポート (crypto
)
crypto
モジュールでFNVが実装されました。
import { crypto } from "https://deno.land/std@0.142.0/crypto/mod.ts";
// ...
const digest = await crypto.subtle.digest("FNV32", input);
media_types
モジュールの追加
deno_stdにmedia_types
モジュールが追加されました。
import { contentType } from "https://deno.land/std@0.142.0/media_types/mod.ts";
contentType(".js"); // => "application/javascript; charset=UTF-8"
contentType("application/json"); // => "application/json; charset=UTF-8"
このモジュールは、以前にもdeno_stdに存在するモジュールの一部でしたが、一度削除されています。
その後、メンテナンスはoakserver/media_typesのリポジトリに引き継がれていました。
このリリースで改めてmedia_types
モジュールが復帰したため、oakserver/media_typesのリポジトリはアーカイブされています。
TextLineStream
にallowCR
オプションが追加 (streams/delimiter
)
このオプションにtrue
を指定したときのみCRが取り扱われるように変更されています。
前回のリリースで、デフォルトでCRが取り扱われるように修正されましたが、デフォルトの挙動を変えてしまうのはまずいということで、このオプションが追加されました。
https://github.com/denoland/deno_std/releases/tag/0.142.0
oak_commons
パッケージの機能のdeno_std
への移行
現在、oak_commonsパッケージで提供されていた機能の一部をdeno_stdへ移植するPRが作成されています。
例)
http/http_status
のSTATUS_TEXT
がMap
からRecord
型に変更http/http_errors
の追加http/negotiation
の追加- crypto/keystackの追加 (Oakの内部でも使われているCookieの署名・検証用モジュール)
deno_std v0.142.0で追加されたmedia_types
モジュールも、元々は
oakserver/media_typesリポジトリで管理されていたものであり、これらの変更が入る可能性も比較的高そうに見えます。
deno_redis v0.26.0
deno-redis v0.26.0がリリースされています。
このリリースには、いくつかの破壊的変更が含まれます。
(破壊的変更) Reply
の型定義が変更
Redis#sendCommand
などから返却されるReply
の型定義が修正されました。
v0.25.0までは、Reply.type
プロパティの値に基づいて、適切なメソッドを呼ぶ必要がありました。
const reply = await redis.sendCommand("SET", "redis", "nice");
console.assert(reply.type === replyTypes.SimpleString);
console.assert(reply.value() === "OK");
このリリースでは、Reply.type
が削除されています。
const reply = await redis.sendCommand("SET", "redis", "nice");
console.assert(reply.value() === "OK");
また、この変更に合わせて、mod.ts
からexport
されていたreplyTypes
定数も削除されています。
(破壊的変更) RedisPipeline#flush
の戻り値が変更
v0.25.0までは、RedisPipeline#flush
の戻り値はPromise<Array<Reply>>
でした。
例)
const pipeline = redis.pipeline();
pipeline.set("key", "foo");
pipeline.get("key");
const results = pipeline.flush();
console.assert(results[0].value() === "OK");
console.assert(results[1].value() === "foo");
このリリースでは、戻り値がPromise<Array<Raw>>
に変更されています。(破壊的変更)
そのため、今後はReply.type
の確認やReply#value()
の呼び出しなどが不要になります。
const pipeline = redis.pipeline();
pipeline.set("key", "foo");
pipeline.get("key");
const results = pipeline.flush();
console.assert(results[0] === "OK");
console.assert(results[1] === "foo");
(破壊的変更) RedisSubscription#close
の戻り値の変更
RedisSubscription#close()
の戻り値がPromise<void>
ではなくvoid
に変更されています。
この変更は、主に、Deno.Conn#close
やRedis#close
などとの一貫性を向上させることを目的としています。
今後は、必要であれば、コネクションを閉じる際に自前でunsubscribe
する必要があります。
const redis = await connect({ hostname: "127.0.0.1" });
const sub = await redis.subscribe("channel");
async function cleanup(): Promise<void> {
await sub.unsubscribe("channel");
sub.close();
}
(破壊的変更) リトライの仕組みの改善
元々、deno-redisにはリトライの仕組みが存在しました。
ただし、これは、コネクションの確率やコマンドの送信などに失敗した際に、あらかじめ決められた時間だけ待機してから処理を再実行するという単純なものでした。
このリリースでは、指数バックオフアルゴリズムに基づいて、リトライ時の待機時間を計算するように修正されています。
この変更に合わせて、connect()
のretryInterval
オプションが削除されています。(破壊的変更)
AUTHコマンドのusername
引数のサポート
connect()
のusername
オプションを指定すると、AUTHコマンドを呼ぶ際にusername
引数が設定されます。
const redis = await connect({
hostname: "127.0.0.1",
port: 6379,
username: Deno.env.get("REDIS_USERNAME")!,
password: Deno.env.get("REDIS_PASSWORD")!,
});
https://github.com/denodrivers/redis/releases/tag/v0.26.0
Htm
PreactとUnoCSSを使用してSSRを行うための軽量なモジュールが公開されています。
このモジュールはDeno Deployでも動作するようです。