@prismicio/client
Version:
The official JavaScript + TypeScript client library for Prismic
262 lines (260 loc) • 8.44 kB
TypeScript
import { PrismicDocument } from "./types/value/document.js";
import { Client, ClientConfig, FetchParams } from "./Client.js";
import { PrismicMigrationDocument } from "./types/migration/Document.js";
import { PrismicMigrationAsset } from "./types/migration/Asset.js";
import { Migration } from "./Migration.js";
//#region src/WriteClient.d.ts
/**
* Utility type to construct events reported by the migration process.
*/
type MigrateReporterEvent<TType extends string, TData = never> = TData extends never ? {
type: TType;
} : {
type: TType;
data: TData;
};
/**
* A map of event types and their data reported by the migration process.
*/
type MigrateReporterEventMap = {
start: {
pending: {
documents: number;
assets: number;
};
};
end: {
migrated: {
documents: number;
assets: number;
};
};
"assets:creating": {
current: number;
remaining: number;
total: number;
asset: PrismicMigrationAsset;
};
"assets:created": {
created: number;
};
"documents:masterLocale": {
masterLocale: string;
};
"documents:creating": {
current: number;
remaining: number;
total: number;
document: PrismicMigrationDocument;
};
"documents:created": {
created: number;
};
"documents:updating": {
current: number;
remaining: number;
total: number;
document: PrismicMigrationDocument;
};
"documents:updated": {
updated: number;
};
};
/**
* Available event types reported by the migration process.
*/
type MigrateReporterEventTypes = keyof MigrateReporterEventMap;
/**
* All events reported by the migration process. Events can be listened to by
* providing a `reporter` function to the `migrate` method.
*/
type MigrateReporterEvents = { [K in MigrateReporterEventTypes]: MigrateReporterEvent<K, MigrateReporterEventMap[K]> }[MigrateReporterEventTypes];
/**
* Configuration for clients that determine how content is queried.
*/
type WriteClientConfig = {
/**
* A Prismic write token that allows writing content to the repository.
*/
writeToken: string;
/**
* The Prismic Asset API endpoint.
*
* @defaultValue `"https://asset-api.prismic.io/"`
*
* @see Prismic Asset API technical reference: {@link https://prismic.io/docs/asset-api-technical-reference}
*/
assetAPIEndpoint?: string;
/**
* The Prismic Migration API endpoint.
*
* @defaultValue `"https://migration.prismic.io/"`
*
* @see Prismic Migration API technical reference: {@link https://prismic.io/docs/migration-api-technical-reference}
*/
migrationAPIEndpoint?: string;
} & ClientConfig;
/**
* A client that allows querying and writing content to a Prismic repository.
*
* If used in an environment where a global `fetch` function is unavailable,
* such as Node.js, the `fetch` option must be provided as part of the `options`
* parameter.
*
* @typeParam TDocuments - Document types that are registered for the Prismic
* repository. Query methods will automatically be typed based on this type.
*/
declare class WriteClient<TDocuments extends PrismicDocument = PrismicDocument> extends Client<TDocuments> {
#private;
writeToken: string;
assetAPIEndpoint: string;
migrationAPIEndpoint: string;
/**
* Creates a Prismic client that can be used to query and write content to a
* repository.
*
* If used in an environment where a global `fetch` function is unavailable,
* such as in some Node.js versions, the `fetch` option must be provided as
* part of the `options` parameter.
*
* @param repositoryName - The Prismic repository name for the repository.
* @param options - Configuration that determines how content will be queried
* from and written to the Prismic repository.
*
* @returns A client that can query and write content to the repository.
*/
constructor(repositoryName: string, options: WriteClientConfig);
/**
* Creates a migration release on the Prismic repository based on the provided
* prepared migration.
*
* @param migration - A migration prepared with {@link createMigration}.
* @param params - An event listener and additional fetch parameters.
*
* @see Prismic Migration API technical reference: {@link https://prismic.io/docs/migration-api-technical-reference}
*/
migrate(migration: Migration<TDocuments>, params?: {
reporter?: (event: MigrateReporterEvents) => void;
} & FetchParams): Promise<void>;
/**
* Creates assets in the Prismic repository's media library.
*
* @param migration - A migration prepared with {@link createMigration}.
* @param params - An event listener and additional fetch parameters.
*
* @internal This method is one of the step performed by the {@link migrate} method.
*/
private migrateCreateAssets;
/**
* Creates documents in the Prismic repository's migration release.
*
* @param migration - A migration prepared with {@link createMigration}.
* @param params - An event listener and additional fetch parameters.
*
* @internal This method is one of the step performed by the {@link migrate} method.
*/
private migrateCreateDocuments;
/**
* Updates documents in the Prismic repository's migration release with their
* patched data.
*
* @param migration - A migration prepared with {@link createMigration}.
* @param params - An event listener and additional fetch parameters.
*
* @internal This method is one of the step performed by the {@link migrate} method.
*/
private migrateUpdateDocuments;
/**
* Creates an asset in the Prismic media library.
*
* @param file - The file to upload as an asset.
* @param filename - The filename of the asset.
* @param params - Additional asset data and fetch parameters.
*
* @returns The created asset.
*/
private createAsset;
/**
* Updates an asset in the Prismic media library.
*
* @param id - The ID of the asset to update.
* @param params - The asset data to update and additional fetch parameters.
*
* @returns The updated asset.
*/
private updateAsset;
/**
* Fetches a foreign asset from a URL.
*
* @param url - The URL of the asset to fetch.
* @param params - Additional fetch parameters.
*
* @returns A file representing the fetched asset.
*/
private fetchForeignAsset;
/**
* {@link resolveAssetTagIDs} rate limiter.
*/
private _resolveAssetTagIDsLimit;
/**
* Resolves asset tag IDs from tag names.
*
* @param tagNames - An array of tag names to resolve.
* @param params - Whether or not missing tags should be created and
* additional fetch parameters.
*
* @returns An array of resolved tag IDs.
*/
private resolveAssetTagIDs;
/**
* Creates a tag in the Asset API.
*
* @remarks
* Tags should be at least 3 characters long and 20 characters at most.
*
* @param name - The name of the tag to create.
* @param params - Additional fetch parameters.
*
* @returns The created tag.
*/
private createAssetTag;
/**
* Queries existing tags from the Asset API.
*
* @param params - Additional fetch parameters.
*
* @returns An array of existing tags.
*/
private getAssetTags;
/**
* Creates a document in the repository's migration release.
*
* @typeParam TType - Type of Prismic documents to create.
*
* @param document - The document to create.
* @param documentTitle - The title of the document to create which will be
* displayed in the editor.
* @param params - Document master language document ID and additional fetch
* parameters.
*
* @returns The ID of the created document.
*
* @see Prismic Migration API technical reference: {@link https://prismic.io/docs/migration-api-technical-reference}
*/
private createDocument;
/**
* Updates an existing document in the repository's migration release.
*
* @typeParam TType - Type of Prismic documents to update.
*
* @param id - The ID of the document to update.
* @param document - The document content to update.
* @param params - Additional fetch parameters.
*
* @see Prismic Migration API technical reference: {@link https://prismic.io/docs/migration-api-technical-reference}
*/
private updateDocument;
}
//#endregion
export { MigrateReporterEvents, WriteClient, WriteClientConfig };
//# sourceMappingURL=WriteClient.d.ts.map