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>
81 lines • 2.54 kB
TypeScript
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;
}
//# sourceMappingURL=types.doc.d.ts.map