@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.
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,188 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "storageSwaggerConfig", {
6
- enumerable: true,
7
- get: function() {
8
- return storageSwaggerConfig;
9
- }
10
- });
11
- const COMPANY_SCHEMA_EXCLUSIONS = [
12
- {
13
- schemaName: 'FileManagerResponseDto',
14
- properties: [
15
- 'companyId'
16
- ]
17
- },
18
- {
19
- schemaName: 'FolderResponseDto',
20
- properties: [
21
- 'companyId'
22
- ]
23
- },
24
- {
25
- schemaName: 'StorageConfigResponseDto',
26
- properties: [
27
- 'companyId'
28
- ]
29
- }
30
- ];
31
- function buildDescription(enableCompanyFeature, isMultiTenant) {
32
- const multiTenantNote = isMultiTenant ? `\n> **Multi-Tenant Mode**: Include \`x-tenant-id\` header to target a specific tenant database.\n` : '';
33
- const companyIsolation = enableCompanyFeature ? '\n- **Company isolation**' : '';
34
- const companyPermissions = enableCompanyFeature ? '\n- **Company-level permissions**' : '';
35
- const multiTenantSection = enableCompanyFeature ? `
36
- ## Multi-Tenant Support
37
-
38
- Files are automatically isolated by:
39
- - **Company ID**: Company-level storage
40
-
41
- All queries automatically filter by current user's company context.
42
- ` : '';
43
- const examplesSection = enableCompanyFeature ? `
44
- ## Examples
45
-
46
- ### Upload a File
47
-
48
- POST /storage/upload/single-file with multipart/form-data containing file and optional folderId
49
-
50
- ### Get All Files
51
-
52
- POST /storage/file-manager/get-all with JSON body containing page and pageSize parameters
53
-
54
- ### Create Folder
55
-
56
- POST /storage/folder/insert with JSON body containing folder name
57
- ` : '';
58
- return `
59
- # Storage Management API
60
- ${multiTenantNote}
61
- Complete file storage and management system${enableCompanyFeature ? ' with multi-tenant support' : ''}.
62
-
63
- ## Features
64
-
65
- ### 📁 File Management
66
- - Upload single or multiple files
67
- - Download files with presigned URLs
68
- - Delete files (single or batch)
69
- - File metadata management
70
- - Automatic compression and optimization${companyIsolation}
71
-
72
- ### 🗂️ Folder Organization
73
- - Create folder hierarchies
74
- - Organize files by folders${companyPermissions}
75
- - Automatic context filtering
76
-
77
- ### ⚙️ Storage Configuration
78
- - Multiple storage providers (AWS S3, Azure, SFTP, Local)
79
- - Provider-specific configurations
80
- - Default storage settings
81
- - Dynamic provider switching
82
-
83
- ### 🔒 Security
84
- - JWT authentication required${companyIsolation}
85
- - File access control
86
- - Presigned URL generation
87
-
88
- ## Storage Providers
89
-
90
- ### AWS S3
91
- - Scalable cloud storage
92
- - Automatic redundancy
93
- - Global CDN integration
94
-
95
- ### Azure Blob Storage
96
- - Microsoft Azure integration
97
- - Geo-redundant storage
98
- - Advanced security features
99
-
100
- ### SFTP
101
- - Secure file transfer
102
- - Legacy system integration
103
- - Custom server support
104
-
105
- ### Local Storage
106
- - Same-server storage
107
- - Fast access
108
- - No external dependencies
109
- ${multiTenantSection}
110
- ## File Validation
111
-
112
- ### Size Limits
113
- Configure maximum file size per upload (default: 10MB)
114
-
115
- ### File Types
116
- Restrict allowed file types (default: images, PDFs)
117
-
118
- ### Image Compression
119
- - Automatic image optimization
120
- - Format conversion (JPEG, PNG, WebP, AVIF)
121
- - Resize to maximum dimensions
122
- - Quality control
123
-
124
- ## Response Format
125
-
126
- All endpoints return standardized responses with success status, data, message, and timestamp.
127
-
128
- ## Error Handling
129
-
130
- Errors return structured responses with success false, error message, error code, and timestamp.
131
-
132
- ## Common Error Codes
133
-
134
- - **400 Bad Request**: Invalid input data
135
- - **401 Unauthorized**: Missing or invalid authentication
136
- - **403 Forbidden**: Insufficient permissions
137
- - **404 Not Found**: Resource not found
138
- - **413 Payload Too Large**: File exceeds size limit
139
- - **415 Unsupported Media Type**: File type not allowed
140
- - **500 Internal Server Error**: Server error
141
-
142
- ## Getting Started
143
-
144
- 1. **Authenticate**: Obtain JWT token from /auth/login
145
- 2. **Configure Storage**: Create storage configuration via /storage/storage-config/insert
146
- 3. **Create Folders**: Organize files with /storage/folder/insert
147
- 4. **Upload Files**: Upload files via /storage/upload/single-file
148
- 5. **Manage Files**: Track uploads in /storage/file-manager
149
-
150
- ## API Endpoints
151
-
152
- All storage endpoints are prefixed with \`/storage\`:
153
- - \`/storage/file-manager/*\` - File metadata management
154
- - \`/storage/folder/*\` - Folder organization
155
- - \`/storage/storage-config/*\` - Storage configuration
156
- - \`/storage/upload/*\` - File upload/download
157
- ${examplesSection}
158
- ## Best Practices
159
-
160
- 1. **Always authenticate**: Include JWT token in Authorization header
161
- 2. **Use folders**: Organize files hierarchically
162
- 3. **Check file size**: Validate before upload
163
- 4. **Handle errors**: Implement proper error handling
164
- 5. **Clean up**: Delete unused files regularly
165
- 6. **Use presigned URLs**: Generate temporary URLs for file access
166
- 7. **Compress images**: Enable compression for faster loading
167
-
168
- ## Rate Limiting
169
-
170
- All endpoints are rate-limited to prevent abuse. Default limits:
171
- - **Upload**: 100 requests per hour
172
- - **Download**: 1000 requests per hour
173
- - **Delete**: 50 requests per hour
174
- `;
175
- }
176
- function storageSwaggerConfig(bootstrapConfig) {
177
- const enableCompanyFeature = bootstrapConfig?.enableCompanyFeature ?? true;
178
- const isMultiTenant = bootstrapConfig?.databaseMode === 'multi-tenant';
179
- return {
180
- title: 'Storage API',
181
- description: buildDescription(enableCompanyFeature, isMultiTenant),
182
- version: '1.0',
183
- path: 'api/docs/storage',
184
- bearerAuth: true,
185
- excludeTags: [],
186
- excludeSchemaProperties: enableCompanyFeature ? undefined : COMPANY_SCHEMA_EXCLUSIONS
187
- };
188
- }
@@ -1,72 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _storageswaggerconfig = require("./storage-swagger.config");
6
- describe('storageSwaggerConfig', ()=>{
7
- it('should default to company feature enabled and single-database mode when no config is given', ()=>{
8
- const config = (0, _storageswaggerconfig.storageSwaggerConfig)();
9
- expect(config.title).toBe('Storage API');
10
- expect(config.path).toBe('api/docs/storage');
11
- expect(config.bearerAuth).toBe(true);
12
- expect(config.excludeTags).toEqual([]);
13
- expect(config.excludeSchemaProperties).toBeUndefined();
14
- expect(config.description).not.toContain('Multi-Tenant Mode');
15
- expect(config.description).toContain('with multi-tenant support');
16
- });
17
- it('should exclude companyId schema properties when the company feature is disabled', ()=>{
18
- const config = (0, _storageswaggerconfig.storageSwaggerConfig)({
19
- enableCompanyFeature: false
20
- });
21
- expect(config.excludeSchemaProperties).toEqual([
22
- {
23
- schemaName: 'FileManagerResponseDto',
24
- properties: [
25
- 'companyId'
26
- ]
27
- },
28
- {
29
- schemaName: 'FolderResponseDto',
30
- properties: [
31
- 'companyId'
32
- ]
33
- },
34
- {
35
- schemaName: 'StorageConfigResponseDto',
36
- properties: [
37
- 'companyId'
38
- ]
39
- }
40
- ]);
41
- });
42
- it('should not exclude any schema properties when the company feature is enabled', ()=>{
43
- const config = (0, _storageswaggerconfig.storageSwaggerConfig)({
44
- enableCompanyFeature: true
45
- });
46
- expect(config.excludeSchemaProperties).toBeUndefined();
47
- });
48
- it('should describe company isolation and multi-tenant sections only when the company feature is enabled', ()=>{
49
- const withCompany = (0, _storageswaggerconfig.storageSwaggerConfig)({
50
- enableCompanyFeature: true
51
- });
52
- const withoutCompany = (0, _storageswaggerconfig.storageSwaggerConfig)({
53
- enableCompanyFeature: false
54
- });
55
- expect(withCompany.description).toContain('Company isolation');
56
- expect(withCompany.description).toContain('## Multi-Tenant Support');
57
- expect(withCompany.description).toContain('## Examples');
58
- expect(withoutCompany.description).not.toContain('Company isolation');
59
- expect(withoutCompany.description).not.toContain('## Multi-Tenant Support');
60
- expect(withoutCompany.description).not.toContain('## Examples');
61
- });
62
- it('should mention multi-tenant mode in the description only for multi-tenant database mode', ()=>{
63
- const multiTenant = (0, _storageswaggerconfig.storageSwaggerConfig)({
64
- databaseMode: 'multi-tenant'
65
- });
66
- const single = (0, _storageswaggerconfig.storageSwaggerConfig)({
67
- databaseMode: 'single'
68
- });
69
- expect(multiTenant.description).toContain('Multi-Tenant Mode');
70
- expect(single.description).not.toContain('Multi-Tenant Mode');
71
- });
72
- });
@@ -1,327 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get CreateFileManagerDto () {
13
- return CreateFileManagerDto;
14
- },
15
- get FileManagerResponseDto () {
16
- return FileManagerResponseDto;
17
- },
18
- get FilesResponseDto () {
19
- return FilesResponseDto;
20
- },
21
- get GetFilesRequestDto () {
22
- return GetFilesRequestDto;
23
- },
24
- get UpdateFileManagerDto () {
25
- return UpdateFileManagerDto;
26
- }
27
- });
28
- const _swagger = require("@nestjs/swagger");
29
- const _classtransformer = require("class-transformer");
30
- const _classvalidator = require("class-validator");
31
- const _enums = require("../enums");
32
- function _define_property(obj, key, value) {
33
- if (key in obj) {
34
- Object.defineProperty(obj, key, {
35
- value: value,
36
- enumerable: true,
37
- configurable: true,
38
- writable: true
39
- });
40
- } else {
41
- obj[key] = value;
42
- }
43
- return obj;
44
- }
45
- function _ts_decorate(decorators, target, key, desc) {
46
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
47
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
48
- 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;
49
- return c > 3 && r && Object.defineProperty(target, key, r), r;
50
- }
51
- function _ts_metadata(k, v) {
52
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
53
- }
54
- let CreateFileManagerDto = class CreateFileManagerDto {
55
- constructor(){
56
- _define_property(this, "name", void 0);
57
- _define_property(this, "key", void 0);
58
- _define_property(this, "size", void 0);
59
- _define_property(this, "contentType", void 0);
60
- _define_property(this, "isPrivate", void 0);
61
- _define_property(this, "folderId", void 0);
62
- _define_property(this, "storageConfigId", void 0);
63
- _define_property(this, "location", void 0);
64
- }
65
- };
66
- _ts_decorate([
67
- (0, _swagger.ApiProperty)({
68
- description: 'Original file name',
69
- example: 'vacation-photo.jpg'
70
- }),
71
- (0, _classvalidator.IsNotEmpty)(),
72
- (0, _classvalidator.IsString)(),
73
- _ts_metadata("design:type", String)
74
- ], CreateFileManagerDto.prototype, "name", void 0);
75
- _ts_decorate([
76
- (0, _swagger.ApiProperty)({
77
- description: 'Storage key or path of the file',
78
- example: 'uploads/abc123-vacation-photo.jpg'
79
- }),
80
- (0, _classvalidator.IsNotEmpty)(),
81
- (0, _classvalidator.IsString)(),
82
- _ts_metadata("design:type", String)
83
- ], CreateFileManagerDto.prototype, "key", void 0);
84
- _ts_decorate([
85
- (0, _swagger.ApiProperty)({
86
- description: 'Size of the file in bytes',
87
- example: '1024'
88
- }),
89
- (0, _classvalidator.IsNotEmpty)(),
90
- (0, _classvalidator.IsString)(),
91
- _ts_metadata("design:type", String)
92
- ], CreateFileManagerDto.prototype, "size", void 0);
93
- _ts_decorate([
94
- (0, _swagger.ApiProperty)({
95
- description: 'MIME type of file',
96
- example: 'image/jpeg'
97
- }),
98
- (0, _classvalidator.IsNotEmpty)(),
99
- (0, _classvalidator.IsString)(),
100
- _ts_metadata("design:type", String)
101
- ], CreateFileManagerDto.prototype, "contentType", void 0);
102
- _ts_decorate([
103
- (0, _swagger.ApiProperty)({
104
- description: 'Indicates if the file is private',
105
- example: true
106
- }),
107
- (0, _classvalidator.IsNotEmpty)(),
108
- (0, _classvalidator.IsBoolean)(),
109
- _ts_metadata("design:type", Boolean)
110
- ], CreateFileManagerDto.prototype, "isPrivate", void 0);
111
- _ts_decorate([
112
- (0, _swagger.ApiPropertyOptional)({
113
- description: 'Folder ID (UUID)',
114
- example: 'f2e9c8d0-7a2a-11eb-9439-0242ac130002'
115
- }),
116
- (0, _classvalidator.IsOptional)(),
117
- (0, _classvalidator.IsUUID)(),
118
- _ts_metadata("design:type", String)
119
- ], CreateFileManagerDto.prototype, "folderId", void 0);
120
- _ts_decorate([
121
- (0, _swagger.ApiPropertyOptional)({
122
- description: 'Storage configuration ID',
123
- example: '123e4567-e89b-12d3-a456-426614174000'
124
- }),
125
- (0, _classvalidator.IsOptional)(),
126
- (0, _classvalidator.IsUUID)(),
127
- _ts_metadata("design:type", String)
128
- ], CreateFileManagerDto.prototype, "storageConfigId", void 0);
129
- _ts_decorate([
130
- (0, _swagger.ApiPropertyOptional)({
131
- description: 'Storage location type',
132
- enum: _enums.FileLocationEnum,
133
- example: _enums.FileLocationEnum.AWS
134
- }),
135
- (0, _classvalidator.IsOptional)(),
136
- (0, _classvalidator.IsEnum)(_enums.FileLocationEnum),
137
- _ts_metadata("design:type", String)
138
- ], CreateFileManagerDto.prototype, "location", void 0);
139
- let UpdateFileManagerDto = class UpdateFileManagerDto extends (0, _swagger.PartialType)(CreateFileManagerDto) {
140
- constructor(...args){
141
- super(...args), _define_property(this, "id", void 0);
142
- }
143
- };
144
- _ts_decorate([
145
- (0, _swagger.ApiProperty)({
146
- description: 'Unique identifier of the file',
147
- example: 'f2e9c8d0-7a2a-11eb-9439-0242ac130002'
148
- }),
149
- (0, _classvalidator.IsUUID)(),
150
- (0, _classvalidator.IsNotEmpty)(),
151
- _ts_metadata("design:type", String)
152
- ], UpdateFileManagerDto.prototype, "id", void 0);
153
- let FileManagerResponseDto = class FileManagerResponseDto {
154
- constructor(){
155
- _define_property(this, "id", void 0);
156
- _define_property(this, "name", void 0);
157
- _define_property(this, "key", void 0);
158
- _define_property(this, "size", void 0);
159
- _define_property(this, "contentType", void 0);
160
- _define_property(this, "isPrivate", void 0);
161
- _define_property(this, "folderId", void 0);
162
- _define_property(this, "storageConfigId", void 0);
163
- _define_property(this, "location", void 0);
164
- _define_property(this, "providerName", void 0);
165
- }
166
- };
167
- _ts_decorate([
168
- (0, _classtransformer.Expose)(),
169
- (0, _swagger.ApiProperty)({
170
- description: 'Unique identifier of the file',
171
- example: 'f2e9c8d0-7a2a-11eb-9439-0242ac130002'
172
- }),
173
- _ts_metadata("design:type", String)
174
- ], FileManagerResponseDto.prototype, "id", void 0);
175
- _ts_decorate([
176
- (0, _classtransformer.Expose)(),
177
- (0, _swagger.ApiProperty)({
178
- description: 'Original filename as uploaded',
179
- example: 'profile-photo.png'
180
- }),
181
- _ts_metadata("design:type", String)
182
- ], FileManagerResponseDto.prototype, "name", void 0);
183
- _ts_decorate([
184
- (0, _classtransformer.Expose)(),
185
- (0, _swagger.ApiProperty)({
186
- description: 'Storage key / path used to retrieve the file from the provider',
187
- example: 'uploads/users/abc123/profile-photo.png'
188
- }),
189
- _ts_metadata("design:type", String)
190
- ], FileManagerResponseDto.prototype, "key", void 0);
191
- _ts_decorate([
192
- (0, _classtransformer.Expose)(),
193
- (0, _swagger.ApiProperty)({
194
- description: 'File size in bytes',
195
- example: '204800'
196
- }),
197
- _ts_metadata("design:type", String)
198
- ], FileManagerResponseDto.prototype, "size", void 0);
199
- _ts_decorate([
200
- (0, _classtransformer.Expose)(),
201
- (0, _swagger.ApiProperty)({
202
- description: 'MIME type of the file',
203
- example: 'image/png'
204
- }),
205
- _ts_metadata("design:type", String)
206
- ], FileManagerResponseDto.prototype, "contentType", void 0);
207
- _ts_decorate([
208
- (0, _classtransformer.Expose)(),
209
- (0, _swagger.ApiProperty)({
210
- description: 'Whether the file is private and requires signed URL access',
211
- example: false
212
- }),
213
- _ts_metadata("design:type", Boolean)
214
- ], FileManagerResponseDto.prototype, "isPrivate", void 0);
215
- _ts_decorate([
216
- (0, _classtransformer.Expose)(),
217
- (0, _swagger.ApiPropertyOptional)({
218
- description: 'ID of the folder this file belongs to; absent if in root',
219
- example: 'a1b2c3d4-0000-0000-0000-000000000001'
220
- }),
221
- _ts_metadata("design:type", String)
222
- ], FileManagerResponseDto.prototype, "folderId", void 0);
223
- _ts_decorate([
224
- (0, _classtransformer.Expose)(),
225
- (0, _swagger.ApiPropertyOptional)({
226
- description: 'ID of the storage configuration used to store this file',
227
- example: 'a1b2c3d4-0000-0000-0000-000000000002'
228
- }),
229
- _ts_metadata("design:type", String)
230
- ], FileManagerResponseDto.prototype, "storageConfigId", void 0);
231
- _ts_decorate([
232
- (0, _classtransformer.Expose)(),
233
- (0, _swagger.ApiPropertyOptional)({
234
- description: 'Storage provider type (e.g. s3, gcs, local)',
235
- example: 's3'
236
- }),
237
- _ts_metadata("design:type", String)
238
- ], FileManagerResponseDto.prototype, "location", void 0);
239
- _ts_decorate([
240
- (0, _classtransformer.Expose)(),
241
- (0, _swagger.ApiPropertyOptional)({
242
- description: 'Human-readable name of the storage provider',
243
- example: 'AWS S3 — Production Bucket'
244
- }),
245
- _ts_metadata("design:type", String)
246
- ], FileManagerResponseDto.prototype, "providerName", void 0);
247
- let GetFilesRequestDto = class GetFilesRequestDto {
248
- constructor(){
249
- _define_property(this, "id", void 0);
250
- }
251
- };
252
- _ts_decorate([
253
- (0, _swagger.ApiProperty)({
254
- description: 'Unique identifier of the file to retrieve',
255
- example: 'f2e9c8d0-7a2a-11eb-9439-0242ac130002'
256
- }),
257
- (0, _classvalidator.IsUUID)(),
258
- (0, _classvalidator.IsNotEmpty)(),
259
- _ts_metadata("design:type", String)
260
- ], GetFilesRequestDto.prototype, "id", void 0);
261
- let FilesResponseDto = class FilesResponseDto {
262
- constructor(){
263
- _define_property(this, "id", void 0);
264
- _define_property(this, "name", void 0);
265
- _define_property(this, "contentType", void 0);
266
- _define_property(this, "url", void 0);
267
- _define_property(this, "location", void 0);
268
- _define_property(this, "storageConfigId", void 0);
269
- _define_property(this, "providerName", void 0);
270
- }
271
- };
272
- _ts_decorate([
273
- (0, _classtransformer.Expose)(),
274
- (0, _swagger.ApiProperty)({
275
- description: 'Unique identifier of the file',
276
- example: 'f2e9c8d0-7a2a-11eb-9439-0242ac130002'
277
- }),
278
- _ts_metadata("design:type", String)
279
- ], FilesResponseDto.prototype, "id", void 0);
280
- _ts_decorate([
281
- (0, _classtransformer.Expose)(),
282
- (0, _swagger.ApiProperty)({
283
- description: 'Original filename as uploaded',
284
- example: 'quarterly-report.pdf'
285
- }),
286
- _ts_metadata("design:type", String)
287
- ], FilesResponseDto.prototype, "name", void 0);
288
- _ts_decorate([
289
- (0, _classtransformer.Expose)(),
290
- (0, _swagger.ApiProperty)({
291
- description: 'MIME type of the file',
292
- example: 'application/pdf'
293
- }),
294
- _ts_metadata("design:type", String)
295
- ], FilesResponseDto.prototype, "contentType", void 0);
296
- _ts_decorate([
297
- (0, _classtransformer.Expose)(),
298
- (0, _swagger.ApiProperty)({
299
- description: 'Publicly accessible or pre-signed URL to download the file',
300
- example: 'https://cdn.example.com/uploads/quarterly-report.pdf'
301
- }),
302
- _ts_metadata("design:type", String)
303
- ], FilesResponseDto.prototype, "url", void 0);
304
- _ts_decorate([
305
- (0, _classtransformer.Expose)(),
306
- (0, _swagger.ApiPropertyOptional)({
307
- description: 'Storage provider type (e.g. s3, gcs, local)',
308
- example: 'gcs'
309
- }),
310
- _ts_metadata("design:type", String)
311
- ], FilesResponseDto.prototype, "location", void 0);
312
- _ts_decorate([
313
- (0, _classtransformer.Expose)(),
314
- (0, _swagger.ApiPropertyOptional)({
315
- description: 'ID of the storage configuration used to store this file',
316
- example: 'a1b2c3d4-0000-0000-0000-000000000002'
317
- }),
318
- _ts_metadata("design:type", String)
319
- ], FilesResponseDto.prototype, "storageConfigId", void 0);
320
- _ts_decorate([
321
- (0, _classtransformer.Expose)(),
322
- (0, _swagger.ApiPropertyOptional)({
323
- description: 'Human-readable name of the storage provider',
324
- example: 'Google Cloud Storage — EU'
325
- }),
326
- _ts_metadata("design:type", String)
327
- ], FilesResponseDto.prototype, "providerName", void 0);
@@ -1,105 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get CreateFolderDto () {
13
- return CreateFolderDto;
14
- },
15
- get FolderResponseDto () {
16
- return FolderResponseDto;
17
- },
18
- get UpdateFolderDto () {
19
- return UpdateFolderDto;
20
- }
21
- });
22
- const _swagger = require("@nestjs/swagger");
23
- const _classtransformer = require("class-transformer");
24
- const _classvalidator = require("class-validator");
25
- function _define_property(obj, key, value) {
26
- if (key in obj) {
27
- Object.defineProperty(obj, key, {
28
- value: value,
29
- enumerable: true,
30
- configurable: true,
31
- writable: true
32
- });
33
- } else {
34
- obj[key] = value;
35
- }
36
- return obj;
37
- }
38
- function _ts_decorate(decorators, target, key, desc) {
39
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
40
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
41
- 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;
42
- return c > 3 && r && Object.defineProperty(target, key, r), r;
43
- }
44
- function _ts_metadata(k, v) {
45
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
46
- }
47
- let CreateFolderDto = class CreateFolderDto {
48
- constructor(){
49
- _define_property(this, "name", void 0);
50
- }
51
- };
52
- _ts_decorate([
53
- (0, _swagger.ApiProperty)({
54
- description: 'Name of the folder',
55
- example: 'Invoices'
56
- }),
57
- (0, _classvalidator.IsNotEmpty)(),
58
- (0, _classvalidator.IsString)(),
59
- _ts_metadata("design:type", String)
60
- ], CreateFolderDto.prototype, "name", void 0);
61
- let UpdateFolderDto = class UpdateFolderDto extends (0, _swagger.PartialType)(CreateFolderDto) {
62
- constructor(...args){
63
- super(...args), _define_property(this, "id", void 0);
64
- }
65
- };
66
- _ts_decorate([
67
- (0, _swagger.ApiProperty)({
68
- description: 'Unique identifier of the folder',
69
- example: 'f2e9c8d0-7a2a-11eb-9439-0242ac130002'
70
- }),
71
- (0, _classvalidator.IsUUID)(),
72
- (0, _classvalidator.IsNotEmpty)(),
73
- _ts_metadata("design:type", String)
74
- ], UpdateFolderDto.prototype, "id", void 0);
75
- let FolderResponseDto = class FolderResponseDto {
76
- constructor(){
77
- _define_property(this, "id", void 0);
78
- _define_property(this, "name", void 0);
79
- _define_property(this, "slug", void 0);
80
- }
81
- };
82
- _ts_decorate([
83
- (0, _classtransformer.Expose)(),
84
- (0, _swagger.ApiProperty)({
85
- description: 'Unique identifier of the folder',
86
- example: 'f2e9c8d0-7a2a-11eb-9439-0242ac130002'
87
- }),
88
- _ts_metadata("design:type", String)
89
- ], FolderResponseDto.prototype, "id", void 0);
90
- _ts_decorate([
91
- (0, _classtransformer.Expose)(),
92
- (0, _swagger.ApiProperty)({
93
- description: 'Human-readable name of the folder',
94
- example: 'Profile Photos'
95
- }),
96
- _ts_metadata("design:type", String)
97
- ], FolderResponseDto.prototype, "name", void 0);
98
- _ts_decorate([
99
- (0, _classtransformer.Expose)(),
100
- (0, _swagger.ApiProperty)({
101
- description: 'URL-friendly unique identifier derived from the folder name',
102
- example: 'profile-photos'
103
- }),
104
- _ts_metadata("design:type", String)
105
- ], FolderResponseDto.prototype, "slug", void 0);