@flusys/nestjs-storage 7.0.2 → 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,34 +0,0 @@
1
- /**
2
- * Domain event actions published by the storage module, alongside the CRUD
3
- * lifecycle actions every ApiService emits.
4
- */ "use strict";
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- function _export(target, all) {
9
- for(var name in all)Object.defineProperty(target, name, {
10
- enumerable: true,
11
- get: Object.getOwnPropertyDescriptor(all, name).get
12
- });
13
- }
14
- _export(exports, {
15
- get STORAGE_EVENT_ACTIONS () {
16
- return STORAGE_EVENT_ACTIONS;
17
- },
18
- get STORAGE_EVENT_ENTITIES () {
19
- return STORAGE_EVENT_ENTITIES;
20
- },
21
- get STORAGE_EVENT_MODULE () {
22
- return STORAGE_EVENT_MODULE;
23
- }
24
- });
25
- const STORAGE_EVENT_ACTIONS = {
26
- UPLOADED: 'uploaded',
27
- REMOVED: 'removed'
28
- };
29
- const STORAGE_EVENT_ENTITIES = {
30
- FILE: 'file_manager',
31
- FOLDER: 'folder',
32
- STORAGE_CONFIG: 'storageConfig'
33
- };
34
- const STORAGE_EVENT_MODULE = 'storage';
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- _export_star(require("./event-actions"), exports);
6
- _export_star(require("./message-keys"), exports);
7
- _export_star(require("./storage.constants"), exports);
8
- function _export_star(from, to) {
9
- Object.keys(from).forEach(function(k) {
10
- if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
11
- Object.defineProperty(to, k, {
12
- enumerable: true,
13
- get: function() {
14
- return from[k];
15
- }
16
- });
17
- }
18
- });
19
- return from;
20
- }
@@ -1,46 +0,0 @@
1
- // ==================== STORAGE MODULE MESSAGE KEYS ====================
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- function _export(target, all) {
7
- for(var name in all)Object.defineProperty(target, name, {
8
- enumerable: true,
9
- get: Object.getOwnPropertyDescriptor(all, name).get
10
- });
11
- }
12
- _export(exports, {
13
- get FILE_MESSAGES () {
14
- return FILE_MESSAGES;
15
- },
16
- get FOLDER_MESSAGES () {
17
- return FOLDER_MESSAGES;
18
- },
19
- get STORAGE_CONFIG_MESSAGES () {
20
- return STORAGE_CONFIG_MESSAGES;
21
- },
22
- get UPLOAD_MESSAGES () {
23
- return UPLOAD_MESSAGES;
24
- }
25
- });
26
- const FILE_MESSAGES = {
27
- GET_ALL_SUCCESS: 'file.get.all.success',
28
- DELETE_SUCCESS: 'file.delete.success',
29
- NOT_FOUND: 'file.not.found'
30
- };
31
- const STORAGE_CONFIG_MESSAGES = {
32
- DEFAULT_DELETE_FORBIDDEN: 'storage.config.default.delete.forbidden'
33
- };
34
- const FOLDER_MESSAGES = {
35
- NOT_FOUND: 'folder.not.found'
36
- };
37
- const UPLOAD_MESSAGES = {
38
- SUCCESS: 'upload.success',
39
- MANY_SUCCESS: 'upload.many.success',
40
- FILE_TOO_LARGE: 'upload.file.too.large',
41
- INVALID_TYPE: 'upload.invalid.type',
42
- NO_FILES_PROVIDED: 'upload.no.files.provided',
43
- NO_FILE_PATH: 'upload.no.file.path',
44
- INVALID_FILE_PATH: 'upload.invalid.file.path',
45
- CONFIG_NOT_FOUND: 'upload.config.not.found'
46
- };
@@ -1,28 +0,0 @@
1
- /**
2
- * Storage Module Constants
3
- */ "use strict";
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- function _export(target, all) {
8
- for(var name in all)Object.defineProperty(target, name, {
9
- enumerable: true,
10
- get: Object.getOwnPropertyDescriptor(all, name).get
11
- });
12
- }
13
- _export(exports, {
14
- get DEFAULT_ALLOWED_FILE_TYPES () {
15
- return DEFAULT_ALLOWED_FILE_TYPES;
16
- },
17
- get DEFAULT_MAX_FILE_SIZE () {
18
- return DEFAULT_MAX_FILE_SIZE;
19
- },
20
- get STORAGE_MODULE_OPTIONS () {
21
- return STORAGE_MODULE_OPTIONS;
22
- }
23
- });
24
- const STORAGE_MODULE_OPTIONS = 'STORAGE_MODULE_OPTIONS';
25
- const DEFAULT_MAX_FILE_SIZE = 100 * 1024 * 1024; // 100MB
26
- const DEFAULT_ALLOWED_FILE_TYPES = [
27
- '*/*'
28
- ]; // All file types
@@ -1,152 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "FileManagerController", {
6
- enumerable: true,
7
- get: function() {
8
- return FileManagerController;
9
- }
10
- });
11
- const _common = require("@nestjs/common");
12
- const _classes = require("@flusys/nestjs-shared/classes");
13
- const _config = require("../config");
14
- const _decorators = require("@flusys/nestjs-shared/decorators");
15
- const _dtos = require("@flusys/nestjs-shared/dtos");
16
- const _guards = require("@flusys/nestjs-shared/guards");
17
- const _interfaces = require("@flusys/nestjs-shared/interfaces");
18
- const _dtos1 = require("../dtos");
19
- const _swagger = require("@nestjs/swagger");
20
- const _express = require("express");
21
- const _filemanagerservice = require("../services/file-manager.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 FileManagerController = class FileManagerController extends (0, _classes.createApiController)(_dtos1.CreateFileManagerDto, _dtos1.UpdateFileManagerDto, _dtos1.FileManagerResponseDto, {
50
- entityName: 'file',
51
- security: {
52
- insert: {
53
- level: 'permission',
54
- permissions: [
55
- _classes.FILE_PERMISSIONS.CREATE
56
- ]
57
- },
58
- insertMany: {
59
- level: 'permission',
60
- permissions: [
61
- _classes.FILE_PERMISSIONS.CREATE
62
- ]
63
- },
64
- getById: {
65
- level: 'permission',
66
- permissions: [
67
- _classes.FILE_PERMISSIONS.READ
68
- ]
69
- },
70
- getAll: {
71
- level: 'permission',
72
- permissions: [
73
- _classes.FILE_PERMISSIONS.READ
74
- ]
75
- },
76
- update: {
77
- level: 'permission',
78
- permissions: [
79
- _classes.FILE_PERMISSIONS.UPDATE
80
- ]
81
- },
82
- updateMany: {
83
- level: 'permission',
84
- permissions: [
85
- _classes.FILE_PERMISSIONS.UPDATE
86
- ]
87
- },
88
- delete: {
89
- level: 'permission',
90
- permissions: [
91
- _classes.FILE_PERMISSIONS.DELETE
92
- ]
93
- }
94
- }
95
- }) {
96
- async getFiles(dto, req, user) {
97
- if (!dto || !dto.length) {
98
- throw new _common.BadRequestException({
99
- message: 'No files provided',
100
- messageKey: _config.UPLOAD_MESSAGES.NO_FILES_PROVIDED
101
- });
102
- }
103
- // Fetch files from service
104
- const files = await this.fileService.getFiles(dto, req.protocol, req.get('host') || req.hostname, user);
105
- return {
106
- success: true,
107
- message: 'Files retrieved successfully',
108
- messageKey: _config.FILE_MESSAGES.GET_ALL_SUCCESS,
109
- data: files
110
- };
111
- }
112
- constructor(fileService){
113
- super(fileService), _define_property(this, "fileService", void 0), this.fileService = fileService;
114
- }
115
- };
116
- _ts_decorate([
117
- (0, _common.Post)('get-files'),
118
- (0, _common.UseGuards)(_guards.JwtAuthGuard),
119
- (0, _swagger.ApiBearerAuth)(),
120
- (0, _common.HttpCode)(200),
121
- (0, _swagger.ApiBody)({
122
- type: _dtos1.GetFilesRequestDto,
123
- isArray: true
124
- }),
125
- (0, _swagger.ApiOperation)({
126
- summary: 'Get multiple files by IDs with authentication (local or S3)'
127
- }),
128
- (0, _swagger.ApiResponse)({
129
- status: 200,
130
- description: 'Files retrieved successfully',
131
- type: _dtos.SingleResponseDto
132
- }),
133
- _ts_param(0, (0, _common.Body)()),
134
- _ts_param(1, (0, _common.Req)()),
135
- _ts_param(2, (0, _decorators.CurrentUser)()),
136
- _ts_metadata("design:type", Function),
137
- _ts_metadata("design:paramtypes", [
138
- typeof Array === "undefined" ? Object : Array,
139
- typeof _express.Request === "undefined" ? Object : _express.Request,
140
- typeof _interfaces.ILoggedUserInfo === "undefined" ? Object : _interfaces.ILoggedUserInfo
141
- ]),
142
- _ts_metadata("design:returntype", Promise)
143
- ], FileManagerController.prototype, "getFiles", null);
144
- FileManagerController = _ts_decorate([
145
- (0, _swagger.ApiTags)('Files'),
146
- (0, _common.Controller)('storage/file-manager'),
147
- _ts_param(0, (0, _common.Inject)(_filemanagerservice.FileManagerService)),
148
- _ts_metadata("design:type", Function),
149
- _ts_metadata("design:paramtypes", [
150
- typeof _filemanagerservice.FileManagerService === "undefined" ? Object : _filemanagerservice.FileManagerService
151
- ])
152
- ], FileManagerController);
@@ -1,135 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- const _common = require("@nestjs/common");
6
- const _loggedusermock = require("@test-utils/mocks/logged-user.mock");
7
- const _filemanagercontroller = require("./file-manager.controller");
8
- function buildFile(overrides = {}) {
9
- return {
10
- id: 'file-1',
11
- name: 'report.pdf',
12
- key: 'files/report.pdf',
13
- size: 1024,
14
- contentType: 'application/pdf',
15
- isActive: true,
16
- readOnly: false,
17
- createdAt: new Date(),
18
- updatedAt: new Date(),
19
- ...overrides
20
- };
21
- }
22
- describe('FileManagerController', ()=>{
23
- let controller;
24
- let mockFileService;
25
- beforeEach(()=>{
26
- mockFileService = {
27
- insert: jest.fn(),
28
- findById: jest.fn(),
29
- getAll: jest.fn(),
30
- update: jest.fn(),
31
- delete: jest.fn(),
32
- getFiles: jest.fn()
33
- };
34
- controller = new _filemanagercontroller.FileManagerController(mockFileService);
35
- });
36
- describe('insert', ()=>{
37
- it('creates a file record and returns the mapped response', async ()=>{
38
- const user = (0, _loggedusermock.buildMockUser)();
39
- mockFileService.insert.mockResolvedValue(buildFile());
40
- const result = await controller.insert({
41
- name: 'report.pdf'
42
- }, user);
43
- expect(mockFileService.insert).toHaveBeenCalledWith({
44
- name: 'report.pdf'
45
- }, user);
46
- expect(result.success).toBe(true);
47
- expect(result.data).toEqual(expect.objectContaining({
48
- id: 'file-1'
49
- }));
50
- });
51
- });
52
- describe('getAll', ()=>{
53
- it('paginates files and maps the response list', async ()=>{
54
- mockFileService.getAll.mockResolvedValue({
55
- data: [
56
- buildFile()
57
- ],
58
- total: 1
59
- });
60
- const result = await controller.getAll({}, (0, _loggedusermock.buildMockUser)(), '');
61
- expect(mockFileService.getAll).toHaveBeenCalledWith('', {}, (0, _loggedusermock.buildMockUser)());
62
- expect(result.data).toHaveLength(1);
63
- });
64
- });
65
- describe('getFiles', ()=>{
66
- it('resolves signed/public URLs for the requested files using the request protocol and host', async ()=>{
67
- const user = (0, _loggedusermock.buildMockUser)();
68
- const req = {
69
- protocol: 'https',
70
- hostname: 'app.example.com',
71
- get: jest.fn().mockReturnValue('app.example.com')
72
- };
73
- mockFileService.getFiles.mockResolvedValue([
74
- {
75
- id: 'file-1',
76
- url: 'https://app.example.com/storage/upload/file/report.pdf'
77
- }
78
- ]);
79
- const result = await controller.getFiles([
80
- {
81
- id: 'file-1'
82
- }
83
- ], req, user);
84
- expect(mockFileService.getFiles).toHaveBeenCalledWith([
85
- {
86
- id: 'file-1'
87
- }
88
- ], 'https', 'app.example.com', user);
89
- expect(result.success).toBe(true);
90
- expect(result.data).toEqual([
91
- {
92
- id: 'file-1',
93
- url: 'https://app.example.com/storage/upload/file/report.pdf'
94
- }
95
- ]);
96
- });
97
- it('falls back to req.hostname when the host header is absent', async ()=>{
98
- const user = (0, _loggedusermock.buildMockUser)();
99
- const req = {
100
- protocol: 'http',
101
- hostname: 'localhost',
102
- get: jest.fn().mockReturnValue(undefined)
103
- };
104
- mockFileService.getFiles.mockResolvedValue([]);
105
- await controller.getFiles([
106
- {
107
- id: 'file-1'
108
- }
109
- ], req, user);
110
- expect(mockFileService.getFiles).toHaveBeenCalledWith([
111
- {
112
- id: 'file-1'
113
- }
114
- ], 'http', 'localhost', user);
115
- });
116
- it('rejects an empty file id list without calling the service', async ()=>{
117
- const user = (0, _loggedusermock.buildMockUser)();
118
- const req = {
119
- protocol: 'https',
120
- get: jest.fn()
121
- };
122
- await expect(controller.getFiles([], req, user)).rejects.toThrow(_common.BadRequestException);
123
- expect(mockFileService.getFiles).not.toHaveBeenCalled();
124
- });
125
- it('rejects a null/undefined dto without calling the service', async ()=>{
126
- const user = (0, _loggedusermock.buildMockUser)();
127
- const req = {
128
- protocol: 'https',
129
- get: jest.fn()
130
- };
131
- await expect(controller.getFiles(undefined, req, user)).rejects.toThrow(_common.BadRequestException);
132
- expect(mockFileService.getFiles).not.toHaveBeenCalled();
133
- });
134
- });
135
- });
@@ -1,102 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "FolderController", {
6
- enumerable: true,
7
- get: function() {
8
- return FolderController;
9
- }
10
- });
11
- const _classes = require("@flusys/nestjs-shared/classes");
12
- const _dtos = require("../dtos");
13
- const _common = require("@nestjs/common");
14
- const _swagger = require("@nestjs/swagger");
15
- const _folderservice = require("../services/folder.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 FolderController = class FolderController extends (0, _classes.createApiController)(_dtos.CreateFolderDto, _dtos.UpdateFolderDto, _dtos.FolderResponseDto, {
44
- entityName: 'folder',
45
- security: {
46
- insert: {
47
- level: 'permission',
48
- permissions: [
49
- _classes.FOLDER_PERMISSIONS.CREATE
50
- ]
51
- },
52
- insertMany: {
53
- level: 'permission',
54
- permissions: [
55
- _classes.FOLDER_PERMISSIONS.CREATE
56
- ]
57
- },
58
- getById: {
59
- level: 'permission',
60
- permissions: [
61
- _classes.FOLDER_PERMISSIONS.READ
62
- ]
63
- },
64
- getAll: {
65
- level: 'permission',
66
- permissions: [
67
- _classes.FOLDER_PERMISSIONS.READ
68
- ]
69
- },
70
- update: {
71
- level: 'permission',
72
- permissions: [
73
- _classes.FOLDER_PERMISSIONS.UPDATE
74
- ]
75
- },
76
- updateMany: {
77
- level: 'permission',
78
- permissions: [
79
- _classes.FOLDER_PERMISSIONS.UPDATE
80
- ]
81
- },
82
- delete: {
83
- level: 'permission',
84
- permissions: [
85
- _classes.FOLDER_PERMISSIONS.DELETE
86
- ]
87
- }
88
- }
89
- }) {
90
- constructor(folderService){
91
- super(folderService), _define_property(this, "folderService", void 0), this.folderService = folderService;
92
- }
93
- };
94
- FolderController = _ts_decorate([
95
- (0, _swagger.ApiTags)('Folders'),
96
- (0, _common.Controller)('storage/folder'),
97
- _ts_param(0, (0, _common.Inject)(_folderservice.FolderService)),
98
- _ts_metadata("design:type", Function),
99
- _ts_metadata("design:paramtypes", [
100
- typeof _folderservice.FolderService === "undefined" ? Object : _folderservice.FolderService
101
- ])
102
- ], FolderController);
@@ -1,86 +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 _foldercontroller = require("./folder.controller");
7
- function buildFolder(overrides = {}) {
8
- return {
9
- id: 'folder-1',
10
- name: 'Documents',
11
- parentId: null,
12
- isActive: true,
13
- readOnly: false,
14
- createdAt: new Date(),
15
- updatedAt: new Date(),
16
- ...overrides
17
- };
18
- }
19
- describe('FolderController', ()=>{
20
- let controller;
21
- let mockFolderService;
22
- beforeEach(()=>{
23
- mockFolderService = {
24
- insert: jest.fn(),
25
- findById: jest.fn(),
26
- getAll: jest.fn(),
27
- update: jest.fn(),
28
- delete: jest.fn()
29
- };
30
- controller = new _foldercontroller.FolderController(mockFolderService);
31
- });
32
- it('wires the injected service onto the generated controller base', ()=>{
33
- expect(controller.folderService).toBe(mockFolderService);
34
- expect(controller.service).toBe(mockFolderService);
35
- });
36
- describe('insert', ()=>{
37
- it('creates a folder and returns the mapped response', async ()=>{
38
- const user = (0, _loggedusermock.buildMockUser)();
39
- mockFolderService.insert.mockResolvedValue(buildFolder());
40
- const result = await controller.insert({
41
- name: 'Documents'
42
- }, user);
43
- expect(mockFolderService.insert).toHaveBeenCalledWith({
44
- name: 'Documents'
45
- }, user);
46
- expect(result.success).toBe(true);
47
- expect(result.data).toEqual(expect.objectContaining({
48
- id: 'folder-1',
49
- name: 'Documents'
50
- }));
51
- });
52
- });
53
- describe('getAll', ()=>{
54
- it('paginates folders and maps the response list', async ()=>{
55
- mockFolderService.getAll.mockResolvedValue({
56
- data: [
57
- buildFolder()
58
- ],
59
- total: 1
60
- });
61
- const result = await controller.getAll({}, (0, _loggedusermock.buildMockUser)(), '');
62
- expect(mockFolderService.getAll).toHaveBeenCalledWith('', {}, (0, _loggedusermock.buildMockUser)());
63
- expect(result.data).toHaveLength(1);
64
- });
65
- });
66
- describe('delete', ()=>{
67
- it('delegates soft-delete to the service', async ()=>{
68
- mockFolderService.delete.mockResolvedValue({
69
- count: 1
70
- });
71
- const result = await controller.delete({
72
- id: [
73
- 'folder-1'
74
- ],
75
- type: 'delete'
76
- }, (0, _loggedusermock.buildMockUser)());
77
- expect(mockFolderService.delete).toHaveBeenCalledWith({
78
- id: [
79
- 'folder-1'
80
- ],
81
- type: 'delete'
82
- }, (0, _loggedusermock.buildMockUser)());
83
- expect(result.success).toBe(true);
84
- });
85
- });
86
- });
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- _export_star(require("./file-manager.controller"), exports);
6
- _export_star(require("./folder.controller"), exports);
7
- _export_star(require("./storage-config.controller"), exports);
8
- _export_star(require("./upload.controller"), exports);
9
- function _export_star(from, to) {
10
- Object.keys(from).forEach(function(k) {
11
- if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
12
- Object.defineProperty(to, k, {
13
- enumerable: true,
14
- get: function() {
15
- return from[k];
16
- }
17
- });
18
- }
19
- });
20
- return from;
21
- }