Slackの次世代開発プラットフォームについて
Slackの次世代開発プラットフォームが発表されました。
Deno v1.16.2
Deno v1.16.2がリリースされました。
このリリースはバグ修正などがメインです。
- deno testのsub-steps APIを使った際に、テストレポートに実行されたステップ数が表示されるようになりました。
deno test --doc
でコードブロックにCRLFが含まれていると、適切にタイプチェックが行われない問題が修正されました- リモートモジュールのdynamic importに時間がかかる問題が改善されました。
https://github.com/denoland/deno/releases/tag/v1.16.2
deno_std v0.115.0
deno_std v0.115.0がリリースされました。
std/fs
での破壊的変更やstd/node
のNode.jsとの互換性向上などが実施されています。
std/fs
fs/mod.ts
からcopy()
やcopySync()
がexportされなくなりました (これらのAPIは--unstable
に依存するためです)
std/node
wasi
パッケージが実装されました。process
- 下記APIが追加されました
process.config
process.exitCode
process.stdin.setRawMode
process.hrtime.bigint
process.nextTick
のNode.jsとの互換性が向上しました
- 下記APIが追加されました
fs
- 下記APIが追加されました
fs.readSync
fs.read
fs.rm
fs.rmSync
- 下記APIが追加されました
http
- Node.jsとの互換性が向上しました。(
Server#listen()
の引数なしの形式のサポート、ServerResponse#end()
で空のレスポンスのサポートなど)
- Node.jsとの互換性が向上しました。(
util
util.isBuffer
/util._extend
/util.stripVTControlCharacters
が追加されましたutil.isRegExp
のNode.jsとの互換性が向上しました
events
EventEmitter
がES6のクラス形式からES5形式の実装に変更されました。(これによりNode.jsとほぼ互換になったはず)
https://github.com/denoland/deno_std/releases/tag/0.115.0
Denoの設定ファイルにタスクやパーミッション管理の仕組みを追加する提案
下記issueにて、Denoの設定ファイル(--config
)にタスク管理の仕組みを追加することが提案されています。
具体的には設定ファイル内で"tasks"
というプロパティを定義し、そこでdeno run
に与えるデフォルトのエントリーポイントの定義や、deno lint
などで検査対象のファイルなどを定義できるようにすることが想定されているようです。
また、これに関連して、設定ファイルでパーミッションの定義ができるようにする提案もなされています。
Oak v10.0.0
Oakのv10.0.0がリリースされました。
deno_std/http
やdeno_std/ws
への依存が削除 (破壊的変更)
Deno本体でDeno.serveHttp
やDeno.upgradeWebSocket
などが安定化されたため、std/http
やstd/ws
への依存が削除されました。
この影響により、Application.prototype.handle()
がstd/http
のServerRequest
を受け付けないよう変更されています。
またContext.prototype.upgrade()
もstd/ws
ではなくWeb標準のWebSocket
を返すように変更されています。
Application.prototype.fetchEventHandler
が削除 (破壊的変更)
Deno Deploy向けの変更です。
Deno Deploy Beta 2でDeno.listen
やDeno.serveHttp
などがサポートされたこともあり、Application.prototype.fetchEventHandler
が削除されました。
今後は、Deno DeployでもDeno CLIと同様にApplication.prototype.listen
を使用する必要があります。
許容されるリクエストボディのサイズに制限がかかるようになりました (破壊的変更)
DDos攻撃への対策のため、許容されるリクエストボディのサイズに制限が掛けられました (デフォルトは最大10Mibまで)
この制限を無効化したいときは、context.request.body()
でlimit
オプションに0
またはInfinity
を設定する必要があります。
context.request.body({ type: "json", limit: 0 });
Routerミドルウェアでcontext.params
の型がルート文字列を元に推論されるように変更されました。(破壊的変更)
例えば、以下のコードにおけるcontext.params
の型が"/users/:name"
の文字列を元に推論されます。
const router = new Router();
router.get("/users/:name", (context) => {
context.response.body = `Hello ${context.params.name}`;
});
testing.createMockContext
から返却されるContext
オブジェクトにcookies
プロパティが追加されました。
例)
import { testing } from "https://deno.land/x/oak@v10.0.0/mod.ts";
const context = testing.createMockContext();
await context.cookies.get("foo");
Cookie APIでignoreInsecure
オプションのサポート
Cookies.prototype.set
の呼び出し時にignoreInsecure: true
を指定すると、非HTTPS環境でCookieのSecure属性を設定しようとした際に発生するエラーを回避できるようになりました。
context.cookies.set("foo", "bar", { secure: true, ignoreInsecure: true })
https://github.com/oakserver/oak/commit/b85ffc3d48af6b0d6c3b3a37aa5142dbc068cffd
deno_sqlite3
deno_sqlite3はDenoのSQLiteモジュールです。
deno-sqliteがWASMベースなのに対し、こちらはFFIをベースに実装されています。
ベンチマークによるとdeno-sqliteよりも高速に動作するようです。
ただし、deno-sqliteはブラウザでも動くはずなので、用途に応じて使い分けるとよさそうな気がします。