@nmshd/consumption 2.0.0-alpha.18 → 2.0.0-alpha.20
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/dist/buildInformation.js +5 -5
- package/dist/consumption/ConsumptionErrors.d.ts +1 -0
- package/dist/consumption/ConsumptionErrors.js +3 -0
- package/dist/consumption/ConsumptionErrors.js.map +1 -1
- package/dist/modules/attributes/ConsumptionAttributesController.d.ts +2 -0
- package/dist/modules/attributes/ConsumptionAttributesController.js +13 -2
- package/dist/modules/attributes/ConsumptionAttributesController.js.map +1 -1
- package/dist/modules/attributes/CreateRelationshipAttributeParams.d.ts +14 -0
- package/dist/modules/attributes/CreateRelationshipAttributeParams.js +40 -0
- package/dist/modules/attributes/CreateRelationshipAttributeParams.js.map +1 -0
- package/dist/modules/drafts/DraftsController.js.map +1 -1
- package/dist/modules/index.d.ts +2 -0
- package/dist/modules/index.js +2 -0
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.d.ts +7 -0
- package/dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js +20 -0
- package/dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js.map +1 -0
- package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.d.ts +10 -0
- package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js +48 -0
- package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js.map +1 -0
- package/dist/modules/requests/itemProcessors/readAttribute/AcceptReadAttributeRequestItemParameters.d.ts +6 -2
- package/dist/modules/requests/itemProcessors/readAttribute/AcceptReadAttributeRequestItemParameters.js +21 -3
- package/dist/modules/requests/itemProcessors/readAttribute/AcceptReadAttributeRequestItemParameters.js.map +1 -1
- package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.d.ts +2 -0
- package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js +41 -12
- package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js.map +1 -1
- package/dist/modules/settings/SettingsController.js.map +1 -1
- package/lib-web/nmshd.consumption.js +223 -22
- package/lib-web/nmshd.consumption.js.map +1 -1
- package/lib-web/nmshd.consumption.min.js +1 -1
- package/lib-web/nmshd.consumption.min.js.map +1 -1
- package/package.json +7 -6
|
@@ -17,11 +17,11 @@ const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
|
|
|
17
17
|
const crypto_1 = __webpack_require__(/*! @nmshd/crypto */ "@nmshd/crypto");
|
|
18
18
|
const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
|
|
19
19
|
exports.buildInformation = {
|
|
20
|
-
version: "2.0.0-alpha.
|
|
21
|
-
build: "
|
|
22
|
-
date: "2022-
|
|
23
|
-
commit: "
|
|
24
|
-
dependencies: {"@js-soft/docdb-querytranslator":"^1.0.1"},
|
|
20
|
+
version: "2.0.0-alpha.20",
|
|
21
|
+
build: "38",
|
|
22
|
+
date: "2022-06-03T14:09:16+00:00",
|
|
23
|
+
commit: "217c674042d281ad67bd13607f6307b9ecebfee9",
|
|
24
|
+
dependencies: {"@js-soft/docdb-querytranslator":"^1.0.1","ts-simple-nameof":"^1.3.1"},
|
|
25
25
|
libraries: {
|
|
26
26
|
transport: transport_1.buildInformation,
|
|
27
27
|
crypto: crypto_1.buildInformation,
|
|
@@ -171,6 +171,9 @@ class Requests {
|
|
|
171
171
|
unexpectedErrorDuringRequestItemProcessing(error) {
|
|
172
172
|
return new transport_1.CoreError("error.consumption.requests.unexpectedErrorDuringRequestItemProcessing", error instanceof Error ? error.message : "Unknown error: '${JSON.stringify(e)'");
|
|
173
173
|
}
|
|
174
|
+
cannotSendCreateAttributeRequestItemsWithIdentityAttributes() {
|
|
175
|
+
return new transport_1.CoreError("error.consumption.requests.cannotSendCreateAttributeRequestItemsWithIdentityAttributes", "You cannot send a CreateAttributeRequestItem with an Identity Attribute. Consider using a ProposeAttributeRequestItem instead.");
|
|
176
|
+
}
|
|
174
177
|
canOnlyShareOwnAttributes() {
|
|
175
178
|
return new transport_1.CoreError("error.consumption.requests.canOnlyShareOwnAttributes", "The given Attribute belongs to someone else. You can only share own Attributes.");
|
|
176
179
|
}
|
|
@@ -296,6 +299,7 @@ exports.ConsumptionAttributesController = void 0;
|
|
|
296
299
|
const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
|
|
297
300
|
const ts_simple_nameof_1 = __webpack_require__(/*! ts-simple-nameof */ "./node_modules/ts-simple-nameof/index.js");
|
|
298
301
|
const consumption_1 = __webpack_require__(/*! ../../consumption */ "./dist/consumption/index.js");
|
|
302
|
+
const CreateRelationshipAttributeParams_1 = __webpack_require__(/*! ./CreateRelationshipAttributeParams */ "./dist/modules/attributes/CreateRelationshipAttributeParams.js");
|
|
299
303
|
const CreateSharedConsumptionAttributeCopyParams_1 = __webpack_require__(/*! ./CreateSharedConsumptionAttributeCopyParams */ "./dist/modules/attributes/CreateSharedConsumptionAttributeCopyParams.js");
|
|
300
304
|
const ConsumptionAttribute_1 = __webpack_require__(/*! ./local/ConsumptionAttribute */ "./dist/modules/attributes/local/ConsumptionAttribute.js");
|
|
301
305
|
const ConsumptionAttributeShareInfo_1 = __webpack_require__(/*! ./local/ConsumptionAttributeShareInfo */ "./dist/modules/attributes/local/ConsumptionAttributeShareInfo.js");
|
|
@@ -379,14 +383,14 @@ class ConsumptionAttributesController extends consumption_1.ConsumptionBaseContr
|
|
|
379
383
|
queryWithType["attributeType"] = "RelationshipAttribute";
|
|
380
384
|
const dbQuery = QueryTranslator_1.relationshipQueryTranslator.parse(queryWithType);
|
|
381
385
|
const attributes = await this.attributes.find(dbQuery);
|
|
382
|
-
return attributes;
|
|
386
|
+
return await this.parseArray(attributes, ConsumptionAttribute_1.ConsumptionAttribute);
|
|
383
387
|
}
|
|
384
388
|
async executeIdentityAttributeQuery(params) {
|
|
385
389
|
const queryWithType = params.query;
|
|
386
390
|
queryWithType["attributeType"] = "IdentityAttribute";
|
|
387
391
|
const dbQuery = QueryTranslator_1.identityQueryTranslator.parse(queryWithType);
|
|
388
392
|
const attributes = await this.attributes.find(dbQuery);
|
|
389
|
-
return attributes;
|
|
393
|
+
return await this.parseArray(attributes, ConsumptionAttribute_1.ConsumptionAttribute);
|
|
390
394
|
}
|
|
391
395
|
async createConsumptionAttribute(params) {
|
|
392
396
|
const consumptionAttribute = await ConsumptionAttribute_1.ConsumptionAttribute.fromAttribute(params.content);
|
|
@@ -412,6 +416,16 @@ class ConsumptionAttributesController extends consumption_1.ConsumptionBaseContr
|
|
|
412
416
|
await this.attributes.create(successor);
|
|
413
417
|
return successor;
|
|
414
418
|
}
|
|
419
|
+
async createRelationshipAttribute(params) {
|
|
420
|
+
const parsedParams = CreateRelationshipAttributeParams_1.CreateRelationshipAttributeParams.from(params);
|
|
421
|
+
const shareInfo = ConsumptionAttributeShareInfo_1.ConsumptionAttributeShareInfo.from({
|
|
422
|
+
peer: parsedParams.peer,
|
|
423
|
+
requestReference: parsedParams.requestReference
|
|
424
|
+
});
|
|
425
|
+
const sharedConsumptionAttribute = await ConsumptionAttribute_1.ConsumptionAttribute.fromAttribute(params.content, undefined, shareInfo);
|
|
426
|
+
await this.attributes.create(sharedConsumptionAttribute);
|
|
427
|
+
return sharedConsumptionAttribute;
|
|
428
|
+
}
|
|
415
429
|
async createSharedConsumptionAttributeCopy(params) {
|
|
416
430
|
const parsedParams = CreateSharedConsumptionAttributeCopyParams_1.CreateSharedConsumptionAttributeCopyParams.from(params);
|
|
417
431
|
const sourceAttribute = await this.getConsumptionAttribute(parsedParams.attributeId);
|
|
@@ -556,6 +570,56 @@ exports.CreatePeerConsumptionAttributeParams = CreatePeerConsumptionAttributePar
|
|
|
556
570
|
|
|
557
571
|
/***/ }),
|
|
558
572
|
|
|
573
|
+
/***/ "./dist/modules/attributes/CreateRelationshipAttributeParams.js":
|
|
574
|
+
/*!**********************************************************************!*\
|
|
575
|
+
!*** ./dist/modules/attributes/CreateRelationshipAttributeParams.js ***!
|
|
576
|
+
\**********************************************************************/
|
|
577
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
578
|
+
|
|
579
|
+
"use strict";
|
|
580
|
+
|
|
581
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
582
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
583
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
584
|
+
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;
|
|
585
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
586
|
+
};
|
|
587
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
588
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
589
|
+
};
|
|
590
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
591
|
+
exports.CreateRelationshipAttributeParams = void 0;
|
|
592
|
+
const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
|
|
593
|
+
const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
|
|
594
|
+
const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
|
|
595
|
+
let CreateRelationshipAttributeParams = class CreateRelationshipAttributeParams extends ts_serval_1.Serializable {
|
|
596
|
+
static from(value) {
|
|
597
|
+
return this.fromAny(value);
|
|
598
|
+
}
|
|
599
|
+
};
|
|
600
|
+
__decorate([
|
|
601
|
+
(0, ts_serval_1.serialize)(),
|
|
602
|
+
(0, ts_serval_1.validate)(),
|
|
603
|
+
__metadata("design:type", content_1.RelationshipAttribute)
|
|
604
|
+
], CreateRelationshipAttributeParams.prototype, "content", void 0);
|
|
605
|
+
__decorate([
|
|
606
|
+
(0, ts_serval_1.serialize)(),
|
|
607
|
+
(0, ts_serval_1.validate)(),
|
|
608
|
+
__metadata("design:type", transport_1.CoreAddress)
|
|
609
|
+
], CreateRelationshipAttributeParams.prototype, "peer", void 0);
|
|
610
|
+
__decorate([
|
|
611
|
+
(0, ts_serval_1.serialize)(),
|
|
612
|
+
(0, ts_serval_1.validate)(),
|
|
613
|
+
__metadata("design:type", transport_1.CoreId)
|
|
614
|
+
], CreateRelationshipAttributeParams.prototype, "requestReference", void 0);
|
|
615
|
+
CreateRelationshipAttributeParams = __decorate([
|
|
616
|
+
(0, ts_serval_1.type)("CreateRelationshipAttributeParams")
|
|
617
|
+
], CreateRelationshipAttributeParams);
|
|
618
|
+
exports.CreateRelationshipAttributeParams = CreateRelationshipAttributeParams;
|
|
619
|
+
//# sourceMappingURL=CreateRelationshipAttributeParams.js.map
|
|
620
|
+
|
|
621
|
+
/***/ }),
|
|
622
|
+
|
|
559
623
|
/***/ "./dist/modules/attributes/CreateSharedConsumptionAttributeCopyParams.js":
|
|
560
624
|
/*!*******************************************************************************!*\
|
|
561
625
|
!*** ./dist/modules/attributes/CreateSharedConsumptionAttributeCopyParams.js ***!
|
|
@@ -1191,6 +1255,8 @@ __exportStar(__webpack_require__(/*! ./requests/incoming/IncomingRequestsControl
|
|
|
1191
1255
|
__exportStar(__webpack_require__(/*! ./requests/incoming/received/ReceivedIncomingRequestParameters */ "./dist/modules/requests/incoming/received/ReceivedIncomingRequestParameters.js"), exports);
|
|
1192
1256
|
__exportStar(__webpack_require__(/*! ./requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters */ "./dist/modules/requests/incoming/requireManualDecision/RequireManualDecisionOfIncomingRequestParameters.js"), exports);
|
|
1193
1257
|
__exportStar(__webpack_require__(/*! ./requests/itemProcessors/AbstractRequestItemProcessor */ "./dist/modules/requests/itemProcessors/AbstractRequestItemProcessor.js"), exports);
|
|
1258
|
+
__exportStar(__webpack_require__(/*! ./requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters */ "./dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js"), exports);
|
|
1259
|
+
__exportStar(__webpack_require__(/*! ./requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor */ "./dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js"), exports);
|
|
1194
1260
|
__exportStar(__webpack_require__(/*! ./requests/itemProcessors/GenericRequestItemProcessor */ "./dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js"), exports);
|
|
1195
1261
|
__exportStar(__webpack_require__(/*! ./requests/itemProcessors/IRequestItemProcessor */ "./dist/modules/requests/itemProcessors/IRequestItemProcessor.js"), exports);
|
|
1196
1262
|
__exportStar(__webpack_require__(/*! ./requests/itemProcessors/ProcessorConstructor */ "./dist/modules/requests/itemProcessors/ProcessorConstructor.js"), exports);
|
|
@@ -2074,6 +2140,94 @@ exports.ErrorValidationResult = ErrorValidationResult;
|
|
|
2074
2140
|
|
|
2075
2141
|
/***/ }),
|
|
2076
2142
|
|
|
2143
|
+
/***/ "./dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js":
|
|
2144
|
+
/*!************************************************************************************************************!*\
|
|
2145
|
+
!*** ./dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js ***!
|
|
2146
|
+
\************************************************************************************************************/
|
|
2147
|
+
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
2148
|
+
|
|
2149
|
+
"use strict";
|
|
2150
|
+
|
|
2151
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2152
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
2153
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
2154
|
+
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;
|
|
2155
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
2156
|
+
};
|
|
2157
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
2158
|
+
exports.AcceptCreateAttributeRequestItemParameters = void 0;
|
|
2159
|
+
const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
|
|
2160
|
+
let AcceptCreateAttributeRequestItemParameters = class AcceptCreateAttributeRequestItemParameters extends ts_serval_1.Serializable {
|
|
2161
|
+
static from(value) {
|
|
2162
|
+
return this.fromAny(value);
|
|
2163
|
+
}
|
|
2164
|
+
};
|
|
2165
|
+
AcceptCreateAttributeRequestItemParameters = __decorate([
|
|
2166
|
+
(0, ts_serval_1.type)("AcceptCreateAttributeRequestItemParameters")
|
|
2167
|
+
], AcceptCreateAttributeRequestItemParameters);
|
|
2168
|
+
exports.AcceptCreateAttributeRequestItemParameters = AcceptCreateAttributeRequestItemParameters;
|
|
2169
|
+
//# sourceMappingURL=AcceptCreateAttributeRequestItemParameters.js.map
|
|
2170
|
+
|
|
2171
|
+
/***/ }),
|
|
2172
|
+
|
|
2173
|
+
/***/ "./dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js":
|
|
2174
|
+
/*!*****************************************************************************************************!*\
|
|
2175
|
+
!*** ./dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js ***!
|
|
2176
|
+
\*****************************************************************************************************/
|
|
2177
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
2178
|
+
|
|
2179
|
+
"use strict";
|
|
2180
|
+
|
|
2181
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
2182
|
+
exports.CreateAttributeRequestItemProcessor = void 0;
|
|
2183
|
+
const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
|
|
2184
|
+
const consumption_1 = __webpack_require__(/*! ../../../../consumption */ "./dist/consumption/index.js");
|
|
2185
|
+
const GenericRequestItemProcessor_1 = __webpack_require__(/*! ../GenericRequestItemProcessor */ "./dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js");
|
|
2186
|
+
const ValidationResult_1 = __webpack_require__(/*! ../ValidationResult */ "./dist/modules/requests/itemProcessors/ValidationResult.js");
|
|
2187
|
+
class CreateAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
|
|
2188
|
+
canCreateOutgoingRequestItem(requestItem) {
|
|
2189
|
+
// TODO: remove the following if we for sure only allow RelationshipAttributes in a RequestItem
|
|
2190
|
+
if (requestItem.attribute instanceof content_1.IdentityAttribute) {
|
|
2191
|
+
// It doesn't make sense to send a CreateAttributeRequestItem with an IdentityAttribute. E.g. the following cases would have to be handled:
|
|
2192
|
+
// - The RequestItem contains an Attribute (e.g. GivenName) with the same value as an already existing Attribute
|
|
2193
|
+
// => Should the user reject the request? If not, do we save a new Attribute with the same value?
|
|
2194
|
+
// - The RequestItem contains an Attribute (e.g. GivenName) with the a different value than an already existing Attribute
|
|
2195
|
+
// - ...
|
|
2196
|
+
return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.cannotSendCreateAttributeRequestItemsWithIdentityAttributes());
|
|
2197
|
+
}
|
|
2198
|
+
return ValidationResult_1.ValidationResult.success();
|
|
2199
|
+
}
|
|
2200
|
+
async accept(requestItem, _params, request) {
|
|
2201
|
+
if (requestItem.attribute instanceof content_1.IdentityAttribute) {
|
|
2202
|
+
throw new Error("IdentityAttribute not supported"); // TODO: allow only Relationship Attributes in RequestItem?
|
|
2203
|
+
}
|
|
2204
|
+
const result = await this.consumptionController.attributes.createRelationshipAttribute({
|
|
2205
|
+
content: requestItem.attribute,
|
|
2206
|
+
peer: request.peer,
|
|
2207
|
+
requestReference: request.id
|
|
2208
|
+
});
|
|
2209
|
+
return content_1.CreateAttributeAcceptResponseItem.from({
|
|
2210
|
+
result: content_1.ResponseItemResult.Accepted,
|
|
2211
|
+
attributeId: result.id
|
|
2212
|
+
});
|
|
2213
|
+
}
|
|
2214
|
+
async applyIncomingResponseItem(responseItem, requestItem, request) {
|
|
2215
|
+
if (!(responseItem instanceof content_1.CreateAttributeAcceptResponseItem)) {
|
|
2216
|
+
return;
|
|
2217
|
+
}
|
|
2218
|
+
await this.consumptionController.attributes.createPeerConsumptionAttribute({
|
|
2219
|
+
id: responseItem.attributeId,
|
|
2220
|
+
content: requestItem.attribute,
|
|
2221
|
+
peer: request.peer,
|
|
2222
|
+
requestReference: request.id
|
|
2223
|
+
});
|
|
2224
|
+
}
|
|
2225
|
+
}
|
|
2226
|
+
exports.CreateAttributeRequestItemProcessor = CreateAttributeRequestItemProcessor;
|
|
2227
|
+
//# sourceMappingURL=CreateAttributeRequestItemProcessor.js.map
|
|
2228
|
+
|
|
2229
|
+
/***/ }),
|
|
2230
|
+
|
|
2077
2231
|
/***/ "./dist/modules/requests/itemProcessors/readAttribute/AcceptReadAttributeRequestItemParameters.js":
|
|
2078
2232
|
/*!********************************************************************************************************!*\
|
|
2079
2233
|
!*** ./dist/modules/requests/itemProcessors/readAttribute/AcceptReadAttributeRequestItemParameters.js ***!
|
|
@@ -2091,21 +2245,39 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
2091
2245
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
2092
2246
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
2093
2247
|
};
|
|
2248
|
+
var AcceptReadAttributeRequestItemParameters_1;
|
|
2094
2249
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
2095
2250
|
exports.AcceptReadAttributeRequestItemParameters = void 0;
|
|
2096
2251
|
const ts_serval_1 = __webpack_require__(/*! @js-soft/ts-serval */ "@js-soft/ts-serval");
|
|
2252
|
+
const content_1 = __webpack_require__(/*! @nmshd/content */ "@nmshd/content");
|
|
2097
2253
|
const transport_1 = __webpack_require__(/*! @nmshd/transport */ "@nmshd/transport");
|
|
2098
|
-
|
|
2254
|
+
const ts_simple_nameof_1 = __webpack_require__(/*! ts-simple-nameof */ "./node_modules/ts-simple-nameof/index.js");
|
|
2255
|
+
let AcceptReadAttributeRequestItemParameters = AcceptReadAttributeRequestItemParameters_1 = class AcceptReadAttributeRequestItemParameters extends ts_serval_1.Serializable {
|
|
2099
2256
|
static from(value) {
|
|
2100
2257
|
return this.fromAny(value);
|
|
2101
2258
|
}
|
|
2259
|
+
static postFrom(value) {
|
|
2260
|
+
const typedValue = value;
|
|
2261
|
+
if (typedValue.attributeId && typedValue.attribute) {
|
|
2262
|
+
throw new ts_serval_1.ValidationError(AcceptReadAttributeRequestItemParameters_1.name, (0, ts_simple_nameof_1.nameof)((x) => x.attribute), `You cannot specify both ${(0, ts_simple_nameof_1.nameof)((x) => x.attribute)} and ${(0, ts_simple_nameof_1.nameof)((x) => x.attributeId)}.`);
|
|
2263
|
+
}
|
|
2264
|
+
if (!typedValue.attributeId && !typedValue.attribute) {
|
|
2265
|
+
throw new ts_serval_1.ValidationError(AcceptReadAttributeRequestItemParameters_1.name, (0, ts_simple_nameof_1.nameof)((x) => x.attribute), `You have to specify either ${(0, ts_simple_nameof_1.nameof)((x) => x.attribute)} or ${(0, ts_simple_nameof_1.nameof)((x) => x.attributeId)}.`);
|
|
2266
|
+
}
|
|
2267
|
+
return value;
|
|
2268
|
+
}
|
|
2102
2269
|
};
|
|
2103
2270
|
__decorate([
|
|
2104
2271
|
(0, ts_serval_1.serialize)(),
|
|
2105
|
-
(0, ts_serval_1.validate)(),
|
|
2272
|
+
(0, ts_serval_1.validate)({ nullable: true }),
|
|
2106
2273
|
__metadata("design:type", transport_1.CoreId)
|
|
2107
2274
|
], AcceptReadAttributeRequestItemParameters.prototype, "attributeId", void 0);
|
|
2108
|
-
|
|
2275
|
+
__decorate([
|
|
2276
|
+
(0, ts_serval_1.serialize)({ unionTypes: [content_1.IdentityAttribute, content_1.RelationshipAttribute] }),
|
|
2277
|
+
(0, ts_serval_1.validate)({ nullable: true }),
|
|
2278
|
+
__metadata("design:type", Object)
|
|
2279
|
+
], AcceptReadAttributeRequestItemParameters.prototype, "attribute", void 0);
|
|
2280
|
+
AcceptReadAttributeRequestItemParameters = AcceptReadAttributeRequestItemParameters_1 = __decorate([
|
|
2109
2281
|
(0, ts_serval_1.type)("AcceptReadAttributeRequestItemParameters")
|
|
2110
2282
|
], AcceptReadAttributeRequestItemParameters);
|
|
2111
2283
|
exports.AcceptReadAttributeRequestItemParameters = AcceptReadAttributeRequestItemParameters;
|
|
@@ -2133,25 +2305,54 @@ const AcceptReadAttributeRequestItemParameters_1 = __webpack_require__(/*! ./Acc
|
|
|
2133
2305
|
class ReadAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
|
|
2134
2306
|
async canAccept(_requestItem, params, request) {
|
|
2135
2307
|
const parsedParams = AcceptReadAttributeRequestItemParameters_1.AcceptReadAttributeRequestItemParameters.from(params);
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2308
|
+
if (parsedParams.attributeId) {
|
|
2309
|
+
const foundAttribute = await this.consumptionController.attributes.getConsumptionAttribute(parsedParams.attributeId);
|
|
2310
|
+
if (!foundAttribute) {
|
|
2311
|
+
return ValidationResult_1.ValidationResult.error(transport_1.TransportErrors.general.recordNotFound(ConsumptionAttribute_1.ConsumptionAttribute, request.id.toString()));
|
|
2312
|
+
}
|
|
2313
|
+
if (!this.consumptionController.accountController.identity.isMe(foundAttribute.content.owner)) {
|
|
2314
|
+
return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.canOnlyShareOwnAttributes());
|
|
2315
|
+
}
|
|
2142
2316
|
}
|
|
2143
2317
|
return ValidationResult_1.ValidationResult.success();
|
|
2144
2318
|
}
|
|
2145
2319
|
async accept(_requestItem, params, request) {
|
|
2146
|
-
const
|
|
2147
|
-
|
|
2320
|
+
const parsedParams = AcceptReadAttributeRequestItemParameters_1.AcceptReadAttributeRequestItemParameters.from(params);
|
|
2321
|
+
let sharedConsumptionAttribute;
|
|
2322
|
+
if (parsedParams.attributeId) {
|
|
2323
|
+
sharedConsumptionAttribute = await this.copyExistingAttribute(parsedParams.attributeId, request);
|
|
2324
|
+
}
|
|
2325
|
+
else {
|
|
2326
|
+
sharedConsumptionAttribute = await this.createNewAttribute(parsedParams.attribute, request);
|
|
2327
|
+
}
|
|
2328
|
+
return content_1.ReadAttributeAcceptResponseItem.from({
|
|
2329
|
+
result: content_1.ResponseItemResult.Accepted,
|
|
2330
|
+
attributeId: sharedConsumptionAttribute.id,
|
|
2331
|
+
attribute: sharedConsumptionAttribute.content
|
|
2332
|
+
});
|
|
2333
|
+
}
|
|
2334
|
+
async copyExistingAttribute(attributeId, request) {
|
|
2335
|
+
return await this.consumptionController.attributes.createSharedConsumptionAttributeCopy({
|
|
2336
|
+
attributeId: transport_1.CoreId.from(attributeId),
|
|
2148
2337
|
peer: transport_1.CoreAddress.from(request.peer),
|
|
2149
2338
|
requestReference: transport_1.CoreId.from(request.id)
|
|
2150
2339
|
});
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2340
|
+
}
|
|
2341
|
+
async createNewAttribute(attribute, request) {
|
|
2342
|
+
if (attribute instanceof content_1.IdentityAttribute) {
|
|
2343
|
+
const repositoryConsumptionAttribute = await this.consumptionController.attributes.createConsumptionAttribute({
|
|
2344
|
+
content: attribute
|
|
2345
|
+
});
|
|
2346
|
+
return await this.consumptionController.attributes.createSharedConsumptionAttributeCopy({
|
|
2347
|
+
attributeId: transport_1.CoreId.from(repositoryConsumptionAttribute.id),
|
|
2348
|
+
peer: transport_1.CoreAddress.from(request.peer),
|
|
2349
|
+
requestReference: transport_1.CoreId.from(request.id)
|
|
2350
|
+
});
|
|
2351
|
+
}
|
|
2352
|
+
return await this.consumptionController.attributes.createRelationshipAttribute({
|
|
2353
|
+
content: attribute,
|
|
2354
|
+
peer: request.peer,
|
|
2355
|
+
requestReference: transport_1.CoreId.from(request.id)
|
|
2155
2356
|
});
|
|
2156
2357
|
}
|
|
2157
2358
|
async applyIncomingResponseItem(responseItem, _requestItem, request) {
|