2023/12/25〜2023/12/31の最新情報

Temporal APIのサポートについて まだマージはされていませんが、Deno本体にTemporal APIのサポートを追加するPRが作成されています。 feat(unstable): add Temporal API support #21738 現時点では、--unstableまたは--unstable-temporalを指定したときのみTemporal APIが有効化される想定のようです。 Danet v2 DenoのWebフレームワークであるDanetのv2がリリースされています。 内部で使用されているフレームワークがHonoへ移行されているようです。また、パフォーマンスについても60%の向上が実現されているようです。 このリリースに合わせてdeno.land/x/danet_swaggerのv2もリリースされており、Swagger UIからscalarへの移行が行われているようです。 https://discord.com/channels/684898665143206084/712010403302866974/1189921808883912775 Comparing 1.8.0…2.0.0 · Savory/Danet Netzo Netzoというプロダクトが公開されているようです。 FreshのメタフレームワークであるNetzo frameworkやNetzo platformというビジネス向けのWebアプリケーションの開発やデプロイなどを容易にしてくれるプラットフォームなどが提供されるようです。 Netzo frameworkについてはOSSとして開発されているようで、以下のリポジトリで公開されているようです。 https://github.com/netzo/netzo https://github.com/uki00a/awesome-fresh/pull/38

December 31, 2023

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

Deno v1.39.1 Deno v1.39.1がリリースされました。 Deno.serveのUnixドメインソケットサポートの安定化 Deno.serveのUnixドメインソケットサポートが--unstableなしで動作するようになりました。(Deno v1.39) deno coverage deno coverageの実行時にディレクトリの省略が任意に変更されました。(デフォルトとしてcoverage/が使われます) deno jupyter importされたモジュールでDeno.testを使っているとパニックする問題が修正されています。 Node.js互換性 Prismaなどが動かなくなってた問題が修正されているようです。(https://github.com/prisma/prisma/issues/2452#issuecomment-1866409306) また、node:cryptoで以下の対応が実施されています。 pseudoRandomBytes()が実装されています。 fork()から返却されたChildProcessに対してkillを呼ぶと、プロセスがハングする問題が修正されています。 deno_std v0.210.0 deno_std v0.210.0がリリースされました。 非推奨モジュール・APIの削除 std/crypto/to_hash_string.tsが削除されました。(encodeHexやencodeBase64への移行が推奨されます。) std/encoding: ascii85.ts/base32.ts/base58.ts/base64.ts/base64url.ts/hex.tsからencodeとdecodeが削除されました。 std/http/method.tsが削除されました。 非推奨化 std/semver parse()とcanParse()からSemVerを引数に取る形式が非推奨化されました。 rcompare.tsが非推奨化されています。 isSemVerComparatorがisComparatorへリネームされています。(isSemVerComparatorは非推奨化されています) SemVerComparatorがComparatorへリネームされています。(SemVerComparatorは非推奨化されています) std/encoding/base32.ts byteLength()が非推奨化されています。 cli/spinner.tsが実装 CLI向けにスピナーを表示できます。 import { Spinner } from "https://deno.land/std@0.210.0/cli/spinner.ts"; const spinner = new Spinner({ message: "Loading..." }); spinner.start(); try { await doSomething(); } finally { spinner.stop(); } std/logでJSONL形式でのロギングがサポート handlersのセットアップ時に、formatterにjsonFormatterを指定すると有効化されます。...

December 24, 2023

2023/12/04〜2023/12/10の最新情報

Deno v1.38.5 Deno v1.38.5がリリースされました。 Deno.Kvにwatch()メソッドが実装されています。引数として監視したいキーの一覧を指定すると、戻り値として返却されたReadableStream<Deno.KvEntryMaybe<T>[]>からそれらのキーに関する変更が通知されます。 const kv = await Deno.openKv(":memory:"); const watcher = kv.watch( [ ["users", 1], ["users", 2] ] ); (async () => { for await (const entries of watcher) { // 変更があった際は通知されます。 console.info(entries); } })(); await kv.set(["users", 1], "foo"); await kv.set(["users", 2], "bar"); await kv.set(["users", 3], "baz"); --unstable-sloppy-importsの実装について まだリリースはされていませんが、Deno本体に--unstable-sloppy-importsというオプションを導入するPRがマージされています。 feat(unstable): ability to resolve specifiers with no extension, specifiers for a directory, and TS files from JS extensions #21464...

December 10, 2023

2023/11/27〜2023/12/03の最新情報

fresh v1.6 fresh v1.6がリリースされました。 以下に内容をまとめたため、よろしければそちらを参照いただければと思います。 fresh v1.6 Deno v1.38.4 Deno v1.38.4がリリースされました。 node:child_process: spawnSync()でstatusが常に0に設定される問題が修正されました。 deno lsp: CPU使用率やパフォーマンスの改善が実施されています。 Deno Cron (Deno.cron())のアナウンス Deno.cron()が正式にアナウンスされました。 Announcing Deno Cron 上記の記事によると、Deno.cron()はすでにDeno Deployでも利用できるようで、登録されたハンドラを実行する際に、オンデマンドでisolateを立ち上げてくれるようです。 freshのイテレーションプラン (2023/12) freshの2023/12におけるイテレーションプランが公開されています。 December 2023 iteration plan #2108 View TransitionsのサポートやDeno v1.38で導入されたHMRやprecompiled JSX transformなどに関する検討などが計画されているようです。 OpenAI Deno SDK OpenAI公式からDenoのSDKが公開されました。 And… we’re back to shipping! Announcing the @OpenAI Deno SDK, now available at https://t.co/1apX59gG5S, built in collaboration with @stainlessapi. Deno is a Javascript runtime that natively supports Typescript, is secure by default, and provides an awesome DevX....

December 3, 2023

fresh v1.6

fresh v1.6がリリースされました。 この記事では主な変更点などについて解説します。 Tailwind CSSの公式サポート fresh公式でTailwind CSSのサポートが導入されました。 Tailwind CSSプラグイン (plugins/tailwind.ts)が追加されています。 // fresh.config.ts import { defineConfig } from "$fresh/server.ts"; import tailwind from "$fresh/plugins/tailwind.ts"; export default defineConfig({ plugins: [tailwind()], }); 本番環境での利用について このTailwind CSSプラグインをDeno Deployで利用する場合は、事前ビルドとの併用が必須になるためご注意ください。 このプラグインを導入した状態でdeno task buildを実行すると、_fresh/staticにCSSファイルが生成されるため、Deno Deployではこちらが利用される想定です。(_fresh/staticについては後述します。また、本番ビルド時に生成されるCSSファイルはcssnanoで最適化されます) 新規プロジェクトへの導入について freshのinit.tsでプロジェクトを初期化する際に、Tailwind CSSの有効化がサポートされています。 既存プロジェクトへの導入方法 deno.jsonで公式で推奨されるバージョンのTailwind CSSを読み込むよう設定します。 ($fresh/src/dev/imports.ts) { "imports": { // ... 省略 ... "tailwindcss": "npm:tailwindcss@3.3.5", "tailwindcss/": "npm:/tailwindcss@3.3.5/", "tailwindcss/plugin": "npm:/tailwindcss@3.3.5/plugin.js" }, // ... 省略 ....

December 3, 2023

Deno v1.38

Deno v1.38がリリースされました。 この記事では主な変更点などについて解説します。 deno doc deno doc --lint deno docコマンドで--lintオプションがサポートされました。 $ deno doc --lint mod.ts Missing JS documentation comment. at file:///home/uki00a/ghq/github.com/uki00a/some-project/mod.ts:12:3 このオプションを指定すると、DenoはAPIドキュメントを出力する前に、各APIを検査します。そして以下のようなAPIが検出された場合、APIドキュメントを出力せずにエラーを表示します。 exportされているAPIにJSDocコメントが書かれていない場合 (Missing JS documentation comment.) exportされているAPIの戻り値の型定義が省略されている場合 (Missing return type.) exportされている型のプロパティがexportされていない型を参照している場合 (Type 'foo' references type 'Bar' which is not exported from a root module.) このエラーが発生した場合、そのexportされていない型に@internalを指定することでエラーを抑止できます deno doc --html deno docでAPIドキュメントのHTML形式での出力がサポートされました。 --htmlを指定すると、docsディレクトリにHTMLが出力されます。 $ deno doc --html --name=fresh-testing-library mod.ts Written 261 files to "./docs/" docs/index.htmlを開くことで作成されたAPIドキュメントを閲覧できます。...

November 5, 2023

2023/10/16〜2023/10/22の最新情報

fresh v1.5.2 fresh v1.5.2がリリースされています。 <a>要素のアクセシビリティに関する改善 fresh v1.5で<a>にdata-current/data-ancestorを付与する機能が入りました。 このリリースではさらに<a>に対してaria-current属性も設定されるように改善されています。 aria-current=page: data-currentが付与される場合、この属性も一緒に付与されます。 aria-current=true: data-ancestorが付与される場合、この属性も一緒に付与されます。 https://github.com/denoland/fresh/pull/1915 devサーバとブラウザとのやり取りがWebSocketベースで行われるように devサーバとブラウザとのやり取りがEventSourceベースからWebSocketベースへ移行されているようです。 Firefoxにおいて接続が切れてしまうことのある問題(#1765)の解消や将来的なHMRのサポートなどを視野に入れた変更のようです。(後述) https://github.com/denoland/fresh/pull/1943 https://github.com/denoland/fresh/pull/1944 DenoでのHMRのサポートについて Deno本体にHMRをサポートするためのPRが作成されています。 feat: deno run –unstable-hmr (#20876) まだ正式に入るかどうかはわからないものの、HMRを有効化するための--unstable-hmrオプションの導入や、ファイル変更時にCustomEvent経由で通知をすることなどが検討されているようです。

October 22, 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

fresh v1.5

fresh v1.5がリリースされました。 この記事では主な変更点などについて解説します。 Partials SPAライクなクライアントサイドでのページ遷移を実現するためにPartialsという機能が導入されました。 基本的な使い方 以下のコードを例に見てみます。 // routes/docs/[id].tsx import { Partial } from "$fresh/runtime.ts"; export default function Page({ docs, currentDoc }: { docs: Array<Doc>, currentDoc: Doc }) { return ( <> <Sidebar docs={docs} /> <Partial name="docs-main-content"> <MainContent doc={currentDoc} /> </Partial> </> ); } function Sidebar({ docs }: { docs: Array<Doc> }) { return ( <nav f-client-nav> <ul class="flex flex-col gap-2"> {docs....

October 15, 2023

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

Deno v1.37でリリースされそうな機能について 今週はDenoのリリースが行われていないため、おそらく次にリリースされるであろうDeno v1.37に入りそうな機能などについて紹介します。 Lockfile v3 deno.lockの新しいフォーマット(v3)が実装されています。 feat: lockfile v3 #20424 npm.specifiersがpackages.specifiersへ、npm.packagesがpackages.npmへ移動されています。 これはdeno:URLのサポートを想定した変更のようです。 TypeScript v5.2 Deno本体に搭載されたTypeScriptをv5.2にアップデートするPRがマージされています。 feat: TypeScript 5.2 #20425 ただし、usingやDecorator Metadataなどについてはv8側でサポートされるまでは使用できない状況のようです。 Import Attributes DenoにImport Attributesを実装するPRがマージされています。 feat: support import attributes #20342 // static import import data from "./data.json" with { type: "json" }; // dynamic import const data2 = await import("./data2.json", { with: { type: "json" } }); Deno Deployでnpmパッケージがサポート Deno Deployでnpmパッケージがサポートされました。Denoと同様に、npm:URL経由でnpmパッケージを読み込むことができます。 以下の公式ブログ記事では、ExpressやFastify, OpenAI APIなどの使用例が紹介されています。...

September 10, 2023