V1 Road map for scrapbox-userscript-std
scrapbox-userscript-stdのmajor version releaseでいれること(ほぼ達成済み、2026-06-04現在)
breaking changes(完了)
✅deno.jsoncで組み込み型定義を決める
✅<reference no-default-lib="true" />を一掃する
理由:
jsr.ioがsupportしていない
コードに組み込み型情報を入れると、deno check --remoteが不安定になる
cacheの状態によってエラーが出たり、browserで使わないはずのコードがbrowser環境扱いになってしまったり
✅jsr.ioにpublishする
documentを読みやすくする
etc.
✅option-tの導入
throwをなくす
明らかにバグな状況を除き、全てResult<T, E>で返す
panic!の用途と同じ考え方
今までResult<T, E>は自前で作っていたが、option-tにまかせて実装を完結にする
Result<T, E>の内部実装に立ち入らないようにする目的もある
もしResult<T, E>の中身を変えたとしても、unwrapOk()で正常値を取り出していれば、unwrapOk()などの関数の実装を変えるだけで済む
fetch()の例外を全てResult<T, E>で返す
NetoworkError
https://doc.deno.land/https://esm.sh/v135/ky@1.5.0/distribution/index.d.ts/~/HTTPError と大体同じpropsにする
HTTPError
response.okがfalseだったときに作る
TimeoutError
requestとreasonを入れる
https://developer.mozilla.org/ja/docs/Web/API/Window/fetch#例外
https://zenn.dev/junki555/articles/9ea9bd54aa1ddc
redirectで問題があるらしい?
esbuild_deno_loaderの実装で色々工夫してあった。それを真似すればいいだろう
✅いらない関数、動いていない関数を消す
✅scrapbox-userscript-websocketを統合する
分ける意味なかったと思う
あとAsync Generatorを使ったevent購読はやっぱり使いづらい
✅jsrへのpublish
https importを一切使えない
scrapbox-jp/typesやscrapbox-userscript-websocketなどもjsrにpublishしないといけなくなった
とりあえずscrapbox-jp/typesは@cosense/typesにpublishする
12:23:19 https://github.com/scrapbox-jp/types/pull/53
scrapbox-userscript-websocketはもともと統合する予定だったので、統合してしまう
#2024-07-28 17:38:00
今後の方針(post-V1)
throwの撲滅
browser/dom/やapi/、websocket/に残っているthrowをResult型に置き換える
unstable-apiの統合・安定化
rest/とapi/で重複・分断している機能を統合し、一貫したResult型のエラー処理にする
test coverageの向上
browser/dom/とwebsocket/、api/のテストを追加する
examples/の作成
READMEから参照しているが未作成のexamples/ディレクトリを整備する
Node.jsサポートの安定化
npmビルドの型チェック有効化とテスト実行を目指す
#2026-06-04