//#region src/internal/revalidate.d.ts /** * 再検証のトリガー。 * - "mount": ハイドレーション直後に 1 度だけ実行 * - "visibility": タブ可視化 (`visibilitychange` で hidden→visible) の度に実行 */ type NotionRevalidateTrigger = "mount" | "visibility"; /** * 鮮度チェックのオプション(DO/realtime が無い環境のフォールバック)。 * * mount / 再フォーカス時に `POST {basePath}/check/{collection}/{slug}?v=` を叩き、 * サーバーが Notion と突合した結果 `stale: true` のときだけ revalidate する。 * `url` は省略でき、その場合 `collection` と `slug`(または `item.slug`)から導出する。 * realtime(DO)を併用する場合、このチェックは行わない(push が主経路)。 */ interface NotionPollOptions { /** * check エンドポイント URL。省略時は `collection` / `slug`(または `item`) * から `${basePath}/check/${collection}/${slug}` を導出する。 */ url?: string; /** URL 導出に使うコレクション名(例: "posts")。`url` 省略時に必須。 */ collection?: string; /** URL 導出に使う slug。省略時は `item.slug` を使う。 */ slug?: string; /** `slug` と `version` をまとめて導出するためのアイテム。 */ item?: { slug: string; lastEditedTime: string; }; /** URL 導出時のベースパス。既定 `/api/cms`(`cms.handler()` の既定 basePath)。 */ basePath?: string; /** チェック時にサーバーへ送る現在の表示バージョン。省略時は `item.lastEditedTime` を使う。 */ version?: string; /** * 間隔チェック(ms)。既定は未設定=間隔チェックなし(mount / 再フォーカス契機のみ)。 * 明示すると従来どおり一定間隔でも check する(Notion API を消費するので注意)。 */ intervalMs?: number; } /** * リアルタイム購読(push)のオプション。設定すると WebSocket でサーバ push を受け、 * メッセージ受信で即 revalidate する。`url`(ws/wss)を明示するか、`collection` / * `slug`(または `item`)から `${basePath}${path}?collection=&slug=` を導出する。 */ interface NotionRealtimeOptions { /** 接続先 WebSocket URL(ws/wss)。明示時は導出より優先。 */ url?: string; /** URL 導出に使うコレクション名。`url` 省略時に必須。 */ collection?: string; /** URL 導出に使う slug。省略時は `item.slug`。 */ slug?: string; /** `slug` を導出するためのアイテム。 */ item?: { slug: string; }; /** URL 導出時のベースパス。既定 `/api/cms`。 */ basePath?: string; /** realtime ルートのパス。既定 `/realtime`。 */ path?: string; } interface UseNotionRevalidateOptions { /** 既定値: `["mount", "visibility"]`(開いた時+再フォーカス)。複数指定可。 */ on?: NotionRevalidateTrigger | NotionRevalidateTrigger[]; /** 鮮度チェック(DO/realtime 無効時のフォールバック。`POST /check`)。 */ poll?: NotionPollOptions; /** リアルタイム購読(DO, push 主経路)。設定するとポーリング/check は停止する。 */ realtime?: NotionRealtimeOptions; } //#endregion export { UseNotionRevalidateOptions as i, NotionRealtimeOptions as n, NotionRevalidateTrigger as r, NotionPollOptions as t }; //# sourceMappingURL=revalidate-BlMUmq1z.d.mts.map