@bareblends/vsf-prismic
Version:
Prismic CMS integration with Vue Storefront
118 lines (108 loc) • 2.74 kB
TypeScript
export type PrismicQueryTypes =
& FragmentValue
& FragmentValues
& FragmentBefore
& FragmentAfter
& FragmentBeforeAfter
& FragmentGeo
& FragmentYear
& FragmentMonth
& FragmentDay<any>
& FragmentHour
& DocumentAndResults
export interface PrismicQuery {
at?: FragmentValue<DateValue | DateValue[]>;
not?: FragmentValue<DateValue | DateValue[]>;
missing?: Fragment;
has?: Fragment;
any?: FragmentValues<DateValue>;
in?: FragmentValues<string>;
fulltext?: FragmentValue<string>;
similar?: DocumentAndResults;
dateBefore?: FragmentBefore;
dateAfter?: FragmentAfter;
dateBetween?: FragmentBeforeAfter;
dayOfMonth?: FragmentDay<number>;
dayOfMonthAfter?: FragmentDay<number>;
dayOfMonthBefore?: FragmentDay<number>;
dayOfWeek?: FragmentDay<string | number>;
dayOfWeekAfter?: FragmentDay<string | number>;
dayOfWeekBefore?: FragmentDay<string | number>;
month?: FragmentMonth;
monthBefore?: FragmentMonth;
monthAfter?: FragmentMonth;
year?: FragmentYear;
hour?: FragmentHour;
hourBefore?: FragmentHour;
hourAfter?: FragmentHour;
gt?: FragmentValue<number>;
lt?: FragmentValue<number>;
inRange?: FragmentBeforeAfter<number>;
near?: FragmentGeo;
}
export type PrismicBlockType = 'text' | 'html' | 'image' | 'embed' | 'link'
export type PrismicBlock = Record<string, any>
// TODO: Find other block types
export type PrismicBlockText = Array<{
type: string;
text: string | number;
spans: string[];
}>
export interface PrismicPage {
alternate_langauges: any[];
data?: PrismicBlock;
first_publication_date: string;
href: string;
id: string;
lang: string;
last_publication_date: string;
linked_documents: any[];
slugs: string[];
tags: string[];
type: string;
uid: string;
// TODO: Extend in slices implementation
body?: any[];
}
export interface PrismicDocument {
results: PrismicPage[];
page: number;
results_per_page: number;
results_size: number;
total_results_size: number;
total_pages: number;
next_page: string | null;
prev_page: string | null;
}
export interface PrismicSlice {
slice_type: string;
slice_label: string | null;
primary: PrismicBlock;
items: PrismicBlock[];
}
export interface PrismicMeta {
page: number;
results_per_page: number;
results_size: number;
total_results_size: number;
total_pages: number;
next_page: string;
prev_page: string;
}
export interface ContentSearchParams {
endpoint: string
apiOptions: {
accessToken: string
}
query?: PrismicQuery
queryOptions?: any
linkResolver?: string
}
export interface ApiContext {
client: any
config: ContentSearchParams
}
export interface Component {
component: string
}
export type TransformBlock<T = any> = (block: T) => string;