diff --git a/packages/file-storage/src/file-storage.class.ts b/packages/file-storage/src/file-storage.class.ts index 341e4b9..1048877 100644 --- a/packages/file-storage/src/file-storage.class.ts +++ b/packages/file-storage/src/file-storage.class.ts @@ -1,8 +1,9 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ import type { Request } from 'express'; -import type { Readable, Writable } from 'node:stream'; +import type { Readable } from 'node:stream'; import { MethodTypes } from './constants'; +import { FileStorageWritable } from './types'; // TODO: extend configuration export interface FileStorageConfig { @@ -71,7 +72,7 @@ export abstract class FileStorage { args: FileStorageBaseArgs & { options?: string | any; }, - ): Promise { + ): Promise { throw new Error(defaultErrorMessage); } diff --git a/packages/file-storage/src/file-storage.service.ts b/packages/file-storage/src/file-storage.service.ts index ef604e9..a0c852a 100644 --- a/packages/file-storage/src/file-storage.service.ts +++ b/packages/file-storage/src/file-storage.service.ts @@ -1,5 +1,5 @@ import { Injectable } from '@nestjs/common'; -import type { Readable, Writable } from 'node:stream'; +import type { Readable } from 'node:stream'; import { InjectFileStorageStrategy } from './decorators'; import { FileStorage, FileStorageBaseArgs, FileStorageDirBaseArgs } from './file-storage.class'; @@ -18,6 +18,7 @@ import { FileStorageS3UploadFile, FileStorageS3UploadStream, } from './file-storage-s3.class'; +import type { FileStorageWritable } from './types'; @Injectable() export class FileStorageService implements Omit { @@ -31,7 +32,7 @@ export class FileStorageService implements Omit { + uploadStream(args: FileStorageLocalUploadStream | FileStorageS3UploadStream): Promise { return this.fileStorage.uploadStream(args); } diff --git a/packages/file-storage/src/types.ts b/packages/file-storage/src/types.ts index f5f54a9..60a7321 100644 --- a/packages/file-storage/src/types.ts +++ b/packages/file-storage/src/types.ts @@ -1,4 +1,5 @@ import { InjectionToken, ModuleMetadata } from '@nestjs/common'; +import { Writable } from 'node:stream'; import { FileStorage, FileStorageConfigFactory } from './file-storage.class'; import { FileStorageLocalSetup } from './file-storage-fs.class'; @@ -30,3 +31,15 @@ export interface FileStorageModuleAsyncOptions extends Pick void): this; + on(event: 'done', listener: (error?: Error) => void): this; + once(event: 'done', listener: (error?: Error) => void): this; + prependOnceListener(event: 'done', listener: (error?: Error) => void): this; + prependListener(event: 'done', listener: (error?: Error) => void): this; + removeListener(event: 'done', listener: () => void): this; +} + +export type FileStorageWritable = Writable & WritableWithDoneEvent;