import type { AllowedHttpMethods, Dictionary } from './utility-types'; /** * A helper class that is used to report results from various * {@link RequestQueue} functions as well as {@link enqueueLinks}. */ export interface QueueOperationInfo { /** Indicates if request was already present in the queue. */ wasAlreadyPresent: boolean; /** Indicates if request was already marked as handled. */ wasAlreadyHandled: boolean; /** The ID of the added request */ requestId: string; } export interface DatasetCollectionClientOptions { storageDir: string; } export interface DatasetCollectionData { id: string; name?: string; createdAt: Date; modifiedAt: Date; accessedAt: Date; } export interface PaginatedList { /** Total count of entries in the dataset. */ total: number; /** Count of dataset entries returned in this set. */ count: number; /** Position of the first returned entry in the dataset. */ offset: number; /** Maximum number of dataset entries requested. */ limit: number; /** Should the results be in descending order. */ desc?: boolean; /** Dataset entries based on chosen format parameter. */ items: Data[]; } export interface Dataset extends DatasetCollectionData { itemCount: number; } /** * Dataset collection client. */ export interface DatasetCollectionClient { list(): Promise>; getOrCreate(name?: string): Promise; } export interface DatasetClientUpdateOptions { name?: string; } export interface DatasetClientListOptions { desc?: boolean; limit?: number; offset?: number; } export interface DatasetInfo { id: string; name?: string; createdAt: Date; modifiedAt: Date; accessedAt: Date; itemCount: number; actId?: string; actRunId?: string; } export interface DatasetStats { readCount?: number; writeCount?: number; deleteCount?: number; storageBytes?: number; } export interface DatasetClient { get(): Promise; update(newFields: DatasetClientUpdateOptions): Promise>; delete(): Promise; downloadItems(...args: unknown[]): Promise; listItems(options?: DatasetClientListOptions): AsyncIterable & Promise>; listEntries?(options?: DatasetClientListOptions): AsyncIterable<[number, Data]> & Promise>; pushItems(items: Data | Data[] | string | string[]): Promise; } export interface KeyValueStoreStats { readCount?: number; writeCount?: number; deleteCount?: number; listCount?: number; storageBytes?: number; } export interface KeyValueStoreInfo { id: string; name?: string; userId?: string; createdAt: Date; modifiedAt: Date; accessedAt: Date; actId?: string; actRunId?: string; stats?: KeyValueStoreStats; } /** * Key-value store collection client. */ export interface KeyValueStoreCollectionClient { list(): Promise>; getOrCreate(name?: string): Promise; } export interface KeyValueStoreRecord { key: string; value: any; contentType?: string; } export interface KeyValueStoreRecordOptions { timeoutSecs?: number; doNotRetryTimeouts?: boolean; } export interface KeyValueStoreClientUpdateOptions { name?: string; } export interface KeyValueStoreClientListOptions { limit?: number; exclusiveStartKey?: string; collection?: string; prefix?: string; } export interface KeyValueStoreItemData { key: string; size: number; } export interface KeyValueStoreClientListData { count: number; limit: number; exclusiveStartKey?: string; isTruncated: boolean; nextExclusiveStartKey?: string; items: KeyValueStoreItemData[]; } export interface KeyValueStoreClientGetRecordOptions { buffer?: boolean; stream?: boolean; } /** * Key-value Store client. */ export interface KeyValueStoreClient { get(): Promise; update(newFields: KeyValueStoreClientUpdateOptions): Promise>; delete(): Promise; listKeys(options?: KeyValueStoreClientListOptions): Partial> & Promise; keys?(options?: KeyValueStoreClientListOptions): AsyncIterable & Promise; values?(options?: KeyValueStoreClientListOptions): AsyncIterable & Promise; entries?(options?: KeyValueStoreClientListOptions): AsyncIterable<[string, unknown]> & Promise<[string, unknown][]>; recordExists(key: string): Promise; getRecord(key: string, options?: KeyValueStoreClientGetRecordOptions): Promise; setRecord(record: KeyValueStoreRecord, options?: KeyValueStoreRecordOptions): Promise; deleteRecord(key: string): Promise; } export interface RequestQueueStats { readCount?: number; writeCount?: number; deleteCount?: number; headItemReadCount?: number; storageBytes?: number; } export interface RequestQueueInfo { id: string; name?: string; userId?: string; createdAt: Date; modifiedAt: Date; accessedAt: Date; expireAt?: string; totalRequestCount: number; handledRequestCount: number; pendingRequestCount: number; actId?: string; actRunId?: string; hadMultipleClients?: boolean; stats?: RequestQueueStats; } /** * Request queue collection client. */ export interface RequestQueueCollectionClient { list(): Promise>; getOrCreate(name: string): Promise; } export interface RequestQueueHeadItem { id: string; retryCount: number; uniqueKey: string; url: string; method: AllowedHttpMethods; } export interface QueueHead { limit: number; queueModifiedAt: Date; hadMultipleClients?: boolean; items: RequestQueueHeadItem[]; } export interface ListOptions { /** * @default 100 */ limit?: number; } export interface ListAndLockOptions extends ListOptions { lockSecs: number; } export interface ListAndLockHeadResult extends QueueHead { lockSecs: number; queueHasLockedRequests?: boolean; } export interface ProlongRequestLockOptions { lockSecs: number; forefront?: boolean; } export interface ProlongRequestLockResult { lockExpiresAt: Date; } export interface DeleteRequestLockOptions { forefront?: boolean; } export interface RequestOptions { forefront?: boolean; [k: string]: unknown; } export interface RequestSchema { id?: string; url: string; uniqueKey: string; method?: AllowedHttpMethods; payload?: string; noRetry?: boolean; retryCount?: number; errorMessages?: string[]; headers?: Dictionary; userData?: Dictionary; handledAt?: string; loadedUrl?: string; } export interface UpdateRequestSchema extends RequestSchema { id: string; } export interface ProcessedRequest { uniqueKey: string; requestId: string; wasAlreadyPresent: boolean; wasAlreadyHandled: boolean; } export interface UnprocessedRequest { uniqueKey: string; url: string; method?: AllowedHttpMethods; } export interface BatchAddRequestsResult { processedRequests: ProcessedRequest[]; unprocessedRequests: UnprocessedRequest[]; } export interface RequestQueueClient { get(): Promise; update(newFields: { name?: string; }): Promise | undefined>; delete(): Promise; listHead(options?: ListOptions): Promise; addRequest(request: RequestSchema, options?: RequestOptions): Promise; batchAddRequests(requests: RequestSchema[], options?: RequestOptions): Promise; getRequest(id: string): Promise; updateRequest(request: UpdateRequestSchema, options?: RequestOptions): Promise; deleteRequest(id: string): Promise; listAndLockHead(options: ListAndLockOptions): Promise; prolongRequestLock(id: string, options: ProlongRequestLockOptions): Promise; deleteRequestLock(id: string, options?: DeleteRequestLockOptions): Promise; } export interface RequestQueueOptions { clientKey?: string; timeoutSecs?: number; } export interface SetStatusMessageOptions { isStatusMessageTerminal?: boolean; level?: 'DEBUG' | 'INFO' | 'WARNING' | 'ERROR'; } /** * Represents a storage capable of working with datasets, KV stores and request queues. */ export interface StorageClient { datasets(): DatasetCollectionClient; dataset(id: string): DatasetClient; keyValueStores(): KeyValueStoreCollectionClient; keyValueStore(id: string): KeyValueStoreClient; requestQueues(): RequestQueueCollectionClient; requestQueue(id: string, options?: RequestQueueOptions): RequestQueueClient; purge?(): Promise; teardown?(): Promise; setStatusMessage?(message: string, options?: SetStatusMessageOptions): Promise; stats?: { rateLimitErrors: number[]; }; } //# sourceMappingURL=storages.d.ts.map