@flusys/nestjs-storage 7.1.0 → 8.0.0-beta.1
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.
- package/config/index.d.ts +3 -3
- package/controllers/file-manager.controller.d.ts +4 -4
- package/controllers/folder.controller.d.ts +2 -2
- package/controllers/index.d.ts +4 -4
- package/controllers/storage-config.controller.d.ts +2 -2
- package/controllers/upload.controller.d.ts +3 -3
- package/docs/index.d.ts +1 -1
- package/docs/storage-swagger.config.d.ts +2 -2
- package/dtos/index.d.ts +4 -4
- package/entities/file-manager-with-company.entity.d.ts +2 -2
- package/entities/file-manager.entity.d.ts +1 -1
- package/entities/folder-with-company.entity.d.ts +1 -1
- package/entities/index.d.ts +15 -15
- package/entities/storage-config-with-company.entity.d.ts +1 -1
- package/enums/index.d.ts +1 -1
- package/fesm/493.js +2768 -0
- package/fesm/537.js +1157 -0
- package/fesm/562.js +786 -0
- package/fesm/{providers/azure-provider.optional.js → chunks/190.js} +33 -30
- package/fesm/chunks/252.js +12 -0
- package/fesm/chunks/327.js +12 -0
- package/fesm/chunks/385.js +12 -0
- package/fesm/{providers/s3-provider.optional.js → chunks/591.js} +37 -34
- package/fesm/chunks/746.js +12 -0
- package/fesm/chunks/798.js +12 -0
- package/fesm/{providers/sftp-provider.optional.js → chunks/918.js} +35 -31
- package/fesm/config/index.js +119 -3
- package/fesm/controllers/index.js +16 -4
- package/fesm/docs/index.js +206 -1
- package/fesm/dtos/index.js +879 -4
- package/fesm/entities/index.js +463 -18
- package/fesm/enums/index.js +36 -1
- package/fesm/index.js +398 -12
- package/fesm/interfaces/index.js +19 -5
- package/fesm/modules/index.js +16 -1
- package/fesm/providers/index.js +364 -3
- package/fesm/runtime.js +252 -0
- package/fesm/services/index.js +16 -6
- package/fesm/utils/index.js +149 -1
- package/index.d.ts +11 -11
- package/interfaces/file-manager.interface.d.ts +1 -1
- package/interfaces/folder.interface.d.ts +1 -1
- package/interfaces/index.d.ts +5 -5
- package/interfaces/storage-config.interface.d.ts +1 -1
- package/interfaces/storage-module-options.interface.d.ts +3 -3
- package/interfaces/storage-provider.interface.d.ts +1 -1
- package/middlewares/file-serve.middleware.d.ts +4 -3
- package/middlewares/index.d.ts +1 -1
- package/modules/index.d.ts +1 -1
- package/modules/storage.module.d.ts +2 -2
- package/package.json +30 -41
- package/providers/azure-provider.optional.d.ts +2 -2
- package/providers/index.d.ts +3 -3
- package/providers/local-provider.d.ts +2 -2
- package/providers/s3-provider.optional.d.ts +2 -2
- package/providers/sftp-provider.optional.d.ts +2 -2
- package/providers/storage-factory.service.d.ts +3 -3
- package/providers/storage-provider.registry.d.ts +2 -2
- package/services/file-manager.service.d.ts +9 -8
- package/services/folder.service.d.ts +6 -6
- package/services/index.d.ts +6 -6
- package/services/storage-config.service.d.ts +3 -3
- package/services/storage-datasource.provider.d.ts +3 -3
- package/services/storage-provider-config.service.d.ts +7 -7
- package/services/upload.service.d.ts +6 -6
- package/utils/image-compressor.util.d.ts +1 -1
- package/utils/index.d.ts +1 -1
- package/cjs/config/event-actions.js +0 -34
- package/cjs/config/index.js +0 -20
- package/cjs/config/message-keys.js +0 -46
- package/cjs/config/storage.constants.js +0 -28
- package/cjs/controllers/file-manager.controller.js +0 -152
- package/cjs/controllers/file-manager.controller.spec.js +0 -135
- package/cjs/controllers/folder.controller.js +0 -102
- package/cjs/controllers/folder.controller.spec.js +0 -86
- package/cjs/controllers/index.js +0 -21
- package/cjs/controllers/storage-config.controller.js +0 -102
- package/cjs/controllers/storage-config.controller.spec.js +0 -85
- package/cjs/controllers/upload.controller.js +0 -234
- package/cjs/controllers/upload.controller.spec.js +0 -132
- package/cjs/docs/index.js +0 -11
- package/cjs/docs/storage-swagger.config.js +0 -188
- package/cjs/docs/storage-swagger.config.spec.js +0 -72
- package/cjs/dtos/file-manager.dto.js +0 -327
- package/cjs/dtos/folder.dto.js +0 -105
- package/cjs/dtos/index.js +0 -21
- package/cjs/dtos/storage-config.dto.js +0 -170
- package/cjs/dtos/upload.dto.js +0 -272
- package/cjs/entities/file-manager-with-company.entity.js +0 -61
- package/cjs/entities/file-manager.entity.js +0 -122
- package/cjs/entities/folder-with-company.entity.js +0 -55
- package/cjs/entities/folder.entity.js +0 -64
- package/cjs/entities/index.js +0 -63
- package/cjs/entities/index.spec.js +0 -18
- package/cjs/entities/storage-config-with-company.entity.js +0 -51
- package/cjs/entities/storage-config.entity.js +0 -96
- package/cjs/enums/file-location.enum.js +0 -17
- package/cjs/enums/index.js +0 -18
- package/cjs/index.js +0 -29
- package/cjs/interfaces/file-manager.interface.js +0 -4
- package/cjs/interfaces/folder.interface.js +0 -4
- package/cjs/interfaces/index.js +0 -22
- package/cjs/interfaces/storage-config.interface.js +0 -4
- package/cjs/interfaces/storage-module-options.interface.js +0 -4
- package/cjs/interfaces/storage-provider.interface.js +0 -4
- package/cjs/middlewares/file-serve.middleware.js +0 -241
- package/cjs/middlewares/file-serve.middleware.spec.js +0 -211
- package/cjs/middlewares/index.js +0 -18
- package/cjs/modules/index.js +0 -18
- package/cjs/modules/storage.module.js +0 -165
- package/cjs/modules/storage.module.spec.js +0 -184
- package/cjs/providers/azure-provider.optional.js +0 -155
- package/cjs/providers/azure-provider.optional.spec.js +0 -228
- package/cjs/providers/index.js +0 -26
- package/cjs/providers/local-provider.js +0 -230
- package/cjs/providers/local-provider.spec.js +0 -239
- package/cjs/providers/s3-provider.optional.js +0 -175
- package/cjs/providers/s3-provider.optional.spec.js +0 -243
- package/cjs/providers/sftp-provider.optional.js +0 -203
- package/cjs/providers/sftp-provider.optional.spec.js +0 -217
- package/cjs/providers/storage-factory.service.js +0 -175
- package/cjs/providers/storage-factory.service.spec.js +0 -253
- package/cjs/providers/storage-provider.registry.js +0 -41
- package/cjs/providers/storage-provider.registry.spec.js +0 -67
- package/cjs/services/file-manager.service.js +0 -387
- package/cjs/services/file-manager.service.spec.js +0 -580
- package/cjs/services/folder.service.js +0 -101
- package/cjs/services/folder.service.spec.js +0 -167
- package/cjs/services/index.js +0 -23
- package/cjs/services/storage-config.service.js +0 -129
- package/cjs/services/storage-config.service.spec.js +0 -257
- package/cjs/services/storage-datasource.provider.js +0 -137
- package/cjs/services/storage-datasource.provider.spec.js +0 -217
- package/cjs/services/storage-provider-config.service.js +0 -171
- package/cjs/services/storage-provider-config.service.spec.js +0 -265
- package/cjs/services/upload.service.js +0 -376
- package/cjs/services/upload.service.spec.js +0 -426
- package/cjs/utils/file-validator.util.js +0 -440
- package/cjs/utils/file-validator.util.spec.js +0 -259
- package/cjs/utils/image-compressor.util.js +0 -162
- package/cjs/utils/image-compressor.util.spec.js +0 -166
- package/cjs/utils/index.js +0 -18
- package/fesm/config/event-actions.js +0 -13
- package/fesm/config/message-keys.js +0 -22
- package/fesm/config/storage.constants.js +0 -7
- package/fesm/controllers/file-manager.controller.js +0 -142
- package/fesm/controllers/file-manager.controller.spec.js +0 -131
- package/fesm/controllers/folder.controller.js +0 -92
- package/fesm/controllers/folder.controller.spec.js +0 -82
- package/fesm/controllers/storage-config.controller.js +0 -92
- package/fesm/controllers/storage-config.controller.spec.js +0 -81
- package/fesm/controllers/upload.controller.js +0 -224
- package/fesm/controllers/upload.controller.spec.js +0 -128
- package/fesm/docs/storage-swagger.config.js +0 -181
- package/fesm/docs/storage-swagger.config.spec.js +0 -68
- package/fesm/dtos/file-manager.dto.js +0 -300
- package/fesm/dtos/folder.dto.js +0 -84
- package/fesm/dtos/storage-config.dto.js +0 -149
- package/fesm/dtos/upload.dto.js +0 -245
- package/fesm/entities/file-manager-with-company.entity.js +0 -51
- package/fesm/entities/file-manager.entity.js +0 -112
- package/fesm/entities/folder-with-company.entity.js +0 -45
- package/fesm/entities/folder.entity.js +0 -54
- package/fesm/entities/index.spec.js +0 -14
- package/fesm/entities/storage-config-with-company.entity.js +0 -41
- package/fesm/entities/storage-config.entity.js +0 -86
- package/fesm/enums/file-location.enum.js +0 -7
- package/fesm/interfaces/file-manager.interface.js +0 -1
- package/fesm/interfaces/folder.interface.js +0 -1
- package/fesm/interfaces/storage-config.interface.js +0 -1
- package/fesm/interfaces/storage-module-options.interface.js +0 -3
- package/fesm/interfaces/storage-provider.interface.js +0 -4
- package/fesm/middlewares/file-serve.middleware.js +0 -190
- package/fesm/middlewares/file-serve.middleware.spec.js +0 -207
- package/fesm/middlewares/index.js +0 -1
- package/fesm/modules/storage.module.js +0 -156
- package/fesm/modules/storage.module.spec.js +0 -180
- package/fesm/providers/azure-provider.optional.spec.js +0 -224
- package/fesm/providers/local-provider.js +0 -182
- package/fesm/providers/local-provider.spec.js +0 -194
- package/fesm/providers/s3-provider.optional.spec.js +0 -239
- package/fesm/providers/sftp-provider.optional.spec.js +0 -213
- package/fesm/providers/storage-factory.service.js +0 -124
- package/fesm/providers/storage-factory.service.spec.js +0 -249
- package/fesm/providers/storage-provider.registry.js +0 -34
- package/fesm/providers/storage-provider.registry.spec.js +0 -63
- package/fesm/services/file-manager.service.js +0 -336
- package/fesm/services/file-manager.service.spec.js +0 -576
- package/fesm/services/folder.service.js +0 -91
- package/fesm/services/folder.service.spec.js +0 -163
- package/fesm/services/storage-config.service.js +0 -119
- package/fesm/services/storage-config.service.spec.js +0 -253
- package/fesm/services/storage-datasource.provider.js +0 -86
- package/fesm/services/storage-datasource.provider.spec.js +0 -172
- package/fesm/services/storage-provider-config.service.js +0 -161
- package/fesm/services/storage-provider-config.service.spec.js +0 -261
- package/fesm/services/upload.service.js +0 -366
- package/fesm/services/upload.service.spec.js +0 -422
- package/fesm/utils/file-validator.util.js +0 -433
- package/fesm/utils/file-validator.util.spec.js +0 -255
- package/fesm/utils/image-compressor.util.js +0 -114
- package/fesm/utils/image-compressor.util.spec.js +0 -162
package/fesm/docs/index.js
CHANGED
|
@@ -1 +1,206 @@
|
|
|
1
|
-
export
|
|
1
|
+
export const __rspack_esm_id = 428;
|
|
2
|
+
export const __rspack_esm_ids = [428];
|
|
3
|
+
export const __webpack_modules__ = {
|
|
4
|
+
659(__unused_rspack_module, __webpack_exports__, __webpack_require__) {
|
|
5
|
+
|
|
6
|
+
// EXPORTS
|
|
7
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
8
|
+
W: () => (/* reexport */ storageSwaggerConfig)
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
;// CONCATENATED MODULE: ./projects/nestjs-storage/src/docs/storage-swagger.config.ts
|
|
12
|
+
const COMPANY_SCHEMA_EXCLUSIONS = [
|
|
13
|
+
{
|
|
14
|
+
schemaName: 'FileManagerResponseDto',
|
|
15
|
+
properties: [
|
|
16
|
+
'companyId'
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
schemaName: 'FolderResponseDto',
|
|
21
|
+
properties: [
|
|
22
|
+
'companyId'
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
schemaName: 'StorageConfigResponseDto',
|
|
27
|
+
properties: [
|
|
28
|
+
'companyId'
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
];
|
|
32
|
+
function buildDescription(enableCompanyFeature, isMultiTenant) {
|
|
33
|
+
const multiTenantNote = isMultiTenant ? `\n> **Multi-Tenant Mode**: Include \`x-tenant-id\` header to target a specific tenant database.\n` : '';
|
|
34
|
+
const companyIsolation = enableCompanyFeature ? '\n- **Company isolation**' : '';
|
|
35
|
+
const companyPermissions = enableCompanyFeature ? '\n- **Company-level permissions**' : '';
|
|
36
|
+
const multiTenantSection = enableCompanyFeature ? `
|
|
37
|
+
## Multi-Tenant Support
|
|
38
|
+
|
|
39
|
+
Files are automatically isolated by:
|
|
40
|
+
- **Company ID**: Company-level storage
|
|
41
|
+
|
|
42
|
+
All queries automatically filter by current user's company context.
|
|
43
|
+
` : '';
|
|
44
|
+
const examplesSection = enableCompanyFeature ? `
|
|
45
|
+
## Examples
|
|
46
|
+
|
|
47
|
+
### Upload a File
|
|
48
|
+
|
|
49
|
+
POST /storage/upload/single-file with multipart/form-data containing file and optional folderId
|
|
50
|
+
|
|
51
|
+
### Get All Files
|
|
52
|
+
|
|
53
|
+
POST /storage/file-manager/get-all with JSON body containing page and pageSize parameters
|
|
54
|
+
|
|
55
|
+
### Create Folder
|
|
56
|
+
|
|
57
|
+
POST /storage/folder/insert with JSON body containing folder name
|
|
58
|
+
` : '';
|
|
59
|
+
return `
|
|
60
|
+
# Storage Management API
|
|
61
|
+
${multiTenantNote}
|
|
62
|
+
Complete file storage and management system${enableCompanyFeature ? ' with multi-tenant support' : ''}.
|
|
63
|
+
|
|
64
|
+
## Features
|
|
65
|
+
|
|
66
|
+
### 📁 File Management
|
|
67
|
+
- Upload single or multiple files
|
|
68
|
+
- Download files with presigned URLs
|
|
69
|
+
- Delete files (single or batch)
|
|
70
|
+
- File metadata management
|
|
71
|
+
- Automatic compression and optimization${companyIsolation}
|
|
72
|
+
|
|
73
|
+
### 🗂️ Folder Organization
|
|
74
|
+
- Create folder hierarchies
|
|
75
|
+
- Organize files by folders${companyPermissions}
|
|
76
|
+
- Automatic context filtering
|
|
77
|
+
|
|
78
|
+
### ⚙️ Storage Configuration
|
|
79
|
+
- Multiple storage providers (AWS S3, Azure, SFTP, Local)
|
|
80
|
+
- Provider-specific configurations
|
|
81
|
+
- Default storage settings
|
|
82
|
+
- Dynamic provider switching
|
|
83
|
+
|
|
84
|
+
### 🔒 Security
|
|
85
|
+
- JWT authentication required${companyIsolation}
|
|
86
|
+
- File access control
|
|
87
|
+
- Presigned URL generation
|
|
88
|
+
|
|
89
|
+
## Storage Providers
|
|
90
|
+
|
|
91
|
+
### AWS S3
|
|
92
|
+
- Scalable cloud storage
|
|
93
|
+
- Automatic redundancy
|
|
94
|
+
- Global CDN integration
|
|
95
|
+
|
|
96
|
+
### Azure Blob Storage
|
|
97
|
+
- Microsoft Azure integration
|
|
98
|
+
- Geo-redundant storage
|
|
99
|
+
- Advanced security features
|
|
100
|
+
|
|
101
|
+
### SFTP
|
|
102
|
+
- Secure file transfer
|
|
103
|
+
- Legacy system integration
|
|
104
|
+
- Custom server support
|
|
105
|
+
|
|
106
|
+
### Local Storage
|
|
107
|
+
- Same-server storage
|
|
108
|
+
- Fast access
|
|
109
|
+
- No external dependencies
|
|
110
|
+
${multiTenantSection}
|
|
111
|
+
## File Validation
|
|
112
|
+
|
|
113
|
+
### Size Limits
|
|
114
|
+
Configure maximum file size per upload (default: 10MB)
|
|
115
|
+
|
|
116
|
+
### File Types
|
|
117
|
+
Restrict allowed file types (default: images, PDFs)
|
|
118
|
+
|
|
119
|
+
### Image Compression
|
|
120
|
+
- Automatic image optimization
|
|
121
|
+
- Format conversion (JPEG, PNG, WebP, AVIF)
|
|
122
|
+
- Resize to maximum dimensions
|
|
123
|
+
- Quality control
|
|
124
|
+
|
|
125
|
+
## Response Format
|
|
126
|
+
|
|
127
|
+
All endpoints return standardized responses with success status, data, message, and timestamp.
|
|
128
|
+
|
|
129
|
+
## Error Handling
|
|
130
|
+
|
|
131
|
+
Errors return structured responses with success false, error message, error code, and timestamp.
|
|
132
|
+
|
|
133
|
+
## Common Error Codes
|
|
134
|
+
|
|
135
|
+
- **400 Bad Request**: Invalid input data
|
|
136
|
+
- **401 Unauthorized**: Missing or invalid authentication
|
|
137
|
+
- **403 Forbidden**: Insufficient permissions
|
|
138
|
+
- **404 Not Found**: Resource not found
|
|
139
|
+
- **413 Payload Too Large**: File exceeds size limit
|
|
140
|
+
- **415 Unsupported Media Type**: File type not allowed
|
|
141
|
+
- **500 Internal Server Error**: Server error
|
|
142
|
+
|
|
143
|
+
## Getting Started
|
|
144
|
+
|
|
145
|
+
1. **Authenticate**: Obtain JWT token from /auth/login
|
|
146
|
+
2. **Configure Storage**: Create storage configuration via /storage/storage-config/insert
|
|
147
|
+
3. **Create Folders**: Organize files with /storage/folder/insert
|
|
148
|
+
4. **Upload Files**: Upload files via /storage/upload/single-file
|
|
149
|
+
5. **Manage Files**: Track uploads in /storage/file-manager
|
|
150
|
+
|
|
151
|
+
## API Endpoints
|
|
152
|
+
|
|
153
|
+
All storage endpoints are prefixed with \`/storage\`:
|
|
154
|
+
- \`/storage/file-manager/*\` - File metadata management
|
|
155
|
+
- \`/storage/folder/*\` - Folder organization
|
|
156
|
+
- \`/storage/storage-config/*\` - Storage configuration
|
|
157
|
+
- \`/storage/upload/*\` - File upload/download
|
|
158
|
+
${examplesSection}
|
|
159
|
+
## Best Practices
|
|
160
|
+
|
|
161
|
+
1. **Always authenticate**: Include JWT token in Authorization header
|
|
162
|
+
2. **Use folders**: Organize files hierarchically
|
|
163
|
+
3. **Check file size**: Validate before upload
|
|
164
|
+
4. **Handle errors**: Implement proper error handling
|
|
165
|
+
5. **Clean up**: Delete unused files regularly
|
|
166
|
+
6. **Use presigned URLs**: Generate temporary URLs for file access
|
|
167
|
+
7. **Compress images**: Enable compression for faster loading
|
|
168
|
+
|
|
169
|
+
## Rate Limiting
|
|
170
|
+
|
|
171
|
+
All endpoints are rate-limited to prevent abuse. Default limits:
|
|
172
|
+
- **Upload**: 100 requests per hour
|
|
173
|
+
- **Download**: 1000 requests per hour
|
|
174
|
+
- **Delete**: 50 requests per hour
|
|
175
|
+
`;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Storage Module Swagger Configuration
|
|
179
|
+
* Use this with setupSwaggerDocs() from @flusys/nestjs-core
|
|
180
|
+
*/ function storageSwaggerConfig(bootstrapConfig) {
|
|
181
|
+
const enableCompanyFeature = bootstrapConfig?.enableCompanyFeature ?? true;
|
|
182
|
+
const isMultiTenant = bootstrapConfig?.databaseMode === 'multi-tenant';
|
|
183
|
+
return {
|
|
184
|
+
title: 'Storage API',
|
|
185
|
+
description: buildDescription(enableCompanyFeature, isMultiTenant),
|
|
186
|
+
version: '1.0',
|
|
187
|
+
path: 'api/docs/storage',
|
|
188
|
+
bearerAuth: true,
|
|
189
|
+
excludeTags: [],
|
|
190
|
+
excludeSchemaProperties: enableCompanyFeature ? undefined : COMPANY_SCHEMA_EXCLUSIONS
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
;// CONCATENATED MODULE: ./projects/nestjs-storage/src/docs/index.ts
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
},
|
|
199
|
+
|
|
200
|
+
};
|
|
201
|
+
import { __webpack_require__ } from '../runtime.js';
|
|
202
|
+
var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
|
|
203
|
+
import * as __rspack_chunk_1 from './index.js';
|
|
204
|
+
__webpack_require__.C(__rspack_chunk_1);
|
|
205
|
+
var __webpack_exports__ = __webpack_exec__(659);var __webpack_exports__storageSwaggerConfig = __webpack_exports__.W;
|
|
206
|
+
export { __webpack_exports__storageSwaggerConfig as storageSwaggerConfig };
|