Deno v1.32.2
Deno v1.32.2がリリースされました。
KV (Deno.Kv
)
Deno.KvCommitResult型が追加されています。
これには、KVにコミットされた値に設定された新しいversionstamp
が含まれます。
この追加に合わせて、以下の変更も実施されています。
- Deno.AtomicOperation.commitの戻り値が
Promise<boolean>
からPromise<Deno.KvCommitResult | null>
に変更されています。(コミット成功時はDeno.KvCommitResult
、失敗時はnull
が返却されます) - Deno.Kv.setの戻り値が
Promise<void>
からPromise<KvCommitResult>
に変更されています。
Deno.KvEntryMaybeが追加されています。(この型の実体はDeno.KvEntry<T> | { key: Deno.KvKey, value: null, versionstamp: null }
のaliasです)
これに合わせて、以下のAPIに型引数を指定できるように変更されました。
これらの変更により、エントリを取得する際に値の型を指定できるようになりました。
const entry: Deno.KvEntryMaybe<string> = await kv.get<string>(["str"]);
const entries: [Deno.KvEntryMaybe<string>, Deno.KvEntryMaybe<number>] = await kv.getMany<[string, number]>([["str"], ["n"]]);
Deno.Kv#getMany
が実装されました。
複数のエントリをまとめて取得できます。
await kv.set(["key", 1], "foo");
await kv.set(["key", 2], "bar");
const entries = await kv.getMany([
["key", 1],
["key", 2]
]);
assert(entries.length === 2);
assert(entries[0].value === "foo");
assert(entries[1].value === "bar");
Node.js互換性の改善
node:cryptoの改善
以下の機能が実装されています。
checkPrime
createSecretKey
createCipheriv
とcreateDecipheriv
でaes-128-ecb
がサポートcreateSign
- 以下のアルゴリズムがサポートされています。
sha224
sha256
sha384
sha512
RSA-SHA224
RSA-SHA256
RSA-SHA384
RSA-SHA512
- 以下のアルゴリズムがサポートされています。
crypto.Cipher
/crypto.Decipher
をNode.jsのTransform Streamとして扱えるように改善されています。
REPL(deno repl
)でのpackage.json
サポートが改善されています。
package.json
で定義されたパッケージのbare specifierによる読み込みがサポート- LSPの警告メッセージが表示される問題が解消されています。
- 実際に使用されるまでは、
package.json
で定義された依存パッケージが読み込まれないように挙動が改善されました。
deno coverage
でnpmパッケージを使用したコードのカバレッジを計測する際に、依存しているnpmパッケージに対してもカバレッジが計測されてしまう問題が解消されています。
deno test
の改善
サニタイザやレポーティングに関するコードがJavaScriptからRustへ移植されています。
これにより以下のような改善がなされたようです。
- 非ユーザーエラーに関するレポーティングの改善
- テストステップ(Deno.TestContext.step)における失敗がテスト結果のサマリにも含まれるように
- 出力の一貫性が向上
deno lsp
のバグ修正
- Go to referencesの実行時に、まだエディタで開いたことのないファイルの定義が表示されない問題が修正されています。
data:
URLからimport
しているファイルでエラーが発生する問題が修正されています。textDocument/references
でcontext.includeDeclaration
パラメータが考慮されていなかった問題が修正されています。
Web APIに関するバグ修正
ReadableStreamByobReader
にFloat64Array
を与えた際に意図した通りに動作しなかった問題が解消されています。TextEncoder.encodeInto
に1バイトの非ascii文字を含む文字列を渡すと、誤った結果が返される問題が修正されています。
Deno v1.32.3
Deno v1.32.3がリリースされました。
一部の状況でdeno repl
が停止してしまう問題が起きていたため、それに関する改善などが実施されています。
deno lsp
deno repl
に関する問題を修正するために、deno repl
からLSPを起動するときのみファイルのプリロードが無効化されました。
また、メモリ使用量の削減などのため、deno lsp
がプリロードするファイル数にも制限が入りました。(デフォルトは1000
で、今のところこの制限を調整する方法はまだ提供されていません)
型チェックに関する修正
Deno v1.32.0以降、エントリポイント以外のTypeScriptファイルに型エラーがあった場合、その型エラーを修正したとしても、キャッシュされた実行結果が表示されてしまう問題が修正されています。
deno_std v0.182.0
deno_std v0.182.0がリリースされました。
std/fs
exists()の非推奨化が解除されました。
また、Windowsで読み込み権限のないファイルをチェックした場合、true
を返すように挙動が変更されています。
その他にも、新しく以下のオプションが追加されています。
オプション | 説明 |
---|---|
isReadable | true を指定すると、ファイルが存在して かつ 読み込み可能なときだけtrue を返却します |
isDirectory | true を指定すると、対象のパスがディレクトリのときのみtrue を返却します |
isFile | true を指定すると、対象のパスがファイルのときのみtrue を返却します |
std/fs/walk
WalkError
が追加されました。
walkでのエラー発生時に、このエラーが投げられます。
std/streams/text_delimiter_stream
TextDelimiterStreamにdisposition
オプションが追加されました。
挙動はDelimiterStream
の同名のオプションと同様です。
std/csv
CsvStringifyStreamが追加されました。
import { CsvStringifyStream } from "https://deno.land/std@0.182.0/csv/csv_stringify_stream.ts";
import { readableStreamFromIterable } from "https://deno.land/std@0.182.0/streams/readable_stream_from_iterable.ts";
const file = await Deno.open("data.csv", { create: true, write: true });
const readable = readableStreamFromIterable([
{ id: 1, name: "foo" },
{ id: 2, name: "bar" },
{ id: 3, name: "baz" },
]);
await readable
.pipeThrough(new CsvStringifyStream({ columns: ["id", "name"] }))
.pipeThrough(new TextEncoderStream())
.pipeTo(file.writable);
std/encoding/base58
decode()
で先頭のバイトが欠けた状態で結果が返却されてしまう問題が修正されています。
Cicada
CicadaというCI/CDパイプラインをDenoで記述するためのフレームワークが公開されています。
現在はまだアーリーアクセス版のようですが、将来的にはOSSとして公開される予定のようです。