Luma

Results 58 comments of Luma

全然テスト成功しないと思ったら、global な mutate に swrv は対応していなかった。 https://github.com/Kong/swrv/issues/280 とりあえず後日、pushだけはするが、使えない。

TBD: https://github.com/aspida/aspida/issues/746

v1 で空間が完全に別れた環境の mutate というのが使えるようになります。 ```ts import { useSWRConfig } from "swr" // ... const swrConfig = useSWRConfig() swrConfig.mutate(aspidaDefaultKey /*, data?, shouldRevaliate? */) ``` がどのように置き換わるべきか、という案を募集したいです。 これの必要性ですが、まずテストを書く際にかなり困りそうです。(すくなくとも `@aspida/swr` 自体のテストが書けず困った) また、これの対応方法によっては swr v0.x...

swrvへの実装はまだです。実際にbumpするときはそれも考慮すべきでしょう。

パスパラメータでだけpolymorphを使えるわけではないのでその場合はどうなりますかね? フロントエンドで変えられないのはありますが、 `Id | Id[] => User | User[]` でしかできないとしても、 `Array.isArray()` とかで頑張ってもらうことになるかな…とかは思います。 `Id[] => User[]` しか使わないと決めて、フロントエンド側の定義でこれのみを記述するとか。 実際には本当に維持しにくい仕組みなのか、は今後の機能追加と調整して決定する必要があると思いますが、大変で複雑な割に恩恵が少ないとは思います。

両方とも `GET api/hoge` という同一リクエストを生成するという理解であっていますか…? 個のケースですと、サーバー側で違いが現れることはないので number か string かが変わることがないと思いますし、逆にパスパラメータ以外の、bodyのみの変化で返す値の型を決めたい、という場合が polymorph ということかと思います。 例えば、 `{format: "number", limit: 10}` では number[] で返すが、 `{format: "bigint", limit: 10}` なら string[] で返す(それを同一エンドポイントで)、みたいな。

ところで、polymorphはやはり暗黙のルールが多いというのも気になりそうです。(polymorphを残し続けることのデメリット) 例えば、 `{format: "json"}` なら JSON、 `{format: "formdata"}` なら FormData をそれぞれ返す、みたいなpolymorphic定義は許容されていません。 こういった制約をドキュメントと、ツール(DefineMethods, eslint-plugin)で網羅するのはなかなか大変なことかなと思います。(現状はないですが、やはりどこかであったほうがいいかなと思います) 逆にサポートしてしまうというのも考えられますが、if文を自動生成して、かつバリデータをうまく対応する…というのはやはりこちらも複雑になりすぎる気がします。

たとえば、パスパラメータだと以下のように ```ts const num = await $api._hogeA('fuga').$get() // number const str = await $api._hogeB('fuga').$get() // string ``` api/fuga へのリクエストも作れると思うのですが、これを禁止したい(パスの変動を許さない)状態で、この書き方ができなくなるのではないかな、と思います。

なるほどです。それなら実現自体はできそうです。

I think we should determine when should we escape the route name, and if the folder `$123` is invalid, it should be warned.