@prismicio/client
Version:
The official JavaScript + TypeScript client library for Prismic
85 lines (75 loc) • 2.44 kB
text/typescript
import type {
PrismicDocument,
PrismicDocumentWithUID,
} from "../../value/document"
/**
* An object representing the parameters required when creating a document
* through the Migration API.
*
* @typeParam TDocument - Type of the Prismic document to create.
*
* @see Prismic Migration API technical reference: {@link https://prismic.io/docs/migration-api-technical-reference}
*/
export type PostDocumentParams<
TDocument extends PrismicDocument = PrismicDocument,
> =
TDocument extends PrismicDocument<infer TData, infer TType, infer TLang>
? {
title: string
type: TType
lang: TLang
alternate_language_id?: string
tags?: string[]
data: TData | Record<string, never>
} & (TDocument extends PrismicDocumentWithUID
? { uid: TDocument["uid"] }
: { uid?: TDocument["uid"] })
: never
/**
* Result of creating a document with the Migration API.
*
* @typeParam TDocument - Type of the created Prismic document.
*
* @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference}
*/
export type PostDocumentResult<
TDocument extends PrismicDocument = PrismicDocument,
> =
TDocument extends PrismicDocument<infer _TData, infer TType, infer TLang>
? {
title: string
id: string
type: TType
lang: TLang
} & (TDocument["uid"] extends string
? { uid: TDocument["uid"] }
: { uid?: TDocument["uid"] })
: never
/**
* An object representing the parameters required when updating a document
* through the Migration API.
*
* @typeParam TDocument - Type of the Prismic document to update.
*
* @see Prismic Migration API technical reference: {@link https://prismic.io/docs/migration-api-technical-reference}
*/
export type PutDocumentParams<
TDocument extends PrismicDocument = PrismicDocument,
> = {
title?: string
uid?: string
tags?: string[]
// We don't need to infer the document type as above here because we don't
// need to pair the document type with the document data in put requests.
data: TDocument["data"] | Record<string, never>
}
/**
* Result of updating a document with the Migration API.
*
* @typeParam TDocument - Type of the updated Prismic document.
*
* @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference}
*/
export type PutDocumentResult<
TDocument extends PrismicDocument = PrismicDocument,
> = PostDocumentResult<TDocument>