generated at
✅scrapbox-headless-scriptをscrapbox-userscript-stdに統合
ScrapboxのWebSocketを使っている部分だけ別にする必要性がないので
./browser/websocket に置く

段取り
まずはscrapbox-headless-scriptでいくつかrefactoringと機能追加を済ませる
それが終わったら統合する
逆でもいい気がするがtakker

2022-02-10
19:01:16 merged
18:59:59 終了
使いやすいように、subdirectoryにも mod.ts を置いた
18:38:33 統合作業開始
18:36:15 テスト終了
修正PRを出す
18:37:55 merged
17:34:20 minified codeをscrapbox-headless-scriptに貼り付けた
いくつかサンプルコードをここに書いて、/takker/@takker/ScrapJupyter経由で試す
2022-02-11 17:26:47 scrapbox-userscript-std/browser/websocketの動作確認用コードにテンプレを移した
patch()
新しいページを作るだけ
js
import { patch } from "../scrapbox-headless-script/mod.js"; //新しいページを作るだけ await patch(scrapbox.Project.name, "test-new-page", (lines) => lines.map(line => line.text));
17:39:50 あ、存在しないページだと早期returnしてたhttps://github.com/takker99/scrapbox-headless-script/blob/0.3.0/shortcuts.ts#L76
直そう
17:43:41 成功!
タイトルのすぐ下に追記する
js
import { patch } from "../scrapbox-headless-script/mod.js"; await patch(scrapbox.Project.name, "test-new-page", (lines) => lines.length < 2 ? [ lines[0].text, "新しい行その1", ] : [ lines[0].text, lines[1].text.replace(/(\d+)/, (_, n) => `${parseInt(n) + 1}`), ...lines.slice(1).map(line => line.text), ]);
18:28:25 問題なさそう
patch() delete()
新しいページを作って消す
js
import { patch, deletePage } from "../scrapbox-headless-script/mod.js"; //新しいページを作って消す const page = "test-new-page"; await patch(scrapbox.Project.name, page, (lines) => lines.map(line => line.text)); await deletePage(scrapbox.Project.name, page);
17:48:02 成功
patch() で何も更新しないと、 ページの読み込み中に wss://scrapbox.io/socket.io/?EIO=4&transport=websocket への接続が切断されました というエラーがコンソールに流れる
ネットワーク欄には何も表示されない
17:57:36 わかった。socket.on("connect", () => {...})で通信確立を待つ前にSocket.disconnect()で切断したからだ
Socket.on() Socket.emit() を呼び出すときは、勝手に connect を待機するようだ
これはscrapbox-userscript-websocketをいじるしかないな。
18:19:48 直った
pin()
ページが存在しないときはピンしない
js
import { pin } from "../scrapbox-headless-script/mod.js"; await pin(scrapbox.Project.name, "test-new-page");
18:31:14 あれ?pinされてしまった……
18:33:29 コードミスってた

ページが存在しないときはページを作ってからピンする
js
import { pin } from "../scrapbox-headless-script/mod.js"; await pin(scrapbox.Project.name, "test-new-page", { create: true });
unpin()
js
import { unpin } from "../scrapbox-headless-script/mod.js"; await unpin(scrapbox.Project.name, "test-new-page");
18:35:57 pin() / unpin() のテスト終了
17:30:04 一通りテストしたら統合作業に入る

#2022-02-11 17:26:57
#2022-02-10 15:28:47