UNPKG

@cosmicjs/sdk

Version:

The official client module for Cosmic. This module helps you easily add dynamic content to your website or application using the Cosmic headless CMS.

408 lines (389 loc) 13.8 kB
/** * Browser-compatible EventEmitter implementation * This provides the same API as Node.js EventEmitter but works in browser environments */ declare class EventEmitter { private events; on(event: string, listener: Function): this; emit(event: string, ...args: any[]): boolean; off(event: string, listener?: Function): this; removeListener(event: string, listener: Function): this; removeAllListeners(event?: string): this; listeners(event: string): Function[]; listenerCount(event: string): number; once(event: string, listener: Function): this; } type APIConfig = { apiUrl: string; uploadUrl: string; }; type BucketConfig = { bucketSlug: string; readKey: string; writeKey?: string; apiVersion?: 'v3'; apiEnvironment?: 'staging' | 'production'; custom?: APIConfig; }; interface GenerateTextOptions { prompt?: string; media_url?: string; model?: string; max_tokens?: number; stream?: boolean; messages?: Array<{ role: 'user' | 'assistant'; content: string; }>; } interface GenerateImageOptions { prompt: string; model?: 'gemini-3.1-flash-image-preview' | 'gemini-3-pro-image-preview' | 'dall-e-3' | (string & {}); metadata?: Record<string, any>; folder?: string; alt_text?: string; } interface GenerateVideoOptions { prompt: string; model?: 'veo-3.1-fast-generate-preview' | 'veo-3.1-generate-preview'; duration?: 4 | 6 | 8; resolution?: '720p' | '1080p'; reference_images?: string[]; metadata?: Record<string, any>; folder?: string; } interface ExtendVideoOptions { prompt: string; media_id: string; model?: 'veo-3.1-fast-generate-preview' | 'veo-3.1-generate-preview'; metadata?: Record<string, any>; folder?: string; } interface GenerateAudioOptions { prompt: string; voice?: 'alloy' | 'ash' | 'coral' | 'echo' | 'fable' | 'nova' | 'onyx' | 'sage' | 'shimmer'; model?: 'tts-1' | 'tts-1-hd'; metadata?: Record<string, any>; folder?: string; } interface AudioGenerationResponse { media: { id: string; name: string; original_name: string; size: number; type: string; bucket: string; created_at: string; created_by: string | null; modified_at: string; modified_by: string | null; alt_text?: string; url: string; imgix_url: string; metadata?: { prompt: string; model: string; voice: string; duration_estimate: string; [key: string]: any; }; folder?: string | null; }; usage: { input_tokens: number; output_tokens: number; total_tokens: number; }; } interface TextGenerationResponseBase { text: string; usage: { input_tokens: number; output_tokens: number; }; } type TextGenerationResponse = TextGenerationResponseBase; interface ImageGenerationResponse { media: { id: string; name: string; original_name: string; size: number; type: string; bucket: string; created_at: string; created_by: string | null; modified_at: string; modified_by: string | null; width: number; height: number; alt_text?: string; url: string; imgix_url: string; metadata?: Record<string, any>; folder?: string | null; }; revised_prompt: string; } interface VideoGenerationResponse { media: { id: string; name: string; original_name: string; size: number; type: string; bucket: string; created_at: string; created_by: string | null; modified_at: string; modified_by: string | null; alt_text?: string; url: string; imgix_url: string; location?: string; metadata?: { duration: number; resolution: string; generation_time_seconds: number; [key: string]: any; }; folder?: string | null; }; usage: { input_tokens: number; output_tokens: number; total_tokens: number; }; generation_time_seconds: number; } interface VideoExtensionResponse { media: { id: string; name: string; original_name: string; size: number; type: string; bucket: string; created_at: string; created_by: string | null; modified_at: string; modified_by: string | null; alt_text?: string; url: string; imgix_url: string; location?: string; metadata?: { duration: number; resolution: string; generation_time_seconds: number; is_extension: boolean; source_media_id: string; source_veo_uri: string; veo_file_uri: string; [key: string]: any; }; folder?: string | null; }; usage: { input_tokens: number; output_tokens: number; total_tokens: number; }; generation_time_seconds: number; source_media_id: string; is_extension: boolean; } /** * A class for handling streaming text generation responses * with an Anthropic-like API. */ declare class TextStreamingResponse extends EventEmitter implements TextGenerationResponseBase { private stream; private usageInfo; text: string; constructor(stream: any); private setupListeners; /** * Get the usage information if available */ get usage(): any; /** * Implement AsyncIterator interface to support for-await loops */ [Symbol.asyncIterator](): { next: () => Promise<IteratorResult<any>>; }; } type GenericObject = Record<string, any>; type NonEmptyObject<T extends Record<string, unknown>> = T extends Record<string, never> ? never : T; type InsertMediaType = { media: File | Blob | Buffer | { buffer: Buffer; originalname: string; type?: string; }; filename?: string; contentType?: string; folder?: string; metadata?: GenericObject; trigger_webhook?: boolean; }; type PromiseFn<T> = (value: any) => T | PromiseLike<T>; type PromiseFnType<T> = PromiseFn<T> | null; declare class MethodChaining { endpoint: string; opts: any; constructor(endpoint: string); props(props: string | Array<string>): this; private parseGraphQLProps; sort(sort: string): this; skip(skip: number): this; useCache(): this; } declare class FindOneChaining$2 extends MethodChaining { then<FulfilledResult = any, RejectedResult = never>(onFulfilled?: PromiseFnType<FulfilledResult>, onRejected?: PromiseFnType<RejectedResult>): Promise<void>; } declare class FindChaining$2 extends MethodChaining { limit(limit: number): this; then<FulfilledResult = any, RejectedResult = never>(onFulfilled?: PromiseFnType<FulfilledResult>, onRejected?: PromiseFnType<RejectedResult>): Promise<void>; } type InsertObjectRevisionType = { title?: string; slug?: string; content?: string; publish_at?: number; unpublish_at?: number; metadata?: GenericObject; locale?: string; thumbnail?: string; trigger_webhook?: boolean; pretty?: boolean; }; /** * Options for fetching object data. * @property {Object} media - Options for media objects. * @property {string} media.props - Comma-separated list of additional properties to fetch for media objects. * @typedef {Object} MediaType * @property {string} all - All media properties. * @property {string} id - The unique identifier of the media object. * @property {string} name - The name of the media file. * @property {string} original_name - The original name of the media file. * @property {number} size - The size of the media file in bytes. * @property {string} type - The MIME type of the media file. * @property {string} bucket - The bucket identifier. * @property {string} created_at - The creation date of the media object. * @property {string} folder - The folder where the media is stored. * @property {string} url - The URL of the media file. * @property {string} imgix_url - The Imgix URL of the media file. * @property {string} alt_text - The alternative text for the media. */ type OptionsType$1 = { media: { props: string; }; }; declare class Chaining$1 extends MethodChaining { depth(depth: number): this; status(status: string): this; after(after: string): this; options(options: OptionsType$1): this; } declare class FindOneChaining$1 extends Chaining$1 { private bucketConfig; constructor(endpoint: string, bucketConfig: BucketConfig); then<FulfilledResult = any, RejectedResult = never>(onFulfilled?: PromiseFnType<FulfilledResult>, onRejected?: PromiseFnType<RejectedResult>): Promise<void>; } declare class FindChaining$1 extends Chaining$1 { private bucketConfig; constructor(endpoint: string, bucketConfig: BucketConfig); limit(limit: number): this; then<FulfilledResult = any, RejectedResult = never>(onFulfilled?: PromiseFnType<FulfilledResult>, onRejected?: PromiseFnType<RejectedResult>): Promise<void>; } /** * Options for fetching object data. * @property {Object} media - Options for media objects. * @property {string} media.props - Comma-separated list of additional properties to fetch for media objects. * @typedef {Object} MediaType * @property {string} all - All media properties. * @property {string} id - The unique identifier of the media object. * @property {string} name - The name of the media file. * @property {string} original_name - The original name of the media file. * @property {number} size - The size of the media file in bytes. * @property {string} type - The MIME type of the media file. * @property {string} bucket - The bucket identifier. * @property {string} created_at - The creation date of the media object. * @property {string} folder - The folder where the media is stored. * @property {string} url - The URL of the media file. * @property {string} imgix_url - The Imgix URL of the media file. * @property {string} alt_text - The alternative text for the media. */ type OptionsType = { media: { props: string; }; }; declare class Chaining extends MethodChaining { depth(depth: number): this; status(status: string): this; after(after: string): this; options(options: OptionsType): this; } declare class FindChaining extends Chaining { private bucketConfig; constructor(endpoint: string, bucketConfig: BucketConfig); limit(limit: number): this; then<FulfilledResult = any, RejectedResult = never>(onFulfilled?: PromiseFnType<FulfilledResult>, onRejected?: PromiseFnType<RejectedResult>): Promise<void>; } declare class FindOneChaining extends Chaining { private bucketConfig; constructor(endpoint: string, bucketConfig: BucketConfig); then<FulfilledResult = any, RejectedResult = never>(onFulfilled?: PromiseFnType<FulfilledResult>, onRejected?: PromiseFnType<RejectedResult>): Promise<void>; } type BatchOperation = { method: 'add' | 'edit' | 'delete'; object_id?: string; object?: GenericObject; trigger_webhook?: boolean; }; declare const createBucketClient: (config: BucketConfig) => { objects: { find(query: GenericObject): FindChaining; findOne<T extends Record<string, unknown>>(query: NonEmptyObject<T>): FindOneChaining; insertOne(data: GenericObject): Promise<any>; updateOne(id: string, updates: GenericObject): Promise<any>; deleteOne(id: string, triggerWebhook?: boolean): Promise<any>; batch(operations: BatchOperation[]): Promise<any>; }; objectTypes: { find(): Promise<any>; findOne(slug: string): Promise<any>; insertOne(data: GenericObject): Promise<any>; updateOne(slug: string, updates: GenericObject): Promise<any>; deleteOne(slug: string): Promise<any>; }; objectRevisions: { find(objectId: string): FindChaining$1; findOne({ objectId, revisionId }: { objectId: string; revisionId: string; }): FindOneChaining$1; insertOne(objectId: string, data: InsertObjectRevisionType): Promise<any>; }; media: { find(query?: GenericObject | undefined): FindChaining$2; findOne<T_1 extends Record<string, unknown>>(query: NonEmptyObject<T_1>): FindOneChaining$2; insertOne(params: InsertMediaType): Promise<any>; updateOne(id: string, updates: GenericObject): Promise<any>; deleteOne(id: string, triggerWebhook?: boolean): Promise<any>; }; ai: { generateText: (options: GenerateTextOptions) => Promise<TextGenerationResponseBase | TextStreamingResponse>; stream: (options: Omit<GenerateTextOptions, "stream">) => Promise<TextStreamingResponse>; generateImage: (options: GenerateImageOptions) => Promise<ImageGenerationResponse>; generateVideo: (options: GenerateVideoOptions) => Promise<VideoGenerationResponse>; extendVideo: (options: ExtendVideoOptions) => Promise<VideoExtensionResponse>; generateAudio: (options: GenerateAudioOptions) => Promise<AudioGenerationResponse>; }; }; export { APIConfig, AudioGenerationResponse, BatchOperation, BucketConfig, ExtendVideoOptions, GenerateAudioOptions, GenerateImageOptions, GenerateTextOptions, GenerateVideoOptions, GenericObject, ImageGenerationResponse, PromiseFnType, TextGenerationResponse, TextStreamingResponse, VideoExtensionResponse, VideoGenerationResponse, createBucketClient };