@nmshd/consumption 2.0.0-alpha.9 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/README.md +2 -2
  2. package/dist/buildInformation.js +5 -5
  3. package/dist/consumption/ConsumptionController.d.ts +9 -6
  4. package/dist/consumption/ConsumptionController.js +23 -6
  5. package/dist/consumption/ConsumptionController.js.map +1 -1
  6. package/dist/consumption/ConsumptionControllerName.d.ts +1 -1
  7. package/dist/consumption/ConsumptionControllerName.js +1 -1
  8. package/dist/consumption/ConsumptionControllerName.js.map +1 -1
  9. package/dist/consumption/ConsumptionErrors.d.ts +5 -2
  10. package/dist/consumption/ConsumptionErrors.js +12 -3
  11. package/dist/consumption/ConsumptionErrors.js.map +1 -1
  12. package/dist/consumption/ConsumptionIds.d.ts +2 -2
  13. package/dist/consumption/ConsumptionIds.js +4 -4
  14. package/dist/consumption/ConsumptionIds.js.map +1 -1
  15. package/dist/index.d.ts +1 -1
  16. package/dist/index.js +1 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/modules/attributes/LocalAttributesController.d.ts +29 -0
  19. package/dist/modules/attributes/LocalAttributesController.js +174 -0
  20. package/dist/modules/attributes/LocalAttributesController.js.map +1 -0
  21. package/dist/modules/attributes/local/CreateLocalAttributeParams.d.ts +12 -0
  22. package/dist/modules/attributes/local/CreateLocalAttributeParams.js +26 -0
  23. package/dist/modules/attributes/local/CreateLocalAttributeParams.js.map +1 -0
  24. package/dist/modules/attributes/local/CreatePeerLocalAttributeParams.d.ts +22 -0
  25. package/dist/modules/attributes/local/CreatePeerLocalAttributeParams.js +42 -0
  26. package/dist/modules/attributes/local/CreatePeerLocalAttributeParams.js.map +1 -0
  27. package/dist/modules/attributes/local/CreateRelationshipAttributeParams.d.ts +14 -0
  28. package/dist/modules/attributes/local/CreateRelationshipAttributeParams.js +40 -0
  29. package/dist/modules/attributes/local/CreateRelationshipAttributeParams.js.map +1 -0
  30. package/dist/modules/attributes/local/CreateSharedLocalAttributeCopyParams.d.ts +21 -0
  31. package/dist/modules/{signatures/SignatureContent.js → attributes/local/CreateSharedLocalAttributeCopyParams.js} +13 -31
  32. package/dist/modules/attributes/local/CreateSharedLocalAttributeCopyParams.js.map +1 -0
  33. package/dist/modules/attributes/local/LocalAttribute.d.ts +30 -0
  34. package/dist/modules/attributes/local/{ConsumptionAttribute.js → LocalAttribute.js} +36 -24
  35. package/dist/modules/attributes/local/LocalAttribute.js.map +1 -0
  36. package/dist/modules/attributes/local/LocalAttributeShareInfo.d.ts +17 -0
  37. package/dist/modules/attributes/local/LocalAttributeShareInfo.js +36 -0
  38. package/dist/modules/attributes/local/LocalAttributeShareInfo.js.map +1 -0
  39. package/dist/modules/attributes/local/QueryTranslator.d.ts +9 -0
  40. package/dist/modules/attributes/local/QueryTranslator.js +125 -0
  41. package/dist/modules/attributes/local/QueryTranslator.js.map +1 -0
  42. package/dist/modules/attributes/local/SucceedLocalAttributeParams.d.ts +16 -0
  43. package/dist/modules/attributes/local/SucceedLocalAttributeParams.js +32 -0
  44. package/dist/modules/attributes/local/SucceedLocalAttributeParams.js.map +1 -0
  45. package/dist/modules/attributes/local/UpdateLocalAttributeParams.d.ts +16 -0
  46. package/dist/modules/attributes/local/UpdateLocalAttributeParams.js +32 -0
  47. package/dist/modules/attributes/local/UpdateLocalAttributeParams.js.map +1 -0
  48. package/dist/modules/drafts/DraftsController.js.map +1 -1
  49. package/dist/modules/index.d.ts +23 -8
  50. package/dist/modules/index.js +22 -8
  51. package/dist/modules/index.js.map +1 -1
  52. package/dist/modules/requests/incoming/DecideRequestParametersValidator.d.ts +3 -3
  53. package/dist/modules/requests/incoming/DecideRequestParametersValidator.js +20 -27
  54. package/dist/modules/requests/incoming/DecideRequestParametersValidator.js.map +1 -1
  55. package/dist/modules/requests/incoming/IncomingRequestsController.d.ts +10 -10
  56. package/dist/modules/requests/incoming/IncomingRequestsController.js +54 -53
  57. package/dist/modules/requests/incoming/IncomingRequestsController.js.map +1 -1
  58. package/dist/modules/requests/itemProcessors/AbstractRequestItemProcessor.d.ts +21 -0
  59. package/dist/modules/requests/itemProcessors/AbstractRequestItemProcessor.js +12 -0
  60. package/dist/modules/requests/itemProcessors/AbstractRequestItemProcessor.js.map +1 -0
  61. package/dist/modules/requests/itemProcessors/GenericRequestItemProcessor.d.ts +13 -11
  62. package/dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js +13 -17
  63. package/dist/modules/requests/itemProcessors/GenericRequestItemProcessor.js.map +1 -1
  64. package/dist/modules/requests/itemProcessors/IRequestItemProcessor.d.ts +14 -9
  65. package/dist/modules/requests/itemProcessors/ProcessorConstructor.d.ts +2 -1
  66. package/dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.d.ts +6 -7
  67. package/dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.js +10 -12
  68. package/dist/modules/requests/itemProcessors/RequestItemProcessorRegistry.js.map +1 -1
  69. package/dist/modules/requests/itemProcessors/ValidationResult.d.ts +7 -7
  70. package/dist/modules/requests/itemProcessors/ValidationResult.js +11 -11
  71. package/dist/modules/requests/itemProcessors/ValidationResult.js.map +1 -1
  72. package/dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.d.ts +7 -0
  73. package/dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js +20 -0
  74. package/dist/modules/requests/itemProcessors/createAttribute/AcceptCreateAttributeRequestItemParameters.js.map +1 -0
  75. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.d.ts +13 -0
  76. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js +71 -0
  77. package/dist/modules/requests/itemProcessors/createAttribute/CreateAttributeRequestItemProcessor.js.map +1 -0
  78. package/dist/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.d.ts +20 -0
  79. package/dist/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.js +47 -0
  80. package/dist/modules/requests/itemProcessors/proposeAttribute/AcceptProposeAttributeRequestItemParameters.js.map +1 -0
  81. package/dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.d.ts +16 -0
  82. package/dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.js +110 -0
  83. package/dist/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.js.map +1 -0
  84. package/dist/modules/requests/itemProcessors/readAttribute/AcceptReadAttributeRequestItemParameters.d.ts +23 -0
  85. package/dist/modules/requests/itemProcessors/readAttribute/AcceptReadAttributeRequestItemParameters.js +54 -0
  86. package/dist/modules/requests/itemProcessors/readAttribute/AcceptReadAttributeRequestItemParameters.js.map +1 -0
  87. package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.d.ts +14 -0
  88. package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js +88 -0
  89. package/dist/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.js.map +1 -0
  90. package/dist/modules/requests/itemProcessors/shareAttribute/AcceptShareAttributeRequestItemParameters.d.ts +7 -0
  91. package/dist/modules/requests/itemProcessors/shareAttribute/AcceptShareAttributeRequestItemParameters.js +20 -0
  92. package/dist/modules/requests/itemProcessors/shareAttribute/AcceptShareAttributeRequestItemParameters.js.map +1 -0
  93. package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.d.ts +15 -0
  94. package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.js +94 -0
  95. package/dist/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.js.map +1 -0
  96. package/dist/modules/requests/itemProcessors/utility/validateQuery.d.ts +4 -0
  97. package/dist/modules/requests/itemProcessors/utility/validateQuery.js +21 -0
  98. package/dist/modules/requests/itemProcessors/utility/validateQuery.js.map +1 -0
  99. package/dist/modules/requests/local/LocalRequest.d.ts +37 -0
  100. package/dist/modules/requests/local/{ConsumptionRequest.js → LocalRequest.js} +32 -32
  101. package/dist/modules/requests/local/LocalRequest.js.map +1 -0
  102. package/dist/modules/requests/local/{ConsumptionRequestStatus.d.ts → LocalRequestStatus.d.ts} +1 -1
  103. package/dist/modules/requests/local/LocalRequestStatus.js +13 -0
  104. package/dist/modules/requests/local/LocalRequestStatus.js.map +1 -0
  105. package/dist/modules/requests/local/LocalRequestStatusLogEntry.d.ts +17 -0
  106. package/dist/modules/requests/local/{ConsumptionRequestStatusLogEntry.js → LocalRequestStatusLogEntry.js} +13 -13
  107. package/dist/modules/requests/local/LocalRequestStatusLogEntry.js.map +1 -0
  108. package/dist/modules/requests/local/LocalResponse.d.ts +22 -0
  109. package/dist/modules/requests/local/{ConsumptionResponse.js → LocalResponse.js} +18 -18
  110. package/dist/modules/requests/local/LocalResponse.js.map +1 -0
  111. package/dist/modules/requests/outgoing/OutgoingRequestsController.d.ts +7 -7
  112. package/dist/modules/requests/outgoing/OutgoingRequestsController.js +49 -39
  113. package/dist/modules/requests/outgoing/OutgoingRequestsController.js.map +1 -1
  114. package/dist/modules/settings/SettingsController.js.map +1 -1
  115. package/lib-web/nmshd.consumption.js +13393 -3584
  116. package/lib-web/nmshd.consumption.js.map +1 -1
  117. package/lib-web/nmshd.consumption.min.js +1 -1
  118. package/lib-web/nmshd.consumption.min.js.map +1 -1
  119. package/package.json +29 -25
  120. package/dist/modules/attributes/ConsumptionAttributesController.d.ts +0 -22
  121. package/dist/modules/attributes/ConsumptionAttributesController.js +0 -141
  122. package/dist/modules/attributes/ConsumptionAttributesController.js.map +0 -1
  123. package/dist/modules/attributes/local/ConsumptionAttribute.d.ts +0 -19
  124. package/dist/modules/attributes/local/ConsumptionAttribute.js.map +0 -1
  125. package/dist/modules/requests/local/ConsumptionRequest.d.ts +0 -37
  126. package/dist/modules/requests/local/ConsumptionRequest.js.map +0 -1
  127. package/dist/modules/requests/local/ConsumptionRequestStatus.js +0 -13
  128. package/dist/modules/requests/local/ConsumptionRequestStatus.js.map +0 -1
  129. package/dist/modules/requests/local/ConsumptionRequestStatusLogEntry.d.ts +0 -17
  130. package/dist/modules/requests/local/ConsumptionRequestStatusLogEntry.js.map +0 -1
  131. package/dist/modules/requests/local/ConsumptionResponse.d.ts +0 -22
  132. package/dist/modules/requests/local/ConsumptionResponse.js.map +0 -1
  133. package/dist/modules/signatures/Signature.d.ts +0 -16
  134. package/dist/modules/signatures/Signature.js +0 -56
  135. package/dist/modules/signatures/Signature.js.map +0 -1
  136. package/dist/modules/signatures/SignatureContent.d.ts +0 -21
  137. package/dist/modules/signatures/SignatureContent.js.map +0 -1
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ProposeAttributeRequestItemProcessor = void 0;
7
+ const content_1 = require("@nmshd/content");
8
+ const transport_1 = require("@nmshd/transport");
9
+ const consumption_1 = require("../../../../consumption");
10
+ const LocalAttribute_1 = require("../../../attributes/local/LocalAttribute");
11
+ const GenericRequestItemProcessor_1 = require("../GenericRequestItemProcessor");
12
+ const validateQuery_1 = __importDefault(require("../utility/validateQuery"));
13
+ const ValidationResult_1 = require("../ValidationResult");
14
+ const AcceptProposeAttributeRequestItemParameters_1 = require("./AcceptProposeAttributeRequestItemParameters");
15
+ class ProposeAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
16
+ canCreateOutgoingRequestItem(requestItem, _request, recipient) {
17
+ const queryValidationResult = this.validateQuery(requestItem, recipient);
18
+ if (queryValidationResult.isError()) {
19
+ return queryValidationResult;
20
+ }
21
+ const attributeValidationResult = this.validateAttribute(requestItem.attribute);
22
+ if (attributeValidationResult.isError()) {
23
+ return attributeValidationResult;
24
+ }
25
+ return ValidationResult_1.ValidationResult.success();
26
+ }
27
+ validateAttribute(attribute) {
28
+ if (attribute.owner.toString() !== "") {
29
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.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."));
30
+ }
31
+ return ValidationResult_1.ValidationResult.success();
32
+ }
33
+ validateQuery(requestItem, recipient) {
34
+ const commonQueryValidationResult = (0, validateQuery_1.default)(requestItem.query, this.currentIdentityAddress, recipient);
35
+ if (commonQueryValidationResult.isError()) {
36
+ return commonQueryValidationResult;
37
+ }
38
+ if (requestItem.query instanceof content_1.RelationshipAttributeQuery && requestItem.query.owner.toString() !== "") {
39
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.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."));
40
+ }
41
+ return ValidationResult_1.ValidationResult.success();
42
+ }
43
+ async canAccept(_requestItem, params, requestInfo) {
44
+ const parsedParams = AcceptProposeAttributeRequestItemParameters_1.AcceptProposeAttributeRequestItemParameters.from(params);
45
+ let attribute = parsedParams.attribute;
46
+ if (parsedParams.attributeId) {
47
+ const localAttribute = await this.consumptionController.attributes.getLocalAttribute(parsedParams.attributeId);
48
+ if (!localAttribute) {
49
+ return ValidationResult_1.ValidationResult.error(transport_1.TransportErrors.general.recordNotFound(LocalAttribute_1.LocalAttribute, requestInfo.id.toString()));
50
+ }
51
+ attribute = localAttribute.content;
52
+ }
53
+ if (!attribute.owner.equals(this.currentIdentityAddress)) {
54
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The given Attribute belongs to someone else. You can only share own Attributes."));
55
+ }
56
+ return ValidationResult_1.ValidationResult.success();
57
+ }
58
+ async accept(_requestItem, params, requestInfo) {
59
+ const parsedParams = AcceptProposeAttributeRequestItemParameters_1.AcceptProposeAttributeRequestItemParameters.from(params);
60
+ let sharedLocalAttribute;
61
+ if (parsedParams.attributeId) {
62
+ sharedLocalAttribute = await this.copyExistingAttribute(parsedParams.attributeId, requestInfo);
63
+ }
64
+ else {
65
+ sharedLocalAttribute = await this.createNewAttribute(parsedParams.attribute, requestInfo);
66
+ }
67
+ return content_1.ProposeAttributeAcceptResponseItem.from({
68
+ result: content_1.ResponseItemResult.Accepted,
69
+ attributeId: sharedLocalAttribute.id,
70
+ attribute: sharedLocalAttribute.content
71
+ });
72
+ }
73
+ async copyExistingAttribute(attributeId, requestInfo) {
74
+ return await this.consumptionController.attributes.createSharedLocalAttributeCopy({
75
+ sourceAttributeId: transport_1.CoreId.from(attributeId),
76
+ peer: transport_1.CoreAddress.from(requestInfo.peer),
77
+ requestReference: transport_1.CoreId.from(requestInfo.id)
78
+ });
79
+ }
80
+ async createNewAttribute(attribute, requestInfo) {
81
+ if (attribute instanceof content_1.IdentityAttribute) {
82
+ const repositoryLocalAttribute = await this.consumptionController.attributes.createLocalAttribute({
83
+ content: attribute
84
+ });
85
+ return await this.consumptionController.attributes.createSharedLocalAttributeCopy({
86
+ sourceAttributeId: transport_1.CoreId.from(repositoryLocalAttribute.id),
87
+ peer: transport_1.CoreAddress.from(requestInfo.peer),
88
+ requestReference: transport_1.CoreId.from(requestInfo.id)
89
+ });
90
+ }
91
+ return await this.consumptionController.attributes.createPeerLocalAttribute({
92
+ content: attribute,
93
+ peer: requestInfo.peer,
94
+ requestReference: transport_1.CoreId.from(requestInfo.id)
95
+ });
96
+ }
97
+ async applyIncomingResponseItem(responseItem, _requestItem, requestInfo) {
98
+ if (!(responseItem instanceof content_1.ProposeAttributeAcceptResponseItem)) {
99
+ return;
100
+ }
101
+ await this.consumptionController.attributes.createPeerLocalAttribute({
102
+ id: responseItem.attributeId,
103
+ content: responseItem.attribute,
104
+ peer: requestInfo.peer,
105
+ requestReference: requestInfo.id
106
+ });
107
+ }
108
+ }
109
+ exports.ProposeAttributeRequestItemProcessor = ProposeAttributeRequestItemProcessor;
110
+ //# sourceMappingURL=ProposeAttributeRequestItemProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProposeAttributeRequestItemProcessor.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/proposeAttribute/ProposeAttributeRequestItemProcessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { Serializable } from "@js-soft/ts-serval";
2
+ import { IdentityAttribute, IdentityAttributeJSON, RelationshipAttribute, RelationshipAttributeJSON } from "@nmshd/content";
3
+ import { CoreId } from "@nmshd/transport";
4
+ import { AcceptRequestItemParametersJSON } from "../../incoming/decide/AcceptRequestItemParameters";
5
+ export interface AcceptReadAttributeRequestItemParametersWithExistingAttributeJSON extends AcceptRequestItemParametersJSON {
6
+ existingAttributeId: string;
7
+ }
8
+ export interface AcceptReadAttributeRequestItemParametersWithNewAttributeJSON extends AcceptRequestItemParametersJSON {
9
+ newAttribute: IdentityAttributeJSON | RelationshipAttributeJSON;
10
+ }
11
+ export declare type AcceptReadAttributeRequestItemParametersJSON = AcceptReadAttributeRequestItemParametersWithExistingAttributeJSON | AcceptReadAttributeRequestItemParametersWithNewAttributeJSON;
12
+ export declare class AcceptReadAttributeRequestItemParameters extends Serializable {
13
+ existingAttributeId?: CoreId;
14
+ newAttribute?: IdentityAttribute | RelationshipAttribute;
15
+ isWithExistingAttribute(): this is {
16
+ existingAttributeId: CoreId;
17
+ };
18
+ isWithNewAttribute(): this is {
19
+ newAttributeValue: IdentityAttribute | RelationshipAttribute;
20
+ };
21
+ static from(value: AcceptReadAttributeRequestItemParametersJSON): AcceptReadAttributeRequestItemParameters;
22
+ protected static postFrom<T extends Serializable>(value: T): T;
23
+ }
@@ -0,0 +1,54 @@
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
+ var AcceptReadAttributeRequestItemParameters_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.AcceptReadAttributeRequestItemParameters = void 0;
14
+ const ts_serval_1 = require("@js-soft/ts-serval");
15
+ const content_1 = require("@nmshd/content");
16
+ const transport_1 = require("@nmshd/transport");
17
+ const ts_simple_nameof_1 = require("ts-simple-nameof");
18
+ let AcceptReadAttributeRequestItemParameters = AcceptReadAttributeRequestItemParameters_1 = class AcceptReadAttributeRequestItemParameters extends ts_serval_1.Serializable {
19
+ isWithExistingAttribute() {
20
+ return this.existingAttributeId !== undefined;
21
+ }
22
+ isWithNewAttribute() {
23
+ return this.newAttribute !== undefined;
24
+ }
25
+ static from(value) {
26
+ return this.fromAny(value);
27
+ }
28
+ static postFrom(value) {
29
+ if (!(value instanceof AcceptReadAttributeRequestItemParameters_1))
30
+ throw new Error("this should never happen");
31
+ if (value.existingAttributeId && value.newAttribute) {
32
+ throw new ts_serval_1.ValidationError(AcceptReadAttributeRequestItemParameters_1.name, (0, ts_simple_nameof_1.nameof)((x) => x.newAttribute), `You cannot specify both ${(0, ts_simple_nameof_1.nameof)((x) => x.newAttribute)} and ${(0, ts_simple_nameof_1.nameof)((x) => x.existingAttributeId)}.`);
33
+ }
34
+ if (!value.existingAttributeId && !value.newAttribute) {
35
+ throw new ts_serval_1.ValidationError(AcceptReadAttributeRequestItemParameters_1.name, (0, ts_simple_nameof_1.nameof)((x) => x.newAttribute), `You have to specify either ${(0, ts_simple_nameof_1.nameof)((x) => x.newAttribute)} or ${(0, ts_simple_nameof_1.nameof)((x) => x.existingAttributeId)}.`);
36
+ }
37
+ return value;
38
+ }
39
+ };
40
+ __decorate([
41
+ (0, ts_serval_1.serialize)(),
42
+ (0, ts_serval_1.validate)({ nullable: true }),
43
+ __metadata("design:type", transport_1.CoreId)
44
+ ], AcceptReadAttributeRequestItemParameters.prototype, "existingAttributeId", void 0);
45
+ __decorate([
46
+ (0, ts_serval_1.serialize)({ unionTypes: [content_1.IdentityAttribute, content_1.RelationshipAttribute] }),
47
+ (0, ts_serval_1.validate)({ nullable: true }),
48
+ __metadata("design:type", Object)
49
+ ], AcceptReadAttributeRequestItemParameters.prototype, "newAttribute", void 0);
50
+ AcceptReadAttributeRequestItemParameters = AcceptReadAttributeRequestItemParameters_1 = __decorate([
51
+ (0, ts_serval_1.type)("AcceptReadAttributeRequestItemParameters")
52
+ ], AcceptReadAttributeRequestItemParameters);
53
+ exports.AcceptReadAttributeRequestItemParameters = AcceptReadAttributeRequestItemParameters;
54
+ //# sourceMappingURL=AcceptReadAttributeRequestItemParameters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcceptReadAttributeRequestItemParameters.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/readAttribute/AcceptReadAttributeRequestItemParameters.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,kDAA6F;AAC7F,4CAKuB;AACvB,gDAAyC;AACzC,uDAAyC;AAiBzC,IAAa,wCAAwC,gDAArD,MAAa,wCAAyC,SAAQ,wBAAY;IAS/D,uBAAuB;QAC1B,OAAO,IAAI,CAAC,mBAAmB,KAAK,SAAS,CAAA;IACjD,CAAC;IAEM,kBAAkB;QACrB,OAAO,IAAI,CAAC,YAAY,KAAK,SAAS,CAAA;IAC1C,CAAC;IAEM,MAAM,CAAC,IAAI,CAAC,KAAmD;QAClE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAES,MAAM,CAAU,QAAQ,CAAyB,KAAQ;QAC/D,IAAI,CAAC,CAAC,KAAK,YAAY,0CAAwC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAE7G,IAAI,KAAK,CAAC,mBAAmB,IAAI,KAAK,CAAC,YAAY,EAAE;YACjD,MAAM,IAAI,2BAAe,CACrB,0CAAwC,CAAC,IAAI,EAC7C,IAAA,yBAAM,EAA2C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EACvE,2BAA2B,IAAA,yBAAM,EAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CACxB,QAAQ,IAAA,yBAAM,EAA2C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAC7F,CAAA;SACJ;QAED,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;YACnD,MAAM,IAAI,2BAAe,CACrB,0CAAwC,CAAC,IAAI,EAC7C,IAAA,yBAAM,EAA2C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,EACvE,8BAA8B,IAAA,yBAAM,EAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CACxB,OAAO,IAAA,yBAAM,EAA2C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAC5F,CAAA;SACJ;QAED,OAAO,KAAK,CAAA;IAChB,CAAC;CACJ,CAAA;AA3CG;IAFC,IAAA,qBAAS,GAAE;IACX,IAAA,oBAAQ,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;8BACA,kBAAM;qFAAA;AAInC;IAFC,IAAA,qBAAS,EAAC,EAAE,UAAU,EAAE,CAAC,2BAAiB,EAAE,+BAAqB,CAAC,EAAE,CAAC;IACrE,IAAA,oBAAQ,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;8EACkC;AAPtD,wCAAwC;IADpD,IAAA,gBAAI,EAAC,0CAA0C,CAAC;GACpC,wCAAwC,CA8CpD;AA9CY,4FAAwC"}
@@ -0,0 +1,14 @@
1
+ import { ReadAttributeAcceptResponseItem, ReadAttributeRequestItem, RejectResponseItem, Request } from "@nmshd/content";
2
+ import { CoreAddress } from "@nmshd/transport";
3
+ import { GenericRequestItemProcessor } from "../GenericRequestItemProcessor";
4
+ import { LocalRequestInfo } from "../IRequestItemProcessor";
5
+ import { ValidationResult } from "../ValidationResult";
6
+ import { AcceptReadAttributeRequestItemParametersJSON } from "./AcceptReadAttributeRequestItemParameters";
7
+ export declare class ReadAttributeRequestItemProcessor extends GenericRequestItemProcessor<ReadAttributeRequestItem, AcceptReadAttributeRequestItemParametersJSON> {
8
+ canCreateOutgoingRequestItem(requestItem: ReadAttributeRequestItem, _request: Request, recipient: CoreAddress): ValidationResult;
9
+ canAccept(_requestItem: ReadAttributeRequestItem, params: AcceptReadAttributeRequestItemParametersJSON, requestInfo: LocalRequestInfo): Promise<ValidationResult>;
10
+ accept(_requestItem: ReadAttributeRequestItem, params: AcceptReadAttributeRequestItemParametersJSON, requestInfo: LocalRequestInfo): Promise<ReadAttributeAcceptResponseItem>;
11
+ private copyExistingAttribute;
12
+ private createNewAttribute;
13
+ applyIncomingResponseItem(responseItem: ReadAttributeAcceptResponseItem | RejectResponseItem, _requestItem: ReadAttributeRequestItem, requestInfo: LocalRequestInfo): Promise<void>;
14
+ }
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ReadAttributeRequestItemProcessor = void 0;
7
+ const content_1 = require("@nmshd/content");
8
+ const transport_1 = require("@nmshd/transport");
9
+ const consumption_1 = require("../../../../consumption");
10
+ const LocalAttribute_1 = require("../../../attributes/local/LocalAttribute");
11
+ const GenericRequestItemProcessor_1 = require("../GenericRequestItemProcessor");
12
+ const validateQuery_1 = __importDefault(require("../utility/validateQuery"));
13
+ const ValidationResult_1 = require("../ValidationResult");
14
+ const AcceptReadAttributeRequestItemParameters_1 = require("./AcceptReadAttributeRequestItemParameters");
15
+ class ReadAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
16
+ canCreateOutgoingRequestItem(requestItem, _request, recipient) {
17
+ const queryValidationResult = (0, validateQuery_1.default)(requestItem.query, this.currentIdentityAddress, recipient);
18
+ if (queryValidationResult.isError()) {
19
+ return queryValidationResult;
20
+ }
21
+ return ValidationResult_1.ValidationResult.success();
22
+ }
23
+ async canAccept(_requestItem, params, requestInfo) {
24
+ const parsedParams = AcceptReadAttributeRequestItemParameters_1.AcceptReadAttributeRequestItemParameters.from(params);
25
+ if (parsedParams.isWithExistingAttribute()) {
26
+ const foundAttribute = await this.consumptionController.attributes.getLocalAttribute(parsedParams.existingAttributeId);
27
+ if (!foundAttribute) {
28
+ return ValidationResult_1.ValidationResult.error(transport_1.TransportErrors.general.recordNotFound(LocalAttribute_1.LocalAttribute, requestInfo.id.toString()));
29
+ }
30
+ if (!this.accountController.identity.isMe(foundAttribute.content.owner)) {
31
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("The given Attribute belongs to someone else. You can only share own Attributes."));
32
+ }
33
+ }
34
+ return ValidationResult_1.ValidationResult.success();
35
+ }
36
+ async accept(_requestItem, params, requestInfo) {
37
+ const parsedParams = AcceptReadAttributeRequestItemParameters_1.AcceptReadAttributeRequestItemParameters.from(params);
38
+ let sharedLocalAttribute;
39
+ if (parsedParams.isWithExistingAttribute()) {
40
+ sharedLocalAttribute = await this.copyExistingAttribute(parsedParams.existingAttributeId, requestInfo);
41
+ }
42
+ else {
43
+ sharedLocalAttribute = await this.createNewAttribute(parsedParams.newAttribute, requestInfo);
44
+ }
45
+ return content_1.ReadAttributeAcceptResponseItem.from({
46
+ result: content_1.ResponseItemResult.Accepted,
47
+ attributeId: sharedLocalAttribute.id,
48
+ attribute: sharedLocalAttribute.content
49
+ });
50
+ }
51
+ async copyExistingAttribute(attributeId, requestInfo) {
52
+ return await this.consumptionController.attributes.createSharedLocalAttributeCopy({
53
+ sourceAttributeId: transport_1.CoreId.from(attributeId),
54
+ peer: transport_1.CoreAddress.from(requestInfo.peer),
55
+ requestReference: transport_1.CoreId.from(requestInfo.id)
56
+ });
57
+ }
58
+ async createNewAttribute(attribute, requestInfo) {
59
+ if (attribute instanceof content_1.IdentityAttribute) {
60
+ const repositoryLocalAttribute = await this.consumptionController.attributes.createLocalAttribute({
61
+ content: attribute
62
+ });
63
+ return await this.consumptionController.attributes.createSharedLocalAttributeCopy({
64
+ sourceAttributeId: transport_1.CoreId.from(repositoryLocalAttribute.id),
65
+ peer: transport_1.CoreAddress.from(requestInfo.peer),
66
+ requestReference: transport_1.CoreId.from(requestInfo.id)
67
+ });
68
+ }
69
+ return await this.consumptionController.attributes.createPeerLocalAttribute({
70
+ content: attribute,
71
+ peer: requestInfo.peer,
72
+ requestReference: transport_1.CoreId.from(requestInfo.id)
73
+ });
74
+ }
75
+ async applyIncomingResponseItem(responseItem, _requestItem, requestInfo) {
76
+ if (!(responseItem instanceof content_1.ReadAttributeAcceptResponseItem)) {
77
+ return;
78
+ }
79
+ await this.consumptionController.attributes.createPeerLocalAttribute({
80
+ id: responseItem.attributeId,
81
+ content: responseItem.attribute,
82
+ peer: requestInfo.peer,
83
+ requestReference: requestInfo.id
84
+ });
85
+ }
86
+ }
87
+ exports.ReadAttributeRequestItemProcessor = ReadAttributeRequestItemProcessor;
88
+ //# sourceMappingURL=ReadAttributeRequestItemProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ReadAttributeRequestItemProcessor.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/readAttribute/ReadAttributeRequestItemProcessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Serializable } from "@js-soft/ts-serval";
2
+ import { AcceptRequestItemParametersJSON } from "../../incoming/decide/AcceptRequestItemParameters";
3
+ export interface AcceptShareAttributeRequestItemParametersJSON extends AcceptRequestItemParametersJSON {
4
+ }
5
+ export declare class AcceptShareAttributeRequestItemParameters extends Serializable {
6
+ static from(value: AcceptShareAttributeRequestItemParametersJSON): AcceptShareAttributeRequestItemParameters;
7
+ }
@@ -0,0 +1,20 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AcceptShareAttributeRequestItemParameters = void 0;
10
+ const ts_serval_1 = require("@js-soft/ts-serval");
11
+ let AcceptShareAttributeRequestItemParameters = class AcceptShareAttributeRequestItemParameters extends ts_serval_1.Serializable {
12
+ static from(value) {
13
+ return this.fromAny(value);
14
+ }
15
+ };
16
+ AcceptShareAttributeRequestItemParameters = __decorate([
17
+ (0, ts_serval_1.type)("AcceptShareAttributeRequestItemParameters")
18
+ ], AcceptShareAttributeRequestItemParameters);
19
+ exports.AcceptShareAttributeRequestItemParameters = AcceptShareAttributeRequestItemParameters;
20
+ //# sourceMappingURL=AcceptShareAttributeRequestItemParameters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcceptShareAttributeRequestItemParameters.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/shareAttribute/AcceptShareAttributeRequestItemParameters.ts"],"names":[],"mappings":";;;;;;;;;AAAA,kDAAuD;AAMvD,IAAa,yCAAyC,GAAtD,MAAa,yCAA0C,SAAQ,wBAAY;IAChE,MAAM,CAAC,IAAI,CACd,KAAoD;QAEpD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;CACJ,CAAA;AANY,yCAAyC;IADrD,IAAA,gBAAI,EAAC,2CAA2C,CAAC;GACrC,yCAAyC,CAMrD;AANY,8FAAyC"}
@@ -0,0 +1,15 @@
1
+ import { AcceptResponseItem, Request, ShareAttributeRequestItem } from "@nmshd/content";
2
+ import { CoreAddress } from "@nmshd/transport";
3
+ import { GenericRequestItemProcessor } from "../GenericRequestItemProcessor";
4
+ import { LocalRequestInfo } from "../IRequestItemProcessor";
5
+ import { ValidationResult } from "../ValidationResult";
6
+ import { AcceptShareAttributeRequestItemParametersJSON } from "./AcceptShareAttributeRequestItemParameters";
7
+ export declare class ShareAttributeRequestItemProcessor extends GenericRequestItemProcessor<ShareAttributeRequestItem, AcceptShareAttributeRequestItemParametersJSON> {
8
+ canCreateOutgoingRequestItem(requestItem: ShareAttributeRequestItem, _request: Request, recipient: CoreAddress): Promise<ValidationResult>;
9
+ checkPrerequisitesOfIncomingRequestItem(requestItem: ShareAttributeRequestItem, requestInfo: LocalRequestInfo): Promise<boolean>;
10
+ private validateAttributeOwner;
11
+ canAccept(_requestItem: ShareAttributeRequestItem, _params: AcceptShareAttributeRequestItemParametersJSON, _requestInfo: LocalRequestInfo): ValidationResult;
12
+ accept(requestItem: ShareAttributeRequestItem, _params: AcceptShareAttributeRequestItemParametersJSON, _requestInfo: LocalRequestInfo): Promise<AcceptResponseItem>;
13
+ private isAttributeAlreadyShared;
14
+ private shareAttribute;
15
+ }
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ShareAttributeRequestItemProcessor = void 0;
4
+ const content_1 = require("@nmshd/content");
5
+ const transport_1 = require("@nmshd/transport");
6
+ const consumption_1 = require("../../../../consumption");
7
+ const GenericRequestItemProcessor_1 = require("../GenericRequestItemProcessor");
8
+ const ValidationResult_1 = require("../ValidationResult");
9
+ class ShareAttributeRequestItemProcessor extends GenericRequestItemProcessor_1.GenericRequestItemProcessor {
10
+ async canCreateOutgoingRequestItem(requestItem, _request, recipient) {
11
+ const attribute = await this.consumptionController.attributes.getLocalAttribute(requestItem.attributeId);
12
+ if (!attribute) {
13
+ return ValidationResult_1.ValidationResult.error(transport_1.TransportErrors.general.recordNotFound(content_1.Attribute, requestItem.attributeId.toString()));
14
+ }
15
+ const attributeOwnerValidationResult = this.validateAttributeOwner(attribute.content, this.currentIdentityAddress, recipient);
16
+ if (attributeOwnerValidationResult.isError()) {
17
+ return attributeOwnerValidationResult;
18
+ }
19
+ return ValidationResult_1.ValidationResult.success();
20
+ }
21
+ async checkPrerequisitesOfIncomingRequestItem(requestItem, requestInfo) {
22
+ const relationshipToShareWith = await this.accountController.relationships.getRelationshipToIdentity(requestItem.shareWith);
23
+ if (!relationshipToShareWith) {
24
+ return false; // Should the containing Request move to Error state?
25
+ }
26
+ const attribute = await this.consumptionController.attributes.getLocalAttribute(requestItem.attributeId);
27
+ if (!attribute) {
28
+ return false; // Should the containing Request move to Error state?
29
+ }
30
+ if (this.validateAttributeOwner(attribute.content, requestInfo.peer, this.currentIdentityAddress).isError()) {
31
+ return false;
32
+ }
33
+ return true;
34
+ }
35
+ validateAttributeOwner(attribute, sender, recipient) {
36
+ const attributeOwner = attribute.owner;
37
+ if (attribute instanceof content_1.IdentityAttribute) {
38
+ if (!attributeOwner.equals(recipient)) {
39
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("Can only request sharing of identity attributes owned by the recipient."));
40
+ }
41
+ }
42
+ if (attribute instanceof content_1.RelationshipAttribute) {
43
+ if (!attributeOwner.equals(recipient) && !attributeOwner.equals(sender)) {
44
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("Cannot request sharing of relationship attributes not owned by recipient or sender."));
45
+ }
46
+ }
47
+ return ValidationResult_1.ValidationResult.success();
48
+ }
49
+ canAccept(_requestItem, _params, _requestInfo) {
50
+ return ValidationResult_1.ValidationResult.success();
51
+ }
52
+ async accept(requestItem, _params, _requestInfo) {
53
+ const attribute = (await this.consumptionController.attributes.getLocalAttribute(requestItem.attributeId));
54
+ if (!(await this.isAttributeAlreadyShared(attribute, requestItem.shareWith))) {
55
+ await this.shareAttribute(attribute, requestItem.shareWith);
56
+ }
57
+ return content_1.AcceptResponseItem.from({ result: content_1.ResponseItemResult.Accepted });
58
+ }
59
+ async isAttributeAlreadyShared(attribute, shareWith) {
60
+ if (attribute.content instanceof content_1.IdentityAttribute) {
61
+ return ((await this.consumptionController.attributes.getLocalAttributes({
62
+ "shareInfo.sourceAttribute": attribute.shareInfo.sourceAttribute.toString(),
63
+ "shareInfo.peer": shareWith.toString()
64
+ })).length > 0);
65
+ }
66
+ return ((await this.consumptionController.attributes.getLocalAttributes({
67
+ "shareInfo.sourceAttribute": attribute.id.toString(),
68
+ "shareInfo.peer": shareWith.toString()
69
+ })).length > 0);
70
+ }
71
+ async shareAttribute(attribute, shareWith) {
72
+ const createAttributeRequestItem = content_1.CreateAttributeRequestItem.from({
73
+ attribute: attribute.content,
74
+ mustBeAccepted: true,
75
+ sourceAttributeId: attribute.id
76
+ });
77
+ const createAttributeRequest = await this.consumptionController.outgoingRequests.create({
78
+ peer: shareWith,
79
+ content: content_1.Request.from({
80
+ items: [createAttributeRequestItem]
81
+ })
82
+ });
83
+ const message = await this.accountController.messages.sendMessage({
84
+ recipients: [shareWith],
85
+ content: createAttributeRequest.content
86
+ });
87
+ await this.consumptionController.outgoingRequests.sent({
88
+ requestId: createAttributeRequest.id,
89
+ requestSourceObject: message
90
+ });
91
+ }
92
+ }
93
+ exports.ShareAttributeRequestItemProcessor = ShareAttributeRequestItemProcessor;
94
+ //# sourceMappingURL=ShareAttributeRequestItemProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShareAttributeRequestItemProcessor.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/shareAttribute/ShareAttributeRequestItemProcessor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { AbstractAttributeQuery } from "@nmshd/content";
2
+ import { CoreAddress } from "@nmshd/transport";
3
+ import { ValidationResult } from "../ValidationResult";
4
+ export default function validateQuery(query: AbstractAttributeQuery, sender: CoreAddress, recipient: CoreAddress): ValidationResult;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const content_1 = require("@nmshd/content");
4
+ const consumption_1 = require("../../../../consumption");
5
+ const ValidationResult_1 = require("../ValidationResult");
6
+ function validateQuery(query, sender, recipient) {
7
+ if (query instanceof content_1.RelationshipAttributeQuery) {
8
+ if (query.thirdParty?.equals(sender)) {
9
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("Cannot query an Attribute with the own address as third party."));
10
+ }
11
+ if (query.thirdParty?.equals(recipient)) {
12
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("Cannot query an Attribute with the recipient's address as third party."));
13
+ }
14
+ if (query.owner.equals(sender) && query.thirdParty !== undefined) {
15
+ return ValidationResult_1.ValidationResult.error(consumption_1.ConsumptionErrors.requests.invalidRequestItem("Cannot query own Attributes from a third party."));
16
+ }
17
+ }
18
+ return ValidationResult_1.ValidationResult.success();
19
+ }
20
+ exports.default = validateQuery;
21
+ //# sourceMappingURL=validateQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateQuery.js","sourceRoot":"","sources":["../../../../../src/modules/requests/itemProcessors/utility/validateQuery.ts"],"names":[],"mappings":";;AAAA,4CAAmF;AAEnF,yDAA2D;AAC3D,0DAAsD;AAEtD,SAAwB,aAAa,CACjC,KAA6B,EAC7B,MAAmB,EACnB,SAAsB;IAEtB,IAAI,KAAK,YAAY,oCAA0B,EAAE;QAC7C,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE;YAClC,OAAO,mCAAgB,CAAC,KAAK,CACzB,+BAAiB,CAAC,QAAQ,CAAC,kBAAkB,CACzC,gEAAgE,CACnE,CACJ,CAAA;SACJ;QAED,IAAI,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE;YACrC,OAAO,mCAAgB,CAAC,KAAK,CACzB,+BAAiB,CAAC,QAAQ,CAAC,kBAAkB,CACzC,wEAAwE,CAC3E,CACJ,CAAA;SACJ;QAED,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE;YAC9D,OAAO,mCAAgB,CAAC,KAAK,CACzB,+BAAiB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,iDAAiD,CAAC,CACnG,CAAA;SACJ;KACJ;IAED,OAAO,mCAAgB,CAAC,OAAO,EAAE,CAAA;AACrC,CAAC;AA9BD,gCA8BC"}
@@ -0,0 +1,37 @@
1
+ import { IRequest, Request } from "@nmshd/content";
2
+ import { CoreAddress, CoreDate, CoreId, CoreSerializable, CoreSynchronizable, ICoreAddress, ICoreDate, ICoreId, ICoreSerializable, ICoreSynchronizable } from "@nmshd/transport";
3
+ import { LocalRequestStatus } from "./LocalRequestStatus";
4
+ import { ILocalRequestStatusLogEntry, LocalRequestStatusLogEntry } from "./LocalRequestStatusLogEntry";
5
+ import { ILocalResponse, LocalResponse } from "./LocalResponse";
6
+ export interface ILocalRequestSource extends ICoreSerializable {
7
+ type: "Message" | "RelationshipTemplate";
8
+ reference: ICoreId;
9
+ }
10
+ export declare class LocalRequestSource extends CoreSerializable implements ILocalRequestSource {
11
+ type: "Message" | "RelationshipTemplate";
12
+ reference: CoreId;
13
+ static from(value: ILocalRequestSource): LocalRequestSource;
14
+ }
15
+ export interface ILocalRequest extends ICoreSynchronizable {
16
+ isOwn: boolean;
17
+ peer: ICoreAddress;
18
+ createdAt: ICoreDate;
19
+ content: IRequest;
20
+ source?: ILocalRequestSource;
21
+ response?: ILocalResponse;
22
+ status: LocalRequestStatus;
23
+ statusLog: ILocalRequestStatusLogEntry[];
24
+ }
25
+ export declare class LocalRequest extends CoreSynchronizable implements ILocalRequest {
26
+ isOwn: boolean;
27
+ peer: CoreAddress;
28
+ createdAt: CoreDate;
29
+ content: Request;
30
+ source?: LocalRequestSource;
31
+ response?: LocalResponse;
32
+ status: LocalRequestStatus;
33
+ statusLog: LocalRequestStatusLogEntry[];
34
+ changeStatus(newStatus: LocalRequestStatus): void;
35
+ sent(source: LocalRequestSource): void;
36
+ static from(value: ILocalRequest): LocalRequest;
37
+ }