import { PrismicDocument } from "./types/value/document.js"; import { LinkResolverFunction } from "./helpers/asLink.js"; import { BuildQueryURLArgs } from "./buildQueryURL.js"; import { AbortSignalLike, FetchLike, RequestInitLike } from "./lib/request.js"; import { Query } from "./types/api/query.js"; import { Ref } from "./types/api/ref.js"; import { Repository } from "./types/api/repository.js"; //#region src/Client.d.ts /** Extracts a document type with a matching `type` property from a union of document types. */ type ExtractDocumentType = Extract extends never ? TDocuments : Extract; /** * The minimum required properties to treat as an HTTP Request for automatic Prismic preview * support. */ type HttpRequestLike = // Web API Request { headers?: { get(name: string): string | null; }; url?: string; } | { headers?: { cookie?: string; }; query?: Record; }; /** * A function that returns a ref string. Used to configure which ref the client queries content * from. */ type GetRef = (params?: Pick & FetchParams) => string | undefined | Promise; /** Parameters for client methods that use `fetch()`. */ type FetchParams = { /** * Options provided to the client's `fetch()` on all network requests. These options will be * merged with internally required options. They can also be overriden on a per-query basis using * the query's `fetchOptions` parameter. */ fetchOptions?: RequestInitLike; /** @deprecated Move to `fetchOptions.signal`: */ signal?: AbortSignalLike; }; /** Prismic client configuration. */ type ClientConfig = { /** * The client's Content API endpoint. * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#config-options} */ documentAPIEndpoint?: string; /** * The secure token used for the Content API. * * @see {@link https://prismic.io/docs/fetch-content#content-visibility} */ accessToken?: string; /** * The version of the repository's content. It can optionally be a function that returns a ref. * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#config-options} */ ref?: string | GetRef; /** * A list of route resolver objects that define how a document's `url` property is resolved. * * @see {@link https://prismic.io/docs/routes} * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#config-options} */ routes?: NonNullable; /** * The URL used for link or content relationship fields that point to an archived or deleted page. * * @see {@link https://prismic.io/docs/routes} * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#config-options} */ brokenRoute?: NonNullable; /** * Default parameters sent with each Content API request. These parameters can be overridden on * each method. * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#config-options} */ defaultParams?: Omit; /** * The `fetch` function used to make network requests. * * @default The global `fetch` function. * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#config-options} */ fetch?: FetchLike; /** * The default `fetch` options sent with each Content API request. These parameters can be * overriden on each method. * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#config-options} */ fetchOptions?: RequestInitLike; }; /** * Parameters specific to client methods that fetch all documents. These methods start with `getAll` * (e.g. `getAllByType`). */ type GetAllParams = { /** * Limit the number of documents queried. * * @default No limit. */ limit?: number; }; /** * A client for fetching content from a Prismic repository. * * @see {@link https://prismic.io/docs/fetch-content} * @see {@link https://prismic.io/docs/technical-reference/prismicio-client} */ declare class Client { #private; /** * The client's Content API endpoint. * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#config-options} */ documentAPIEndpoint: string; /** * The secure token used for the Content API. * * @see {@link https://prismic.io/docs/fetch-content#content-visibility} */ accessToken?: string; /** * A list of route resolver objects that define how a document's `url` property is resolved. * * @see {@link https://prismic.io/docs/routes} * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#config-options} */ routes?: NonNullable; /** * The URL used for link or content relationship fields that point to an archived or deleted page. * * @see {@link https://prismic.io/docs/routes} * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#config-options} */ brokenRoute?: NonNullable; /** * Default parameters sent with each Content API request. These parameters can be overridden on * each method. * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#config-options} */ defaultParams?: Omit; /** * The `fetch` function used to make network requests. * * @default The global `fetch` function. * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#config-options} */ fetchFn: FetchLike; /** * The default `fetch` options sent with each Content API request. These parameters can be * overriden on each method. * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#config-options} */ fetchOptions: RequestInitLike; /** * @param repositoryNameOrEndpoint - The Prismic repository name or full Content API endpoint for * the repository. * @param config - Client configuration. */ constructor(repositoryNameOrEndpoint: string, config?: ClientConfig); /** The Prismic repository's name. */ set repositoryName(value: string); /** The Prismic repository's name. */ get repositoryName(): string; /** @deprecated Replace with `documentAPIEndpoint`. */ set endpoint(value: string); /** @deprecated Replace with `documentAPIEndpoint`. */ get endpoint(): string; /** * Enables the client to automatically query content from a preview session. * * @example * ;```ts * client.enableAutoPreviews() * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#enableautopreviews} */ enableAutoPreviews(): void; /** * Enables the client to automatically query content from a preview session using an HTTP request * object. * * @example * ;```ts * client.enableAutoPreviewsFromReq(req) * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#enableautopreviewsfromreq} */ enableAutoPreviewsFromReq(request: HttpRequestLike): void; /** * Disables the client from automatically querying content from a preview session. * * @example * ;```ts * client.disableAutoPreviews() * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#disableautopreviews} */ disableAutoPreviews(): void; /** * Fetches pages based on the `params` argument. Results are paginated. * * @example * ;```ts * const response = await client.get({ pageSize: 10 }) * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#get} */ get(params?: Partial & FetchParams): Promise>; /** * Fetches the first page returned based on the `params` argument. * * @example * ;```ts * const page = await client.getFirst() * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getfirst} */ getFirst(params?: Partial & FetchParams): Promise; /** * Fetches all pages based on the `params` argument. This method may make multiple network * requests to fetch all matching pages. * * @example * ;```ts * const pages = await client.dangerouslyGetAll() * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#dangerouslygetall} */ dangerouslyGetAll(params?: Partial> & GetAllParams & FetchParams): Promise; /** * Fetches a page with a specific ID. * * @example * ;```ts * const page = await client.getByID("WW4bKScAAMAqmluX") * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getbyid} */ getByID(id: string, params?: Partial & FetchParams): Promise; /** * Fetches pages with specific IDs. Results are paginated. * * @example * ;```ts * const response = await client.getByIDs(["WW4bKScAAMAqmluX", "U1kTRgEAAC8A5ldS"]) * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getbyids} */ getByIDs(ids: string[], params?: Partial & FetchParams): Promise>; /** * Fetches pages with specific IDs. This method may make multiple network requests to fetch all * matching pages. * * @example * ;```ts * const pages = await client.getAllByIDs(["WW4bKScAAMAqmluX", "U1kTRgEAAC8A5ldS"]) * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getallbyids} */ getAllByIDs(ids: string[], params?: Partial> & GetAllParams & FetchParams): Promise; /** * Fetches a page with a specific UID and type. * * @example * ;```ts * const page = await client.getByUID("blog_post", "my-first-post") * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getbyuid} */ getByUID(documentType: TDocumentType, uid: string, params?: Partial & FetchParams): Promise>; /** * Fetches pages with specific UIDs and a specific type. Results are paginated. * * @example * ;```ts * const response = await client.getByUIDs("blog_post", ["my-first-post", "my-second-post"]) * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getbyuids} */ getByUIDs(documentType: TDocumentType, uids: string[], params?: Partial & FetchParams): Promise>>; /** * Fetches pages with specific UIDs and a specific type. This method may make multiple network * requests to fetch all matching pages. * * @example * ;```ts * const pages = await client.getAllByUIDs("blog_post", ["my-first-post", "my-second-post"]) * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getallbyuids} */ getAllByUIDs(documentType: TDocumentType, uids: string[], params?: Partial> & GetAllParams & FetchParams): Promise[]>; /** * Fetches a specific single type page. * * @example * ;```ts * const page = await client.getSingle("settings") * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getsingle} */ getSingle(documentType: TDocumentType, params?: Partial & FetchParams): Promise>; /** * Fetches pages with a specific type. Results are paginated. * * @example * ;```ts * const response = await client.getByType("blog_post") * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getbytype} */ getByType(documentType: TDocumentType, params?: Partial & FetchParams): Promise>>; /** * Fetches pages with a specific type. This method may make multiple network requests to fetch all * matching documents. * * @example * ;```ts * const pages = await client.getAllByType("blog_post") * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getallbytype} */ getAllByType(documentType: TDocumentType, params?: Partial> & GetAllParams & FetchParams): Promise[]>; /** * Fetches pages with a specific tag. Results are paginated. * * @example * ;```ts * const response = await client.getByTag("featured") * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getbytag} */ getByTag(tag: string, params?: Partial & FetchParams): Promise>; /** * Fetches pages with a specific tag. This method may make multiple network requests to fetch all * matching documents. * * @example * ;```ts * const pages = await client.getAllByTag("featured") * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getallbytag} */ getAllByTag(tag: string, params?: Partial> & GetAllParams & FetchParams): Promise; /** * Fetches pages with every tag from a list of tags. Results are paginated. * * @example * ;```ts * const response = await client.getByEveryTag(["featured", "homepage"]) * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getbyeverytag} */ getByEveryTag(tags: string[], params?: Partial & FetchParams): Promise>; /** * Fetches pages with every tag from a list of tags. This method may make multiple network * requests to fetch all matching pages. * * @example * ;```ts * const pages = await client.getAllByEveryTag(["featured", "homepage"]) * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getallbyeverytag} */ getAllByEveryTag(tags: string[], params?: Partial> & GetAllParams & FetchParams): Promise; /** * Fetches pages with at least one tag from a list of tags. Results are paginated. * * @example * ;```ts * const response = await client.getBySomeTags(["featured", "homepage"]) * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getbysometags} */ getBySomeTags(tags: string[], params?: Partial & FetchParams): Promise>; /** * Fetches pages with at least one tag from a list of tags. This method may make multiple network * requests to fetch all matching documents. * * @example * ;```ts * const pages = await client.getAllBySomeTags(["featured", "homepage"]) * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getallbysometags} */ getAllBySomeTags(tags: string[], params?: Partial> & GetAllParams & FetchParams): Promise; /** * Fetches metadata about the client's Prismic repository. * * @example * ;```ts * const repository = await client.getRepository() * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getrepository} */ getRepository(params?: Pick & FetchParams): Promise; /** * Fetches the repository's active refs. * * @example * ;```ts * const refs = await client.getRefs() * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getrefs} */ getRefs(params?: FetchParams): Promise; /** * Fetches a ref by its ID. * * @example * ;```ts * const ref = await client.getRefByID("YhE3YhEAACIA4321") * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getrefbyid} */ getRefByID(id: string, params?: FetchParams): Promise; /** * Fetches a ref by its label. A release ref's label is its name shown in the Page Builder. * * @example * ;```ts * const ref = await client.getRefByLabel("My Release") * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getrefbylabel} */ getRefByLabel(label: string, params?: FetchParams): Promise; /** * Fetches the repository's master ref. * * @example * ;```ts * const masterRef = await client.getMasterRef() * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getmasterref} */ getMasterRef(params?: FetchParams): Promise; /** * Fetches the repository's active releases. * * @example * ;```ts * const releases = await client.getReleases() * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getreleases} */ getReleases(params?: FetchParams): Promise; /** * Fetches a release with a specific ID. * * @example * ;```ts * const release = await client.getReleaseByID("YhE3YhEAACIA4321") * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getreleasebyid} */ getReleaseByID(id: string, params?: FetchParams): Promise; /** * Fetches a release by its label. A release ref's label is its name shown in the Page Builder. * * @example * ;```ts * const release = await client.getReleaseByLabel("My Release") * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#getreleasebylabel} */ getReleaseByLabel(label: string, params?: FetchParams): Promise; /** * Fetches the repository's page tags. * * @example * ;```ts * const tags = await client.getTags() * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#gettags} */ getTags(params?: FetchParams): Promise; /** * Builds a Content API query URL with a set of parameters. * * @example * ;```ts * const url = await client.buildQueryURL({ * filters: [filter.at("document.type", "blog_post")], * }) * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#buildqueryurl} */ buildQueryURL({ signal, fetchOptions, ...params }?: Partial & FetchParams): Promise; /** * Fetches a previewed page's URL using a preview token and page ID. * * @example * ;```ts * const url = await client.resolvePreviewURL({ * linkResolver, * defaultURL: "/", * }) * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#resolvepreviewurl} */ resolvePreviewURL(args: { /** A function converts a document to a URL in your website. */linkResolver?: LinkResolverFunction; /** A fallback URL used when the document does not have a URL. */ defaultURL: string; /** The preview token for the preview session. */ previewToken?: string; /** The previewed document's ID. */ documentID?: string; } & FetchParams): Promise; /** * Configures the client to query the latest published content. This is the client's default mode. * * @example * ;```ts * client.queryLatestContent() * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#querylatestcontent} */ queryLatestContent(): void; /** * Configures the client to query content from a release with a specific ID. * * @example * ;```ts * client.queryContentFromReleaseByID("YhE3YhEAACIA4321") * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#querycontentfromreleasebyid} */ queryContentFromReleaseByID(id: string): void; /** * Configures the client to query content from a release with a specific label. * * @example * ;```ts * client.queryContentFromReleaseByLabel("My Release") * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#querycontentfromreleasebylabel} */ queryContentFromReleaseByLabel(label: string): void; /** * Configures the client to query content from a specific ref. * * @example * ;```ts * client.queryContentFromRef("my-ref") * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#querycontentfromref} */ queryContentFromRef(ref: string | GetRef): void; /** * A preconfigured `fetch()` function for Prismic's GraphQL API that can be provided to GraphQL * clients. * * @example * ```ts * import { createClient, getGraphQLEndpoint } from "@prismicio/client" * * const client = createClient("example-prismic-repo") * const graphQLClient = new ApolloClient({ * link: new HttpLink({ * uri: getGraphQLEndpoint(client.repositoryName), * // Provide `client.graphQLFetch` as the fetch implementation. * fetch: client.graphQLFetch, * // Using GET is required. * useGETForQueries: true, * }), * cache: new InMemoryCache(), * }) * ``` * * @see {@link https://prismic.io/docs/technical-reference/prismicio-client/v7#graphqlfetch} */ graphQLFetch(input: RequestInfo, init?: Omit & { signal?: AbortSignalLike; }): Promise; } //#endregion export { Client, ClientConfig, FetchParams, HttpRequestLike }; //# sourceMappingURL=Client.d.ts.map