また、--config
オプションで指定する設定ファイルで有効化することも可能です。
{
"compilerOptions": {
"jsx": "react-jsx",
"jsxImportSource": "https://esm.sh/react@17.0.2"
}
}
--location
を指定せずにlocalStorage
が利用できるようになりました。localStorage.getItem("foo");
# http://localhostをオリジンとして扱う
$ deno run --location http://localhost main.ts
# tsconfig.jsonのパスをオリジンとして扱う
$ deno run --config tsconfig.json main.ts
# main.tsのパスをオリジンとして扱う
$ deno run main.ts
fetch
でローカルファイルのダウンロードがサポート利用するには--allow-read
パーミッションが必要です。
const res = await fetch("file:///home/uki00a/.vimrc");
console.log(await res.text());
const signalListener = () => {
// ...
};
Deno.addSignalListener("SIGTERM", signalListener);
Deno.removeSignalListener("SIGTERM", signalListener);
この変更に合わせて、既存のDeno.signal
は削除されています。
Deno.test({
name: "This should fail",
permissions: {
net: false, // --allow-netを無効化
},
fn: async () => {
const _ = await fetch("https://example.com"); // --allow-netが無効化されているため、失敗します
},
});
--compat
)https:
やblob:
インポートがサポートされました。 (.mjs
ファイル中やpackage.json
で"type": "module"
が指定された際に有効化されます)
import { distinct } from "https://deno.land/std@0.114.0/collections/distinct.ts";
import { EventEmitter } from "node:events";
console.log(distinct);
console.log(EventEmitter);
また、Import mapsとの統合もサポートされています。
Deno.startTls
が安定化Deno.startTls
が安定化され--unstable
フラグなしでも利用できるようになりました。
これにより、deno-postgresが--unstable
に依存しなくなりました。
Deno.symlink
などのシンボリック関連のAPIが--allow-write
に加えて--allow-read
パーミッションを要求するように変更されました。
await Deno.symlink(oldpath, newpath);
http/server
(part 1)serveListener()
関数が追加されました。使用法はv0.113.0までのserve()
関数と同様です。
import { serveListener } from "https://deno.land/std@0.114.0/http/server.ts";
const listener = Deno.listen({ port: 8000 });
await serveListener(listener, (request) => {
return new Response("Hello", { status: 200 });
});
http/server
(part 2)また、既存のserve()
の使用法が変更されています。こちらはDeno.Listener
を渡す必要がありません。
import { serve } from "https://deno.land/std@0.114.0/http/server.ts";
await serve((request) => {
return new Response("Hello", { status: 200 });
}, { addr: ":8000" });
http/server
(part 3)また、下記関数が非推奨化されています。
listenAndServe
(今後はserve
の使用が推奨されます)listenAndServeTls
(今後はserveTls
の使用が推奨されます)利用する際はpagesディレクトリ配下に_middleware.ts
ファイルを用意し、handler
関数をexport
する必要があります。
export async function handler(req: Request, handle: () => Promise<Response>) {
const start = Date.now();
const resp = await handle();
const end = Date.now();
console.log(`${req.method} ${req.url} - ${end - start}ms`);
return resp;
}
import type { PageConfig } from "../deps.ts";
export const config: PageConfig = { csp: true };
これでContent-Security-Policy
ヘッダが出力されます。
また、Content-Security-Policy
ヘッダをカスタマイズしたいときは、useCSP
を使用します。
useCSP((policy) => {
changeDirectives(policy.directives);
});
Qiitaで2021年のDeno Advent Calendarが公開されました。