From d05693c7eb30cb6341b96f9c9b722bba1feda4f4 Mon Sep 17 00:00:00 2001 From: takker99 <37929109+takker99@users.noreply.github.com> Date: Thu, 26 Sep 2024 15:57:19 +0900 Subject: [PATCH 1/2] feat: Export `push` --- browser/websocket/mod.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/browser/websocket/mod.ts b/browser/websocket/mod.ts index 3b84d01..79196b2 100644 --- a/browser/websocket/mod.ts +++ b/browser/websocket/mod.ts @@ -1,4 +1,5 @@ export * from "./socket.ts"; +export * from "./push.ts"; export * from "./patch.ts"; export * from "./deletePage.ts"; export * from "./pin.ts"; From 7fffd4ff839a72073e3917ab75721f1331955249 Mon Sep 17 00:00:00 2001 From: takker99 <37929109+takker99@users.noreply.github.com> Date: Thu, 26 Sep 2024 15:58:24 +0900 Subject: [PATCH 2/2] refactor: Extract the type of `makeCommit` and document it --- browser/websocket/push.ts | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/browser/websocket/push.ts b/browser/websocket/push.ts index b68eae3..45d4938 100644 --- a/browser/websocket/push.ts +++ b/browser/websocket/push.ts @@ -68,6 +68,28 @@ export type PushError = | NetworkError | AbortError; +/** + * pushしたいcommitを作る関数 + * + * {@linkcode push} で使う + * + * @param page ページのメタデータ + * @param attempts 何回目の試行か + * @param prev 前回のcommitの変更 + * @param reason 再試行した場合、その理由が渡される + * @returns commits + */ +export type CommitMakeHandler = ( + page: PushMetadata, + attempts: number, + prev: Change[] | [DeletePageChange] | [PinChange], + reason?: "NotFastForwardError" | "DuplicateTitleError", +) => + | Promise + | Change[] + | [DeletePageChange] + | [PinChange]; + /** 特定のページのcommitをpushする * * serverからpush errorが返ってきた場合、エラーに応じてpushを再試行する @@ -81,16 +103,7 @@ export type PushError = export const push = async ( project: string, title: string, - makeCommit: ( - page: PushMetadata, - attempts: number, - prev: Change[] | [DeletePageChange] | [PinChange], - reason?: "NotFastForwardError" | "DuplicateTitleError", - ) => - | Promise - | Change[] - | [DeletePageChange] - | [PinChange], + makeCommit: CommitMakeHandler, options?: PushOptions, ): Promise> => { const result = await connect(options?.socket);