scrapbox-storage
用途
読み込みを待たなくて済む
他にもあったはずなんだけど思い出せない
実装
DB構造は変えない
リンク数とかの統計は消す。結局使わなかった
各ページのリンク一覧を入れようかは検討中
データサイズが増えるので、多分入れない
入れるもの
title
空ページの場合、どのタイトルを採用するかはscrapbox.ioに準拠する
hasIcon
updated
updated < 0で空ページを表す
linksLc
まあいれてもいいか
入れないもの
titleLc
このscriptではリンクの同一性確認が不要
もし必要なら、このscriptを使用する側で作成する
機能
データ読み込み
networkからは更新しない
もしcacheにより新しいデータがあれば、読み込んでおく
自動更新
指定されたprojectsのリンクを定期的に更新する
間隔
from cache
データ読込時に随時行う
すでに読み込み中なら飛ばす
from network
project更新確認→リンクデータ取得の順
手動更新
更新周り
cache更新よりnetwork更新を優先する?
interface
load
データ取得
呼び出したprojectsは更新対象に登録される
subscribe
リンクデータ更新で呼び出されるlistenerを登録する
戻り値の函数で解除
checkUpdatecheck
手動更新
formatencode/decode
DB用に圧縮したデータを、object形式でわかりやすく変換する
実装したいこと
リアルタイム更新?
Indexed DBはつかわなくていい
responseを合体するなど、linkのような加工が不要なので
都度cacheから読み込むだけで十分
commitIdなどの更新がむずい
script側で作ったresponseはisTrusted: falseを組み込んでおくか
websocket経由でやるには、コードを書くのに時間がかかりそう
intefaces
Pages.load
pageを取得する
loadのタイミング毎にcache APIで問い合わせる
fetchは強制reloadされない限り叩かない
Pages.subscribe
更新される度に呼び出す
各タブは、各タブでloadされたpageのresponseのみ取り込む
他は無視する
2024-08-02
2023-09-04
12:36:24 mod.tsからsetDebugModeをexportした
11:33:18 cacheから読み込む機能も作ろうとしたけど、どうしようかな
全部読み込めなかったら更新を中断するようプログラムしたいが……やってる暇あるかな?
コードを見て、すぐできそうか判断しよう
今度にしよう
11:13:05 subscribeを別ファイルに分離した
2023-08-15
機能毎にファイルを分けて整理した
自動更新はまだ実装していない
とりあえずここでreleaseしようと思う
2023-08-14
2023-08-13
08:46:48 名前を「scrapbox-links-db」から「scrapbox-storage」に変更
一般名すぎるかな
まあいいや
code:mod.ts
export * from "jsr:@takker/cosense-storage@0.1";