@prismicio/client
Version:
The official JavaScript + TypeScript client library for Prismic
146 lines (129 loc) • 3.28 kB
text/typescript
import type { Asset } from "../api/asset/asset"
import type { FilledImageFieldImage } from "../value/image"
import type { LinkToMediaField } from "../value/linkToMedia"
import { type RTImageNode } from "../value/richText"
import type { InjectMigrationSpecificTypes } from "./Document"
/**
* An asset to be uploaded to Prismic media library.
*/
export type MigrationAssetConfig = {
/**
* ID the assets is indexed with on the migration instance.
*
* @remarks
* This property's value is not necessarily the same as the as the one in the
* `file` property. It is mainly used for deduplication within a `Migration`
* instance.
*/
id: string | URL | File | NonNullable<ConstructorParameters<File>[0]>[0]
/**
* File to be uploaded as an asset.
*/
file: string | URL | File | NonNullable<ConstructorParameters<File>[0]>[0]
/**
* Filename of the asset.
*/
filename: string
/**
* Notes about the asset. Notes are private and only visible in Prismic media
* library.
*/
notes?: string
/**
* Credits and copyright for the asset if any.
*/
credits?: string
/**
* Alternate text for the asset.
*/
alt?: string
/**
* Tags associated with the asset.
*
* @remarks
* Tags should be at least 3 characters long and 20 characters at most.
*/
tags?: string[]
}
/**
* An image field in a migration.
*/
export type MigrationImage =
| PrismicMigrationAsset
| ({
/**
* A reference to the migration asset used to resolve the image field's
* value.
*/
id: PrismicMigrationAsset
} & Record<string, PrismicMigrationAsset>)
/**
* A link to media field in a migration.
*/
export type MigrationLinkToMedia = Pick<
LinkToMediaField<"filled">,
"link_type" | "text"
> & {
/**
* A reference to the migration asset used to resolve the link to media
* field's value.
*/
id: PrismicMigrationAsset
}
/**
* The minimum amount of information needed to represent a link to media field
* with the migration API.
*/
export type MigrationLinkToMediaField =
| Pick<LinkToMediaField<"filled">, "link_type" | "id" | "text">
| LinkToMediaField<"empty">
/**
* A rich text image node in a migration.
*/
export type MigrationRTImageNode = InjectMigrationSpecificTypes<
Pick<RTImageNode, "type" | "linkTo">
> & {
/**
* A reference to the migration asset used to resolve the rich text image
* node's value.
*/
id: PrismicMigrationAsset
}
/**
* A migration asset used with the Prismic Migration API.
*/
export class PrismicMigrationAsset {
/**
* Asset object from Prismic, available once created.
*/
asset?: Asset
/**
* Configuration of the asset.
*/
config: MigrationAssetConfig
/**
* The initial field value this migration field was created with.
*/
originalField?:
| FilledImageFieldImage
| LinkToMediaField<"filled">
| RTImageNode
/**
* Creates a migration asset used with the Prismic Migration API.
*
* @param config - Configuration of the asset.
* @param initialField - The initial field value if any.
*
* @returns A migration asset instance.
*/
constructor(
config: MigrationAssetConfig,
initialField?:
| FilledImageFieldImage
| LinkToMediaField<"filled">
| RTImageNode,
) {
this.config = config
this.originalField = initialField
}
}