@cfworker/cosmos
Version:
Azure Cosmos DB client for Cloudflare Workers and service workers
145 lines (144 loc) • 4.95 kB
TypeScript
import { FeedResponse, ItemResponse } from './response.js';
import { RetryPolicy } from './retry.js';
import { SessionContainer } from './session.js';
import { Collection, ConnectionInfo, ConsistencyLevel, Database, Document, IndexingDirective, IndexingPolicy, OfferType, PartitionKeyDefinition, Resource } from './types.js';
export type CosmosClientConfig = (ConnectionInfo & CosmosClientConfigBase) | ({
connectionString: string;
} & CosmosClientConfigBase);
interface CosmosClientConfigBase {
retryPolicy?: RetryPolicy;
consistencyLevel?: ConsistencyLevel;
dbId?: string;
collId?: string;
sessions?: SessionContainer;
enableCrossPartitionQueries?: boolean;
fetch?: typeof fetch;
}
export declare class CosmosClient {
private readonly endpoint;
private readonly signer;
private readonly retryPolicy;
private readonly consistencyLevel;
private readonly dbId;
private readonly collId;
private readonly enableCrossPartitionQueries;
private readonly systemFetch;
readonly sessions: SessionContainer;
requestCharges: number;
retries: {
count: number;
delayMs: number;
};
constructor(config: CosmosClientConfig);
getDatabases(args?: GetDatabasesArgs): Promise<FeedResponse<Database>>;
getDatabase(args?: GetDatabaseArgs): Promise<ItemResponse<Database>>;
getCollections(args?: GetCollectionsArgs): Promise<FeedResponse<Collection>>;
getCollection(args?: GetCollectionArgs): Promise<ItemResponse<Collection>>;
createCollection(args: CreateCollectionArgs): Promise<ItemResponse<Collection>>;
replaceCollection(args: ReplaceCollectionArgs): Promise<ItemResponse<Collection>>;
deleteCollection(args?: DeleteCollectionArgs): Promise<Response>;
getDocuments<T extends Resource>(args: GetDocumentsArgs): Promise<FeedResponse<T & Document>>;
getDocument<T extends Resource>(args: GetDocumentArgs): Promise<ItemResponse<T & Document>>;
createDocument<T extends Resource>(args: CreateDocumentArgs): Promise<ItemResponse<T & Document>>;
replaceDocument<T extends Resource>(args: ReplaceDocumentArgs): Promise<ItemResponse<T & Document>>;
deleteDocument(args: DeleteDocumentArgs): Promise<Response>;
queryDocuments<T>(args: QueryDocumentsArgs): Promise<FeedResponse<T>>;
private getNext;
private fetchWithRetry;
private fetch;
private setHeaders;
}
export type DocumentInit = BufferSource | ReadableStream | string | Resource;
interface CommonArgs {
activityId?: string;
consistencyLevel?: ConsistencyLevel;
}
interface CommonGetArgs extends CommonArgs {
ifNoneMatch?: string;
ifModifiedSince?: Date;
}
interface CommonGetListArgs extends CommonGetArgs {
maxItems?: number;
continuation?: string;
}
export type GetDatabasesArgs = CommonGetListArgs;
export interface GetDatabaseArgs extends CommonGetArgs {
dbId?: string;
}
export interface GetCollectionsArgs extends CommonGetListArgs {
dbId?: string;
}
export interface GetCollectionArgs extends CommonGetArgs {
dbId?: string;
collId?: string;
}
export interface CreateCollectionArgs extends CommonArgs {
dbId?: string;
collId?: string;
indexingPolicy?: IndexingPolicy;
partitionKey: PartitionKeyDefinition;
offerThroughput?: number;
offerType?: OfferType;
}
export interface ReplaceCollectionArgs extends CommonArgs {
dbId?: string;
collId?: string;
indexingPolicy: IndexingPolicy;
partitionKey: PartitionKeyDefinition;
ifMatch?: string;
}
export interface DeleteCollectionArgs extends CommonArgs {
dbId?: string;
collId?: string;
ifMatch?: string;
}
export interface GetDocumentsArgs extends CommonGetListArgs {
dbId?: string;
collId?: string;
partitionKey?: string;
}
export interface GetDocumentArgs extends CommonGetArgs {
dbId?: string;
collId?: string;
docId: string;
partitionKey: string;
}
export interface QueryDocumentsArgs extends CommonGetListArgs {
dbId?: string;
collId?: string;
query: string;
parameters?: QueryParameter[];
partitionKey?: string;
enableCrossPartition?: boolean;
populateMetrics?: boolean;
enableScan?: boolean;
}
export interface QueryParameter {
name: string;
value: string | number | boolean | null | undefined;
}
export interface CreateDocumentArgs extends CommonArgs {
dbId?: string;
collId?: string;
document: DocumentInit;
partitionKey: string;
isUpsert?: boolean;
indexingDirective?: IndexingDirective;
}
export interface ReplaceDocumentArgs extends CommonArgs {
dbId?: string;
collId?: string;
docId: string;
document: DocumentInit;
partitionKey: string;
ifMatch?: string;
indexingDirective?: IndexingDirective;
}
export interface DeleteDocumentArgs extends CommonArgs {
dbId?: string;
collId?: string;
docId: string;
partitionKey: string;
ifMatch?: string;
}
export {};