@nmshd/consumption 7.0.0-alpha.1 → 7.0.0-alpha.11
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/README.md +1 -1
- package/dist/buildInformation.js +5 -5
- package/dist/consumption/ConsumptionController.d.ts.map +1 -1
- package/dist/consumption/ConsumptionController.js +3 -1
- package/dist/consumption/ConsumptionController.js.map +1 -1
- package/dist/consumption/ConsumptionCoreErrors.d.ts +1 -0
- package/dist/consumption/ConsumptionCoreErrors.d.ts.map +1 -1
- package/dist/consumption/ConsumptionCoreErrors.js +3 -0
- package/dist/consumption/ConsumptionCoreErrors.js.map +1 -1
- package/dist/consumption/ConsumptionIds.d.ts +1 -1
- package/dist/consumption/ConsumptionIds.d.ts.map +1 -1
- package/dist/consumption/ConsumptionIds.js +8 -8
- package/dist/consumption/ConsumptionIds.js.map +1 -1
- package/dist/modules/attributes/AttributesController.d.ts +23 -7
- package/dist/modules/attributes/AttributesController.d.ts.map +1 -1
- package/dist/modules/attributes/AttributesController.js +179 -55
- package/dist/modules/attributes/AttributesController.js.map +1 -1
- package/dist/modules/attributes/local/LocalAttribute.d.ts +1 -0
- package/dist/modules/attributes/local/LocalAttribute.d.ts.map +1 -1
- package/dist/modules/attributes/local/LocalAttribute.js.map +1 -1
- package/dist/modules/attributes/local/QueryTranslator.d.ts.map +1 -1
- package/dist/modules/attributes/local/QueryTranslator.js +0 -71
- package/dist/modules/attributes/local/QueryTranslator.js.map +1 -1
- package/dist/modules/identityMetadata/local/IdentityMetadata.d.ts +1 -0
- package/dist/modules/identityMetadata/local/IdentityMetadata.d.ts.map +1 -1
- package/dist/modules/identityMetadata/local/IdentityMetadata.js.map +1 -1
- package/dist/modules/requests/index.d.ts +3 -0
- package/dist/modules/requests/index.d.ts.map +1 -1
- package/dist/modules/requests/index.js +3 -0
- package/dist/modules/requests/index.js.map +1 -1
- package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.d.ts +0 -2
- package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.d.ts.map +1 -1
- package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js +25 -71
- package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js.map +1 -1
- package/dist/modules/requests/itemProcessors/formField/AcceptFormFieldRequestItemParameters.d.ts +10 -0
- package/dist/modules/requests/itemProcessors/formField/AcceptFormFieldRequestItemParameters.d.ts.map +1 -0
- package/dist/modules/requests/itemProcessors/formField/AcceptFormFieldRequestItemParameters.js +31 -0
- package/dist/modules/requests/itemProcessors/formField/AcceptFormFieldRequestItemParameters.js.map +1 -0
- package/dist/modules/requests/itemProcessors/formField/FormFieldRequestItemProcessor.d.ts +10 -0
- package/dist/modules/requests/itemProcessors/formField/FormFieldRequestItemProcessor.d.ts.map +1 -0
- package/dist/modules/requests/itemProcessors/formField/FormFieldRequestItemProcessor.js +34 -0
- package/dist/modules/requests/itemProcessors/formField/FormFieldRequestItemProcessor.js.map +1 -0
- package/dist/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.d.ts +2 -0
- package/dist/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.d.ts.map +1 -1
- package/dist/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.js +8 -0
- package/dist/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.js.map +1 -1
- package/dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.d.ts +1 -3
- package/dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.d.ts.map +1 -1
- package/dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.js +76 -63
- package/dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.js.map +1 -1
- package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.d.ts +0 -1
- package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.d.ts.map +1 -1
- package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js +36 -37
- package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js.map +1 -1
- package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.d.ts +4 -3
- package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.d.ts.map +1 -1
- package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.js +20 -2
- package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.js.map +1 -1
- package/dist/modules/requests/itemProcessors/transferFileOwnership/TransferFileOwnershipRequestItemProcessor.d.ts +13 -0
- package/dist/modules/requests/itemProcessors/transferFileOwnership/TransferFileOwnershipRequestItemProcessor.d.ts.map +1 -0
- package/dist/modules/requests/itemProcessors/transferFileOwnership/TransferFileOwnershipRequestItemProcessor.js +87 -0
- package/dist/modules/requests/itemProcessors/transferFileOwnership/TransferFileOwnershipRequestItemProcessor.js.map +1 -0
- package/dist/modules/requests/itemProcessors/utility/createAppropriateResponseItem.d.ts +7 -0
- package/dist/modules/requests/itemProcessors/utility/createAppropriateResponseItem.d.ts.map +1 -0
- package/dist/modules/requests/itemProcessors/utility/createAppropriateResponseItem.js +93 -0
- package/dist/modules/requests/itemProcessors/utility/createAppropriateResponseItem.js.map +1 -0
- package/dist/modules/requests/itemProcessors/utility/validateAttributeMatchesWithQuery.d.ts.map +1 -1
- package/dist/modules/requests/itemProcessors/utility/validateAttributeMatchesWithQuery.js +0 -10
- package/dist/modules/requests/itemProcessors/utility/validateAttributeMatchesWithQuery.js.map +1 -1
- package/package.json +8 -7
package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.CreateAttributeRequestItemProcessor = void 0;
|
|
4
7
|
const content_1 = require("@nmshd/content");
|
|
@@ -6,27 +9,33 @@ const ConsumptionCoreErrors_1 = require("../../../../consumption/ConsumptionCore
|
|
|
6
9
|
const attributes_1 = require("../../../attributes");
|
|
7
10
|
const ValidationResult_1 = require("../../../common/ValidationResult");
|
|
8
11
|
const GenericRequestItemProcessor_1 = require("../GenericRequestItemProcessor");
|
|
12
|
+
const createAppropriateResponseItem_1 = __importDefault(require("../utility/createAppropriateResponseItem"));
|
|
9
13
|
class CreateAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
|
|
10
14
|
async canCreateOutgoingRequestItem(requestItem, _request, recipient) {
|
|
11
15
|
const recipientIsAttributeOwner = requestItem.attribute.owner.equals(recipient);
|
|
12
16
|
const senderIsAttributeOwner = requestItem.attribute.owner.equals(this.currentIdentityAddress);
|
|
13
17
|
const ownerIsEmptyString = requestItem.attribute.owner.toString() === "";
|
|
14
18
|
if (requestItem.attribute instanceof content_1.IdentityAttribute) {
|
|
15
|
-
if (recipientIsAttributeOwner || ownerIsEmptyString) {
|
|
16
|
-
return ValidationResult_1.ValidationResult.success();
|
|
17
|
-
}
|
|
18
19
|
if (senderIsAttributeOwner) {
|
|
19
20
|
return ValidationResult_1.ValidationResult.error(ConsumptionCoreErrors_1.ConsumptionCoreErrors.requests.invalidRequestItem("Cannot create own IdentityAttributes with a CreateAttributeRequestItem. Use a ShareAttributeRequestItem instead."));
|
|
20
21
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
if (!(recipientIsAttributeOwner || ownerIsEmptyString)) {
|
|
23
|
+
return ValidationResult_1.ValidationResult.error(ConsumptionCoreErrors_1.ConsumptionCoreErrors.requests.invalidRequestItem("The owner of the provided IdentityAttribute for the `attribute` property can only be the address of the recipient or an empty string. The latter will default to the address of the recipient."));
|
|
24
|
+
}
|
|
25
|
+
const tagValidationResult = await this.consumptionController.attributes.validateTags(requestItem.attribute);
|
|
26
|
+
if (tagValidationResult.isError()) {
|
|
27
|
+
return ValidationResult_1.ValidationResult.error(ConsumptionCoreErrors_1.ConsumptionCoreErrors.requests.invalidRequestItem(tagValidationResult.error.message));
|
|
28
|
+
}
|
|
25
29
|
}
|
|
26
|
-
if (
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
if (requestItem.attribute instanceof content_1.RelationshipAttribute) {
|
|
31
|
+
if (!(recipientIsAttributeOwner || senderIsAttributeOwner || ownerIsEmptyString)) {
|
|
32
|
+
return ValidationResult_1.ValidationResult.error(ConsumptionCoreErrors_1.ConsumptionCoreErrors.requests.invalidRequestItem("The owner of the provided RelationshipAttribute for the `attribute` property can only be the address of the sender, the address of the recipient or an empty string. The latter will default to the address of the recipient."));
|
|
33
|
+
}
|
|
34
|
+
if (typeof recipient !== "undefined") {
|
|
35
|
+
const relationshipAttributesWithSameKey = await this.consumptionController.attributes.getRelationshipAttributesOfValueTypeToPeerWithGivenKeyAndOwner(requestItem.attribute.key, ownerIsEmptyString ? recipient : requestItem.attribute.owner, requestItem.attribute.value.toJSON()["@type"], recipient);
|
|
36
|
+
if (relationshipAttributesWithSameKey.length !== 0) {
|
|
37
|
+
return ValidationResult_1.ValidationResult.error(ConsumptionCoreErrors_1.ConsumptionCoreErrors.requests.invalidRequestItem(`The creation of the provided RelationshipAttribute cannot be requested because there is already a RelationshipAttribute in the context of this Relationship with the same key '${requestItem.attribute.key}', owner and value type.`));
|
|
38
|
+
}
|
|
30
39
|
}
|
|
31
40
|
}
|
|
32
41
|
return ValidationResult_1.ValidationResult.success();
|
|
@@ -42,6 +51,10 @@ class CreateAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.
|
|
|
42
51
|
return ValidationResult_1.ValidationResult.error(ConsumptionCoreErrors_1.ConsumptionCoreErrors.requests.invalidAcceptParameters(`This CreateAttributeRequestItem cannot be accepted as the provided RelationshipAttribute cannot be created because there is already a RelationshipAttribute in the context of this Relationship with the same key '${requestItem.attribute.key}', owner and value type.`));
|
|
43
52
|
}
|
|
44
53
|
}
|
|
54
|
+
const tagValidationResult = await this.consumptionController.attributes.validateTags(requestItem.attribute);
|
|
55
|
+
if (tagValidationResult.isError()) {
|
|
56
|
+
return ValidationResult_1.ValidationResult.error(ConsumptionCoreErrors_1.ConsumptionCoreErrors.requests.invalidRequestItem(tagValidationResult.error.message));
|
|
57
|
+
}
|
|
45
58
|
return ValidationResult_1.ValidationResult.success();
|
|
46
59
|
}
|
|
47
60
|
async accept(requestItem, _params, requestInfo) {
|
|
@@ -59,66 +72,7 @@ class CreateAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.
|
|
|
59
72
|
attributeId: sharedRelationshipAttribute.id
|
|
60
73
|
});
|
|
61
74
|
}
|
|
62
|
-
|
|
63
|
-
const latestSharedVersions = await this.consumptionController.attributes.getSharedVersionsOfAttribute(repositoryAttribute.id, [requestInfo.peer]);
|
|
64
|
-
const latestSharedVersion = latestSharedVersions.length > 0 ? latestSharedVersions[0] : undefined;
|
|
65
|
-
if (!latestSharedVersion) {
|
|
66
|
-
const newOwnSharedIdentityAttribute = await this.consumptionController.attributes.createSharedLocalAttributeCopy({
|
|
67
|
-
peer: requestInfo.peer,
|
|
68
|
-
requestReference: requestInfo.id,
|
|
69
|
-
sourceAttributeId: repositoryAttribute.id
|
|
70
|
-
});
|
|
71
|
-
return content_1.CreateAttributeAcceptResponseItem.from({
|
|
72
|
-
result: content_1.ResponseItemResult.Accepted,
|
|
73
|
-
attributeId: newOwnSharedIdentityAttribute.id
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
if (latestSharedVersion.shareInfo.sourceAttribute.equals(repositoryAttribute.id)) {
|
|
77
|
-
return content_1.AttributeAlreadySharedAcceptResponseItem.from({
|
|
78
|
-
result: content_1.ResponseItemResult.Accepted,
|
|
79
|
-
attributeId: latestSharedVersion.id
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
const ownSharedIdentityAttributeSuccessorParams = {
|
|
83
|
-
content: repositoryAttribute.content,
|
|
84
|
-
shareInfo: attributes_1.LocalAttributeShareInfo.from({
|
|
85
|
-
peer: requestInfo.peer,
|
|
86
|
-
requestReference: requestInfo.id,
|
|
87
|
-
sourceAttribute: repositoryAttribute.id
|
|
88
|
-
})
|
|
89
|
-
};
|
|
90
|
-
const ownSharedIdentityAttributesAfterSuccession = await this.consumptionController.attributes.succeedOwnSharedIdentityAttribute(latestSharedVersion.id, ownSharedIdentityAttributeSuccessorParams);
|
|
91
|
-
const succeededOwnSharedIdentityAttribute = ownSharedIdentityAttributesAfterSuccession.successor;
|
|
92
|
-
return content_1.AttributeSuccessionAcceptResponseItem.from({
|
|
93
|
-
result: content_1.ResponseItemResult.Accepted,
|
|
94
|
-
successorId: succeededOwnSharedIdentityAttribute.id,
|
|
95
|
-
successorContent: succeededOwnSharedIdentityAttribute.content,
|
|
96
|
-
predecessorId: latestSharedVersion.id
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
async getSourceRepositoryAttribute(attribute) {
|
|
100
|
-
const existingRepositoryAttribute = await this.consumptionController.attributes.getRepositoryAttributeWithSameValue(attribute.value.toJSON());
|
|
101
|
-
if (!existingRepositoryAttribute) {
|
|
102
|
-
return await this.consumptionController.attributes.createRepositoryAttribute({
|
|
103
|
-
content: attribute
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
const newTags = attribute.tags?.filter((tag) => !existingRepositoryAttribute.content.tags?.includes(tag));
|
|
107
|
-
if (!newTags || newTags.length === 0)
|
|
108
|
-
return existingRepositoryAttribute;
|
|
109
|
-
const succeededRepositoryAttribute = await this.mergeTagsOfRepositoryAttribute(existingRepositoryAttribute, newTags);
|
|
110
|
-
return succeededRepositoryAttribute;
|
|
111
|
-
}
|
|
112
|
-
async mergeTagsOfRepositoryAttribute(existingRepositoryAttribute, newTags) {
|
|
113
|
-
const repositoryAttributeSuccessorParams = {
|
|
114
|
-
content: {
|
|
115
|
-
...existingRepositoryAttribute.content.toJSON(),
|
|
116
|
-
tags: [...(existingRepositoryAttribute.content.tags ?? []), ...newTags]
|
|
117
|
-
},
|
|
118
|
-
succeeds: existingRepositoryAttribute.id.toString()
|
|
119
|
-
};
|
|
120
|
-
const repositoryAttributesAfterSuccession = await this.consumptionController.attributes.succeedRepositoryAttribute(existingRepositoryAttribute.id, repositoryAttributeSuccessorParams);
|
|
121
|
-
return repositoryAttributesAfterSuccession.successor;
|
|
75
|
+
return await (0, createAppropriateResponseItem_1.default)(requestItem.attribute, requestInfo, this.consumptionController.attributes, "Create");
|
|
122
76
|
}
|
|
123
77
|
async applyIncomingResponseItem(responseItem, requestItem, requestInfo) {
|
|
124
78
|
if (responseItem instanceof content_1.CreateAttributeAcceptResponseItem) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CreateAttributeRequestItemProcessor.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CreateAttributeRequestItemProcessor.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.ts"],"names":[],"mappings":"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"}
|
package/dist/modules/requests/itemProcessors/formField/AcceptFormFieldRequestItemParameters.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Serializable } from "@js-soft/ts-serval";
|
|
2
|
+
import { AcceptRequestItemParametersJSON } from "../../incoming/decide/AcceptRequestItemParameters";
|
|
3
|
+
export interface AcceptFormFieldRequestItemParametersJSON extends AcceptRequestItemParametersJSON {
|
|
4
|
+
response: string | number | boolean | string[];
|
|
5
|
+
}
|
|
6
|
+
export declare class AcceptFormFieldRequestItemParameters extends Serializable {
|
|
7
|
+
response: string | number | boolean | string[];
|
|
8
|
+
static from(value: AcceptFormFieldRequestItemParametersJSON): AcceptFormFieldRequestItemParameters;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=AcceptFormFieldRequestItemParameters.d.ts.map
|
package/dist/modules/requests/itemProcessors/formField/AcceptFormFieldRequestItemParameters.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcceptFormFieldRequestItemParameters.d.ts","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/formField/AcceptFormFieldRequestItemParameters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,YAAY,EAA6B,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,+BAA+B,EAAE,MAAM,mDAAmD,CAAC;AAEpG,MAAM,WAAW,wCAAyC,SAAQ,+BAA+B;IAC7F,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC;CAClD;AAED,qBACa,oCAAqC,SAAQ,YAAY;IAM3D,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC;WAExC,IAAI,CAAC,KAAK,EAAE,wCAAwC,GAAG,oCAAoC;CAG5G"}
|
package/dist/modules/requests/itemProcessors/formField/AcceptFormFieldRequestItemParameters.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.AcceptFormFieldRequestItemParameters = void 0;
|
|
13
|
+
const ts_serval_1 = require("@js-soft/ts-serval");
|
|
14
|
+
let AcceptFormFieldRequestItemParameters = class AcceptFormFieldRequestItemParameters extends ts_serval_1.Serializable {
|
|
15
|
+
static from(value) {
|
|
16
|
+
return this.fromAny(value);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
exports.AcceptFormFieldRequestItemParameters = AcceptFormFieldRequestItemParameters;
|
|
20
|
+
__decorate([
|
|
21
|
+
(0, ts_serval_1.serialize)({ any: true }),
|
|
22
|
+
(0, ts_serval_1.validate)({
|
|
23
|
+
allowedTypes: [ts_serval_1.PrimitiveType.String, ts_serval_1.PrimitiveType.Number, ts_serval_1.PrimitiveType.Boolean, ts_serval_1.PrimitiveType.Array],
|
|
24
|
+
customValidator: (v) => (Array.isArray(v) && !v.every((option) => typeof option === "string") ? "If the response is an array, it must be a string array." : undefined)
|
|
25
|
+
}),
|
|
26
|
+
__metadata("design:type", Object)
|
|
27
|
+
], AcceptFormFieldRequestItemParameters.prototype, "response", void 0);
|
|
28
|
+
exports.AcceptFormFieldRequestItemParameters = AcceptFormFieldRequestItemParameters = __decorate([
|
|
29
|
+
(0, ts_serval_1.type)("AcceptFormFieldRequestItemParameters")
|
|
30
|
+
], AcceptFormFieldRequestItemParameters);
|
|
31
|
+
//# sourceMappingURL=AcceptFormFieldRequestItemParameters.js.map
|
package/dist/modules/requests/itemProcessors/formField/AcceptFormFieldRequestItemParameters.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AcceptFormFieldRequestItemParameters.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/formField/AcceptFormFieldRequestItemParameters.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAA4F;AAQrF,IAAM,oCAAoC,GAA1C,MAAM,oCAAqC,SAAQ,wBAAY;IAQ3D,MAAM,CAAC,IAAI,CAAC,KAA+C;QAC9D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;CACJ,CAAA;AAXY,oFAAoC;AAMtC;IALN,IAAA,qBAAS,EAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACxB,IAAA,oBAAQ,EAAC;QACN,YAAY,EAAE,CAAC,yBAAa,CAAC,MAAM,EAAE,yBAAa,CAAC,MAAM,EAAE,yBAAa,CAAC,OAAO,EAAE,yBAAa,CAAC,KAAK,CAAC;QACtG,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,yDAAyD,CAAC,CAAC,CAAC,SAAS,CAAC;KACzK,CAAC;;sEACoD;+CAN7C,oCAAoC;IADhD,IAAA,gBAAI,EAAC,sCAAsC,CAAC;GAChC,oCAAoC,CAWhD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FormFieldAcceptResponseItem, FormFieldRequestItem, Request } from "@nmshd/content";
|
|
2
|
+
import { ValidationResult } from "../../../common/ValidationResult";
|
|
3
|
+
import { GenericRequestItemProcessor } from "../GenericRequestItemProcessor";
|
|
4
|
+
import { AcceptFormFieldRequestItemParametersJSON } from "./AcceptFormFieldRequestItemParameters";
|
|
5
|
+
export declare class FormFieldRequestItemProcessor extends GenericRequestItemProcessor<FormFieldRequestItem, AcceptFormFieldRequestItemParametersJSON> {
|
|
6
|
+
canCreateOutgoingRequestItem(requestItem: FormFieldRequestItem, _request: Request): ValidationResult;
|
|
7
|
+
canAccept(requestItem: FormFieldRequestItem, params: AcceptFormFieldRequestItemParametersJSON): ValidationResult;
|
|
8
|
+
accept(_requestItem: FormFieldRequestItem, params: AcceptFormFieldRequestItemParametersJSON): FormFieldAcceptResponseItem;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=FormFieldRequestItemProcessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormFieldRequestItemProcessor.d.ts","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/formField/FormFieldRequestItemProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,OAAO,EAAsB,MAAM,gBAAgB,CAAC;AAChH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAG7E,OAAO,EAAwC,wCAAwC,EAAE,MAAM,wCAAwC,CAAC;AAExI,qBAAa,6BAA8B,SAAQ,2BAA2B,CAAC,oBAAoB,EAAE,wCAAwC,CAAC;IAC1H,4BAA4B,CAAC,WAAW,EAAE,oBAAoB,EAAE,QAAQ,EAAE,OAAO,GAAG,gBAAgB;IASpG,SAAS,CAAC,WAAW,EAAE,oBAAoB,EAAE,MAAM,EAAE,wCAAwC,GAAG,gBAAgB;IAWhH,MAAM,CAAC,YAAY,EAAE,oBAAoB,EAAE,MAAM,EAAE,wCAAwC,GAAG,2BAA2B;CAQ5I"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FormFieldRequestItemProcessor = void 0;
|
|
4
|
+
const content_1 = require("@nmshd/content");
|
|
5
|
+
const ValidationResult_1 = require("../../../common/ValidationResult");
|
|
6
|
+
const GenericRequestItemProcessor_1 = require("../GenericRequestItemProcessor");
|
|
7
|
+
const ConsumptionCoreErrors_1 = require("../../../../consumption/ConsumptionCoreErrors");
|
|
8
|
+
const AcceptFormFieldRequestItemParameters_1 = require("./AcceptFormFieldRequestItemParameters");
|
|
9
|
+
class FormFieldRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
|
|
10
|
+
canCreateOutgoingRequestItem(requestItem, _request) {
|
|
11
|
+
const canCreateSettingsError = requestItem.settings.canCreate();
|
|
12
|
+
if (canCreateSettingsError) {
|
|
13
|
+
return ValidationResult_1.ValidationResult.error(ConsumptionCoreErrors_1.ConsumptionCoreErrors.requests.invalidRequestItem(canCreateSettingsError));
|
|
14
|
+
}
|
|
15
|
+
return ValidationResult_1.ValidationResult.success();
|
|
16
|
+
}
|
|
17
|
+
canAccept(requestItem, params) {
|
|
18
|
+
const parsedParams = AcceptFormFieldRequestItemParameters_1.AcceptFormFieldRequestItemParameters.from(params);
|
|
19
|
+
const canAcceptSettingsError = requestItem.settings.canAccept(parsedParams.response);
|
|
20
|
+
if (canAcceptSettingsError) {
|
|
21
|
+
return ValidationResult_1.ValidationResult.error(ConsumptionCoreErrors_1.ConsumptionCoreErrors.requests.invalidAcceptParameters(canAcceptSettingsError));
|
|
22
|
+
}
|
|
23
|
+
return ValidationResult_1.ValidationResult.success();
|
|
24
|
+
}
|
|
25
|
+
accept(_requestItem, params) {
|
|
26
|
+
const parsedParams = AcceptFormFieldRequestItemParameters_1.AcceptFormFieldRequestItemParameters.from(params);
|
|
27
|
+
return content_1.FormFieldAcceptResponseItem.from({
|
|
28
|
+
result: content_1.ResponseItemResult.Accepted,
|
|
29
|
+
response: parsedParams.response
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.FormFieldRequestItemProcessor = FormFieldRequestItemProcessor;
|
|
34
|
+
//# sourceMappingURL=FormFieldRequestItemProcessor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormFieldRequestItemProcessor.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/formField/FormFieldRequestItemProcessor.ts"],"names":[],"mappings":";;;AAAA,4CAAgH;AAChH,uEAAoE;AACpE,gFAA6E;AAE7E,yFAAsF;AACtF,iGAAwI;AAExI,MAAa,6BAA8B,SAAQ,yDAA2F;IAC1H,4BAA4B,CAAC,WAAiC,EAAE,QAAiB;QAC7F,MAAM,sBAAsB,GAAG,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QAChE,IAAI,sBAAsB,EAAE,CAAC;YACzB,OAAO,mCAAgB,CAAC,KAAK,CAAC,6CAAqB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAC7G,CAAC;QAED,OAAO,mCAAgB,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC;IAEe,SAAS,CAAC,WAAiC,EAAE,MAAgD;QACzG,MAAM,YAAY,GAAG,2EAAoC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEvE,MAAM,sBAAsB,GAAG,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACrF,IAAI,sBAAsB,EAAE,CAAC;YACzB,OAAO,mCAAgB,CAAC,KAAK,CAAC,6CAAqB,CAAC,QAAQ,CAAC,uBAAuB,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAClH,CAAC;QAED,OAAO,mCAAgB,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC;IAEe,MAAM,CAAC,YAAkC,EAAE,MAAgD;QACvG,MAAM,YAAY,GAAG,2EAAoC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEvE,OAAO,qCAA2B,CAAC,IAAI,CAAC;YACpC,MAAM,EAAE,4BAAkB,CAAC,QAAQ;YACnC,QAAQ,EAAE,YAAY,CAAC,QAAQ;SAClC,CAAC,CAAC;IACP,CAAC;CACJ;AA7BD,sEA6BC"}
|
|
@@ -7,6 +7,7 @@ import { AcceptRequestItemParametersJSON } from "../../incoming/decide/AcceptReq
|
|
|
7
7
|
*/
|
|
8
8
|
export interface AcceptProposeAttributeRequestItemParametersWithExistingAttributeJSON extends AcceptRequestItemParametersJSON {
|
|
9
9
|
attributeId: string;
|
|
10
|
+
tags?: string[];
|
|
10
11
|
}
|
|
11
12
|
/**
|
|
12
13
|
* Create a new Local Attribute. If you want to use the proposed Attribute, just pass it here.
|
|
@@ -17,6 +18,7 @@ export interface AcceptProposeAttributeRequestItemParametersWithNewAttributeJSON
|
|
|
17
18
|
export type AcceptProposeAttributeRequestItemParametersJSON = AcceptProposeAttributeRequestItemParametersWithExistingAttributeJSON | AcceptProposeAttributeRequestItemParametersWithNewAttributeJSON;
|
|
18
19
|
export declare class AcceptProposeAttributeRequestItemParameters extends Serializable {
|
|
19
20
|
attributeId?: CoreId;
|
|
21
|
+
tags?: string[];
|
|
20
22
|
attribute?: IdentityAttribute | RelationshipAttribute;
|
|
21
23
|
isWithExistingAttribute(): this is {
|
|
22
24
|
attributeId: CoreId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcceptProposeAttributeRequestItemParameters.d.ts","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8C,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC5H,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,+BAA+B,EAAE,MAAM,mDAAmD,CAAC;AAEpG;;GAEG;AACH,MAAM,WAAW,oEAAqE,SAAQ,+BAA+B;IACzH,WAAW,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"AcceptProposeAttributeRequestItemParameters.d.ts","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA8C,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC5H,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,+BAA+B,EAAE,MAAM,mDAAmD,CAAC;AAEpG;;GAEG;AACH,MAAM,WAAW,oEAAqE,SAAQ,+BAA+B;IACzH,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,+DAAgE,SAAQ,+BAA+B;IACpH,SAAS,EAAE,qBAAqB,GAAG,yBAAyB,CAAC;CAChE;AAED,MAAM,MAAM,+CAA+C,GACrD,oEAAoE,GACpE,+DAA+D,CAAC;AAEtE,qBACa,2CAA4C,SAAQ,YAAY;IAGlE,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAIhB,SAAS,CAAC,EAAE,iBAAiB,GAAG,qBAAqB,CAAC;IAEtD,uBAAuB,IAAI,IAAI,IAAI;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE;IAI1D,kBAAkB,IAAI,IAAI,IAAI;QAAE,SAAS,EAAE,iBAAiB,GAAG,qBAAqB,CAAA;KAAE;WAI/E,IAAI,CAAC,KAAK,EAAE,+CAA+C,GAAG,2CAA2C;qBAI7F,QAAQ,CAAC,CAAC,SAAS,YAAY,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;CAqC1E"}
|
|
@@ -33,6 +33,9 @@ let AcceptProposeAttributeRequestItemParameters = AcceptProposeAttributeRequestI
|
|
|
33
33
|
if (value.attributeId && value.attribute) {
|
|
34
34
|
throw new ts_serval_1.ValidationError(AcceptProposeAttributeRequestItemParameters_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)}.`);
|
|
35
35
|
}
|
|
36
|
+
if (value.attribute && value.tags) {
|
|
37
|
+
throw new ts_serval_1.ValidationError(AcceptProposeAttributeRequestItemParameters_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.tags)}.`);
|
|
38
|
+
}
|
|
36
39
|
if (!value.attributeId && !value.attribute) {
|
|
37
40
|
throw new ts_serval_1.ValidationError(AcceptProposeAttributeRequestItemParameters_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)}.`);
|
|
38
41
|
}
|
|
@@ -45,6 +48,11 @@ __decorate([
|
|
|
45
48
|
(0, ts_serval_1.validate)({ nullable: true }),
|
|
46
49
|
__metadata("design:type", core_types_1.CoreId)
|
|
47
50
|
], AcceptProposeAttributeRequestItemParameters.prototype, "attributeId", void 0);
|
|
51
|
+
__decorate([
|
|
52
|
+
(0, ts_serval_1.serialize)({ type: String }),
|
|
53
|
+
(0, ts_serval_1.validate)({ nullable: true, customValidator: content_1.IdentityAttribute.validateTags }),
|
|
54
|
+
__metadata("design:type", Array)
|
|
55
|
+
], AcceptProposeAttributeRequestItemParameters.prototype, "tags", void 0);
|
|
48
56
|
__decorate([
|
|
49
57
|
(0, ts_serval_1.serialize)({ unionTypes: [content_1.IdentityAttribute, content_1.RelationshipAttribute] }),
|
|
50
58
|
(0, ts_serval_1.validate)({ nullable: true }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcceptProposeAttributeRequestItemParameters.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,kDAA8F;AAC9F,4CAA4H;AAC5H,kDAA2C;AAC3C,uDAA0C;AAC1C,+EAA4E;
|
|
1
|
+
{"version":3,"file":"AcceptProposeAttributeRequestItemParameters.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,12 +7,10 @@ import { LocalRequestInfo } from "../IRequestItemProcessor";
|
|
|
7
7
|
import { AcceptProposeAttributeRequestItemParametersJSON } from "./AcceptProposeAttributeRequestItemParameters";
|
|
8
8
|
export declare class ProposeAttributeRequestItemProcessor extends GenericRequestItemProcessor<ProposeAttributeRequestItem, AcceptProposeAttributeRequestItemParametersJSON> {
|
|
9
9
|
canCreateOutgoingRequestItem(requestItem: ProposeAttributeRequestItem, _request: Request, recipient?: CoreAddress): Promise<ValidationResult>;
|
|
10
|
-
private
|
|
10
|
+
private validateAttribute;
|
|
11
11
|
private validateQuery;
|
|
12
12
|
canAccept(requestItem: ProposeAttributeRequestItem, params: AcceptProposeAttributeRequestItemParametersJSON, requestInfo: LocalRequestInfo): Promise<ValidationResult>;
|
|
13
13
|
accept(_requestItem: ProposeAttributeRequestItem, params: AcceptProposeAttributeRequestItemParametersJSON, requestInfo: LocalRequestInfo): Promise<ProposeAttributeAcceptResponseItem | AttributeSuccessionAcceptResponseItem | AttributeAlreadySharedAcceptResponseItem>;
|
|
14
|
-
private performOwnSharedIdentityAttributeSuccession;
|
|
15
|
-
private createNewAttribute;
|
|
16
14
|
applyIncomingResponseItem(responseItem: ProposeAttributeAcceptResponseItem | AttributeSuccessionAcceptResponseItem | AttributeAlreadySharedAcceptResponseItem | RejectResponseItem, _requestItem: ProposeAttributeRequestItem, requestInfo: LocalRequestInfo): Promise<PeerSharedAttributeSucceededEvent | void>;
|
|
17
15
|
}
|
|
18
16
|
//# sourceMappingURL=ProposeAttributeRequestItemProcessor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProposeAttributeRequestItemProcessor.d.ts","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,wCAAwC,EACxC,qCAAqC,
|
|
1
|
+
{"version":3,"file":"ProposeAttributeRequestItemProcessor.d.ts","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,wCAAwC,EACxC,qCAAqC,EAIrC,kCAAkC,EAClC,2BAA2B,EAC3B,kBAAkB,EAGlB,OAAO,EAEV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,WAAW,EAAU,MAAM,mBAAmB,CAAC;AAIxD,OAAO,EAA8G,iCAAiC,EAAE,MAAM,qBAAqB,CAAC;AAEpL,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,EAA+C,+CAA+C,EAAE,MAAM,+CAA+C,CAAC;AAE7J,qBAAa,oCAAqC,SAAQ,2BAA2B,CAAC,2BAA2B,EAAE,+CAA+C,CAAC;IACzI,4BAA4B,CAAC,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAyCrJ,iBAAiB;YAiBjB,aAAa;IAsBL,SAAS,CAC3B,WAAW,EAAE,2BAA2B,EACxC,MAAM,EAAE,+CAA+C,EACvD,WAAW,EAAE,gBAAgB,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAkHN,MAAM,CACxB,YAAY,EAAE,2BAA2B,EACzC,MAAM,EAAE,+CAA+C,EACvD,WAAW,EAAE,gBAAgB,GAC9B,OAAO,CAAC,kCAAkC,GAAG,qCAAqC,GAAG,wCAAwC,CAAC;IA+G3G,yBAAyB,CAC3C,YAAY,EAAE,kCAAkC,GAAG,qCAAqC,GAAG,wCAAwC,GAAG,kBAAkB,EACxJ,YAAY,EAAE,2BAA2B,EACzC,WAAW,EAAE,gBAAgB,GAC9B,OAAO,CAAC,iCAAiC,GAAG,IAAI,CAAC;CAwBvD"}
|
|
@@ -13,16 +13,17 @@ const attributes_1 = require("../../../attributes");
|
|
|
13
13
|
const LocalAttribute_1 = require("../../../attributes/local/LocalAttribute");
|
|
14
14
|
const ValidationResult_1 = require("../../../common/ValidationResult");
|
|
15
15
|
const GenericRequestItemProcessor_1 = require("../GenericRequestItemProcessor");
|
|
16
|
+
const createAppropriateResponseItem_1 = __importDefault(require("../utility/createAppropriateResponseItem"));
|
|
16
17
|
const validateAttributeMatchesWithQuery_1 = __importDefault(require("../utility/validateAttributeMatchesWithQuery"));
|
|
17
18
|
const validateQuery_1 = __importDefault(require("../utility/validateQuery"));
|
|
18
19
|
const AcceptProposeAttributeRequestItemParameters_1 = require("./AcceptProposeAttributeRequestItemParameters");
|
|
19
20
|
class ProposeAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
|
|
20
21
|
async canCreateOutgoingRequestItem(requestItem, _request, recipient) {
|
|
21
|
-
const queryValidationResult = this.validateQuery(requestItem, recipient);
|
|
22
|
+
const queryValidationResult = await this.validateQuery(requestItem, recipient);
|
|
22
23
|
if (queryValidationResult.isError()) {
|
|
23
24
|
return queryValidationResult;
|
|
24
25
|
}
|
|
25
|
-
const attributeValidationResult =
|
|
26
|
+
const attributeValidationResult = await this.validateAttribute(requestItem.attribute);
|
|
26
27
|
if (attributeValidationResult.isError()) {
|
|
27
28
|
return attributeValidationResult;
|
|
28
29
|
}
|
|
@@ -38,13 +39,17 @@ class ProposeAttributeRequestItemProcessor extends GenericRequestItemProcessor_1
|
|
|
38
39
|
}
|
|
39
40
|
return ValidationResult_1.ValidationResult.success();
|
|
40
41
|
}
|
|
41
|
-
|
|
42
|
+
async validateAttribute(attribute) {
|
|
42
43
|
if (attribute.owner.toString() !== "") {
|
|
43
44
|
return ValidationResult_1.ValidationResult.error(ConsumptionCoreErrors_1.ConsumptionCoreErrors.requests.invalidRequestItem("The owner of the given `attribute` can only be an empty string. This is because you can only propose Attributes where the Recipient of the Request is the owner anyway. And in order to avoid mistakes, the owner will be automatically filled for you."));
|
|
44
45
|
}
|
|
46
|
+
const tagValidationResult = await this.consumptionController.attributes.validateTags(attribute);
|
|
47
|
+
if (tagValidationResult.isError()) {
|
|
48
|
+
return ValidationResult_1.ValidationResult.error(ConsumptionCoreErrors_1.ConsumptionCoreErrors.requests.invalidRequestItem(tagValidationResult.error.message));
|
|
49
|
+
}
|
|
45
50
|
return ValidationResult_1.ValidationResult.success();
|
|
46
51
|
}
|
|
47
|
-
validateQuery(requestItem, recipient) {
|
|
52
|
+
async validateQuery(requestItem, recipient) {
|
|
48
53
|
const commonQueryValidationResult = (0, validateQuery_1.default)(requestItem.query, this.currentIdentityAddress, recipient);
|
|
49
54
|
if (commonQueryValidationResult.isError()) {
|
|
50
55
|
return commonQueryValidationResult;
|
|
@@ -52,6 +57,10 @@ class ProposeAttributeRequestItemProcessor extends GenericRequestItemProcessor_1
|
|
|
52
57
|
if (requestItem.query instanceof content_1.RelationshipAttributeQuery && requestItem.query.owner.toString() !== "") {
|
|
53
58
|
return ValidationResult_1.ValidationResult.error(ConsumptionCoreErrors_1.ConsumptionCoreErrors.requests.invalidRequestItem("The owner of the given `query` can only be an empty string. This is because you can only propose Attributes where the Recipient of the Request is the owner anyway. And in order to avoid mistakes, the owner will be automatically filled for you."));
|
|
54
59
|
}
|
|
60
|
+
const tagValidationResult = await this.consumptionController.attributes.validateAttributeQueryTags(requestItem.query);
|
|
61
|
+
if (tagValidationResult.isError()) {
|
|
62
|
+
return ValidationResult_1.ValidationResult.error(ConsumptionCoreErrors_1.ConsumptionCoreErrors.requests.invalidRequestItem(tagValidationResult.error.message));
|
|
63
|
+
}
|
|
55
64
|
return ValidationResult_1.ValidationResult.success();
|
|
56
65
|
}
|
|
57
66
|
async canAccept(requestItem, params, requestInfo) {
|
|
@@ -66,7 +75,9 @@ class ProposeAttributeRequestItemProcessor extends GenericRequestItemProcessor_1
|
|
|
66
75
|
return ValidationResult_1.ValidationResult.error(transport_1.TransportCoreErrors.general.recordNotFound(LocalAttribute_1.LocalAttribute, parsedParams.attributeId.toString()));
|
|
67
76
|
}
|
|
68
77
|
attribute = foundLocalAttribute.content;
|
|
69
|
-
if (requestItem.query instanceof content_1.IdentityAttributeQuery
|
|
78
|
+
if ((requestItem.query instanceof content_1.IdentityAttributeQuery || requestItem.query instanceof content_1.IQLQuery) &&
|
|
79
|
+
attribute instanceof content_1.IdentityAttribute &&
|
|
80
|
+
this.accountController.identity.isMe(attribute.owner)) {
|
|
70
81
|
if (foundLocalAttribute.isShared()) {
|
|
71
82
|
return ValidationResult_1.ValidationResult.error(ConsumptionCoreErrors_1.ConsumptionCoreErrors.requests.attributeQueryMismatch("The provided IdentityAttribute is a shared copy of a RepositoryAttribute. You can only share RepositoryAttributes."));
|
|
72
83
|
}
|
|
@@ -83,6 +94,9 @@ class ProposeAttributeRequestItemProcessor extends GenericRequestItemProcessor_1
|
|
|
83
94
|
}
|
|
84
95
|
return ValidationResult_1.ValidationResult.error(ConsumptionCoreErrors_1.ConsumptionCoreErrors.requests.attributeQueryMismatch(`The provided IdentityAttribute is outdated. You have already shared the successor '${ownSharedIdentityAttributeSuccessors[0].shareInfo.sourceAttribute}' of it.`));
|
|
85
96
|
}
|
|
97
|
+
if (parsedParams.tags && parsedParams.tags.length > 0) {
|
|
98
|
+
attribute.tags = attribute.tags ? [...attribute.tags, ...parsedParams.tags] : parsedParams.tags;
|
|
99
|
+
}
|
|
86
100
|
}
|
|
87
101
|
}
|
|
88
102
|
else if (parsedParams.isWithNewAttribute()) {
|
|
@@ -107,24 +121,43 @@ class ProposeAttributeRequestItemProcessor extends GenericRequestItemProcessor_1
|
|
|
107
121
|
return ValidationResult_1.ValidationResult.error(ConsumptionCoreErrors_1.ConsumptionCoreErrors.requests.invalidAcceptParameters(`This ProposeAttributeRequestItem cannot be accepted as the queried RelationshipAttribute cannot be created because there is already a RelationshipAttribute in the context of this Relationship with the same key '${requestItem.query.key}', owner and value type.`));
|
|
108
122
|
}
|
|
109
123
|
}
|
|
124
|
+
const tagValidationResult = await this.consumptionController.attributes.validateTags(attribute);
|
|
125
|
+
if (tagValidationResult.isError()) {
|
|
126
|
+
return ValidationResult_1.ValidationResult.error(ConsumptionCoreErrors_1.ConsumptionCoreErrors.requests.invalidAcceptParameters(tagValidationResult.error.message));
|
|
127
|
+
}
|
|
110
128
|
return ValidationResult_1.ValidationResult.success();
|
|
111
129
|
}
|
|
112
130
|
async accept(_requestItem, params, requestInfo) {
|
|
113
131
|
const parsedParams = AcceptProposeAttributeRequestItemParameters_1.AcceptProposeAttributeRequestItemParameters.from(params);
|
|
114
132
|
let sharedLocalAttribute;
|
|
115
133
|
if (parsedParams.isWithExistingAttribute()) {
|
|
116
|
-
|
|
134
|
+
let existingSourceAttribute = await this.consumptionController.attributes.getLocalAttribute(parsedParams.attributeId);
|
|
117
135
|
if (!existingSourceAttribute)
|
|
118
136
|
throw transport_1.TransportCoreErrors.general.recordNotFound(LocalAttribute_1.LocalAttribute, parsedParams.attributeId.toString());
|
|
119
|
-
|
|
137
|
+
if (parsedParams.tags && parsedParams.tags.length > 0 && existingSourceAttribute.content instanceof content_1.IdentityAttribute) {
|
|
138
|
+
const mergedTags = existingSourceAttribute.content.tags ? [...existingSourceAttribute.content.tags, ...parsedParams.tags] : parsedParams.tags;
|
|
139
|
+
existingSourceAttribute.content.tags = mergedTags;
|
|
140
|
+
const successorParams = {
|
|
141
|
+
content: existingSourceAttribute.content
|
|
142
|
+
};
|
|
143
|
+
const attributesAfterSuccession = await this.consumptionController.attributes.succeedRepositoryAttribute(parsedParams.attributeId, successorParams);
|
|
144
|
+
existingSourceAttribute = attributesAfterSuccession.successor;
|
|
145
|
+
}
|
|
146
|
+
const query = {
|
|
147
|
+
"deletionInfo.deletionStatus": {
|
|
148
|
+
$nin: [
|
|
149
|
+
attributes_1.LocalAttributeDeletionStatus.DeletedByPeer,
|
|
150
|
+
attributes_1.LocalAttributeDeletionStatus.DeletedByOwner,
|
|
151
|
+
attributes_1.LocalAttributeDeletionStatus.ToBeDeletedByPeer,
|
|
152
|
+
attributes_1.LocalAttributeDeletionStatus.ToBeDeleted
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
const latestSharedVersion = await this.consumptionController.attributes.getSharedVersionsOfAttribute(parsedParams.attributeId, [requestInfo.peer], true, query);
|
|
120
157
|
const wasSharedBefore = latestSharedVersion.length > 0;
|
|
121
|
-
const wasDeletedByPeerOrOwner = latestSharedVersion[0]?.deletionInfo?.deletionStatus === attributes_1.LocalAttributeDeletionStatus.DeletedByPeer ||
|
|
122
|
-
latestSharedVersion[0]?.deletionInfo?.deletionStatus === attributes_1.LocalAttributeDeletionStatus.DeletedByOwner ||
|
|
123
|
-
latestSharedVersion[0]?.deletionInfo?.deletionStatus === attributes_1.LocalAttributeDeletionStatus.ToBeDeletedByPeer ||
|
|
124
|
-
latestSharedVersion[0]?.deletionInfo?.deletionStatus === attributes_1.LocalAttributeDeletionStatus.ToBeDeleted;
|
|
125
158
|
const isLatestSharedVersion = latestSharedVersion[0]?.shareInfo?.sourceAttribute?.toString() === existingSourceAttribute.id.toString();
|
|
126
159
|
const predecessorWasSharedBefore = wasSharedBefore && !isLatestSharedVersion;
|
|
127
|
-
if (!wasSharedBefore
|
|
160
|
+
if (!wasSharedBefore) {
|
|
128
161
|
sharedLocalAttribute = await this.consumptionController.attributes.createSharedLocalAttributeCopy({
|
|
129
162
|
sourceAttributeId: core_types_1.CoreId.from(existingSourceAttribute.id),
|
|
130
163
|
peer: core_types_1.CoreAddress.from(requestInfo.peer),
|
|
@@ -147,19 +180,23 @@ class ProposeAttributeRequestItemProcessor extends GenericRequestItemProcessor_1
|
|
|
147
180
|
if (!sharedPredecessor.shareInfo?.sourceAttribute) {
|
|
148
181
|
throw new Error(`The Attribute ${sharedPredecessor.id} doesn't have a 'shareInfo.sourceAttribute', even though it was found as shared version of an Attribute.`);
|
|
149
182
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
183
|
+
if (existingSourceAttribute.isRepositoryAttribute(this.currentIdentityAddress)) {
|
|
184
|
+
const successorParams = {
|
|
185
|
+
content: existingSourceAttribute.content,
|
|
186
|
+
shareInfo: attributes_1.LocalAttributeShareInfo.from({
|
|
187
|
+
peer: requestInfo.peer,
|
|
188
|
+
requestReference: requestInfo.id,
|
|
189
|
+
sourceAttribute: existingSourceAttribute.id
|
|
190
|
+
})
|
|
191
|
+
};
|
|
192
|
+
const successorSharedAttribute = (await this.consumptionController.attributes.succeedOwnSharedIdentityAttribute(sharedPredecessor.id, successorParams))
|
|
193
|
+
.successor;
|
|
194
|
+
return content_1.AttributeSuccessionAcceptResponseItem.from({
|
|
195
|
+
result: content_1.ResponseItemResult.Accepted,
|
|
196
|
+
successorId: successorSharedAttribute.id,
|
|
197
|
+
successorContent: successorSharedAttribute.content,
|
|
198
|
+
predecessorId: sharedPredecessor.id
|
|
199
|
+
});
|
|
163
200
|
}
|
|
164
201
|
}
|
|
165
202
|
}
|
|
@@ -167,45 +204,21 @@ class ProposeAttributeRequestItemProcessor extends GenericRequestItemProcessor_1
|
|
|
167
204
|
if (parsedParams.attribute.owner.equals("")) {
|
|
168
205
|
parsedParams.attribute.owner = this.currentIdentityAddress;
|
|
169
206
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
content: sourceSuccessor.content,
|
|
184
|
-
shareInfo: attributes_1.LocalAttributeShareInfo.from({
|
|
185
|
-
peer: requestInfo.peer,
|
|
186
|
-
requestReference: requestInfo.id,
|
|
187
|
-
sourceAttribute: sourceSuccessor.id
|
|
188
|
-
})
|
|
189
|
-
};
|
|
190
|
-
const { successor } = await this.consumptionController.attributes.succeedOwnSharedIdentityAttribute(sharedPredecessorId, successorParams);
|
|
191
|
-
return successor;
|
|
192
|
-
}
|
|
193
|
-
async createNewAttribute(attribute, requestInfo) {
|
|
194
|
-
if (attribute instanceof content_1.IdentityAttribute) {
|
|
195
|
-
const repositoryAttribute = await this.consumptionController.attributes.createRepositoryAttribute({
|
|
196
|
-
content: attribute
|
|
197
|
-
});
|
|
198
|
-
return await this.consumptionController.attributes.createSharedLocalAttributeCopy({
|
|
199
|
-
sourceAttributeId: core_types_1.CoreId.from(repositoryAttribute.id),
|
|
200
|
-
peer: core_types_1.CoreAddress.from(requestInfo.peer),
|
|
201
|
-
requestReference: core_types_1.CoreId.from(requestInfo.id)
|
|
202
|
-
});
|
|
207
|
+
if (parsedParams.attribute instanceof content_1.RelationshipAttribute) {
|
|
208
|
+
const ownSharedRelationshipAttribute = await this.consumptionController.attributes.createSharedLocalAttribute({
|
|
209
|
+
content: parsedParams.attribute,
|
|
210
|
+
peer: requestInfo.peer,
|
|
211
|
+
requestReference: core_types_1.CoreId.from(requestInfo.id)
|
|
212
|
+
});
|
|
213
|
+
return content_1.ProposeAttributeAcceptResponseItem.from({
|
|
214
|
+
result: content_1.ResponseItemResult.Accepted,
|
|
215
|
+
attributeId: ownSharedRelationshipAttribute.id,
|
|
216
|
+
attribute: ownSharedRelationshipAttribute.content
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
return await (0, createAppropriateResponseItem_1.default)(parsedParams.attribute, requestInfo, this.consumptionController.attributes, "Propose");
|
|
203
220
|
}
|
|
204
|
-
|
|
205
|
-
content: attribute,
|
|
206
|
-
peer: requestInfo.peer,
|
|
207
|
-
requestReference: core_types_1.CoreId.from(requestInfo.id)
|
|
208
|
-
});
|
|
221
|
+
throw new Error(`You have to specify either ${(0, ts_simple_nameof_1.nameof)((x) => x.attribute)} or ${(0, ts_simple_nameof_1.nameof)((x) => x.attributeId)}.`);
|
|
209
222
|
}
|
|
210
223
|
async applyIncomingResponseItem(responseItem, _requestItem, requestInfo) {
|
|
211
224
|
if (responseItem instanceof content_1.ProposeAttributeAcceptResponseItem) {
|