Supabase Functions

SupabaseでSupabase FunctionsというFaaSが利用できるようになりました。

Supabase FunctionsはDeno Deployをベースにしており、TypeScriptなどを利用してコードを記述できるようです。


Deno v1.20.4

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

変更点:

  • 外部モジュールのimport時にリダイレクトが発生すると、deno compileで生成したバイナリがうまく動作しなくなる問題が修正されました。

  • Deno v1.20.3で非推奨化されたfetch()のシグネチャが修正されました。

    変更前:

    function fetch(
      input: URL,
      init?: RequestInit,
    ): Promise<Response>;
    

    変更後:

    function fetch(
      input: URL | Request | string,
      init?: RequestInit,
    ): Promise<Response>;
    
  • deno lspdeno.jsoncなどの拡張子が.jsoncのファイルがウォッチされない問題が修正されました。

  • deno taskコマンドでのPATHEXT環境変数の取り扱いが改善されました。


https://github.com/denoland/deno/releases/tag/v1.20.4

deno_std v0.133.0

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

testing/mockモジュールが追加

testingモジュールにテストスパイやテストスタブなどを提供するモジュールが追加されました。

spy

spy()で関数をラップすることで、assertSpyCall()assertSpyCalls()などで検証ができます。


import { assertSpyCall, assertSpyCalls, spy } from "https://deno.land/std@0.133.0//testing/mock.ts";
import { assertEquals } from "https://deno.land/std@0.133.0/testing/asserts.ts";

function add(a: number, b: number): number {
  return a + b;
}

const addSpy = spy(add);
assertEquals(addSpy(1, 2), 3); // => OK
assertEquals(addSpy(2, 3), 5); // => OK
assertSpyCall(addSpy, 0, {
  args: [1, 2],
  returned: 3,
}); // => OK
assertSpyCall(addSpy, 1, {
  args: [2, 3],
  returned: 5,
}); // => OK

assertSpyCalls(addSpy, 2); // => OK

stub

stub()を利用することで、オブジェクトのメソッドをスタブできます。

import { assertSpyCalls, returnsNext, stub } from "https://deno.land/std@0.133.0/testing/mock.ts";
import { assertEquals } from "https://deno.land/std@0.133.0/testing/asserts.ts";

const randomUUID = stub(crypto, "randomUUID", returnsNext([
  "00000000-0000-0000-0000-000000000000",
  "11111111-1111-1111-1111-111111111111",
]));
try {
  assertEquals(crypto.randomUUID(), "00000000-0000-0000-0000-000000000000"); // => OK
  assertEquals(crypto.randomUUID(), "11111111-1111-1111-1111-111111111111"); // => OK
  assertSpyCalls(randomUUID, 2); // => OK
} finally {
  randomUUID.restore();
}

returnsNext()はスタブを作成するためのヘルパであり、他にもreturnsArgs()returnsArg他)などの関数も提供されています。

bytesモジュールへの破壊的変更

  • indexOf, lastIndexOf, 及びincludesがそれぞれindexOfNeedle, lastIndexOfNeedle, 及びincludesNeedleへリネームされています。
  • bytes/equalsequalsNaiveequalsSimdがprivateへ変更されました。

https://github.com/denoland/deno_std/releases/tag/0.133.0

denoland/wanted_modules

Deno公式でDenoに不足しているモジュールをレポートするためのリポジトリが作成されました。

詳しくはIssuesを参照ください。


https://github.com/denoland/wanted_modules

AstroにDenoアダプタが追加

Astro v0.26.0がリリースされました。

Denoアダプタ(@astrojs/deno)が追加されており、AstroとNode.jsで開発したコードをDeno上で動かせるようになりました。