@flusys/nestjs-storage 7.1.0 → 8.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 (202) hide show
  1. package/config/index.d.ts +3 -3
  2. package/controllers/file-manager.controller.d.ts +4 -4
  3. package/controllers/folder.controller.d.ts +2 -2
  4. package/controllers/index.d.ts +4 -4
  5. package/controllers/storage-config.controller.d.ts +2 -2
  6. package/controllers/upload.controller.d.ts +3 -3
  7. package/docs/index.d.ts +1 -1
  8. package/docs/storage-swagger.config.d.ts +2 -2
  9. package/dtos/index.d.ts +4 -4
  10. package/entities/file-manager-with-company.entity.d.ts +2 -2
  11. package/entities/file-manager.entity.d.ts +1 -1
  12. package/entities/folder-with-company.entity.d.ts +1 -1
  13. package/entities/index.d.ts +15 -15
  14. package/entities/storage-config-with-company.entity.d.ts +1 -1
  15. package/enums/index.d.ts +1 -1
  16. package/fesm/493.js +2768 -0
  17. package/fesm/537.js +1157 -0
  18. package/fesm/562.js +786 -0
  19. package/fesm/{providers/azure-provider.optional.js → chunks/190.js} +33 -30
  20. package/fesm/chunks/252.js +12 -0
  21. package/fesm/chunks/327.js +12 -0
  22. package/fesm/chunks/385.js +12 -0
  23. package/fesm/{providers/s3-provider.optional.js → chunks/591.js} +37 -34
  24. package/fesm/chunks/746.js +12 -0
  25. package/fesm/chunks/798.js +12 -0
  26. package/fesm/{providers/sftp-provider.optional.js → chunks/918.js} +35 -31
  27. package/fesm/config/index.js +119 -3
  28. package/fesm/controllers/index.js +16 -4
  29. package/fesm/docs/index.js +206 -1
  30. package/fesm/dtos/index.js +879 -4
  31. package/fesm/entities/index.js +463 -18
  32. package/fesm/enums/index.js +36 -1
  33. package/fesm/index.js +398 -12
  34. package/fesm/interfaces/index.js +19 -5
  35. package/fesm/modules/index.js +16 -1
  36. package/fesm/providers/index.js +364 -3
  37. package/fesm/runtime.js +252 -0
  38. package/fesm/services/index.js +16 -6
  39. package/fesm/utils/index.js +149 -1
  40. package/index.d.ts +11 -11
  41. package/interfaces/file-manager.interface.d.ts +1 -1
  42. package/interfaces/folder.interface.d.ts +1 -1
  43. package/interfaces/index.d.ts +5 -5
  44. package/interfaces/storage-config.interface.d.ts +1 -1
  45. package/interfaces/storage-module-options.interface.d.ts +3 -3
  46. package/interfaces/storage-provider.interface.d.ts +1 -1
  47. package/middlewares/file-serve.middleware.d.ts +4 -3
  48. package/middlewares/index.d.ts +1 -1
  49. package/modules/index.d.ts +1 -1
  50. package/modules/storage.module.d.ts +2 -2
  51. package/package.json +30 -41
  52. package/providers/azure-provider.optional.d.ts +2 -2
  53. package/providers/index.d.ts +3 -3
  54. package/providers/local-provider.d.ts +2 -2
  55. package/providers/s3-provider.optional.d.ts +2 -2
  56. package/providers/sftp-provider.optional.d.ts +2 -2
  57. package/providers/storage-factory.service.d.ts +3 -3
  58. package/providers/storage-provider.registry.d.ts +2 -2
  59. package/services/file-manager.service.d.ts +9 -8
  60. package/services/folder.service.d.ts +6 -6
  61. package/services/index.d.ts +6 -6
  62. package/services/storage-config.service.d.ts +3 -3
  63. package/services/storage-datasource.provider.d.ts +3 -3
  64. package/services/storage-provider-config.service.d.ts +7 -7
  65. package/services/upload.service.d.ts +6 -6
  66. package/utils/image-compressor.util.d.ts +1 -1
  67. package/utils/index.d.ts +1 -1
  68. package/cjs/config/event-actions.js +0 -34
  69. package/cjs/config/index.js +0 -20
  70. package/cjs/config/message-keys.js +0 -46
  71. package/cjs/config/storage.constants.js +0 -28
  72. package/cjs/controllers/file-manager.controller.js +0 -152
  73. package/cjs/controllers/file-manager.controller.spec.js +0 -135
  74. package/cjs/controllers/folder.controller.js +0 -102
  75. package/cjs/controllers/folder.controller.spec.js +0 -86
  76. package/cjs/controllers/index.js +0 -21
  77. package/cjs/controllers/storage-config.controller.js +0 -102
  78. package/cjs/controllers/storage-config.controller.spec.js +0 -85
  79. package/cjs/controllers/upload.controller.js +0 -234
  80. package/cjs/controllers/upload.controller.spec.js +0 -132
  81. package/cjs/docs/index.js +0 -11
  82. package/cjs/docs/storage-swagger.config.js +0 -188
  83. package/cjs/docs/storage-swagger.config.spec.js +0 -72
  84. package/cjs/dtos/file-manager.dto.js +0 -327
  85. package/cjs/dtos/folder.dto.js +0 -105
  86. package/cjs/dtos/index.js +0 -21
  87. package/cjs/dtos/storage-config.dto.js +0 -170
  88. package/cjs/dtos/upload.dto.js +0 -272
  89. package/cjs/entities/file-manager-with-company.entity.js +0 -61
  90. package/cjs/entities/file-manager.entity.js +0 -122
  91. package/cjs/entities/folder-with-company.entity.js +0 -55
  92. package/cjs/entities/folder.entity.js +0 -64
  93. package/cjs/entities/index.js +0 -63
  94. package/cjs/entities/index.spec.js +0 -18
  95. package/cjs/entities/storage-config-with-company.entity.js +0 -51
  96. package/cjs/entities/storage-config.entity.js +0 -96
  97. package/cjs/enums/file-location.enum.js +0 -17
  98. package/cjs/enums/index.js +0 -18
  99. package/cjs/index.js +0 -29
  100. package/cjs/interfaces/file-manager.interface.js +0 -4
  101. package/cjs/interfaces/folder.interface.js +0 -4
  102. package/cjs/interfaces/index.js +0 -22
  103. package/cjs/interfaces/storage-config.interface.js +0 -4
  104. package/cjs/interfaces/storage-module-options.interface.js +0 -4
  105. package/cjs/interfaces/storage-provider.interface.js +0 -4
  106. package/cjs/middlewares/file-serve.middleware.js +0 -241
  107. package/cjs/middlewares/file-serve.middleware.spec.js +0 -211
  108. package/cjs/middlewares/index.js +0 -18
  109. package/cjs/modules/index.js +0 -18
  110. package/cjs/modules/storage.module.js +0 -165
  111. package/cjs/modules/storage.module.spec.js +0 -184
  112. package/cjs/providers/azure-provider.optional.js +0 -155
  113. package/cjs/providers/azure-provider.optional.spec.js +0 -228
  114. package/cjs/providers/index.js +0 -26
  115. package/cjs/providers/local-provider.js +0 -230
  116. package/cjs/providers/local-provider.spec.js +0 -239
  117. package/cjs/providers/s3-provider.optional.js +0 -175
  118. package/cjs/providers/s3-provider.optional.spec.js +0 -243
  119. package/cjs/providers/sftp-provider.optional.js +0 -203
  120. package/cjs/providers/sftp-provider.optional.spec.js +0 -217
  121. package/cjs/providers/storage-factory.service.js +0 -175
  122. package/cjs/providers/storage-factory.service.spec.js +0 -253
  123. package/cjs/providers/storage-provider.registry.js +0 -41
  124. package/cjs/providers/storage-provider.registry.spec.js +0 -67
  125. package/cjs/services/file-manager.service.js +0 -387
  126. package/cjs/services/file-manager.service.spec.js +0 -580
  127. package/cjs/services/folder.service.js +0 -101
  128. package/cjs/services/folder.service.spec.js +0 -167
  129. package/cjs/services/index.js +0 -23
  130. package/cjs/services/storage-config.service.js +0 -129
  131. package/cjs/services/storage-config.service.spec.js +0 -257
  132. package/cjs/services/storage-datasource.provider.js +0 -137
  133. package/cjs/services/storage-datasource.provider.spec.js +0 -217
  134. package/cjs/services/storage-provider-config.service.js +0 -171
  135. package/cjs/services/storage-provider-config.service.spec.js +0 -265
  136. package/cjs/services/upload.service.js +0 -376
  137. package/cjs/services/upload.service.spec.js +0 -426
  138. package/cjs/utils/file-validator.util.js +0 -440
  139. package/cjs/utils/file-validator.util.spec.js +0 -259
  140. package/cjs/utils/image-compressor.util.js +0 -162
  141. package/cjs/utils/image-compressor.util.spec.js +0 -166
  142. package/cjs/utils/index.js +0 -18
  143. package/fesm/config/event-actions.js +0 -13
  144. package/fesm/config/message-keys.js +0 -22
  145. package/fesm/config/storage.constants.js +0 -7
  146. package/fesm/controllers/file-manager.controller.js +0 -142
  147. package/fesm/controllers/file-manager.controller.spec.js +0 -131
  148. package/fesm/controllers/folder.controller.js +0 -92
  149. package/fesm/controllers/folder.controller.spec.js +0 -82
  150. package/fesm/controllers/storage-config.controller.js +0 -92
  151. package/fesm/controllers/storage-config.controller.spec.js +0 -81
  152. package/fesm/controllers/upload.controller.js +0 -224
  153. package/fesm/controllers/upload.controller.spec.js +0 -128
  154. package/fesm/docs/storage-swagger.config.js +0 -181
  155. package/fesm/docs/storage-swagger.config.spec.js +0 -68
  156. package/fesm/dtos/file-manager.dto.js +0 -300
  157. package/fesm/dtos/folder.dto.js +0 -84
  158. package/fesm/dtos/storage-config.dto.js +0 -149
  159. package/fesm/dtos/upload.dto.js +0 -245
  160. package/fesm/entities/file-manager-with-company.entity.js +0 -51
  161. package/fesm/entities/file-manager.entity.js +0 -112
  162. package/fesm/entities/folder-with-company.entity.js +0 -45
  163. package/fesm/entities/folder.entity.js +0 -54
  164. package/fesm/entities/index.spec.js +0 -14
  165. package/fesm/entities/storage-config-with-company.entity.js +0 -41
  166. package/fesm/entities/storage-config.entity.js +0 -86
  167. package/fesm/enums/file-location.enum.js +0 -7
  168. package/fesm/interfaces/file-manager.interface.js +0 -1
  169. package/fesm/interfaces/folder.interface.js +0 -1
  170. package/fesm/interfaces/storage-config.interface.js +0 -1
  171. package/fesm/interfaces/storage-module-options.interface.js +0 -3
  172. package/fesm/interfaces/storage-provider.interface.js +0 -4
  173. package/fesm/middlewares/file-serve.middleware.js +0 -190
  174. package/fesm/middlewares/file-serve.middleware.spec.js +0 -207
  175. package/fesm/middlewares/index.js +0 -1
  176. package/fesm/modules/storage.module.js +0 -156
  177. package/fesm/modules/storage.module.spec.js +0 -180
  178. package/fesm/providers/azure-provider.optional.spec.js +0 -224
  179. package/fesm/providers/local-provider.js +0 -182
  180. package/fesm/providers/local-provider.spec.js +0 -194
  181. package/fesm/providers/s3-provider.optional.spec.js +0 -239
  182. package/fesm/providers/sftp-provider.optional.spec.js +0 -213
  183. package/fesm/providers/storage-factory.service.js +0 -124
  184. package/fesm/providers/storage-factory.service.spec.js +0 -249
  185. package/fesm/providers/storage-provider.registry.js +0 -34
  186. package/fesm/providers/storage-provider.registry.spec.js +0 -63
  187. package/fesm/services/file-manager.service.js +0 -336
  188. package/fesm/services/file-manager.service.spec.js +0 -576
  189. package/fesm/services/folder.service.js +0 -91
  190. package/fesm/services/folder.service.spec.js +0 -163
  191. package/fesm/services/storage-config.service.js +0 -119
  192. package/fesm/services/storage-config.service.spec.js +0 -253
  193. package/fesm/services/storage-datasource.provider.js +0 -86
  194. package/fesm/services/storage-datasource.provider.spec.js +0 -172
  195. package/fesm/services/storage-provider-config.service.js +0 -161
  196. package/fesm/services/storage-provider-config.service.spec.js +0 -261
  197. package/fesm/services/upload.service.js +0 -366
  198. package/fesm/services/upload.service.spec.js +0 -422
  199. package/fesm/utils/file-validator.util.js +0 -433
  200. package/fesm/utils/file-validator.util.spec.js +0 -255
  201. package/fesm/utils/image-compressor.util.js +0 -114
  202. package/fesm/utils/image-compressor.util.spec.js +0 -162
@@ -1 +1,206 @@
1
- export { storageSwaggerConfig } from './storage-swagger.config';
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 };