scrapbox-userscript-std
UserScriptを書くにあたって便利そうな函数を集めたrepo
https://github.com/takker99/scrapbox-userscript-std
巷で見かけるUserScriptのパターンを函数化しただけ(一部例外あり)takker.icon
exports
./
すべての機能がre-exportされている
./title
titleLcの処理やencodingなど
./text
その他テキスト変換処理
./rest
Scrapbox REST API
まだ全部は対応し切れていない
(since v0.29.5)./websocket
websocketを使う函数
開いていないページを自由に書き換えられる
ページの削除やピン留めもできる
Scrapbox Websocket APIとでも呼ぼうかなtakker.icon
./browser
web browser上でないと使えないもの
./browser/dom/
websocketを使わない函数
元々↓とまとめてre exportしていたが、bundleでなぜかこちらでは使用していないscrapbox-parserのコードが混じってしまう現象が起きたので、websocketありとなしとでdirectoryを分けた
(deprecated)./browser/websocket/
./websocket/と同じ
v0.24.4まではbrowserでしか動かなかったが、v0.24.5からserver-side runtimeでも動かせるようにしたので、root直下にモジュールを動かした
後方互換性のため、今後もこのパスで読み込めるようにはするつもり
(以下、v0.24.4までの情報)
websocketってブラウザ上じゃないとダメなんですか?bsahd.icon
自分が知っている限りだとそうですtakker.icon
一回Pythonで外部から接続を試みたことあるけれど、おそらく認証周りでどうしてもうまくいかなかったMijinko_SD.icon
ブラウザからCookieを抜き出すのだとダメなのかなbsahd.icon
server-sideからwebsocketを通じてscrapboxへ書き込むことに成功したので、./browser/配下から移動しましたtakker.icon
ブラウザ用にbuildする方法がよくわからないbsahd.icon
web browserでbuildする場合はscrapbox-bundlerを使ってくださいtakker.icon
CLIの場合はesbuildなどでbuildできますが……Web系のmodule resolutionに対応するためにesbuild_deno_loaderなどを噛ませたコードを自作する必要があります。まあまあめんどい
まだbeta版ですが、CLIでesbuild_deno_loaderを使えるようにしたesbuild-deno-cliというのを作ってあります
例:/takker/複数のページを削除するUserScriptをbuildする
$ deno run -A jsr:@takker/esbuild-deno-cli@0.1.0-rc.5 https://scrapbox.io/api/code/takker/複数のページを削除するUserScript/mod.ts --bundle --minify --format=esm
2024-09-19現在はこれを使うのが楽です
--reload未対応なのがきつい。いちいち手動でcacheを消す必要がある
将来的にはもう少しマシなCLIを作る予定です
(「ブラウザ用(のコード)」は「web browserにて<script>やimportで読み込める形式のコード」と解釈しました)
現時点だとこんな感じです。答えになっていないようでしたらまた聞いて下さい
言語
Denoにしか対応していない
Nodeも需要があれば作ろうと思うtakker.icon
たしかdntを使えば変換できるとか
JSRにpublishしたので不要
nodeで動くかテストしてないけど、まあ動くでしょ
2025-01-26 22:15:07 そんなことはなかったhttps://github.com/takker99/scrapbox-userscript-std/issues/218
ファイル構成とかを自分で調べた範囲でまとめてみたMijinko_SD.icon
/Mijinko/takker/scrapbox-userscript-std
でもまだよくわかっていないファイルもある
わかっていないものの大半が内部処理用なので、理解する必要性自体はそんなに無いけれど
/Mijinko/scrapbox-userscript-stdのファイル構成#623ac9a27838e300008dfc91
/takker/要素が画面内にあるかどうかの判定
今は使っていない
まともに動いてなかった気がするtakker.icon
/Mijinko/scrapbox-userscript-stdのファイル構成#623ad5e47838e300008dfcb4
消しました
/Mijinko/scrapbox-userscript-stdのファイル構成#623c3fa47838e30000cc4c62
O(NP) algorithmの実装
別repoに切り出しました
上記2つは反映しましたMijinko_SD.icon
/Mijinko/scrapbox-userscript-stdのファイル構成#623c42757838e30000cc4c68
差分データをwebsocketに渡す形式に変換する
/Mijinko/scrapbox-userscript-stdのファイル構成#623c44907838e3000070f3c1
更新前のページデータから更新後のページデータに書き換えるのに必要なwebsocket送信用データを作っている
差分書き込みのコアプログラム
/Mijinko/scrapbox-userscript-stdのファイル構成#623aca667838e300008dfc95
えっ抜けてた?まじですかtakker.icon
ensure.tsとisHeightViewable.tsが入っていないですねMijinko_SD.icon
おそらく内部処理用で、わざと抜いているのだと思いますが
わからなかったところが埋まったので助かりました!!!!!Mijinko_SD.icon*3
UserScript.icon