UNPKG

vite-plugin-react-pages

Version:

<p> <a href="https://www.npmjs.com/package/vite-plugin-react-pages" target="_blank" rel="noopener"><img src="https://img.shields.io/npm/v/vite-plugin-react-pages.svg" alt="npm package" /></a> </p>

93 lines (86 loc) 2.35 kB
import type { File } from '../utils/virtual-module' export type FindPages = ( pagesDir: string, helpers: PageHelpers ) => void | Promise<void> export interface PageHelpers extends PageAPIs { /** * Read the static data from a file. */ readonly extractStaticData: (file: File) => Promise<{ readonly [key: string]: any readonly sourceType: string }> /** * Scan the fileSystem and * set page data in the file handler. * File deletion will be handled automatically */ readonly watchFiles: WatchFilesHelper } export interface WatchFilesHelper { /** Watch all files within a directory (except node_modules and .git) */ (baseDir: string, fileHandler?: FileHandler): void /** Watch files matching the given glob */ (baseDir: string, glob: string, fileHandler?: FileHandler): void /** Watch files matching one of the given globs */ (baseDir: string, globs: string[], fileHandler?: FileHandler): void } export type FileHandler = ( file: File, api: PageAPIs ) => void | Promise<void> | DataPiece | Promise<DataPiece> export interface PageAPIs { /** * Get a mutable data object of runtimeData */ getRuntimeData: (pageId: string) => { [key: string]: string } /** * Get a mutable data object of staticData */ getStaticData: (pageId: string) => { [key: string]: any } /** * Add page data. * If the data already exists, overwrite it. */ addPageData: (pageData: DataPiece) => void } export interface DataPiece { /** * The page route path. * User can register multiple page data with same pageId, * as long as they have different keys. * Page data with same pageId will be merged. * * @example '/posts/hello-world' */ readonly pageId: string /** * The data key. * For a same page, users can register multiple data pieces, * each with its own key. (Composed Page Data) * * @default 'main' */ readonly key?: string /** * The path to the runtime data module. * It will be registered with the `key`. */ readonly dataPath?: string /** * The value of static data. * It will be registered with the `key`. */ readonly staticData?: any /** * when multiple data pieces have same key (conflict), * the data piece with highest priority will win * @default 1 */ readonly priority?: number }