express-storage 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +490 -0
  3. package/dist/drivers/base.driver.d.ts +69 -0
  4. package/dist/drivers/base.driver.d.ts.map +1 -0
  5. package/dist/drivers/base.driver.js +161 -0
  6. package/dist/drivers/base.driver.js.map +1 -0
  7. package/dist/drivers/gcs.driver.d.ts +39 -0
  8. package/dist/drivers/gcs.driver.d.ts.map +1 -0
  9. package/dist/drivers/gcs.driver.js +126 -0
  10. package/dist/drivers/gcs.driver.js.map +1 -0
  11. package/dist/drivers/local.driver.d.ts +30 -0
  12. package/dist/drivers/local.driver.d.ts.map +1 -0
  13. package/dist/drivers/local.driver.js +102 -0
  14. package/dist/drivers/local.driver.js.map +1 -0
  15. package/dist/drivers/oci.driver.d.ts +37 -0
  16. package/dist/drivers/oci.driver.d.ts.map +1 -0
  17. package/dist/drivers/oci.driver.js +84 -0
  18. package/dist/drivers/oci.driver.js.map +1 -0
  19. package/dist/drivers/s3.driver.d.ts +38 -0
  20. package/dist/drivers/s3.driver.d.ts.map +1 -0
  21. package/dist/drivers/s3.driver.js +135 -0
  22. package/dist/drivers/s3.driver.js.map +1 -0
  23. package/dist/factory/driver.factory.d.ts +56 -0
  24. package/dist/factory/driver.factory.d.ts.map +1 -0
  25. package/dist/factory/driver.factory.js +117 -0
  26. package/dist/factory/driver.factory.js.map +1 -0
  27. package/dist/index.d.ts +29 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +53 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/storage-manager.d.ts +75 -0
  32. package/dist/storage-manager.d.ts.map +1 -0
  33. package/dist/storage-manager.js +144 -0
  34. package/dist/storage-manager.js.map +1 -0
  35. package/dist/types/storage.types.d.ts +70 -0
  36. package/dist/types/storage.types.d.ts.map +1 -0
  37. package/dist/types/storage.types.js +2 -0
  38. package/dist/types/storage.types.js.map +1 -0
  39. package/dist/utils/config.utils.d.ts +21 -0
  40. package/dist/utils/config.utils.d.ts.map +1 -0
  41. package/dist/utils/config.utils.js +128 -0
  42. package/dist/utils/config.utils.js.map +1 -0
  43. package/dist/utils/file.utils.d.ts +45 -0
  44. package/dist/utils/file.utils.d.ts.map +1 -0
  45. package/dist/utils/file.utils.js +95 -0
  46. package/dist/utils/file.utils.js.map +1 -0
  47. package/package.json +82 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Alok Kumar
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,490 @@
1
+ # Express Storage
2
+
3
+ A powerful, TypeScript-first file upload and storage management package for Express.js applications. Supports multiple cloud storage providers with a simple, unified API.
4
+
5
+ ## 🚀 Features
6
+
7
+ - **TypeScript First**: Fully written in TypeScript with complete type definitions
8
+ - **Multiple Storage Drivers**: Support for AWS S3, Google Cloud Storage, Oracle Cloud Infrastructure, and local storage
9
+ - **Presigned URLs**: Generate secure, time-limited URLs for direct client uploads
10
+ - **Flexible File Handling**: Support for single and multiple file uploads
11
+ - **Automatic File Organization**: Files stored in month/year directories for local storage
12
+ - **Unique File Naming**: Unix timestamp-based unique filenames with sanitization
13
+ - **Environment-based Configuration**: Simple setup using environment variables
14
+ - **Class-based API**: Clean, object-oriented interface with `StorageManager`
15
+ - **Comprehensive Testing**: Full test coverage with Jest
16
+ - **Error Handling**: Consistent error responses with detailed messages
17
+
18
+ ## 📦 Installation
19
+
20
+ ```bash
21
+ npm install express-storage
22
+ ```
23
+
24
+ ## 🔧 Quick Setup
25
+
26
+ ### 1. Environment Configuration
27
+
28
+ Create a `.env` file in your project root:
29
+
30
+ ```env
31
+ # Required: Choose your storage driver
32
+ FILE_DRIVER=local
33
+
34
+ # For local storage (optional - defaults to public/express-storage)
35
+ LOCAL_PATH=public/uploads
36
+
37
+ # For cloud storage (AWS S3 example)
38
+ FILE_DRIVER=s3
39
+ BUCKET_NAME=my-bucket
40
+ AWS_REGION=us-east-1
41
+ AWS_ACCESS_KEY=your-access-key
42
+ AWS_SECRET_KEY=your-secret-key
43
+
44
+ # Optional: Presigned URL expiry (default: 600 seconds / 10 minutes)
45
+ PRESIGNED_URL_EXPIRY=600
46
+ ```
47
+
48
+ ### 2. Basic Usage
49
+
50
+ ```typescript
51
+ import express from 'express';
52
+ import multer from 'multer';
53
+ import { StorageManager } from 'express-storage';
54
+
55
+ const app = express();
56
+ const upload = multer();
57
+
58
+ // Initialize storage manager
59
+ const storage = new StorageManager();
60
+
61
+ // Single file upload
62
+ app.post('/upload', upload.single('file'), async (req, res) => {
63
+ try {
64
+ const result = await storage.uploadFile(req.file!);
65
+
66
+ if (result.success) {
67
+ res.json({
68
+ success: true,
69
+ fileName: result.fileName,
70
+ fileUrl: result.fileUrl
71
+ });
72
+ } else {
73
+ res.status(400).json({ success: false, error: result.error });
74
+ }
75
+ } catch (error) {
76
+ res.status(500).json({ success: false, error: 'Upload failed' });
77
+ }
78
+ });
79
+
80
+ // Multiple files upload
81
+ app.post('/upload-multiple', upload.array('files', 10), async (req, res) => {
82
+ try {
83
+ const results = await storage.uploadFiles(req.files as Express.Multer.File[]);
84
+
85
+ const successful = results.filter(r => r.success);
86
+ const failed = results.filter(r => !r.success);
87
+
88
+ res.json({
89
+ success: true,
90
+ uploaded: successful.length,
91
+ failed: failed.length,
92
+ results
93
+ });
94
+ } catch (error) {
95
+ res.status(500).json({ success: false, error: 'Upload failed' });
96
+ }
97
+ });
98
+ ```
99
+
100
+ ## 🗂️ Supported Storage Drivers
101
+
102
+ | Driver | Type | Description | Required Environment Variables |
103
+ |--------|------|-------------|-------------------------------|
104
+ | `local` | Direct | Local file system storage | `LOCAL_PATH` (optional) |
105
+ | `s3` | Direct | AWS S3 direct upload | `BUCKET_NAME`, `AWS_REGION`, `AWS_ACCESS_KEY`, `AWS_SECRET_KEY` |
106
+ | `s3-presigned` | Presigned | AWS S3 presigned URLs | `BUCKET_NAME`, `AWS_REGION`, `AWS_ACCESS_KEY`, `AWS_SECRET_KEY` |
107
+ | `gcs` | Direct | Google Cloud Storage direct upload | `BUCKET_NAME`, `GCS_PROJECT_ID`, `GCS_CREDENTIALS` |
108
+ | `gcs-presigned` | Presigned | Google Cloud Storage presigned URLs | `BUCKET_NAME`, `GCS_PROJECT_ID`, `GCS_CREDENTIALS` |
109
+ | `oci` | Direct | Oracle Cloud Infrastructure direct upload | `BUCKET_NAME`, `OCI_REGION`, `OCI_CREDENTIALS` |
110
+ | `oci-presigned` | Presigned | Oracle Cloud Infrastructure presigned URLs | `BUCKET_NAME`, `OCI_REGION`, `OCI_CREDENTIALS` |
111
+
112
+ ## 📋 Environment Variables Reference
113
+
114
+ ### Core Configuration
115
+ - `FILE_DRIVER` (required): Storage driver to use
116
+ - `BUCKET_NAME`: Cloud storage bucket name
117
+ - `LOCAL_PATH`: Local storage directory path (default: `public/express-storage`)
118
+ - `PRESIGNED_URL_EXPIRY`: Presigned URL expiry in seconds (default: 600)
119
+
120
+ ### AWS S3 Configuration
121
+ - `AWS_REGION`: AWS region (e.g., `us-east-1`)
122
+ - `AWS_ACCESS_KEY`: AWS access key ID
123
+ - `AWS_SECRET_KEY`: AWS secret access key
124
+
125
+ ### Google Cloud Storage Configuration
126
+ - `GCS_PROJECT_ID`: Google Cloud project ID
127
+ - `GCS_CREDENTIALS`: Path to service account JSON file
128
+
129
+ ### Oracle Cloud Infrastructure Configuration
130
+ - `OCI_REGION`: OCI region (e.g., `us-ashburn-1`)
131
+ - `OCI_CREDENTIALS`: Path to OCI credentials file
132
+
133
+ ## 🔌 API Reference
134
+
135
+ ### StorageManager Class
136
+
137
+ The main class for managing file storage operations.
138
+
139
+ #### Constructor
140
+ ```typescript
141
+ const storage = new StorageManager();
142
+ ```
143
+
144
+ #### Methods
145
+
146
+ ##### File Upload
147
+ ```typescript
148
+ // Single file upload
149
+ const result = await storage.uploadFile(file: Express.Multer.File): Promise<FileUploadResult>
150
+
151
+ // Multiple files upload
152
+ const results = await storage.uploadFiles(files: Express.Multer.File[]): Promise<FileUploadResult[]>
153
+
154
+ // Generic upload (handles both single and multiple)
155
+ const result = await storage.upload(input: FileInput): Promise<FileUploadResult | FileUploadResult[]>
156
+ ```
157
+
158
+ ##### Presigned URLs
159
+ ```typescript
160
+ // Generate upload URL
161
+ const result = await storage.generateUploadUrl(fileName: string): Promise<PresignedUrlResult>
162
+
163
+ // Generate view URL
164
+ const result = await storage.generateViewUrl(fileName: string): Promise<PresignedUrlResult>
165
+
166
+ // Generate multiple upload URLs
167
+ const results = await storage.generateUploadUrls(fileNames: string[]): Promise<PresignedUrlResult[]>
168
+
169
+ // Generate multiple view URLs
170
+ const results = await storage.generateViewUrls(fileNames: string[]): Promise<PresignedUrlResult[]>
171
+ ```
172
+
173
+ ##### File Deletion
174
+ ```typescript
175
+ // Delete single file
176
+ const success = await storage.deleteFile(fileName: string): Promise<boolean>
177
+
178
+ // Delete multiple files
179
+ const results = await storage.deleteFiles(fileNames: string[]): Promise<boolean[]>
180
+ ```
181
+
182
+ ##### Utility Methods
183
+ ```typescript
184
+ // Get current configuration
185
+ const config = storage.getConfig(): StorageConfig
186
+
187
+ // Get driver type
188
+ const driverType = storage.getDriverType(): string
189
+
190
+ // Check if presigned URLs are supported
191
+ const isSupported = storage.isPresignedSupported(): boolean
192
+ ```
193
+
194
+ ### Static Methods
195
+
196
+ ```typescript
197
+ // Initialize with custom configuration
198
+ const storage = StorageManager.initialize({
199
+ driver: 's3',
200
+ bucketName: 'my-bucket',
201
+ awsRegion: 'us-east-1'
202
+ });
203
+
204
+ // Get available drivers
205
+ const drivers = StorageManager.getAvailableDrivers(): string[]
206
+
207
+ // Clear driver cache
208
+ StorageManager.clearCache(): void
209
+ ```
210
+
211
+ ### Convenience Functions
212
+
213
+ ```typescript
214
+ import {
215
+ uploadFile,
216
+ uploadFiles,
217
+ generateUploadUrl,
218
+ generateViewUrl,
219
+ deleteFile,
220
+ deleteFiles,
221
+ getStorageManager,
222
+ initializeStorageManager
223
+ } from 'express-storage';
224
+
225
+ // Use default storage manager
226
+ const result = await uploadFile(file);
227
+ const results = await uploadFiles(files);
228
+ const urlResult = await generateUploadUrl('filename.jpg');
229
+ const success = await deleteFile('filename.jpg');
230
+
231
+ // Initialize custom storage manager
232
+ const storage = initializeStorageManager({
233
+ driver: 'local',
234
+ localPath: 'uploads'
235
+ });
236
+ ```
237
+
238
+ ## 📁 File Organization
239
+
240
+ ### Local Storage
241
+ Files are organized in month/year directories:
242
+ ```
243
+ public/express-storage/
244
+ ├── january/
245
+ │ └── 2024/
246
+ │ ├── 1703123456_image.jpg
247
+ │ └── 1703123457_document.pdf
248
+ ├── february/
249
+ │ └── 2024/
250
+ │ └── 1705800000_video.mp4
251
+ └── ...
252
+ ```
253
+
254
+ ### Cloud Storage
255
+ Files are stored with unique timestamps:
256
+ ```
257
+ bucket/
258
+ ├── 1703123456_image.jpg
259
+ ├── 1703123457_document.pdf
260
+ └── 1705800000_video.mp4
261
+ ```
262
+
263
+ ## 🔐 Presigned URLs
264
+
265
+ For cloud storage providers, you can generate presigned URLs for secure, direct client uploads:
266
+
267
+ ```typescript
268
+ // Generate upload URL for client-side upload
269
+ const uploadResult = await storage.generateUploadUrl('my-file.jpg');
270
+ if (uploadResult.success) {
271
+ // Client can use uploadResult.uploadUrl to upload directly
272
+ console.log(uploadResult.uploadUrl);
273
+ }
274
+
275
+ // Generate view URL for secure file access
276
+ const viewResult = await storage.generateViewUrl('my-file.jpg');
277
+ if (viewResult.success) {
278
+ // Client can use viewResult.viewUrl to view the file
279
+ console.log(viewResult.viewUrl);
280
+ }
281
+ ```
282
+
283
+ ## 🛠️ Advanced Usage Examples
284
+
285
+ ### Custom Configuration
286
+
287
+ ```typescript
288
+ import { StorageManager } from 'express-storage';
289
+
290
+ // Initialize with custom config
291
+ const storage = StorageManager.initialize({
292
+ driver: 's3',
293
+ bucketName: 'my-bucket',
294
+ awsRegion: 'us-east-1',
295
+ awsAccessKey: process.env.AWS_ACCESS_KEY,
296
+ awsSecretKey: process.env.AWS_SECRET_KEY,
297
+ presignedUrlExpiry: 1800 // 30 minutes
298
+ });
299
+ ```
300
+
301
+ ### Error Handling
302
+
303
+ ```typescript
304
+ app.post('/upload', upload.single('file'), async (req, res) => {
305
+ try {
306
+ const result = await storage.uploadFile(req.file!);
307
+
308
+ if (result.success) {
309
+ res.json({
310
+ success: true,
311
+ fileName: result.fileName,
312
+ fileUrl: result.fileUrl
313
+ });
314
+ } else {
315
+ res.status(400).json({
316
+ success: false,
317
+ error: result.error
318
+ });
319
+ }
320
+ } catch (error) {
321
+ res.status(500).json({
322
+ success: false,
323
+ error: error instanceof Error ? error.message : 'Unknown error'
324
+ });
325
+ }
326
+ });
327
+ ```
328
+
329
+ ### File Validation
330
+
331
+ ```typescript
332
+ app.post('/upload', upload.single('file'), async (req, res) => {
333
+ const file = req.file!;
334
+
335
+ // Validate file size (5MB limit)
336
+ if (file.size > 5 * 1024 * 1024) {
337
+ return res.status(400).json({
338
+ success: false,
339
+ error: 'File size too large. Maximum 5MB allowed.'
340
+ });
341
+ }
342
+
343
+ // Validate file type
344
+ const allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];
345
+ if (!allowedTypes.includes(file.mimetype)) {
346
+ return res.status(400).json({
347
+ success: false,
348
+ error: 'Invalid file type. Only JPEG, PNG, and GIF allowed.'
349
+ });
350
+ }
351
+
352
+ const result = await storage.uploadFile(file);
353
+ res.json(result);
354
+ });
355
+ ```
356
+
357
+ ### Multiple File Upload with Progress
358
+
359
+ ```typescript
360
+ app.post('/upload-multiple', upload.array('files', 10), async (req, res) => {
361
+ const files = req.files as Express.Multer.File[];
362
+ const results = await storage.uploadFiles(files);
363
+
364
+ const summary = {
365
+ total: files.length,
366
+ successful: results.filter(r => r.success).length,
367
+ failed: results.filter(r => !r.success).length,
368
+ files: results.map((result, index) => ({
369
+ originalName: files[index].originalname,
370
+ success: result.success,
371
+ fileName: result.fileName,
372
+ fileUrl: result.fileUrl,
373
+ error: result.error
374
+ }))
375
+ };
376
+
377
+ res.json(summary);
378
+ });
379
+ ```
380
+
381
+ ## 🧪 Testing
382
+
383
+ Run the test suite:
384
+
385
+ ```bash
386
+ # Run all tests
387
+ npm test
388
+
389
+ # Run tests in watch mode
390
+ npm run test:watch
391
+
392
+ # Run tests with coverage
393
+ npm run test:coverage
394
+ ```
395
+
396
+ ## 🛠️ Development
397
+
398
+ ### Prerequisites
399
+ - Node.js >= 16.0.0
400
+ - TypeScript >= 5.1.6
401
+
402
+ ### Development Commands
403
+
404
+ ```bash
405
+ # Install dependencies
406
+ npm install
407
+
408
+ # Build the package
409
+ npm run build
410
+
411
+ # Development mode (watch for changes)
412
+ npm run dev
413
+
414
+ # Clean build directory
415
+ npm run clean
416
+
417
+ # Type checking
418
+ npm run type-check
419
+
420
+ # Linting
421
+ npm run lint
422
+ npm run lint:fix
423
+
424
+ # Formatting
425
+ npm run format
426
+ ```
427
+
428
+ ### Project Structure
429
+
430
+ ```
431
+ express-storage/
432
+ ├── src/
433
+ │ ├── types/
434
+ │ │ └── storage.types.ts # Type definitions
435
+ │ ├── utils/
436
+ │ │ ├── config.utils.ts # Configuration utilities
437
+ │ │ └── file.utils.ts # File operation utilities
438
+ │ ├── drivers/
439
+ │ │ ├── base.driver.ts # Abstract base driver
440
+ │ │ ├── local.driver.ts # Local storage driver
441
+ │ │ ├── s3.driver.ts # AWS S3 driver
442
+ │ │ ├── gcs.driver.ts # Google Cloud Storage driver
443
+ │ │ └── oci.driver.ts # Oracle Cloud Infrastructure driver
444
+ │ ├── factory/
445
+ │ │ └── driver.factory.ts # Driver factory
446
+ │ ├── storage-manager.ts # Main StorageManager class
447
+ │ └── index.ts # Package entry point
448
+ ├── tests/ # Test files
449
+ ├── examples/ # Usage examples
450
+ ├── dist/ # Compiled output
451
+ └── package.json
452
+ ```
453
+
454
+ ## 🤝 Contributing
455
+
456
+ 1. Fork the repository
457
+ 2. Create a feature branch (`git checkout -b feature/amazing-feature`)
458
+ 3. Commit your changes (`git commit -m 'Add amazing feature'`)
459
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
460
+ 5. Open a Pull Request
461
+
462
+ ### Development Guidelines
463
+
464
+ - Follow TypeScript best practices
465
+ - Write comprehensive tests for new features
466
+ - Update documentation for API changes
467
+ - Ensure all tests pass before submitting PR
468
+
469
+ ## 📄 License
470
+
471
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
472
+
473
+ ## 🆘 Support
474
+
475
+ - **Issues**: Report bugs and feature requests on GitHub
476
+ - **Documentation**: Check the examples folder for usage patterns
477
+ - **Questions**: Open a GitHub discussion for questions
478
+
479
+ ## 🔄 Changelog
480
+
481
+ ### v1.0.0
482
+ - Initial release
483
+ - Support for local, S3, GCS, and OCI storage
484
+ - Presigned URL generation
485
+ - TypeScript-first implementation
486
+ - Comprehensive test coverage
487
+
488
+ ---
489
+
490
+ **Made with ❤️ for the Express.js community**
@@ -0,0 +1,69 @@
1
+ import { IStorageDriver, FileUploadResult, PresignedUrlResult, StorageConfig } from '../types/storage.types.js';
2
+ /**
3
+ * Abstract base class for all storage drivers
4
+ */
5
+ export declare abstract class BaseStorageDriver implements IStorageDriver {
6
+ protected config: StorageConfig;
7
+ constructor(config: StorageConfig);
8
+ /**
9
+ * Upload a single file
10
+ */
11
+ abstract upload(file: Express.Multer.File): Promise<FileUploadResult>;
12
+ /**
13
+ * Upload multiple files
14
+ */
15
+ uploadMultiple(files: Express.Multer.File[]): Promise<FileUploadResult[]>;
16
+ /**
17
+ * Generate upload URL (for presigned drivers)
18
+ */
19
+ abstract generateUploadUrl(fileName: string): Promise<PresignedUrlResult>;
20
+ /**
21
+ * Generate view URL (for presigned drivers)
22
+ */
23
+ abstract generateViewUrl(fileName: string): Promise<PresignedUrlResult>;
24
+ /**
25
+ * Generate multiple upload URLs
26
+ */
27
+ generateMultipleUploadUrls(fileNames: string[]): Promise<PresignedUrlResult[]>;
28
+ /**
29
+ * Generate multiple view URLs
30
+ */
31
+ generateMultipleViewUrls(fileNames: string[]): Promise<PresignedUrlResult[]>;
32
+ /**
33
+ * Delete a single file
34
+ */
35
+ abstract delete(fileName: string): Promise<boolean>;
36
+ /**
37
+ * Delete multiple files
38
+ */
39
+ deleteMultiple(fileNames: string[]): Promise<boolean[]>;
40
+ /**
41
+ * Generate unique filename with timestamp
42
+ */
43
+ protected generateFileName(originalName: string): string;
44
+ /**
45
+ * Create success result
46
+ */
47
+ protected createSuccessResult(fileName: string, fileUrl?: string): FileUploadResult;
48
+ /**
49
+ * Create error result
50
+ */
51
+ protected createErrorResult(error: string): FileUploadResult;
52
+ /**
53
+ * Create presigned success result
54
+ */
55
+ protected createPresignedSuccessResult(uploadUrl?: string, viewUrl?: string): PresignedUrlResult;
56
+ /**
57
+ * Create presigned error result
58
+ */
59
+ protected createPresignedErrorResult(error: string): PresignedUrlResult;
60
+ /**
61
+ * Validate file before upload
62
+ */
63
+ protected validateFile(file: Express.Multer.File): string[];
64
+ /**
65
+ * Get presigned URL expiry time
66
+ */
67
+ protected getPresignedUrlExpiry(): number;
68
+ }
69
+ //# sourceMappingURL=base.driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.driver.d.ts","sourceRoot":"","sources":["../../src/drivers/base.driver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAGhH;;GAEG;AACH,8BAAsB,iBAAkB,YAAW,cAAc;IAC/D,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC;gBAEpB,MAAM,EAAE,aAAa;IAIjC;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAErE;;OAEG;IACG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAkB/E;;OAEG;IACH,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAEzE;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAEvE;;OAEG;IACG,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAkBpF;;OAEG;IACG,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAkBlF;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAEnD;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAe7D;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAIxD;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,gBAAgB;IAWnF;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB;IAO5D;;OAEG;IACH,SAAS,CAAC,4BAA4B,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,kBAAkB;IAahG;;OAEG;IACH,SAAS,CAAC,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB;IAOvE;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE;IAuB3D;;OAEG;IACH,SAAS,CAAC,qBAAqB,IAAI,MAAM;CAG1C"}