@smartsoft001/crud-shell-app-services 2.154.0 → 2.156.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smartsoft001/crud-shell-app-services",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.156.0",
|
|
4
4
|
"type": "commonjs",
|
|
5
5
|
"main": "./src/index.js",
|
|
6
6
|
"typings": "./src/index.d.ts",
|
|
@@ -30,13 +30,13 @@
|
|
|
30
30
|
},
|
|
31
31
|
"peerDependencies": {
|
|
32
32
|
"@nestjs/common": "^11.1.5",
|
|
33
|
-
"@smartsoft001/crud-domain": "2.
|
|
34
|
-
"@smartsoft001/crud-shell-dtos": "2.
|
|
35
|
-
"@smartsoft001/domain-core": "2.
|
|
36
|
-
"@smartsoft001/models": "2.
|
|
37
|
-
"@smartsoft001/nestjs": "2.
|
|
38
|
-
"@smartsoft001/users": "2.
|
|
39
|
-
"@smartsoft001/utils": "2.
|
|
33
|
+
"@smartsoft001/crud-domain": "2.156.0",
|
|
34
|
+
"@smartsoft001/crud-shell-dtos": "2.156.0",
|
|
35
|
+
"@smartsoft001/domain-core": "2.156.0",
|
|
36
|
+
"@smartsoft001/models": "2.156.0",
|
|
37
|
+
"@smartsoft001/nestjs": "2.156.0",
|
|
38
|
+
"@smartsoft001/users": "2.156.0",
|
|
39
|
+
"@smartsoft001/utils": "2.156.0",
|
|
40
40
|
"rxjs": "^7.8.1"
|
|
41
41
|
},
|
|
42
42
|
"types": "./src/index.d.ts"
|
|
@@ -2,15 +2,16 @@ import { Observable } from 'rxjs';
|
|
|
2
2
|
import { ICreateManyOptions } from '@smartsoft001/crud-domain';
|
|
3
3
|
import { ItemChangedData } from '@smartsoft001/crud-shell-dtos';
|
|
4
4
|
import { IAttachmentRepository, IEntity, IItemRepository, ISpecification } from '@smartsoft001/domain-core';
|
|
5
|
-
import { PermissionService } from '@smartsoft001/nestjs';
|
|
5
|
+
import { PermissionService, SharedConfig } from '@smartsoft001/nestjs';
|
|
6
6
|
import { IUser } from '@smartsoft001/users';
|
|
7
7
|
import { Readable, Stream } from 'stream';
|
|
8
8
|
export declare class CrudService<T extends IEntity<string>> {
|
|
9
9
|
protected readonly permissionService: PermissionService;
|
|
10
10
|
protected readonly repository: IItemRepository<T>;
|
|
11
11
|
protected readonly attachmentRepository: IAttachmentRepository<T>;
|
|
12
|
+
protected readonly config?: SharedConfig;
|
|
12
13
|
private _logger;
|
|
13
|
-
constructor(permissionService: PermissionService, repository: IItemRepository<T>, attachmentRepository: IAttachmentRepository<T
|
|
14
|
+
constructor(permissionService: PermissionService, repository: IItemRepository<T>, attachmentRepository: IAttachmentRepository<T>, config?: SharedConfig);
|
|
14
15
|
create(data: T, user: IUser): Promise<string>;
|
|
15
16
|
createMany(data: T[], user: IUser, options: ICreateManyOptions): Promise<T[]>;
|
|
16
17
|
/** Resolves to `null` when no item has that id; the caller decides what that means (the controller answers 404). */
|
|
@@ -51,6 +52,13 @@ export declare class CrudService<T extends IEntity<string>> {
|
|
|
51
52
|
}): Observable<ItemChangedData>;
|
|
52
53
|
private hashCredentials;
|
|
53
54
|
private stripPassword;
|
|
55
|
+
/**
|
|
56
|
+
* Turns a plain request body into an instance of the configured model type so
|
|
57
|
+
* that the model metadata used by castModel and getInvalidFields is available.
|
|
58
|
+
* The instance keeps only the keys the payload carried, because a new instance
|
|
59
|
+
* declares every field as an own key.
|
|
60
|
+
*/
|
|
61
|
+
protected toModel<D extends Partial<T>>(data: D): D;
|
|
54
62
|
private checkValidCreate;
|
|
55
63
|
private checkValidUpdate;
|
|
56
64
|
private checkValidUpdatePartial;
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.CrudService = void 0;
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
6
6
|
const common_1 = require("@nestjs/common");
|
|
7
|
-
const
|
|
7
|
+
const combined_stream_1 = tslib_1.__importDefault(require("combined-stream"));
|
|
8
8
|
const guid_typescript_1 = require("guid-typescript");
|
|
9
9
|
const lodash_decorators_1 = require("lodash-decorators");
|
|
10
10
|
const domain_core_1 = require("@smartsoft001/domain-core");
|
|
@@ -15,21 +15,27 @@ let CrudService = CrudService_1 = class CrudService {
|
|
|
15
15
|
permissionService;
|
|
16
16
|
repository;
|
|
17
17
|
attachmentRepository;
|
|
18
|
+
config;
|
|
18
19
|
_logger = new common_1.Logger(CrudService_1.name, { timestamp: true });
|
|
19
|
-
constructor(permissionService, repository, attachmentRepository) {
|
|
20
|
+
constructor(permissionService, repository, attachmentRepository, config) {
|
|
20
21
|
this.permissionService = permissionService;
|
|
21
22
|
this.repository = repository;
|
|
22
23
|
this.attachmentRepository = attachmentRepository;
|
|
24
|
+
this.config = config;
|
|
25
|
+
if (!config?.type) {
|
|
26
|
+
this._logger.warn('No model type is configured (SharedConfig.type), request bodies are stored without model validation');
|
|
27
|
+
}
|
|
23
28
|
}
|
|
24
29
|
async create(data, user) {
|
|
25
30
|
data.id = guid_typescript_1.Guid.raw();
|
|
26
31
|
try {
|
|
27
32
|
this.permissionService.valid('create', user);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
await this.
|
|
32
|
-
|
|
33
|
+
const item = this.toModel(data);
|
|
34
|
+
(0, models_1.castModel)(item, 'create', user.permissions);
|
|
35
|
+
this.checkValidCreate(item, user.permissions);
|
|
36
|
+
await this.hashCredentials(item);
|
|
37
|
+
await this.repository.create(item, user);
|
|
38
|
+
return item.id;
|
|
33
39
|
}
|
|
34
40
|
catch (e) {
|
|
35
41
|
this._logger.error(e);
|
|
@@ -42,6 +48,9 @@ let CrudService = CrudService_1 = class CrudService {
|
|
|
42
48
|
});
|
|
43
49
|
try {
|
|
44
50
|
this.permissionService.valid('create', user);
|
|
51
|
+
data.forEach((item, index) => {
|
|
52
|
+
data[index] = this.toModel(item);
|
|
53
|
+
});
|
|
45
54
|
data.forEach((item) => {
|
|
46
55
|
(0, models_1.castModel)(item, 'create', user.permissions);
|
|
47
56
|
this.checkValidCreate(item, user.permissions);
|
|
@@ -94,10 +103,11 @@ let CrudService = CrudService_1 = class CrudService {
|
|
|
94
103
|
try {
|
|
95
104
|
data.id = id;
|
|
96
105
|
this.permissionService.valid('update', user);
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
await this.
|
|
106
|
+
const item = this.toModel(data);
|
|
107
|
+
(0, models_1.castModel)(item, 'update', user.permissions);
|
|
108
|
+
this.checkValidUpdate(item, user.permissions);
|
|
109
|
+
await this.hashCredentials(item);
|
|
110
|
+
await this.repository.update(item, user);
|
|
101
111
|
}
|
|
102
112
|
catch (e) {
|
|
103
113
|
this._logger.error(e);
|
|
@@ -106,8 +116,9 @@ let CrudService = CrudService_1 = class CrudService {
|
|
|
106
116
|
}
|
|
107
117
|
async updatePartial(id, data, user) {
|
|
108
118
|
try {
|
|
109
|
-
// Same object, now known to carry the id
|
|
110
|
-
|
|
119
|
+
// Same object, now known to carry the id, turned into a model instance
|
|
120
|
+
// so the field metadata is there for the validation below.
|
|
121
|
+
const item = this.toModel(Object.assign(data, { id }));
|
|
111
122
|
this.permissionService.valid('update', user);
|
|
112
123
|
(0, models_1.castModel)(item, 'update', user.permissions);
|
|
113
124
|
this.checkValidUpdatePartial(item, user.permissions);
|
|
@@ -140,8 +151,10 @@ let CrudService = CrudService_1 = class CrudService {
|
|
|
140
151
|
start: 0,
|
|
141
152
|
end: options.start - 1,
|
|
142
153
|
});
|
|
143
|
-
const combinedStream =
|
|
154
|
+
const combinedStream = combined_stream_1.default.create();
|
|
144
155
|
combinedStream.append(stream);
|
|
156
|
+
// The upload payload keeps the wide Stream type the repository accepts,
|
|
157
|
+
// but what arrives here is the readable busboy hands over.
|
|
145
158
|
combinedStream.append(data.stream);
|
|
146
159
|
data.stream = combinedStream;
|
|
147
160
|
data.id = utils_1.GuidService.create();
|
|
@@ -177,6 +190,25 @@ let CrudService = CrudService_1 = class CrudService {
|
|
|
177
190
|
const credentials = item;
|
|
178
191
|
delete credentials.password;
|
|
179
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* Turns a plain request body into an instance of the configured model type so
|
|
195
|
+
* that the model metadata used by castModel and getInvalidFields is available.
|
|
196
|
+
* The instance keeps only the keys the payload carried, because a new instance
|
|
197
|
+
* declares every field as an own key.
|
|
198
|
+
*/
|
|
199
|
+
toModel(data) {
|
|
200
|
+
const type = this.config?.type;
|
|
201
|
+
if (!type || !data || data instanceof type)
|
|
202
|
+
return data;
|
|
203
|
+
const keys = Object.keys(data);
|
|
204
|
+
const model = Object.assign(new type(), data);
|
|
205
|
+
Object.keys(model)
|
|
206
|
+
.filter((key) => !keys.some((payloadKey) => payloadKey === key))
|
|
207
|
+
.forEach((key) => {
|
|
208
|
+
delete model[key];
|
|
209
|
+
});
|
|
210
|
+
return model;
|
|
211
|
+
}
|
|
180
212
|
checkValidCreate(item, permissions) {
|
|
181
213
|
const array = (0, models_1.getInvalidFields)(item, 'create', permissions);
|
|
182
214
|
if (array.length) {
|
|
@@ -208,8 +240,10 @@ tslib_1.__decorate([
|
|
|
208
240
|
], CrudService.prototype, "getAttachmentInfo", null);
|
|
209
241
|
exports.CrudService = CrudService = CrudService_1 = tslib_1.__decorate([
|
|
210
242
|
(0, common_1.Injectable)(),
|
|
243
|
+
tslib_1.__param(3, (0, common_1.Optional)()),
|
|
211
244
|
tslib_1.__metadata("design:paramtypes", [nestjs_1.PermissionService,
|
|
212
245
|
domain_core_1.IItemRepository,
|
|
213
|
-
domain_core_1.IAttachmentRepository
|
|
246
|
+
domain_core_1.IAttachmentRepository,
|
|
247
|
+
nestjs_1.SharedConfig])
|
|
214
248
|
], CrudService);
|
|
215
249
|
//# sourceMappingURL=crud.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud.service.js","sourceRoot":"","sources":["../../../../../../../../../packages/crud/shell/app-services/src/lib/services/crud/crud.service.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"crud.service.js","sourceRoot":"","sources":["../../../../../../../../../packages/crud/shell/app-services/src/lib/services/crud/crud.service.ts"],"names":[],"mappings":"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"}
|