UNPKG

poststore

Version:

PostStore can be used with NEXT.JS to create markdown-based blogs.

62 lines (61 loc) 1.71 kB
import { Clone } from './helper'; import { PropList } from './prop'; import { FileNode } from './node'; import { PathList } from './path'; export declare type PageCategory = keyof PropList & keyof PathList; export interface PageParamOption extends Partial<Clone<PageCategory, string>> { } export interface PerPageOption extends Partial<Omit<Clone<PageCategory, number>, 'post'>> { } export interface PostStore { rootNode: FileNode; propList: PropList; pathList: PathList; info: { name: string; postDir: string; }; options: { postDir: string; perPage: PerPageOption; pageParam: PageParamOption; }; } export interface PathStore extends Pick<PostStore, 'pathList'> { } export interface PostData extends CorePostData, ExtraPostData { } export interface CorePostData { slug: string; title: string; tags: string[]; html: string; date: number; isPublished: boolean; } export interface PostInfo { assets?: PostStoreAsset[]; excerpt?: string; thumbnail?: string; } export interface ExtraPostData extends PostInfo { categories: string[]; prevPost?: PostLink; nextPost?: PostLink; } export interface PostStoreAsset { sourcePath: string; targetPath: string; } interface PostLink extends Pick<PostData, 'slug' | 'title'> { } export interface ShortPostData extends Pick<PostData, 'slug' | 'title' | 'date' | 'thumbnail' | 'excerpt' | 'categories' | 'tags'> { } export declare type SlugMap = Map<string, boolean>; export interface FrontMatter { title?: string; date?: Date; tags?: string[]; published?: boolean; } export {};