DefinitelyTyped/types/minio/index.d.ts

247 lines
11 KiB
TypeScript

// Type definitions for minio 7.0
// Project: https://github.com/minio/minio-js#readme
// Definitions by: Barin Britva <https://github.com/barinbritva>
// Lubomir Kaplan <https://github.com/castorw>
// Panagiotis Kapros <https://github.com/loremaps>
// Ben Watkins <https://github.com/OutdatedVersion>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference types="node" />
// 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<T> = (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<T> 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<void>;
listBuckets(callback: ResultCallback<BucketItemFromList[]>): void;
listBuckets(): Promise<BucketItemFromList[]>;
bucketExists(bucketName: string, callback: ResultCallback<boolean>): void;
bucketExists(bucketName: string): Promise<boolean>;
removeBucket(bucketName: string, callback: NoResultCallback): void;
removeBucket(bucketName: string): Promise<void>;
listObjects(bucketName: string, prefix?: string, recursive?: boolean): BucketStream<BucketItem>;
listObjectsV2(bucketName: string, prefix?: string, recursive?: boolean, startAfter?: string): BucketStream<BucketItem>;
listIncompleteUploads(bucketName: string, prefix?: string, recursive?: boolean): BucketStream<IncompleteUploadedBucketItem>;
// Object operations
getObject(bucketName: string, objectName: string, callback: ResultCallback<Stream>): void;
getObject(bucketName: string, objectName: string): Promise<Stream>;
getPartialObject(bucketName: string, objectName: string, offset: number, callback: ResultCallback<Stream>): void;
getPartialObject(bucketName: string, objectName: string, offset: number, length: number, callback: ResultCallback<Stream>): void;
getPartialObject(bucketName: string, objectName: string, offset: number, length?: number): Promise<Stream>;
fGetObject(bucketName: string, objectName: string, filePath: string, callback: NoResultCallback): void;
fGetObject(bucketName: string, objectName: string, filePath: string): Promise<void>;
putObject(bucketName: string, objectName: string, stream: Stream|Buffer|string, callback: ResultCallback<string>): void;
putObject(bucketName: string, objectName: string, stream: Stream|Buffer|string, size: number, callback: ResultCallback<string>): void;
putObject(bucketName: string, objectName: string, stream: Stream|Buffer|string, size: number, metaData: ItemBucketMetadata, callback: ResultCallback<string>): void;
putObject(bucketName: string, objectName: string, stream: Stream|Buffer|string, size?: number, metaData?: ItemBucketMetadata): Promise<string>;
fPutObject(bucketName: string, objectName: string, filePath: string, metaData: ItemBucketMetadata, callback: ResultCallback<string>): void;
fPutObject(bucketName: string, objectName: string, filePath: string, metaData: ItemBucketMetadata): Promise<string>;
copyObject(bucketName: string, objectName: string, sourceObject: string, conditions: CopyConditions, callback: ResultCallback<BucketItemCopy>): void;
copyObject(bucketName: string, objectName: string, sourceObject: string, conditions: CopyConditions): Promise<BucketItemCopy>;
statObject(bucketName: string, objectName: string, callback: ResultCallback<BucketItemStat>): void;
statObject(bucketName: string, objectName: string): Promise<BucketItemStat>;
removeObject(bucketName: string, objectName: string, callback: NoResultCallback): void;
removeObject(bucketName: string, objectName: string): Promise<void>;
removeObjects(bucketName: string, objectsList: string[], callback: NoResultCallback): void;
removeObjects(bucketName: string, objectsList: string[]): Promise<void>;
removeIncompleteUpload(bucketName: string, objectName: string, callback: NoResultCallback): void;
removeIncompleteUpload(bucketName: string, objectName: string): Promise<void>;
// Presigned operations
presignedUrl(httpMethod: string, bucketName: string, objectName: string, callback: ResultCallback<string>): void;
presignedUrl(httpMethod: string, bucketName: string, objectName: string, expiry: number, callback: ResultCallback<string>): void;
presignedUrl(httpMethod: string, bucketName: string, objectName: string, expiry: number, reqParams: { [key: string]: any; }, callback: ResultCallback<string>): void;
presignedUrl(httpMethod: string, bucketName: string, objectName: string, expiry: number, reqParams: { [key: string]: any; }, requestDate: Date, callback: ResultCallback<string>): void;
presignedUrl(httpMethod: string, bucketName: string, objectName: string, expiry?: number, reqParams?: { [key: string]: any; }, requestDate?: Date): Promise<string>;
presignedGetObject(bucketName: string, objectName: string, callback: ResultCallback<string>): void;
presignedGetObject(bucketName: string, objectName: string, expiry: number, callback: ResultCallback<string>): void;
presignedGetObject(bucketName: string, objectName: string, expiry: number, respHeaders: { [key: string]: any; }, callback: ResultCallback<string>): void;
presignedGetObject(bucketName: string, objectName: string, expiry: number, respHeaders: { [key: string]: any; }, requestDate: Date, callback: ResultCallback<string>): void;
presignedGetObject(bucketName: string, objectName: string, expiry?: number, respHeaders?: { [key: string]: any; }, requestDate?: Date): Promise<string>;
presignedPutObject(bucketName: string, objectName: string, callback: ResultCallback<string>): void;
presignedPutObject(bucketName: string, objectName: string, expiry: number, callback: ResultCallback<string>): void;
presignedPutObject(bucketName: string, objectName: string, expiry?: number): Promise<string>;
presignedPostPolicy(policy: PostPolicy, callback: ResultCallback<PostPolicyResult>): void;
presignedPostPolicy(policy: PostPolicy): Promise<PostPolicyResult>;
// Bucket Policy & Notification operations
getBucketNotification(bucketName: string, callback: ResultCallback<NotificationConfig>): void;
getBucketNotification(bucketName: string): Promise<NotificationConfig>;
setBucketNotification(bucketName: string, bucketNotificationConfig: NotificationConfig, callback: NoResultCallback): void;
setBucketNotification(bucketName: string, bucketNotificationConfig: NotificationConfig): Promise<void>;
removeAllBucketNotification(bucketName: string, callback: NoResultCallback): void;
removeAllBucketNotification(bucketName: string): Promise<void>;
// todo #low Specify events
listenBucketNotification(bucketName: string, prefix: string, suffix: string, events: string[]): EventEmitter;
getBucketPolicy(bucketName: string, callback: ResultCallback<string>): void;
getBucketPolicy(bucketName: string): Promise<string>;
setBucketPolicy(bucketName: string, bucketPolicy: string, callback: NoResultCallback): void;
setBucketPolicy(bucketName: string, bucketPolicy: string): Promise<void>;
// 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