UNPKG

@eleven-am/nestjs-storage

Version:

A NestJS module for uploading files to cloud storage providers

99 lines 4.31 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var StorageService_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.StorageService = void 0; const common_1 = require("@nestjs/common"); const baseStorage_1 = require("../providers/baseStorage"); const options_1 = require("../types/options"); const localStorage_1 = require("../providers/localStorage"); const s3BaseStorage_1 = require("../providers/s3BaseStorage"); const gDriveStorage_1 = require("../providers/gDriveStorage"); const dropboxStorage_1 = require("../providers/dropboxStorage"); let StorageService = StorageService_1 = class StorageService { constructor(storageProvider) { this.storageProvider = storageProvider; } putFile(path, data) { return this.storageProvider.putFile(path, data); } getFileOrFolder(fileId) { return this.storageProvider.getFileOrFolder(fileId); } readFile(fileId) { return this.storageProvider.readFile(fileId); } deleteFileOrFolder(fileId) { return this.storageProvider.deleteFileOrFolder(fileId); } moveFileOrFolder(fileId, newPath) { return this.storageProvider.moveFileOrFolder(fileId, newPath); } renameFileOrFolder(fileId, newName) { return this.storageProvider.renameFileOrFolder(fileId, newName); } createFolder(path) { return this.storageProvider.createFolder(path); } readFolder(folderId) { return folderId ? this.storageProvider.readFolder(folderId) : this.storageProvider.readRootFolder(); } async readFolderRecursive(folderId) { const items = await this.storageProvider.readFolder(folderId); const folder = await this.storageProvider.getFileOrFolder(folderId); const files = items.filter((file) => !file.isFolder); const folders = items.filter((file) => file.isFolder); const mappedFiles = files.map((file) => ({ ...file, parentName: folder.name, })); const internalFiles = await Promise.all(folders.map((folder) => this.readFolderRecursive(folder.path))); return [...mappedFiles, ...internalFiles.flat()]; } getSignedUrl(fileId, expires) { return this.storageProvider.getSignedUrl(fileId, expires); } streamFile(fileId, range) { return this.storageProvider.streamFile(fileId, range); } createProvider(options) { let provider = null; switch (options.provider) { case options_1.Provider.LOCAL: provider = new localStorage_1.LocalStorage(options); break; case options_1.Provider.S3: case options_1.Provider.R2: provider = new s3BaseStorage_1.S3BaseStorage(options); break; case options_1.Provider.GDRIVE: provider = new gDriveStorage_1.GDriveStorage(options); break; case options_1.Provider.DROPBOX: provider = new dropboxStorage_1.DropboxStorage(options); break; default: throw new Error('Invalid storage provider'); } return new StorageService_1(provider); } getProvider() { return this.storageProvider.storageProvider; } }; exports.StorageService = StorageService; exports.StorageService = StorageService = StorageService_1 = __decorate([ (0, common_1.Injectable)(), __metadata("design:paramtypes", [baseStorage_1.BaseStorage]) ], StorageService); //# sourceMappingURL=storage.service.js.map