diff --git a/README.md b/README.md index a1c62e8..65fb449 100644 --- a/README.md +++ b/README.md @@ -38,14 +38,14 @@ Using ES6 or Typescript: ```js import Butter from "buttercms"; -const butter = Butter("api_token_567abe"); +const butter = Butter("your_api_token"); ``` Using CDN: ```html ``` diff --git a/lib/butter.d.ts b/lib/butter.d.ts index 5ad2bca..b071dd1 100644 --- a/lib/butter.d.ts +++ b/lib/butter.d.ts @@ -61,6 +61,13 @@ export namespace Butter { count: number; } + interface Methods { + /** + * Cancels the ongoing fetch request by aborting the associated AbortController + */ + cancelRequest(): void; + } + interface Response { data?: Data; status?: number; @@ -78,12 +85,14 @@ export namespace Butter { } interface PostListParams { - preview?: 1 | 0; + author_slug?: AuthorSlug; + category_slug?: string; exclude_body?: boolean; + limit?: number; + offset?: number; page?: number; page_size?: number; - author_slug?: AuthorSlug; - category_slug?: string; + preview?: 1 | 0; tag_slug?: string; } @@ -96,28 +105,35 @@ export namespace Butter { AuthorSlug extends string = string, PostSlug extends string = string > { - status: "published" | "draft"; - created: Date; - updated: Date; - published: Date; - title: string; + author: Omit, "recent_posts">; + body?: string; + categories: Category[]; + created: string; + featured_image: string | null; + featured_image_alt: string; + meta_description: string; + published: string | null; + scheduled: string | null; + seo_title: string; slug: PostSlug; + status: "published" | "draft" | "scheduled"; summary: string; - seo_title: string; - meta_description: string; - featured_image: string; - featured_image_alt: string; - url: string; - author: Omit, "recent_posts">; tags: Tag[]; - categories: Category[]; - body?: string; + title: string; + updated: string | null; + url: string; + } + + interface PostMeta { + next_post: object | null; + previous_post: object | null; } interface PostRetrieveResponse< AuthorSlug extends string = string, PostSlug extends string = string > { + meta: PostMeta; data: Post; } @@ -134,7 +150,7 @@ export namespace Butter { data: Post[]; } - interface PostMethods { + interface PostMethods extends Methods { /** * Retrieve a post * @param slug The post's slug @@ -195,7 +211,7 @@ export namespace Butter { data: Category[]; } - interface CategoryMethods { + interface CategoryMethods extends Methods { /** * Retrieve a category * @param slug The category's slug @@ -242,7 +258,7 @@ export namespace Butter { data: Tag[]; } - interface TagMethods { + interface TagMethods extends Methods { /** * Retrieve a tag * @param slug The tag's slug @@ -299,7 +315,7 @@ export namespace Butter { data: Author[]; } - interface AuthorMethods { + interface AuthorMethods extends Methods { /** * Retrieve an author * @param slug The author's slug @@ -332,7 +348,7 @@ export namespace Butter { tag_slug?: string; } - interface FeedMethods { + interface FeedMethods extends Methods { /** * Get a feed * @param feedType The type of feed @@ -353,25 +369,30 @@ export namespace Butter { ////////// interface PageRetrieveParams { - preview?: 0 | 1; levels?: number; + locale?: string; + preview?: 0 | 1; } type PageListParams = WithFieldsPrefix & { - preview?: 0 | 1; levels?: number; - order?: `${"-" | ""}${"published" | "updated"}`; + limit?: number; + locale?: string; + offset?: number; page?: number; page_size?: number; + preview?: 0 | 1; }; interface PageSearchParams { - page_type?: PageType; - locale?: string; levels?: number; + limit?: number; + locale?: string; + offset?: number; page?: number; page_size?: number; + page_type?: PageType; } interface Page< @@ -379,12 +400,13 @@ export namespace Butter { PageType extends string = string, PageSlug extends string = string > { + fields: PageModel; + name: string; page_type: PageType; + published: string | null; slug: PageSlug; - name: string; - published: Date; - updated: Date; - fields: PageModel; + status: "published" | "draft" | "scheduled"; + updated: string | null; } interface PageRetrieveResponse< @@ -411,7 +433,7 @@ export namespace Butter { data: Page[]; } - interface PageMethods { + interface PageMethods extends Methods { /** * Retrieve a single page * @param page_type The page type @@ -468,11 +490,12 @@ export namespace Butter { type ContentParams = WithFieldsPrefix & { - test?: 0 | 1; + levels?: number; + locale?: string; order?: keyof OrderParam; page?: number; page_size?: number; - levels?: number; + preview?: 0 | 1; }; interface ContentResponse { @@ -480,7 +503,7 @@ export namespace Butter { data: ContentArrays; } - interface ContentMethods { + interface ContentMethods extends Methods { /** * Retrieve content * @param keys An array of the keys of the content to retrieve @@ -500,26 +523,36 @@ export namespace Butter { } export class ButterStatic { - post: Butter.PostMethods; - category: Butter.CategoryMethods; - tag: Butter.TagMethods; author: Butter.AuthorMethods; + category: Butter.CategoryMethods; + content: Butter.ContentMethods; feed: Butter.FeedMethods; page: Butter.PageMethods; - content: Butter.ContentMethods; + post: Butter.PostMethods; + tag: Butter.TagMethods; constructor( apiToken: string, - testMode?: boolean, - timeout?: number, - axiosHook?: (axios: AxiosInstance) => unknown + options: { + cache?: string + onError?: ((errors: any[], params?: object) => void) | null + onRequest?: ((apiEndpoint: string, params?: object) => void) | null + onResponse?: ((response: Response, params?: object) => void) | null + testMode?: boolean + timeout?: number + } ); } export const Butter: ( apiToken: string, - testMode?: boolean, - timeout?: number, - axiosHook?: (axios: AxiosInstance) => unknown + options?: { + cache?: string + onError?: ((errors: any[], params?: object) => void) | null + onRequest?: ((apiEndpoint: string, params?: object) => void) | null + onResponse?: ((response: Response, params?: object) => void) | null + testMode?: boolean + timeout?: number + } ) => ButterStatic; export default Butter;