// Type definitions for minio 7.0 // Project: https://github.com/minio/minio-js#readme // Definitions by: Barin Britva // Lubomir Kaplan // Panagiotis Kapros // Ben Watkins // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped /// // Import from dependencies import { Stream } from 'stream'; import EventEmitter = NodeJS.EventEmitter; import { AgentOptions } from 'https'; // Exports only from typings export type Region = 'us-east-1'|'us-west-1'|'us-west-2'|'eu-west-1'|'eu-central-1'|'ap-southeast-1'|'ap-northeast-1'|'ap-southeast-2'|'sa-east-1'|'cn-north-1'|string; export type NoResultCallback = (error: Error|null) => void; export type ResultCallback = (error: Error|null, result: T) => void; export interface ClientOptions { endPoint: string; accessKey: string; secretKey: string; useSSL?: boolean; port?: number; region?: Region; transport?: any; sessionToken?: string; partSize?: number; } export interface BucketItemFromList { name: string; creationDate: Date; } export interface BucketItemCopy { etag: string; lastModified: Date; } export interface BucketItem { name: string; prefix: string; size: number; etag: string; lastModified: Date; } export interface BucketItemStat { size: number; etag: string; lastModified: Date; metaData: ItemBucketMetadata; } export interface IncompleteUploadedBucketItem { key: string; uploadId: string; size: number; } export interface BucketStream extends Stream { on(event: 'data', listener: (item: T) => void): this; on(event: 'error', listener: (error: Error) => void): this; on(event: 'end', listener: () => void): this; } export interface PostPolicyResult { postURL: string; formData: { [key: string]: any; }; } export interface ItemBucketMetadata { [key: string]: any; } // No need to export this. But without it - linter error. export class TargetConfig { setId(id: any): void; addEvent(newEvent: any): void; addFilterSuffix(suffix: any): void; addFilterPrefix(prefix: any): void; } // Exports from library export class Client { constructor(options: ClientOptions); // Bucket operations makeBucket(bucketName: string, region: Region, callback: NoResultCallback): void; makeBucket(bucketName: string, region: Region): Promise; listBuckets(callback: ResultCallback): void; listBuckets(): Promise; bucketExists(bucketName: string, callback: ResultCallback): void; bucketExists(bucketName: string): Promise; removeBucket(bucketName: string, callback: NoResultCallback): void; removeBucket(bucketName: string): Promise; listObjects(bucketName: string, prefix?: string, recursive?: boolean): BucketStream; listObjectsV2(bucketName: string, prefix?: string, recursive?: boolean, startAfter?: string): BucketStream; listIncompleteUploads(bucketName: string, prefix?: string, recursive?: boolean): BucketStream; // Object operations getObject(bucketName: string, objectName: string, callback: ResultCallback): void; getObject(bucketName: string, objectName: string): Promise; getPartialObject(bucketName: string, objectName: string, offset: number, callback: ResultCallback): void; getPartialObject(bucketName: string, objectName: string, offset: number, length: number, callback: ResultCallback): void; getPartialObject(bucketName: string, objectName: string, offset: number, length?: number): Promise; fGetObject(bucketName: string, objectName: string, filePath: string, callback: NoResultCallback): void; fGetObject(bucketName: string, objectName: string, filePath: string): Promise; putObject(bucketName: string, objectName: string, stream: Stream|Buffer|string, callback: ResultCallback): void; putObject(bucketName: string, objectName: string, stream: Stream|Buffer|string, size: number, callback: ResultCallback): void; putObject(bucketName: string, objectName: string, stream: Stream|Buffer|string, size: number, metaData: ItemBucketMetadata, callback: ResultCallback): void; putObject(bucketName: string, objectName: string, stream: Stream|Buffer|string, size?: number, metaData?: ItemBucketMetadata): Promise; fPutObject(bucketName: string, objectName: string, filePath: string, metaData: ItemBucketMetadata, callback: ResultCallback): void; fPutObject(bucketName: string, objectName: string, filePath: string, metaData: ItemBucketMetadata): Promise; copyObject(bucketName: string, objectName: string, sourceObject: string, conditions: CopyConditions, callback: ResultCallback): void; copyObject(bucketName: string, objectName: string, sourceObject: string, conditions: CopyConditions): Promise; statObject(bucketName: string, objectName: string, callback: ResultCallback): void; statObject(bucketName: string, objectName: string): Promise; removeObject(bucketName: string, objectName: string, callback: NoResultCallback): void; removeObject(bucketName: string, objectName: string): Promise; removeObjects(bucketName: string, objectsList: string[], callback: NoResultCallback): void; removeObjects(bucketName: string, objectsList: string[]): Promise; removeIncompleteUpload(bucketName: string, objectName: string, callback: NoResultCallback): void; removeIncompleteUpload(bucketName: string, objectName: string): Promise; // Presigned operations presignedUrl(httpMethod: string, bucketName: string, objectName: string, callback: ResultCallback): void; presignedUrl(httpMethod: string, bucketName: string, objectName: string, expiry: number, callback: ResultCallback): void; presignedUrl(httpMethod: string, bucketName: string, objectName: string, expiry: number, reqParams: { [key: string]: any; }, callback: ResultCallback): void; presignedUrl(httpMethod: string, bucketName: string, objectName: string, expiry: number, reqParams: { [key: string]: any; }, requestDate: Date, callback: ResultCallback): void; presignedUrl(httpMethod: string, bucketName: string, objectName: string, expiry?: number, reqParams?: { [key: string]: any; }, requestDate?: Date): Promise; presignedGetObject(bucketName: string, objectName: string, callback: ResultCallback): void; presignedGetObject(bucketName: string, objectName: string, expiry: number, callback: ResultCallback): void; presignedGetObject(bucketName: string, objectName: string, expiry: number, respHeaders: { [key: string]: any; }, callback: ResultCallback): void; presignedGetObject(bucketName: string, objectName: string, expiry: number, respHeaders: { [key: string]: any; }, requestDate: Date, callback: ResultCallback): void; presignedGetObject(bucketName: string, objectName: string, expiry?: number, respHeaders?: { [key: string]: any; }, requestDate?: Date): Promise; presignedPutObject(bucketName: string, objectName: string, callback: ResultCallback): void; presignedPutObject(bucketName: string, objectName: string, expiry: number, callback: ResultCallback): void; presignedPutObject(bucketName: string, objectName: string, expiry?: number): Promise; presignedPostPolicy(policy: PostPolicy, callback: ResultCallback): void; presignedPostPolicy(policy: PostPolicy): Promise; // Bucket Policy & Notification operations getBucketNotification(bucketName: string, callback: ResultCallback): void; getBucketNotification(bucketName: string): Promise; setBucketNotification(bucketName: string, bucketNotificationConfig: NotificationConfig, callback: NoResultCallback): void; setBucketNotification(bucketName: string, bucketNotificationConfig: NotificationConfig): Promise; removeAllBucketNotification(bucketName: string, callback: NoResultCallback): void; removeAllBucketNotification(bucketName: string): Promise; // todo #low Specify events listenBucketNotification(bucketName: string, prefix: string, suffix: string, events: string[]): EventEmitter; getBucketPolicy(bucketName: string, callback: ResultCallback): void; getBucketPolicy(bucketName: string): Promise; setBucketPolicy(bucketName: string, bucketPolicy: string, callback: NoResultCallback): void; setBucketPolicy(bucketName: string, bucketPolicy: string): Promise; // Other newPostPolicy(): PostPolicy; setRequestOptions(otpions: AgentOptions): void; } export namespace Policy { const NONE: 'none'; const READONLY: 'readonly'; const WRITEONLY: 'writeonly'; const READWRITE: 'readwrite'; } export class CopyConditions { setModified(date: Date): void; setUnmodified(date: Date): void; setMatchETag(etag: string): void; setMatchETagExcept(etag: string): void; } export class PostPolicy { setExpires(date: Date): void; setKey(objectName: string): void; setKeyStartsWith(prefix: string): void; setBucket(bucketName: string): void; setContentType(type: string): void; setContentLengthRange(min: number, max: number): void; } export class NotificationPoller extends EventEmitter { stop(): void; start(): void; // must to be public? checkForChanges(): void; } export class NotificationConfig { add(target: TopicConfig|QueueConfig|CloudFunctionConfig): void; } export class TopicConfig extends TargetConfig { constructor(arn: string); } export class QueueConfig extends TargetConfig { constructor(arn: string); } export class CloudFunctionConfig extends TargetConfig { constructor(arn: string); } export function buildARN(partition: string, service: string, region: string, accountId: string, resource: string): string; export const ObjectCreatedAll: string; // s3:ObjectCreated:*' export const ObjectCreatedPut: string; // s3:ObjectCreated:Put export const ObjectCreatedPost: string; // s3:ObjectCreated:Post export const ObjectCreatedCopy: string; // s3:ObjectCreated:Copy export const ObjectCreatedCompleteMultipartUpload: string; // sh:ObjectCreated:CompleteMultipartUpload export const ObjectRemovedAll: string; // s3:ObjectRemoved:* export const ObjectRemovedDelete: string; // s3:ObjectRemoved:Delete export const ObjectRemovedDeleteMarkerCreated: string; // s3:ObjectRemoved:DeleteMarkerCreated export const ObjectReducedRedundancyLostObject: string; // s3:ReducedRedundancyLostObject