Added protecting hooks
This commit is contained in:
+35
@@ -0,0 +1,35 @@
|
||||
import type { CollectionAfterChangeHook, CollectionAfterDeleteHook } from 'payload';
|
||||
import type { I18nConfig } from '../i18n/index.js';
|
||||
type RevalidateFn = (path: string) => void;
|
||||
type BuildRevalidateHookArgs = {
|
||||
config: I18nConfig;
|
||||
/** Home slug (string or per-locale map) — home revalidates the root. */
|
||||
homeSlug?: Record<string, string> | string;
|
||||
/**
|
||||
* next/cache revalidatePath, INJECTED by the project. The plugin never imports
|
||||
* next/cache itself — that would crash when Payload runs as plain Node
|
||||
* (generate:importmap). The project passes it: `revalidatePath` from 'next/cache'.
|
||||
*/
|
||||
revalidatePath: RevalidateFn;
|
||||
};
|
||||
/**
|
||||
* Builds afterChange + afterDelete hooks that revalidate a page's ISR cache when
|
||||
* an editor saves or deletes it — so changes appear immediately instead of
|
||||
* waiting for the revalidate window. Without this, ISR means editors wait; with
|
||||
* it, ISR is usable for a CMS.
|
||||
*
|
||||
* Handles every locale, the root (home), AND a changed slug (revalidates both the
|
||||
* old and new path so neither goes stale). revalidatePath is injected — the
|
||||
* plugin never imports next/cache (safe under generate:importmap / plain Node).
|
||||
*
|
||||
* // in your Media/Pages collection config, from a project file that CAN import next/cache:
|
||||
* import { revalidatePath } from 'next/cache'
|
||||
* import { buildRevalidateHook } from '@intecion/ipal-kit'
|
||||
* const { afterChange, afterDelete } = buildRevalidateHook({ revalidatePath, config: i18nConfig })
|
||||
* // hooks: { afterChange: [afterChange], afterDelete: [afterDelete] }
|
||||
*/
|
||||
export declare function buildRevalidateHook({ config, homeSlug, revalidatePath, }: BuildRevalidateHookArgs): {
|
||||
afterChange: CollectionAfterChangeHook;
|
||||
afterDelete: CollectionAfterDeleteHook;
|
||||
};
|
||||
export {};
|
||||
Reference in New Issue
Block a user