/** * Next.js helpers: tag-invalidation hook + a small `tag()` builder. * * Wires misina's per-request `meta.invalidates` to Next.js's * `revalidateTag()` so a successful mutation triggers cache * invalidation in one line: * * ```ts * import { onTagInvalidate, tag } from "misina/runtime/next" * import { revalidateTag } from "next/cache" * * const api = onTagInvalidate(createMisina({ baseURL }), revalidateTag) * * await api.post("/users", body, { * meta: { invalidates: [tag("users", "list"), tag("user", "by-id", "42")] }, * }) * // → revalidateTag('users:list') and revalidateTag('user:by-id:42') after success * ``` * * Only fires on successful (non-error) responses to avoid invalidating * caches on a transient failure. */ import type { Misina } from "../../types.mjs"; declare module "../../types.ts" { interface MisinaMeta { /** * Tags to invalidate after a successful response. Wired up by * `onTagInvalidate(misina, revalidateTag)` from `misina/runtime/next`. */ invalidates?: string[]; } } export type RevalidateTagFn = (tag: string) => void | Promise; export declare function onTagInvalidate(misina: Misina, revalidateTag: RevalidateTagFn): Misina; /** * Compose a hierarchical tag string by joining parts with `:`. Pure * helper — use whatever delimiter style your team already prefers. */ export declare function tag(...parts: string[]): string;