2023/11/06〜2023/11/12の最新情報

Deno v1.38.1 Deno v1.38.1がリリースされました。 Node.js互換性の改善 require() .jsが見つからなければ.jsonも探すように挙動が改善されました。 BYONMが有効化された際に、scopedパッケージ(@foo/bar)が適切に解決されるように修正されました。 node:crypto createPrivateKey()が実装されました。 node:child_process spawnSync()でstdioオプションが適切に取り扱われるように改善されました。 これにより、execaパッケージが動くようになったようです。 node:util toUSVString()が実装されました。 deno doc --lintの出力内容の改善 deno doc --lintを実行した際の出力内容が変更されました。 今までは、lintに成功した際はAPIドキュメントが表示されました。 このリリースでは、lintに成功した際はAPIドキュメントを表示せず、チェックされたファイル数を表示するように変更されています。 $ deno doc --lint bytes/copy.ts Checked 1 file Deno.AtomicOperation#checkで指定できるキー数の増加 Deno.AtomicOperation#checkが最大で合計100個のキーまでチェックできるように改善されました。(今までは10個が最大値でした) Promise.withResolvers()の型定義の改善 Promise.withResolvers()が返すresolve関数の引数がオプショナルから必須に変更されています。 deno_std v0.206.0 deno_std v0.206.0がリリースされました。 std/async/deferred.tsが非推奨化 Deno v1.38でPromise.withResolvers()が利用できるようになったため、deferred()が非推奨化されました。 std/encoding/binary.tsが削除 非推奨化されていたstd/encoding/binary.tsモジュールが削除されています。 std/path/glob.tsに関するAPIの移動 std/path/glob.tsで提供されていた以下のAPIが移動されています。 API 移動先 isGlob std/path/is_glob.ts globToRegExp std/path/normalize_glob.ts joinGlobs std/path/join_globs.ts std/http/server_sent_event_stream....

November 12, 2023

2023/10/30〜2023/11/05の最新情報

Deno v1.38 Deno v1.38がリリースされました。 以下に内容をまとめたため、よろしければそちらを参照いただければと思います。 Deno v1.38 deno_std v0.205.0 deno_std v0.205.0がリリースされました。 std/httpモジュールの整理 std/http/server.tsが非推奨化されました。今後はDeno.serve()やその周辺APIへの移行が推奨されます。 また、以下の各ファイルがリネームされています。 http/http_status.ts → std/http/status.ts std/http/cookie_map.ts → std/http/unstable_cookie_map.ts std/http/http_errors.ts → std/http/unstable_errors.ts std/http/method.ts → std/http/unstable_method.ts std/http/server_sent_event.ts → std/http/unstable_server_sent_event.ts std/wasiの非推奨化 使用率が高くなかったため、std/wasiが非推奨化されました。 Deno v1.38の公式ブログではwasmer-jsへの移行が推奨されています。 非推奨化されたAPIの削除 std/dotenv: restrictEnvAccessToオプションが削除されました。 deno_std v0.201.0でのstd/dotenvの改善により必要性が低下したため std/bytes/bytes_list.tsが削除されました。 std/csv/parse.ts: 以下のAPIが削除されました。 ERR_BARE_QUOTE ERR_FIELD_COUNT ERR_INVALID_DELIM ERR_QUOTE ParseError ReadOptions std/fs/walk.ts: canonicalizeオプションが追加 walk()にcanonicalizeオプションが追加されました。 このオプションはfollowSymlinksオプションがtrueのときのみ効果を持ちます。 このオプションにfalseが設定された場合、シンボリックリンク解決後のパスが正規化されなくなります (デフォルトはtrueのため、互換性には影響ありません) std/fs/expand_glob.ts: パーミッションの取り扱いの改善 expandGlob()にrootオプションまたは絶対パスが指定された際は、ファイルシステム全体への--allow-read権限を要求しないように挙動が改善されました。 denokv v0.1.0 denokv v0....

November 5, 2023

2023/10/09〜2023/10/15の最新情報

fresh v1.5 fresh v1.5がリリースされました。 以下に内容をまとめたため、よろしければそちらを参照いただければと思います。 fresh v1.5 Deno v1.37.2 Deno v1.37.2がリリースされました。 Deno.serve Deno.serveでUnixドメインソケットがサポートされています。(unstable) Deno.serveのpathオプションを指定することで有効化されます。 また、Deno.serveから返却されるDeno.Serverがthenableオブジェクトではなくなりました。 これにより、async関数から直接Deno.Serverをreturnできなかった問題が解消されたようです。 TransformStreamでキャンセルがサポート (cancelオプションの追加) readableがキャンセルされたタイミング または writableが中断されたタイミングでcancelオプションに指定された関数が呼ばれるようです。 TransformStream cleanup using “Transformer.cancel” (whatwg/streams#1283) deno jupyter deno.land/x/displayのDeno本体への追加 deno.land/x/displayがDeno本体に取り込まれたようです。 これにより、以下のAPIが追加されています。 Deno.jupyter.display Deno.jupyter.md Deno.jupyter.html Deno.jupyter.svg Deno.jupyter.format Deno.jupyter.broadcast Deno.jupyter.broadcastに以下のオプションが追加されています。 metadataオプション buffersオプション (バイナリデータを送信したい場合に使用できます) Deno.testのサポート deno replやdeno jupyterでDeno.testがサポートされています。 $ deno repl Deno 1.37.2 exit using ctrl+d, ctrl+c, or close() > Deno.test(function ok() {}); ok ....

October 15, 2023

2023/09/25〜2023/10/01の最新情報

Deno v1.37.1 Deno v1.37.1がリリースされました。 deno lsp 現在のファイルの全依存モジュールをキャッシュするQuickFixアクションが実装されています。(Cache all dependencies of this module.) また、deno lspでリモートのImport mapsのサポートも追加されています。 deno test Deno.testやDeno.TestContext.stepなどによるテストケースの登録がDeno v1.37から2倍近くまで高速化されています。 deno jupyter: Deno.jupyter.broadcastが追加 (unstable) Denoからdisplay_dataやupdate_display_dataメッセージを送信するためのメソッドのようです。 Deno.jupyter.broadcast Deno KV Deno.Kv#enqueueのdelayオプションに設定できる最大値が30日まで増加されました。 Node.js互換性 node:crypto: randomFillSync()にArrayBufferなどを渡すと、TypeErrorが発生する問題が修正されています。 package.json: exportsフィールドがnullだった場合、プロセスがパニックする問題が修正されています。 deno_std v0.203.0 deno_std v0.203.0がリリースされました。 std/ioが非推奨化 std/ioはDeno.ReaderとDeno.Writerベースの機能が提供されていたため、非推奨化されました。 std/encoding: encode/decodeが非推奨化 std/encodingの各モジュールで提供されていたencodeとdecodeが非推奨化されています。今後は、以下の関数への移行が推奨されます。 std/encoding/ascii85.ts: encodeAscii85/decodeAscii85 std/encoding/base32.ts: encodeBase32/decodeBase32 std/encoding/base58.ts: encodeBase58/decodeBase58 std/encoding/base64.ts: encodeBase64/decodeBase64 std/encoding/base64url.ts: encodeBase64Url/decodeBase64Url std/encoding/hex.ts: encodeHex/decodeHex std/front_matter 他のモジュールとの一貫性の向上のため、以下の各ファイルで提供されていたdefault exportが非推奨化されました。 std/front_matter/any.ts std/front_matter/json.ts std/front_matter/toml.ts std/front_matter/yaml.ts std/collections - 一部関数の引数がArrayからReadonlyArrayへ変更 以下の各関数の引数がArrayではなくReadonlyArrayを受け取るように修正されています。(std/collectionsの他の関数との一貫性の向上が目的)...

October 1, 2023

2023/09/18〜2023/09/24の最新情報

Deno v1.37 Deno v1.37がリリースされました。 以下に内容をまとめたため、よろしければそちらを参照いただければと思います。 Deno v1.37 deno_std v0.202.0 deno_std v0.202.0がリリースされました。 std/collections及びstd/cryptoでunstable/ディレクトリが導入 std/collectionsで提供されている以下のデータ構造がstd/collections/unstableへ移動されました。 BinaryHeap BinarySearchTree RedBlackTree また、std/cryptoで提供されているKeyStackもstd/crypto/unstable/keystack.tsへ移動されています。 std/crypto/to_hash_string.ts: toHashStringが非推奨化 今後はstd/encoding/hex.tsまたはstd/encoding/base64.tsの使用が推奨されます。 std/csv/parse.ts: ERR_BARE_QUOTE/ERR_FIELD_COUNT/ERR_INVALID_DELIM/ERR_QUOTEが非推奨化 std/csvの内部で使用されている各種エラーが非推奨化されています。 std/datetime/to_imf.tsが非推奨化 今後はDate#toUTCString()の使用が推奨されます。 std/media_types/type_by_extension.ts: typeByExtensionが非推奨化 std/media_typesのtypeByExtensionが非推奨化されました。 今後は、contentTypeの使用が推奨されます。 std/streams: Deno.Reader & Deno.WriterベースのAPIが非推奨化 std/streamsで提供されていたDeno.ReaderとDeno.WriterをベースにしたAPIが非推奨化されています。 今後はWeb Streams APIをベースとした機能の使用が推奨されるものと思います。 非推奨化されたファイルの一覧: std/streams/copy.ts std/streams/iterate_reader.ts std/streams/read_all.ts std/streams/readable_stream_from_reader.ts std/streams/reader_from_iterable.ts std/streams/reader_from_stream_reader.ts std/streams/writable_stream_from_writer.ts std/streams/write_all.ts std/streams/writer_from_stream_writer.ts std/encoding/hex.ts: encodeHex/decodeHexが追加 encodeHexは既存のencodeと比べると、引数をより柔軟に受け取れる点と戻り値としてstringを返す点が異なります。 decodeHexについては、既存のdecodeと異なり、stringを引数として受け取ります。 std/streams: toArrayBuffer/toBlob/toJson/toTextが追加 これらの関数はReadableStreamをそれぞれ対応する型へ変換してくれます。 import { toJson } from "https://deno.land/std@0.202.0/streams/to_json.ts"; const file = await Deno....

September 24, 2023

2023/08/28〜2023/09/03の最新情報

Deno v1.36.4 Deno v1.36.4がリリースされました。 Deno KV Deno KVでデータベースへのリモート接続がサポートされました。これにより、ローカルからDeno Deploy上のDeno KVデータベースへ接続ができるようになったようです。 Deno.openKvにhttp:/https:形式のURLを与えると、従来までのSQLiteベースのバックエンドは使用されず、代わりにHTTP経由でデータベースへリモート接続されます。 このリモート接続機能はDeno Deployに限らず、KV Connectというプロトコルさえ実装されていれば、任意のデータベースへ接続が可能なようです。 また、この機能を利用するには、以下の設定が必要なようです: --allow-envとallow-netオプション DENO_KV_ACCESS_TOKEN環境変数 (Deno Deployで発行した認証用アクセストークン) KV Connectプロトコルについて: 以下のページなどにドキュメントが存在します。 KV Connect Metadata Exchangeエンドポイントのレスポンスのスキーマ Data Pathエンドポイントのメッセージのフォーマット deno lsp suggest.completeFunctionCallsオプションが実装: このオプションにtrueを設定すると、関数の引数と括弧()が入力補完されます。 vscode-denoでは"deno.suggest.completeFunctionCalls": trueオプションで有効化できるようです。 { // ... "deno.suggest.completeFunctionCalls": true } テストエクスプローラーに関するバグ修正: TestContext.stepを使っていると、vscodeのテストエクスプローラー経由でテストを実行した際に、LSPがパニックしてしまう問題が修正されました。 テストエクスプローラーからテストを実行する際に、対象テストファイルからはimportしていないファイルも実行されてしまう問題が修正されました。 deno_std v0.201.0 deno_std v0.201.0がリリースされました。 std/dotenv - パーミッションに関する改善 std/dotenvでパーミッションをより厳格に設定できるように実装が改善されました。 変数展開やexportオプションを使用しない場合、--allow-envオプションの指定が不要になります。 また、変数展開やexportオプションを使用する場合のパーミッションの取り扱いも改善されています。具体的には、以下のような.envファイルを読み込む場合、--allow-env=BAZの指定のみで動作します。(今までは--allow-envによって全ての環境変数の読み込みを許可する必要がありました。) FOO=bar HOGE=piyo${BAZ} これらの変更に合わせて、restrictEnvAccessToオプションが非推奨化されています。 std/urlが追加 新規モジュールとしてstd/urlが追加されました。 URLに関する様々なユーティリティが提供されています。 import { dirname } from "https://deno....

September 3, 2023

2023/08/07〜2023/08/13の最新情報

Deno v1.36.1 Deno v1.36.1がリリースされました。 deno_modulesディレクトリがvendorへリネーム Deno v1.36で実装されたdeno_modulesディレクトリがdeno vendorコマンドに合わせてvendorへリネームされました。 これに合わせて、deno.jsonのプロパティ名もdenoModulesDirからvendorへリネームされています。 { "imports": { "redis": "https://deno.land/x/redis@v0.29.0/mod.ts", "dax": "https://deno.land/x/dax@0.24.0/mod.ts" }, "vendor": true } このようにdeno.jsonでvendor: trueを設定することで、Denoが依存パッケージをvendorディレクトリにダウンロードするよう挙動が変更されます。 また、Deno v1.36からの大きな変更として、vendorオプションが有効化された際は、依存しているnpmパッケージもnode_modulesに自動でダウンロードされるよう挙動が変更されています。(--node-modules-dirオプションが自動で適用されるようなイメージです) この挙動を無効化したい場合、CLIオプションで--node-modules-dir=falseを指定するか、またはdeno.jsonでnodeModulesDir: falseを指定する必要があります。 deno test グローバルのsetTimeoutが置き換えられた場合、TestContext.stepが動作しなくなる問題が修正されています。(std/testing/time.tsのFakeTimeと併用できない課題があったようです) deno_std v0.198.0 deno_std v0.198.0がリリースされました。 std/path - ファイルの分割 std/path/basename.tsやstd/path/dirname.tsなど、std/pathで提供されている各APIごとにファイルが細かく分割されました。 std@0.198.0/path std@0.197.0/path deno_cache v0.5.0 deno_cacheパッケージの内部実装が、Deno本体で使用されていたグローバルキャッシュ(DENO_DIR)に関するコードをベースに再実装されたようです。 これに合わせて、deno_cache_dirという名前でクレートも公開されています。 また、Deno本体でもこのdeno_cache_dirクレートが導入されています。(#20092) これにより、今後、deno_cacheパッケージの開発がより活発になる可能性もありそうです。 https://github.com/denoland/deno_cache/releases/tag/0.5.0 Freshの2023年8〜9月のイテレーション計画 Freshの2023年8〜9月にかけてのイテレーション計画が公開されています。(2023年の7〜8月のイテレーション計画についてはこちら) August - September 2023 iteration plan #1618 現時点では、以下の実装などが進められることが検討されているようです。 SPAライクなクライアントサイドナビゲーション View transitionsのサポート

August 13, 2023

2023/07/31〜2023/08/06の最新情報

Deno v1.36 Deno v1.36がリリースされました。 以下に内容をまとめたため、よろしければそちらを参照いただければと思います。 Deno v1.36 deno_std v0.197.0 deno_std v0.197.0がリリースされました。 std/testing/snapshot.ts assertSnapshotに関して、以下の破壊的変更が実施されています。 Deno v1.33.2以降、長い文字列が改行されてスナップショットが作られていた問題への対応が入れられました。 タブ文字(\t)がエスケープされた状態でスナップショットが作られる問題が修正されました。 std/fs/walk.ts - includeSymlinksオプションが追加 includeSymlinks: true かつ followSymlinks: falseが指定された場合、walkはシンボリックリンクを未解決の状態で返却します。 このオプションのデフォルト値はtrueであるため、もしシンボリックリンクを含めたくない場合は、明示的にfalseを設定する必要があります。 for await (const entry of walk("./dir", { includeSymlinks: false })) { // ... } std/toml/parse.ts 以下のようなペアを持つTOMLを解析する際に、TypeErrorが発生する問題が解消されました。 floats = [0.1, 1.5] empty_obj = {} import { parse } from "https://deno.land/std@0.197.0/toml/parse.ts" const parsed = parse(`[section] floats = [0.1, 1.5] empty_obj = {}`); console....

August 6, 2023

2023/07/24〜2023/07/30の最新情報

Deno v1.35.3 Deno v1.35.3がリリースされました。 deno lint deno lintコマンドで--rulesと--rules-tagsの併用がサポートされました。 指定されたタグを持つルールの一覧を表示できます。 # `fresh`タグを持つルールを一覧表示する $ deno lint --rules --rules-tags=fresh deno lsp deno lspが以下のケースでもdeno.jsonを検出するように改善されました。 deno.jsonを新しく作成したとき deno.jsonでシンタックスエラーが発生したとき deno info deno infoコマンドでImport Mapsで定義されたspecifierがサポートされました。 $ deno info --import-map=import_map.json preact deno_std v0.196.0 deno_std v0.196.0がリリースされました。 std/http/server.tsでserveとserveTlsが非推奨化されました。 (破壊的変更) Deno v1.35でDeno.serve()が安定化されているため、今後はそちらの使用が推奨されます。 remote_modulesのサポートについて Deno本体でremote_modulesというディレクトリをサポートすることが検討されているようです。 feat: optional remote_modules directory (without lsp support) #19977 今のところ、以下のような振る舞いが想定されているようです。 deno.jsonでremoteModulesDir: trueを設定すると、remote_modulesというディレクトリにサードパーティモジュールが保存されるようになります。(実質的にremote_modulesディレクトリが$DENO_DIR/depsとして扱われます) remote_modulesディレクトリには、deno vendorコマンドによって作成されるvendorディレクトリと同様に、リーダブルなフォーマットで依存モジュールが保存されます。 deno vendorやremote_modulesを使わない場合、Denoはリモートからダウンロードしたサードパーティモジュールをファイル名をハッシュ化した状態で$DENO_DIR/depsにキャッシュします。(そのため、サードパーティモジュールに関するデバッグが難しくなります。) 背景 このremote_modulesディレクトリの導入の目的として、deno vendorコマンドに関する以下の課題の解消などが背景としてあるようです。 deno vendorコマンドで作成されたvendorディレクトリをグローバルキャッシュ(DENO_DIR)として利用したい。 deno vendorコマンドは独自に生成したImport Mapsの使用を前提としているため、ユーザが自身で作成したImport Mapsと併用することが難しいこと。(Import Mapsはプロセスごとに一つしか指定できないため) 依存パッケージのバージョンを変更するたびにdeno vendorを実行する手間を軽減すること。 これらの課題を解消するために、remote_modulesという新しいディレクトリを導入することが検討されているようです。...

July 30, 2023

2023/07/17〜2023/07/23の最新情報

Fresh v1.3 Fresh v1.3がリリースされました。 以下に内容をまとめたため、よろしければそちらを参照いただければと思います。 Fresh v1.3 Deno v1.35.2 Deno v1.35.2がリリースされました。 Node.js互換性の改善 npm:経由で読み込まれたパッケージと通常のDenoコードで異なるglobalThisの実体が参照されるように変更されました。(#19307) npmパッケージ内からDenoで書かれた.tsファイルをimport()で読もうとすると、エラーが発生する問題が修正されました。 node:process: dlopenが実装されています。(flags引数は未サポート) node:stream/promises: finished/pipelineがexportされていなかった問題が修正されています。 TypeScript --unstableをつけずにunstable APIを使おうとした際のエラーメッセージが改善されています。 v1.35.2: error: TS2551 [ERROR]: Property 'openKv' does not exist on type 'typeof Deno'. Did you mean 'open'? 'Deno.openKv' is an unstable API. Did you forget to run with the '--unstable' flag, or did you mean 'open'? If not, try changing the 'lib' compiler option to include 'deno....

July 23, 2023