Deno v1.34

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

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

deno_std v0.189.0

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

std/async/retry.ts

retry()の内部でジッターが適用されるようになりました。

std/collections/group_by.ts

groupBy()Iterable<T>型の値がサポートされました。

import { groupBy } from "https://deno.land/std@0.189.0/collections/group_by.ts";

groupBy(
  new Set([1, 2, 3, 4, 5]),
  (x) => x % 2 === 0 ? "even" : "odd",
);
// Output: { odd: [ 1, 3, 5 ], even: [ 2, 4 ] }

また、selector関数が引数として現在処理中の要素のindexを受け取るように変更されています。


Deno DeployでNode.js組み込みモジュールがサポート

Deno DeployでNode.js組み込みモジュールがサポートされたようです。

Denoと同様にnode:<パッケージ名>の形式でimportすることで利用できます。

これにより、esm.shを利用して、Deno DeployでExpressなどのパッケージが動かせるようになったようです。(現状ではtarget=denonextを指定する必要があるようです)

import express from "https://esm.sh/express@4.18.2?target=denonext";

const app = express();
app.get("/", (req, res) => {
  res.send("Hello Express");
});
app.listen(3000);

Deno Deployでの各Node.js組み込みモジュールのサポート状況については、以下のドキュメントで説明されています。

また、将来的にはDeno Deployでnpm:をサポートすることも検討されているようです。

Deno Deploy’s Changelog

Deno DeployのChangelogページが公開されました。

Deno Deployやdeployctlなどの最新情報が公開されているようです。

fresh v1.1.6

fresh v1.1.6がリリースされました。

MiddlewareHandlerContextdestinationプロパティが追加

このプロパティには、要求されたリソースに応じて以下のいずれかの値が設定されます。

destination説明
"static"staticディレクトリの静的ファイルへのアクセス時に設定されます
"route"routeディレクトリで定義されたエントリポイントへのアクセス時に設定されます
"notFound"404エラー発生時に設定されます
"internal"freshの内部スクリプトなどが要求された際に設定されます

Middlewareで、要求されたリソースに応じた固有の処理を行いたい場合などに活用できそうです。

import type { MiddlewareHandlerContext } from "$fresh/server/types.ts";

export async function handler(
  req: Request,
  ctx: MiddlewareHandlerContext,
) {
  const res = ctx.destination === "static"
    ? await handleStaticResource(req, ctx)
    : await ctx.next();
  return res;
}

.envのサポートが追加

今後、init.tsで新しくプロジェクトを作成すると、サーバ起動時に.envが自動で読み込まれます。

esm.sh v123

esm.sh v123がリリースされました。

esm-workerパッケージを使って、esm.shをローカルで動かすための仕組みが導入されています。

$ deno run -A https://esm.sh/server
Welcome to use esm.sh!
This is local version of esm.sh running on Deno
 🦕.
Homepage: http://localhost:8787
Module: http://localhost:8787/react

https://github.com/esm-dev/esm.sh/blob/v123/server.ts