@prezly/theme-kit-core
Version:
Data layer and utility library for developing Prezly themes with JavaScript
80 lines (79 loc) • 4.15 kB
TypeScript
import type { Culture, Newsroom, NewsroomTheme, PrezlyClient, Query, TranslatedCategory } from '@prezly/sdk';
import { Category, NewsroomGallery, Stories, Story } from '@prezly/sdk';
import type { Cache, UnixTimestampInSeconds } from './cache';
export interface Options {
formats?: Story.FormatVersion[];
cache?: {
storage: Cache;
latestVersion: UnixTimestampInSeconds;
};
}
export declare namespace stories {
interface SearchParams {
search?: string;
category?: Pick<Category, 'id'>;
tags?: string[];
locale?: Pick<Culture, 'code'> | Culture.Code;
limit: number;
offset?: number;
highlighted?: number;
query?: Query;
}
interface IncludeOptions<Include extends keyof Story.ExtraFields> {
include?: Include[];
}
}
export declare namespace allStories {
interface SearchParams {
search?: string;
category?: Pick<Category, 'id'>;
locale?: Pick<Culture, 'code'>;
}
interface IncludeOptions<Include extends keyof Story.ExtraFields> {
include?: Include[];
}
}
export declare namespace story {
type SearchParams = {
uuid: Story['uuid'];
slug?: never;
} | {
uuid?: never;
slug: Story['slug'];
};
interface IncludeOptions<Include extends keyof Story.ExtraFields> {
include?: Include[];
}
}
export declare namespace galleries {
interface SearchParams {
offset?: number;
limit?: number;
type?: `${NewsroomGallery.Type}`;
}
}
export type Client = ReturnType<typeof createClient>;
export declare function createClient(prezly: PrezlyClient, newsroomUuid: Newsroom['uuid'], newsroomThemeUuid: NewsroomTheme['id'] | undefined, { formats, cache }?: Options): {
newsroom(): Promise<Newsroom>;
theme(): Promise<import("@prezly/sdk").NewsroomThemePreset> | undefined;
themeSettings(): Promise<Record<string, any> | undefined>;
languages(): Promise<import("@prezly/sdk").NewsroomLanguageSettings[]>;
usedLanguages(): Promise<import("@prezly/sdk").NewsroomLanguageSettings[]>;
locales(): Promise<Culture.Code[]>;
defaultLanguage(): Promise<import("@prezly/sdk").NewsroomLanguageSettings>;
companyInformation(code?: Culture["code"]): Promise<import("@prezly/sdk").NewsroomCompanyInformation>;
notifications(locale: Culture["code"]): Promise<import("@prezly/sdk").Notification<string>[]>;
defaultLocale(): Promise<Culture.Code>;
language(code: Culture["code"]): Promise<import("@prezly/sdk").NewsroomLanguageSettings | undefined>;
languageOrDefault(code: Culture["code"]): Promise<import("@prezly/sdk").NewsroomLanguageSettings>;
categories(): Promise<Category[]>;
category(arg: Category["id"] | Category.Translation["slug"]): Promise<Category | undefined>;
translatedCategories(locale: Culture["code"], categories?: Category[]): Promise<TranslatedCategory[]>;
translatedCategory(locale: Culture["code"], slug: Category.Translation["slug"]): Promise<TranslatedCategory | undefined>;
featuredContacts(): Promise<import("@prezly/sdk").NewsroomContact[]>;
galleries(params?: galleries.SearchParams): Promise<import("@prezly/sdk/dist/endpoints/NewsroomGalleries").ListResponse>;
gallery(uuid: NewsroomGallery["uuid"]): Promise<NewsroomGallery | null>;
stories<Include extends keyof Story.ExtraFields = never>(params: stories.SearchParams, options?: stories.IncludeOptions<Include>): Promise<Stories.ListResponse<Story & Pick<Story.ExtraFields, Include>>>;
allStories<Include extends keyof Story.ExtraFields = never>(params?: allStories.SearchParams, options?: allStories.IncludeOptions<Include>): Promise<(Story & Pick<Story.ExtraFields, Include>)[]>;
story<Include extends keyof Story.ExtraFields = never>(params: story.SearchParams, options?: story.IncludeOptions<Include>): Promise<(import("@prezly/sdk").ExtendedStory & Pick<Story.ExtraFields, "thumbnail_image" | "content" | "header_image" | "preview_image" | "social_image" | "social_text" | "tag_names" | "attached_gallery_content" | "referenced_entities" | Include>) | null>;
};