@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.
- package/config/index.d.ts +3 -3
- package/controllers/file-manager.controller.d.ts +4 -4
- package/controllers/folder.controller.d.ts +2 -2
- package/controllers/index.d.ts +4 -4
- package/controllers/storage-config.controller.d.ts +2 -2
- package/controllers/upload.controller.d.ts +3 -3
- package/docs/index.d.ts +1 -1
- package/docs/storage-swagger.config.d.ts +2 -2
- package/dtos/index.d.ts +4 -4
- package/entities/file-manager-with-company.entity.d.ts +2 -2
- package/entities/file-manager.entity.d.ts +1 -1
- package/entities/folder-with-company.entity.d.ts +1 -1
- package/entities/index.d.ts +15 -15
- package/entities/storage-config-with-company.entity.d.ts +1 -1
- package/enums/index.d.ts +1 -1
- package/fesm/493.js +2768 -0
- package/fesm/537.js +1157 -0
- package/fesm/562.js +786 -0
- package/fesm/{providers/azure-provider.optional.js → chunks/190.js} +33 -30
- package/fesm/chunks/252.js +12 -0
- package/fesm/chunks/327.js +12 -0
- package/fesm/chunks/385.js +12 -0
- package/fesm/{providers/s3-provider.optional.js → chunks/591.js} +37 -34
- package/fesm/chunks/746.js +12 -0
- package/fesm/chunks/798.js +12 -0
- package/fesm/{providers/sftp-provider.optional.js → chunks/918.js} +35 -31
- package/fesm/config/index.js +119 -3
- package/fesm/controllers/index.js +16 -4
- package/fesm/docs/index.js +206 -1
- package/fesm/dtos/index.js +879 -4
- package/fesm/entities/index.js +463 -18
- package/fesm/enums/index.js +36 -1
- package/fesm/index.js +398 -12
- package/fesm/interfaces/index.js +19 -5
- package/fesm/modules/index.js +16 -1
- package/fesm/providers/index.js +364 -3
- package/fesm/runtime.js +252 -0
- package/fesm/services/index.js +16 -6
- package/fesm/utils/index.js +149 -1
- package/index.d.ts +11 -11
- package/interfaces/file-manager.interface.d.ts +1 -1
- package/interfaces/folder.interface.d.ts +1 -1
- package/interfaces/index.d.ts +5 -5
- package/interfaces/storage-config.interface.d.ts +1 -1
- package/interfaces/storage-module-options.interface.d.ts +3 -3
- package/interfaces/storage-provider.interface.d.ts +1 -1
- package/middlewares/file-serve.middleware.d.ts +4 -3
- package/middlewares/index.d.ts +1 -1
- package/modules/index.d.ts +1 -1
- package/modules/storage.module.d.ts +2 -2
- package/package.json +30 -41
- package/providers/azure-provider.optional.d.ts +2 -2
- package/providers/index.d.ts +3 -3
- package/providers/local-provider.d.ts +2 -2
- package/providers/s3-provider.optional.d.ts +2 -2
- package/providers/sftp-provider.optional.d.ts +2 -2
- package/providers/storage-factory.service.d.ts +3 -3
- package/providers/storage-provider.registry.d.ts +2 -2
- package/services/file-manager.service.d.ts +9 -8
- package/services/folder.service.d.ts +6 -6
- package/services/index.d.ts +6 -6
- package/services/storage-config.service.d.ts +3 -3
- package/services/storage-datasource.provider.d.ts +3 -3
- package/services/storage-provider-config.service.d.ts +7 -7
- package/services/upload.service.d.ts +6 -6
- package/utils/image-compressor.util.d.ts +1 -1
- package/utils/index.d.ts +1 -1
- package/cjs/config/event-actions.js +0 -34
- package/cjs/config/index.js +0 -20
- package/cjs/config/message-keys.js +0 -46
- package/cjs/config/storage.constants.js +0 -28
- package/cjs/controllers/file-manager.controller.js +0 -152
- package/cjs/controllers/file-manager.controller.spec.js +0 -135
- package/cjs/controllers/folder.controller.js +0 -102
- package/cjs/controllers/folder.controller.spec.js +0 -86
- package/cjs/controllers/index.js +0 -21
- package/cjs/controllers/storage-config.controller.js +0 -102
- package/cjs/controllers/storage-config.controller.spec.js +0 -85
- package/cjs/controllers/upload.controller.js +0 -234
- package/cjs/controllers/upload.controller.spec.js +0 -132
- package/cjs/docs/index.js +0 -11
- package/cjs/docs/storage-swagger.config.js +0 -188
- package/cjs/docs/storage-swagger.config.spec.js +0 -72
- package/cjs/dtos/file-manager.dto.js +0 -327
- package/cjs/dtos/folder.dto.js +0 -105
- package/cjs/dtos/index.js +0 -21
- package/cjs/dtos/storage-config.dto.js +0 -170
- package/cjs/dtos/upload.dto.js +0 -272
- package/cjs/entities/file-manager-with-company.entity.js +0 -61
- package/cjs/entities/file-manager.entity.js +0 -122
- package/cjs/entities/folder-with-company.entity.js +0 -55
- package/cjs/entities/folder.entity.js +0 -64
- package/cjs/entities/index.js +0 -63
- package/cjs/entities/index.spec.js +0 -18
- package/cjs/entities/storage-config-with-company.entity.js +0 -51
- package/cjs/entities/storage-config.entity.js +0 -96
- package/cjs/enums/file-location.enum.js +0 -17
- package/cjs/enums/index.js +0 -18
- package/cjs/index.js +0 -29
- package/cjs/interfaces/file-manager.interface.js +0 -4
- package/cjs/interfaces/folder.interface.js +0 -4
- package/cjs/interfaces/index.js +0 -22
- package/cjs/interfaces/storage-config.interface.js +0 -4
- package/cjs/interfaces/storage-module-options.interface.js +0 -4
- package/cjs/interfaces/storage-provider.interface.js +0 -4
- package/cjs/middlewares/file-serve.middleware.js +0 -241
- package/cjs/middlewares/file-serve.middleware.spec.js +0 -211
- package/cjs/middlewares/index.js +0 -18
- package/cjs/modules/index.js +0 -18
- package/cjs/modules/storage.module.js +0 -165
- package/cjs/modules/storage.module.spec.js +0 -184
- package/cjs/providers/azure-provider.optional.js +0 -155
- package/cjs/providers/azure-provider.optional.spec.js +0 -228
- package/cjs/providers/index.js +0 -26
- package/cjs/providers/local-provider.js +0 -230
- package/cjs/providers/local-provider.spec.js +0 -239
- package/cjs/providers/s3-provider.optional.js +0 -175
- package/cjs/providers/s3-provider.optional.spec.js +0 -243
- package/cjs/providers/sftp-provider.optional.js +0 -203
- package/cjs/providers/sftp-provider.optional.spec.js +0 -217
- package/cjs/providers/storage-factory.service.js +0 -175
- package/cjs/providers/storage-factory.service.spec.js +0 -253
- package/cjs/providers/storage-provider.registry.js +0 -41
- package/cjs/providers/storage-provider.registry.spec.js +0 -67
- package/cjs/services/file-manager.service.js +0 -387
- package/cjs/services/file-manager.service.spec.js +0 -580
- package/cjs/services/folder.service.js +0 -101
- package/cjs/services/folder.service.spec.js +0 -167
- package/cjs/services/index.js +0 -23
- package/cjs/services/storage-config.service.js +0 -129
- package/cjs/services/storage-config.service.spec.js +0 -257
- package/cjs/services/storage-datasource.provider.js +0 -137
- package/cjs/services/storage-datasource.provider.spec.js +0 -217
- package/cjs/services/storage-provider-config.service.js +0 -171
- package/cjs/services/storage-provider-config.service.spec.js +0 -265
- package/cjs/services/upload.service.js +0 -376
- package/cjs/services/upload.service.spec.js +0 -426
- package/cjs/utils/file-validator.util.js +0 -440
- package/cjs/utils/file-validator.util.spec.js +0 -259
- package/cjs/utils/image-compressor.util.js +0 -162
- package/cjs/utils/image-compressor.util.spec.js +0 -166
- package/cjs/utils/index.js +0 -18
- package/fesm/config/event-actions.js +0 -13
- package/fesm/config/message-keys.js +0 -22
- package/fesm/config/storage.constants.js +0 -7
- package/fesm/controllers/file-manager.controller.js +0 -142
- package/fesm/controllers/file-manager.controller.spec.js +0 -131
- package/fesm/controllers/folder.controller.js +0 -92
- package/fesm/controllers/folder.controller.spec.js +0 -82
- package/fesm/controllers/storage-config.controller.js +0 -92
- package/fesm/controllers/storage-config.controller.spec.js +0 -81
- package/fesm/controllers/upload.controller.js +0 -224
- package/fesm/controllers/upload.controller.spec.js +0 -128
- package/fesm/docs/storage-swagger.config.js +0 -181
- package/fesm/docs/storage-swagger.config.spec.js +0 -68
- package/fesm/dtos/file-manager.dto.js +0 -300
- package/fesm/dtos/folder.dto.js +0 -84
- package/fesm/dtos/storage-config.dto.js +0 -149
- package/fesm/dtos/upload.dto.js +0 -245
- package/fesm/entities/file-manager-with-company.entity.js +0 -51
- package/fesm/entities/file-manager.entity.js +0 -112
- package/fesm/entities/folder-with-company.entity.js +0 -45
- package/fesm/entities/folder.entity.js +0 -54
- package/fesm/entities/index.spec.js +0 -14
- package/fesm/entities/storage-config-with-company.entity.js +0 -41
- package/fesm/entities/storage-config.entity.js +0 -86
- package/fesm/enums/file-location.enum.js +0 -7
- package/fesm/interfaces/file-manager.interface.js +0 -1
- package/fesm/interfaces/folder.interface.js +0 -1
- package/fesm/interfaces/storage-config.interface.js +0 -1
- package/fesm/interfaces/storage-module-options.interface.js +0 -3
- package/fesm/interfaces/storage-provider.interface.js +0 -4
- package/fesm/middlewares/file-serve.middleware.js +0 -190
- package/fesm/middlewares/file-serve.middleware.spec.js +0 -207
- package/fesm/middlewares/index.js +0 -1
- package/fesm/modules/storage.module.js +0 -156
- package/fesm/modules/storage.module.spec.js +0 -180
- package/fesm/providers/azure-provider.optional.spec.js +0 -224
- package/fesm/providers/local-provider.js +0 -182
- package/fesm/providers/local-provider.spec.js +0 -194
- package/fesm/providers/s3-provider.optional.spec.js +0 -239
- package/fesm/providers/sftp-provider.optional.spec.js +0 -213
- package/fesm/providers/storage-factory.service.js +0 -124
- package/fesm/providers/storage-factory.service.spec.js +0 -249
- package/fesm/providers/storage-provider.registry.js +0 -34
- package/fesm/providers/storage-provider.registry.spec.js +0 -63
- package/fesm/services/file-manager.service.js +0 -336
- package/fesm/services/file-manager.service.spec.js +0 -576
- package/fesm/services/folder.service.js +0 -91
- package/fesm/services/folder.service.spec.js +0 -163
- package/fesm/services/storage-config.service.js +0 -119
- package/fesm/services/storage-config.service.spec.js +0 -253
- package/fesm/services/storage-datasource.provider.js +0 -86
- package/fesm/services/storage-datasource.provider.spec.js +0 -172
- package/fesm/services/storage-provider-config.service.js +0 -161
- package/fesm/services/storage-provider-config.service.spec.js +0 -261
- package/fesm/services/upload.service.js +0 -366
- package/fesm/services/upload.service.spec.js +0 -422
- package/fesm/utils/file-validator.util.js +0 -433
- package/fesm/utils/file-validator.util.spec.js +0 -255
- package/fesm/utils/image-compressor.util.js +0 -114
- package/fesm/utils/image-compressor.util.spec.js +0 -162
|
@@ -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';
|
package/cjs/config/index.js
DELETED
|
@@ -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
|
-
});
|
package/cjs/controllers/index.js
DELETED
|
@@ -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
|
-
}
|