@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,102 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "StorageConfigController", {
6
- enumerable: true,
7
- get: function() {
8
- return StorageConfigController;
9
- }
10
- });
11
- const _classes = require("@flusys/nestjs-shared/classes");
12
- const _common = require("@nestjs/common");
13
- const _swagger = require("@nestjs/swagger");
14
- const _dtos = require("../dtos");
15
- const _storageproviderconfigservice = require("../services/storage-provider-config.service");
16
- function _define_property(obj, key, value) {
17
- if (key in obj) {
18
- Object.defineProperty(obj, key, {
19
- value: value,
20
- enumerable: true,
21
- configurable: true,
22
- writable: true
23
- });
24
- } else {
25
- obj[key] = value;
26
- }
27
- return obj;
28
- }
29
- function _ts_decorate(decorators, target, key, desc) {
30
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
31
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
32
- 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;
33
- return c > 3 && r && Object.defineProperty(target, key, r), r;
34
- }
35
- function _ts_metadata(k, v) {
36
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
37
- }
38
- function _ts_param(paramIndex, decorator) {
39
- return function(target, key) {
40
- decorator(target, key, paramIndex);
41
- };
42
- }
43
- let StorageConfigController = class StorageConfigController extends (0, _classes.createApiController)(_dtos.CreateStorageConfigDto, _dtos.UpdateStorageConfigDto, _dtos.StorageConfigResponseDto, {
44
- entityName: 'storage.config',
45
- security: {
46
- insert: {
47
- level: 'permission',
48
- permissions: [
49
- _classes.STORAGE_CONFIG_PERMISSIONS.CREATE
50
- ]
51
- },
52
- insertMany: {
53
- level: 'permission',
54
- permissions: [
55
- _classes.STORAGE_CONFIG_PERMISSIONS.CREATE
56
- ]
57
- },
58
- getById: {
59
- level: 'permission',
60
- permissions: [
61
- _classes.STORAGE_CONFIG_PERMISSIONS.READ
62
- ]
63
- },
64
- getAll: {
65
- level: 'permission',
66
- permissions: [
67
- _classes.STORAGE_CONFIG_PERMISSIONS.READ
68
- ]
69
- },
70
- update: {
71
- level: 'permission',
72
- permissions: [
73
- _classes.STORAGE_CONFIG_PERMISSIONS.UPDATE
74
- ]
75
- },
76
- updateMany: {
77
- level: 'permission',
78
- permissions: [
79
- _classes.STORAGE_CONFIG_PERMISSIONS.UPDATE
80
- ]
81
- },
82
- delete: {
83
- level: 'permission',
84
- permissions: [
85
- _classes.STORAGE_CONFIG_PERMISSIONS.DELETE
86
- ]
87
- }
88
- }
89
- }) {
90
- constructor(storageConfigService){
91
- super(storageConfigService), _define_property(this, "storageConfigService", void 0), this.storageConfigService = storageConfigService;
92
- }
93
- };
94
- StorageConfigController = _ts_decorate([
95
- (0, _swagger.ApiTags)('Storage Config'),
96
- (0, _common.Controller)('storage/storage-config'),
97
- _ts_param(0, (0, _common.Inject)(_storageproviderconfigservice.StorageProviderConfigService)),
98
- _ts_metadata("design:type", Function),
99
- _ts_metadata("design:paramtypes", [
100
- typeof _storageproviderconfigservice.StorageProviderConfigService === "undefined" ? Object : _storageproviderconfigservice.StorageProviderConfigService
101
- ])
102
- ], StorageConfigController);
@@ -1,85 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _loggedusermock = require("@test-utils/mocks/logged-user.mock");
6
- const _storageconfigcontroller = require("./storage-config.controller");
7
- function buildStorageConfig(overrides = {}) {
8
- return {
9
- id: 'storage-config-1',
10
- provider: 'local',
11
- isActive: true,
12
- isDefault: true,
13
- readOnly: false,
14
- createdAt: new Date(),
15
- updatedAt: new Date(),
16
- ...overrides
17
- };
18
- }
19
- describe('StorageConfigController', ()=>{
20
- let controller;
21
- let mockStorageConfigService;
22
- beforeEach(()=>{
23
- mockStorageConfigService = {
24
- insert: jest.fn(),
25
- findById: jest.fn(),
26
- getAll: jest.fn(),
27
- update: jest.fn(),
28
- delete: jest.fn()
29
- };
30
- controller = new _storageconfigcontroller.StorageConfigController(mockStorageConfigService);
31
- });
32
- it('wires the injected service onto the generated controller base', ()=>{
33
- expect(controller.storageConfigService).toBe(mockStorageConfigService);
34
- expect(controller.service).toBe(mockStorageConfigService);
35
- });
36
- describe('insert', ()=>{
37
- it('creates a storage config and returns the mapped response', async ()=>{
38
- const user = (0, _loggedusermock.buildMockUser)();
39
- mockStorageConfigService.insert.mockResolvedValue(buildStorageConfig());
40
- const result = await controller.insert({
41
- provider: 'local'
42
- }, user);
43
- expect(mockStorageConfigService.insert).toHaveBeenCalledWith({
44
- provider: 'local'
45
- }, user);
46
- expect(result.success).toBe(true);
47
- expect(result.data).toEqual(expect.objectContaining({
48
- id: 'storage-config-1'
49
- }));
50
- });
51
- });
52
- describe('getAll', ()=>{
53
- it('paginates storage configs and maps the response list', async ()=>{
54
- mockStorageConfigService.getAll.mockResolvedValue({
55
- data: [
56
- buildStorageConfig()
57
- ],
58
- total: 1
59
- });
60
- const result = await controller.getAll({}, (0, _loggedusermock.buildMockUser)(), '');
61
- expect(mockStorageConfigService.getAll).toHaveBeenCalledWith('', {}, (0, _loggedusermock.buildMockUser)());
62
- expect(result.data).toHaveLength(1);
63
- });
64
- });
65
- describe('delete', ()=>{
66
- it('delegates soft-delete to the service', async ()=>{
67
- mockStorageConfigService.delete.mockResolvedValue({
68
- count: 1
69
- });
70
- const result = await controller.delete({
71
- id: [
72
- 'storage-config-1'
73
- ],
74
- type: 'delete'
75
- }, (0, _loggedusermock.buildMockUser)());
76
- expect(mockStorageConfigService.delete).toHaveBeenCalledWith({
77
- id: [
78
- 'storage-config-1'
79
- ],
80
- type: 'delete'
81
- }, (0, _loggedusermock.buildMockUser)());
82
- expect(result.success).toBe(true);
83
- });
84
- });
85
- });
@@ -1,234 +0,0 @@
1
- /// <reference types="multer" />
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- Object.defineProperty(exports, "UploadController", {
7
- enumerable: true,
8
- get: function() {
9
- return UploadController;
10
- }
11
- });
12
- const _nestjsshared = require("@flusys/nestjs-shared");
13
- const _decorators = require("@flusys/nestjs-shared/decorators");
14
- const _guards = require("@flusys/nestjs-shared/guards");
15
- const _interfaces = require("@flusys/nestjs-shared/interfaces");
16
- const _common = require("@nestjs/common");
17
- const _platformexpress = require("@nestjs/platform-express");
18
- const _swagger = require("@nestjs/swagger");
19
- const _config = require("../config");
20
- const _dtos = require("../dtos");
21
- const _uploadservice = require("../services/upload.service");
22
- function _define_property(obj, key, value) {
23
- if (key in obj) {
24
- Object.defineProperty(obj, key, {
25
- value: value,
26
- enumerable: true,
27
- configurable: true,
28
- writable: true
29
- });
30
- } else {
31
- obj[key] = value;
32
- }
33
- return obj;
34
- }
35
- function _ts_decorate(decorators, target, key, desc) {
36
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
37
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38
- 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;
39
- return c > 3 && r && Object.defineProperty(target, key, r), r;
40
- }
41
- function _ts_metadata(k, v) {
42
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
- }
44
- function _ts_param(paramIndex, decorator) {
45
- return function(target, key) {
46
- decorator(target, key, paramIndex);
47
- };
48
- }
49
- let UploadController = class UploadController {
50
- buildFileResponse(file) {
51
- return {
52
- size: this.uploadService.bytesToKb(file.size),
53
- name: file.name,
54
- key: file.key,
55
- contentType: file.contentType,
56
- location: file.location || 'local',
57
- storageConfigId: file.storageConfigId || ''
58
- };
59
- }
60
- async uploadSingleFile(file, options, user) {
61
- const result = await this.uploadService.uploadSingleFile(file, options, user);
62
- return {
63
- success: true,
64
- message: 'File uploaded successfully',
65
- messageKey: _config.UPLOAD_MESSAGES.SUCCESS,
66
- data: this.buildFileResponse(result)
67
- };
68
- }
69
- async uploadMultipleFiles(files, options, user) {
70
- const uploadResponses = await this.uploadService.uploadMultipleFiles(files, options, user);
71
- return {
72
- success: true,
73
- message: 'Files uploaded successfully',
74
- messageKey: _config.UPLOAD_MESSAGES.MANY_SUCCESS,
75
- data: uploadResponses.map((file)=>this.buildFileResponse(file))
76
- };
77
- }
78
- async deleteSingleFile(dto, user) {
79
- const data = await this.uploadService.deleteSingleFile(dto.key, dto.storageConfigId, user);
80
- return {
81
- success: true,
82
- message: 'File deleted successfully',
83
- messageKey: _config.FILE_MESSAGES.DELETE_SUCCESS,
84
- data
85
- };
86
- }
87
- async deleteMultipleFile(dto, user) {
88
- const data = await this.uploadService.deleteMultipleFile(dto.keys, dto.storageConfigId, user);
89
- return {
90
- success: true,
91
- message: 'Files deleted successfully',
92
- messageKey: _config.FILE_MESSAGES.DELETE_SUCCESS,
93
- data
94
- };
95
- }
96
- constructor(uploadService){
97
- _define_property(this, "uploadService", void 0);
98
- this.uploadService = uploadService;
99
- }
100
- };
101
- _ts_decorate([
102
- (0, _common.Post)('single-file'),
103
- (0, _decorators.ApiResponseDto)(_dtos.FileUploadResponsePayloadDto, false),
104
- (0, _swagger.ApiOperation)({
105
- summary: 'Upload a single file'
106
- }),
107
- (0, _swagger.ApiConsumes)('multipart/form-data'),
108
- (0, _swagger.ApiQuery)({
109
- name: 'folderPath',
110
- type: String,
111
- required: false,
112
- description: 'Optional folder path to store the file'
113
- }),
114
- (0, _swagger.ApiBody)({
115
- description: 'File upload form data',
116
- schema: {
117
- type: 'object',
118
- properties: {
119
- file: {
120
- type: 'string',
121
- format: 'binary',
122
- description: 'File to be uploaded'
123
- }
124
- },
125
- required: [
126
- 'file'
127
- ]
128
- }
129
- }),
130
- (0, _common.UseInterceptors)((0, _platformexpress.FileInterceptor)('file')),
131
- _ts_param(0, (0, _common.UploadedFile)()),
132
- _ts_param(1, (0, _common.Query)()),
133
- _ts_param(2, (0, _decorators.CurrentUser)()),
134
- _ts_metadata("design:type", Function),
135
- _ts_metadata("design:paramtypes", [
136
- typeof Express === "undefined" || typeof Express.Multer === "undefined" || typeof Express.Multer.File === "undefined" ? Object : Express.Multer.File,
137
- typeof _dtos.UploadOptionsDto === "undefined" ? Object : _dtos.UploadOptionsDto,
138
- typeof _interfaces.ILoggedUserInfo === "undefined" ? Object : _interfaces.ILoggedUserInfo
139
- ]),
140
- _ts_metadata("design:returntype", Promise)
141
- ], UploadController.prototype, "uploadSingleFile", null);
142
- _ts_decorate([
143
- (0, _common.Post)('multiple-file'),
144
- (0, _swagger.ApiOperation)({
145
- summary: 'Upload multiple files (up to 50)'
146
- }),
147
- (0, _swagger.ApiConsumes)('multipart/form-data'),
148
- (0, _swagger.ApiQuery)({
149
- name: 'folderPath',
150
- type: String,
151
- required: false,
152
- description: 'Optional folder path to store uploaded files'
153
- }),
154
- (0, _swagger.ApiBody)({
155
- description: 'Form data for multiple file uploads',
156
- schema: {
157
- type: 'object',
158
- properties: {
159
- files: {
160
- type: 'array',
161
- items: {
162
- type: 'string',
163
- format: 'binary'
164
- },
165
- description: 'List of files to be uploaded'
166
- }
167
- },
168
- required: [
169
- 'files'
170
- ]
171
- }
172
- }),
173
- (0, _decorators.ApiResponseDto)(_dtos.FileUploadResponsePayloadDto, false),
174
- (0, _common.UseInterceptors)((0, _platformexpress.FilesInterceptor)('files', 50)),
175
- _ts_param(0, (0, _common.UploadedFiles)()),
176
- _ts_param(1, (0, _common.Query)()),
177
- _ts_param(2, (0, _decorators.CurrentUser)()),
178
- _ts_metadata("design:type", Function),
179
- _ts_metadata("design:paramtypes", [
180
- Array,
181
- typeof _dtos.UploadOptionsDto === "undefined" ? Object : _dtos.UploadOptionsDto,
182
- typeof _interfaces.ILoggedUserInfo === "undefined" ? Object : _interfaces.ILoggedUserInfo
183
- ]),
184
- _ts_metadata("design:returntype", Promise)
185
- ], UploadController.prototype, "uploadMultipleFiles", null);
186
- _ts_decorate([
187
- (0, _common.Post)('delete-single-file'),
188
- (0, _common.UseGuards)(_guards.PermissionGuard),
189
- (0, _decorators.RequirePermission)(_nestjsshared.UPLOAD_CONFIG_PERMISSIONS.DELETE),
190
- (0, _swagger.ApiOperation)({
191
- summary: 'Delete a single file'
192
- }),
193
- (0, _swagger.ApiBody)({
194
- type: _dtos.DeleteSingleFileDto
195
- }),
196
- _ts_param(0, (0, _common.Body)()),
197
- _ts_param(1, (0, _decorators.CurrentUser)()),
198
- _ts_metadata("design:type", Function),
199
- _ts_metadata("design:paramtypes", [
200
- typeof _dtos.DeleteSingleFileDto === "undefined" ? Object : _dtos.DeleteSingleFileDto,
201
- typeof _interfaces.ILoggedUserInfo === "undefined" ? Object : _interfaces.ILoggedUserInfo
202
- ]),
203
- _ts_metadata("design:returntype", Promise)
204
- ], UploadController.prototype, "deleteSingleFile", null);
205
- _ts_decorate([
206
- (0, _common.Post)('delete-multiple-file'),
207
- (0, _common.UseGuards)(_guards.PermissionGuard),
208
- (0, _decorators.RequirePermission)(_nestjsshared.UPLOAD_CONFIG_PERMISSIONS.DELETE),
209
- (0, _swagger.ApiOperation)({
210
- summary: 'Delete multiple files'
211
- }),
212
- (0, _swagger.ApiBody)({
213
- type: _dtos.DeleteMultipleFileDto
214
- }),
215
- _ts_param(0, (0, _common.Body)()),
216
- _ts_param(1, (0, _decorators.CurrentUser)()),
217
- _ts_metadata("design:type", Function),
218
- _ts_metadata("design:paramtypes", [
219
- typeof _dtos.DeleteMultipleFileDto === "undefined" ? Object : _dtos.DeleteMultipleFileDto,
220
- typeof _interfaces.ILoggedUserInfo === "undefined" ? Object : _interfaces.ILoggedUserInfo
221
- ]),
222
- _ts_metadata("design:returntype", Promise)
223
- ], UploadController.prototype, "deleteMultipleFile", null);
224
- UploadController = _ts_decorate([
225
- (0, _swagger.ApiTags)('Upload'),
226
- (0, _swagger.ApiBearerAuth)(),
227
- (0, _common.Controller)('storage/upload'),
228
- (0, _common.UseGuards)(_guards.JwtAuthGuard),
229
- _ts_param(0, (0, _common.Inject)(_uploadservice.UploadService)),
230
- _ts_metadata("design:type", Function),
231
- _ts_metadata("design:paramtypes", [
232
- typeof _uploadservice.UploadService === "undefined" ? Object : _uploadservice.UploadService
233
- ])
234
- ], UploadController);
@@ -1,132 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _loggedusermock = require("@test-utils/mocks/logged-user.mock");
6
- const _uploadcontroller = require("./upload.controller");
7
- describe('UploadController', ()=>{
8
- let controller;
9
- let mockUploadService;
10
- beforeEach(()=>{
11
- mockUploadService = {
12
- bytesToKb: jest.fn((bytes)=>bytes / 1024),
13
- uploadSingleFile: jest.fn(),
14
- uploadMultipleFiles: jest.fn(),
15
- deleteSingleFile: jest.fn(),
16
- deleteMultipleFile: jest.fn()
17
- };
18
- controller = new _uploadcontroller.UploadController(mockUploadService);
19
- });
20
- describe('uploadSingleFile', ()=>{
21
- it('uploads a file and maps the response payload', async ()=>{
22
- const user = (0, _loggedusermock.buildMockUser)();
23
- const file = {
24
- originalname: 'photo.png'
25
- };
26
- mockUploadService.uploadSingleFile.mockResolvedValue({
27
- size: 2048,
28
- name: 'photo.png',
29
- key: 'files/photo.png',
30
- contentType: 'image/png',
31
- location: 's3',
32
- storageConfigId: 'storage-1'
33
- });
34
- const result = await controller.uploadSingleFile(file, {
35
- folderPath: 'photos'
36
- }, user);
37
- expect(mockUploadService.uploadSingleFile).toHaveBeenCalledWith(file, {
38
- folderPath: 'photos'
39
- }, user);
40
- expect(mockUploadService.bytesToKb).toHaveBeenCalledWith(2048);
41
- expect(result).toEqual({
42
- success: true,
43
- message: 'File uploaded successfully',
44
- messageKey: expect.any(String),
45
- data: {
46
- size: 2,
47
- name: 'photo.png',
48
- key: 'files/photo.png',
49
- contentType: 'image/png',
50
- location: 's3',
51
- storageConfigId: 'storage-1'
52
- }
53
- });
54
- });
55
- it('defaults location to "local" and storageConfigId to an empty string when absent', async ()=>{
56
- const user = (0, _loggedusermock.buildMockUser)();
57
- mockUploadService.uploadSingleFile.mockResolvedValue({
58
- size: 100,
59
- name: 'file.txt',
60
- key: 'files/file.txt',
61
- contentType: 'text/plain'
62
- });
63
- const result = await controller.uploadSingleFile({}, {}, user);
64
- expect(result.data.location).toBe('local');
65
- expect(result.data.storageConfigId).toBe('');
66
- });
67
- });
68
- describe('uploadMultipleFiles', ()=>{
69
- it('uploads multiple files and maps each response payload', async ()=>{
70
- const user = (0, _loggedusermock.buildMockUser)();
71
- const files = [
72
- {
73
- originalname: 'a.png'
74
- },
75
- {
76
- originalname: 'b.png'
77
- }
78
- ];
79
- mockUploadService.uploadMultipleFiles.mockResolvedValue([
80
- {
81
- size: 100,
82
- name: 'a.png',
83
- key: 'files/a.png',
84
- contentType: 'image/png'
85
- },
86
- {
87
- size: 200,
88
- name: 'b.png',
89
- key: 'files/b.png',
90
- contentType: 'image/png'
91
- }
92
- ]);
93
- const result = await controller.uploadMultipleFiles(files, {}, user);
94
- expect(mockUploadService.uploadMultipleFiles).toHaveBeenCalledWith(files, {}, user);
95
- expect(result.data).toHaveLength(2);
96
- expect(result.data[0]).toEqual(expect.objectContaining({
97
- name: 'a.png',
98
- key: 'files/a.png'
99
- }));
100
- });
101
- });
102
- describe('deleteSingleFile', ()=>{
103
- it('deletes a file by key and storage config', async ()=>{
104
- const user = (0, _loggedusermock.buildMockUser)();
105
- mockUploadService.deleteSingleFile.mockResolvedValue(true);
106
- const result = await controller.deleteSingleFile({
107
- key: 'files/a.png',
108
- storageConfigId: 'storage-1'
109
- }, user);
110
- expect(mockUploadService.deleteSingleFile).toHaveBeenCalledWith('files/a.png', 'storage-1', user);
111
- expect(result.data).toBe(true);
112
- });
113
- });
114
- describe('deleteMultipleFile', ()=>{
115
- it('deletes multiple files by keys and storage config', async ()=>{
116
- const user = (0, _loggedusermock.buildMockUser)();
117
- mockUploadService.deleteMultipleFile.mockResolvedValue(true);
118
- const result = await controller.deleteMultipleFile({
119
- keys: [
120
- 'files/a.png',
121
- 'files/b.png'
122
- ],
123
- storageConfigId: 'storage-1'
124
- }, user);
125
- expect(mockUploadService.deleteMultipleFile).toHaveBeenCalledWith([
126
- 'files/a.png',
127
- 'files/b.png'
128
- ], 'storage-1', user);
129
- expect(result.data).toBe(true);
130
- });
131
- });
132
- });
package/cjs/docs/index.js DELETED
@@ -1,11 +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.storageSwaggerConfig;
9
- }
10
- });
11
- const _storageswaggerconfig = require("./storage-swagger.config");